В течение последних нескольких недель я проводил много исследований по этой теме - и думаю, что близок к завершению своего выздоровления, насколько это возможно, по крайней мере. Короче говоря, я просто опишу проблему, не заполняя каждую крошечную техническую деталь.
Предположим, у вас есть несколько массивов RAID-5, каждый с 8 дисками, а затем объединены в один логический том LVM. Один из дисков затем умирает в одном из массивов, и во время перестройки вы сталкиваетесь с неисправимой ошибкой чтения на втором диске в этом массиве. И конечно, нет никаких резервных копий.
Я уже выгрузил данные с диска с URE на новый диск, только 5 КБ данных повреждены, все сгруппированы в очень маленькую область диска. Я также предполагаю, что, как только я соберу это MD-устройство, используя копию ddrescue, я умножу размер потери данных на количество дисков без контроля четности в моем массиве (таким образом, потеря данных 35 КБ) как на четность. расчеты для полос с использованием этих блоков будут некорректными.
Я прочитал и понимаю процедуру на http://smartmontools.sourceforge.net/badblockhowto.html, чтобы определить, какие файлы будут повреждены в такой ситуации, но моя проблема состоит в том, чтобы точно определить, какие блоки будут повреждены после MD перестроить, чтобы использовать в качестве входных данных для отладки. Выяснить все смещения, в которых метаданные md и lvm хранят, тоже не будет весело, но я думаю, что справлюсь с этой частью.
Могу ли я просто умножить все свои номера плохих блоков на 7, а затем предположить, что следующие 6 блоков после каждого из них также будут плохими, и затем следовать инструкциям LVM в руководстве, приведенном выше?
И чтобы быть ясным - я не занимаюсь ремонтом или переназначением плохих блоков, как описано в руководстве, я заменил диск и буду позволять md обрабатывать подобные вещи. Я просто хочу знать, какие файлы в файловой системе ext4 были затронуты.