Позвольте мне прежде всего подтвердить, что я допустил ошибки и что у меня есть резервная копия для большинства, но не для всех данных на этом 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
и позволить ему повторно синхронизироваться снова.
Это нормально, если вы хотите указать мне, что это, возможно, не лучший путь, но вы поймете, что я это понял. Было бы здорово, если у кого-нибудь есть предложения.
источник
Ответы:
Чтобы ответить на ваши вопросы,
Можно ли его восстановить?
Так как sdc является новым, я бы продолжал пытаться собирать вручную через отсутствующее предложение, и да, sde должен быть в правильном порядке для его сборки в ухудшенном режиме. Как только вы найдете правильный макет - скопируйте все данные из массива и начните заново, документируя макет (чтобы вы больше не сталкивались с этой проблемой).
Удачи
источник
Прежде чем делать НИЧЕГО, запишите 'mdadm --examine / dev / sdX1' для каждого из дисков, которые были в вашем массиве, и 'mdadm --detail / dev / md0' из этого, вы сможете определить Точная планировка.
Я просто должен был сделать это сам, чтобы восстановить массив Synology в отдельном вопросе:
Как восстановить массив mdadm на Synology NAS с диском в состоянии «E»?
Изменить: Извините, только что увидел, что вы сказали, что потеряли суперблоки на всех дисках.
Ваши последующие команды выглядят правильно. Простейшим вариантом может быть запуск созданий при каждом возможном упорядочении, а затем проверка возможности монтирования и доступа к файловой системе только для чтения.
источник
Этот вопрос старый, и я уверен, что никто не может помочь вам сейчас, но для других читающих:
Самая опасная ошибка, которую вы совершили, - это не та, которую вы пронумеровали.
на оригинальные диски, прежде чем вы были готовы, зная, что делать. Это перезаписало метаданные, поэтому у вас нет записи о порядке дисков, смещении данных, размере чанка и т. Д.
Чтобы восстановиться после этого, вам нужно снова перезаписать их правильными значениями. Самый простой способ узнать это - посмотреть на метаданные, но вы их уже уничтожили. Следующий способ - угадать. Угадайте по различным комбинациям команды, подобной этой, с разными значениями для любого из параметров, кроме того, что вы знаете (4 устройства, уровень 5), а также с другим порядком диска:
Но так как вы НЕ знаете правильный результат, опять же, вы не должны запускать его на старых дисках, уничтожая их дальше, совершая ту же фатальную ошибку. Вместо этого используйте оверлей; например, эта процедура должна обеспечить безопасность оригиналов.
Как только вы нашли аргументы, которые создают рабочий массив, который вы можете fsck или смонтировать и проверить (например, проверьте контрольную сумму файла, достаточно большого, чтобы охватить все элементы raid, например iso, который вы должны были сохранить с его контрольной суммой / pgp подпись, или распаковать -t или gunzip -та большой архив)
источник