Один из способов — просто прочитать каждый файл, ожидая сообщения на STDERR в случае возникновения проблемы:
(cd /mountpoint && find. -type d -o -type f -printf '%P\0' | xargs -0 b2sum -z) 2>errors | tee hashes
(cd /точка монтирования && найти. -xdev -print0 | xargs -0P4 xxhsum )>хэши 2>ошибки
Использование -z
сb2sum
(илиsha256sum
)позволяет использовать имена файлов с новой строкой.
Это намеренно включает каталоги, позволяющие использовать пустые каталоги.
Если пустые каталоги не проблема, это короче:
(cd /mountpoint && sha256deep -0clrz -j0 -of. ) 2> errors | tee hashes
Будет напечатан размер файла, хэш и имя файла, за которыми следует NUL
.
В идеале я бы добавил -t
к sha256deep
, но в настоящее время существует эта проблема .
После некоторого времени попыток и размышлений я вернулся к первой статье, упомянутой в вопросе:https://ahelpme.com/linux/grub2-grub-install-error-disk-mduuid-not-found-even-after-the-partition-has-bios_grub-on/
Автор считает, что в ядре есть некоторые структуры массива, которые перестраиваются после перезагрузки. В какой именно момент? Вероятно, во время обнаружения и сборки. И правда, помогла пересборка загрузочного массива . Вот как я решил это.
Сначала размонтируем и разберем массив:
[root@master ~]# umount /boot
[root@master ~]# mdadm --stop /dev/md126
mdadm: stopped /dev/md126
[root@master ~]# cat /proc/mdstat
Personalities : [raid1]
md127 : active raid1 sdc2[4] sdb2[3]
487731200 blocks super 1.2 [2/2] [UU]
bitmap: 2/4 pages [8KB], 65536KB chunk
unused devices: <none>
mdstat
не показал загрузочного массива,также я прочитал dmesg
в этот момент, чтобы убедиться, что все прошло правильно:
[243050.619210] md126: detected capacity change from 535756800 to 0
[243050.619260] md: md126 stopped.
[243050.619271] md: unbind<sdb1>
[243050.629871] md: export_rdev(sdb1)
[243050.630093] md: unbind<sdc1>
[243050.635890] md: export_rdev(sdc1)
Затем собрать обратно:
[root@master ~]# mdadm --assemble --run /dev/md126 /dev/sdb1 /dev/sdc1
mdadm: /dev/md126 has been started with 2 drives.
Обратите внимание, что -монтируется автоматически, dmesg
— это:
[243124.197117] md: bind<sdc1>
[243124.197468] md: bind<sdb1>
[243124.200993] md/raid1:md126: active with 2 out of 2 mirrors
[243124.201010] md126: detected capacity change from 0 to 535756800
[243124.201461] md126: unknown partition table
[243124.238232] md126: unknown partition table
[243124.246330] EXT4-fs (md126): mounted filesystem with ordered data mode. Opts: (null)
Теперь он установился нормально:
[root@master ~]# LANG=C grub2-install /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
[root@master ~]# LANG=C grub2-install /dev/sdc
Installing for i386-pc platform.
Installation finished. No error reported.
Без перезагрузки!