Прежде всего позвольте мне признать, что я совершал ошибки и что у меня есть резервные копии для большинства но не все данных на этом RAID. У меня все еще есть надежда восстановить остальные данные. У меня нет денег, чтобы отвезти диски в экспертную компанию по восстановлению.
Ошибка №0, отсутствие 100% резервной копии. Я знаю.
у меня есть mdadm
Система RAID5 объемом 4x3 ТБ. Диски / dev / sd [b-e], все с одним разделом /dev/sd[b-e]1
. Я знаю, что использование RAID5 на очень больших дисках рискованно, но я все равно это сделал.
RAID ухудшается после отказа двух дисков. Один диск [/ dev / sdc] действительно исчез, другой [/ dev / sde] восстановился после отключения питания, но не был автоматически повторно добавлен в RAID. Так что у меня остался RAID-массив из 4 устройств и только 2 активных диска [/ dev / sdb и / dev / sdd].
Ошибка №1, не использовать dd-копии дисков для восстановления RAID. У меня не было ни драйва, ни времени. Ошибка №2, если не сделать резервную копию суперблока и mdadm -E
из оставшихся дисков.
Я повторно собрал RAID в деградированном режиме с
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Тогда я мог получить доступ к своим данным. Я заменил /dev/sdc
с запаской; пустой; идентичный привод.
Я удалил старый /dev/sdc1
из RAID
mdadm --fail /dev/md0 /dev/sdc1
Ошибка # 3, не делать этого перед замена привода
Затем я разделил новый /dev/sdc
и добавил в RAID.
mdadm --add /dev/md0 /dev/sdc1
Затем он начал восстанавливать RAID. ETA 300 мин. Я следил за процессом через /proc/mdstat
до 2%, а затем занялись другими делами.
Через несколько часов (но менее 300 минут) я проверил процесс. Он остановился из-за ошибки чтения на /dev/sde1
.
Затем я удалил /dev/sde1
с RAID и заново добавил. Я не могу вспомнить, зачем я это сделал; было поздно.
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
Тем не мение, /dev/sde1
был теперь помечен как запасной. Поэтому я решил воссоздать весь массив, используя --assume-clean, используя то, что я считал правильным, и с /dev/sdc1
отсутствует.
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
Это сработало, но файловая система не была распознана при попытке монтирования. (Должен был быть EXT4).
Затем я проверил последнюю резервную копию, которая у меня была /proc/mdstat
, и я нашел порядок дисков.
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
Затем я вспомнил, что этот RAID потерял диск около года назад, и восстановил его, заменив неисправный диск на запасной. Возможно, это немного изменило порядок устройства ... поэтому не было диска [3], а были только [0], [1], [2] и [4].
Я попытался найти порядок дисков с помощью скрипта Permute_array: https://raid.wiki.kernel.org/index.php/Permute_array.pl но вот не нашел нужного порядка.
Теперь у меня два основных вопроса:
Облажал все суперблоки на дисках, а дал только:
mdadm --create --assume-clean
команд (поэтому мне не следовало перезаписывать сами данные на /dev/sd[bde]1
. Я прав теоретически RAID можно восстановить [при условии, что /dev/sde1
это нормально] если я просто найду нужный порядок устройства?
Важно ли, чтобы /dev/sde1
получить номер устройства [4] в RAID? Когда я создаю это с
mdadm --create /dev/md0 --assume-clean -l5 -n4 \
/dev/sdb1 missing /dev/sdd1 /dev/sde1
ему присвоен номер [3]. Интересно, относится ли это к вычислению блоков четности. Если это окажется важным, как я могу воссоздать массив с помощью /dev/sdb1[0]
отсутствует [1] /dev/sdd1[2]
/dev/sde1[4]
? Если бы я мог заставить это работать, я мог бы запустить его в деградированном режиме и добавить новый диск /dev/sdc1
и дайте ему снова синхронизироваться.
Ничего страшного, если вы хотите указать мне, что, возможно, это был не лучший курс действий, но вы обнаружите, что я это понял. Было бы здорово, если у кого-нибудь есть предложения.
Чтобы ответить на ваши вопросы,
Можно ли его восстановить?
Поскольку sdc является новым, я бы продолжил попытки собрать вручную с помощью недостающего предложения, и да, sde должен быть в правильном порядке для сборки в деградированном режиме. Как только вы найдете правильный макет - скопируйте все данные из массива и начните снова, документируя макет (чтобы вы больше не столкнулись с этой проблемой).
Удачи
Это старый вопрос, и я уверен, что сейчас никто не сможет вам помочь, но для других, читающих:
самая опасная ошибка, которую вы сделали, - это не та, которую вы пронумеровали, а именно:
mdadm --create ...
на исходных дисках, прежде чем вы были готовы знать, что делать. Метаданные были перезаписаны, поэтому у вас нет записи о порядке дисков, смещении данных, размере блока и т. Д.
Чтобы исправить это, вам нужно снова перезаписать их с правильными значениями. Самый простой способ узнать это - посмотреть на метаданные, но вы их уже уничтожили. Следующий способ - угадать. Угадайте различные комбинации такой команды, с разными значениями для любого из параметров, кроме того, что вы знаете (4 устройства, уровень 5), а также разный порядок дисков:
mdadm --create /dev/md0 --assume-clean --metadata=1.2 --raid-devices=4 --level=5 --layout=... --chunk=512 --data-offset=128M /dev/sdb1 missing /dev/sdd1 /dev/sde1
Но так как вы НЕ ЗНАЕТЕ правильный результат, опять же, вы не должны запускать это на старых дисках, уничтожая их дальше, делая ту же фатальную ошибку. Вместо этого используйте наложение; например эта процедура должны работать, чтобы сохранить оригиналы в безопасности.
Как только вы нашли некоторые аргументы, которые создают рабочий массив, который вы можете fsck или смонтировать и проверить (например, проверьте контрольную сумму файла, достаточно большого, чтобы охватить всех участников рейда, например ISO, который вы должны были сохранить с его контрольной суммой / pgp подпись, либо распаковать -t или gunzip -ta большой архив)
Прежде чем делать что-либо еще, запишите 'mdadm --examine / dev / sdX1' для каждого из дисков, которые БЫЛИ в вашем массиве, и 'mdadm --detail / dev / md0' из этого, вы сможете определить точный макет.
Мне просто пришлось сделать это самому, чтобы восстановить массив Synology в отдельном вопросе:
Как восстановить массив mdadm на Synology NAS с диском в состоянии «E»?
Изменить: извините, только что увидел, что вы сказали, что потеряли суперблоки на всех дисках.
Ваши последующие команды ВЫГЛЯДИТ правильно. Самый простой вариант - запустить создание с каждым возможным порядком, а затем посмотреть, можете ли вы смонтировать файловую систему и получить доступ к ней в режиме только для чтения.