Позвольте мне прежде всего подтвердить, что я допустил ошибки и что у меня есть резервная копия для большинства, но не для всех данных на этом RAID. У меня все еще есть надежда на восстановление остальных данных. У меня нет денег, чтобы отвезти диски в экспертную компанию по восстановлению.
Ошибка № 0, без 100% резервной копии. Я знаю.
У меня есть система mdadm
RAID5 4x3TB. Диски / dev / sd [be], все с одним разделом /dev/sd[b-e]1
. Я знаю, что RAID5 на очень больших дисках опасен, но я все равно это сделал.
Недавние события
RAID становится ухудшенным после отказа двух дисков. Один диск [/ dev / sdc] действительно пропал, другой [/ dev / sde] вернулся после цикла питания, но не был автоматически повторно добавлен в RAID. Поэтому у меня остался RAID-массив с 4 устройствами и только 2 активными дисками [/ dev / sdb и / dev / sdd].
Ошибка № 1, не использовать копии дисков для восстановления 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. ЭТА 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
и позволить ему повторно синхронизироваться снова.
Это нормально, если вы хотите указать мне, что это, возможно, не лучший путь, но вы поймете, что я это понял. Было бы здорово, если у кого-нибудь есть предложения.