Некоторое время назад у меня дома была система RAID5. Один из 4 дисков вышел из строя, но после извлечения и установки его снова все было в порядке, поэтому я начал повторную синхронизацию. Когда он закончился, к моему ужасу я понял, что 3 из 4 дисков вышли из строя. Однако я не верю, что это возможно. На дисках имеется несколько разделов, каждый из которых представляет собой отдельный массив RAID.
- md0 - это массив RAID1, состоящий из sda1, sdb1, sdc1 и sdd1.
- md1 - это массив RAID5, состоящий из sda2, sdb2, sdc2 и sdd2.
- md2 - это массив RAID0, состоящий из sda3, sdb3, sdc3 и sdd3.
md0 и md2 сообщают обо всех дисках, в то время как md1 сообщает о сбое 3 (sdb2, sdc2, sdd2). Я понимаю, что когда выходят из строя жесткие диски, все разделы должны быть потеряны, а не только средние.
В этот момент я выключил компьютер и отключил диски. С тех пор я использовал этот компьютер с новым меньшим диском.
Есть ли надежда на восстановление данных? Могу ли я как-то убедить mdadm, что мои диски действительно работают? Единственный диск, который действительно может иметь проблему, это sdc, но этот тоже сообщается другими массивами.
Обновить
Наконец-то я получил возможность подключить старые диски и загрузить эту машину из SystemRescueCd. Все выше было написано по памяти. Теперь у меня есть некоторые точные данные. Вот выводmdadm --examine /dev/sd*2
/dev/sda2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:40:48 2010
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 1
Spare Devices : 1
Checksum : 68b48835 - correct
Events : 53204
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 0 8 2 0 active sync /dev/sda2
0 0 8 2 0 active sync /dev/sda2
1 1 8 18 1 active sync /dev/sdb2
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
/dev/sdb2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:44:54 2010
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Checksum : 68b4894a - correct
Events : 53205
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 1 8 18 1 active sync /dev/sdb2
0 0 0 0 0 removed
1 1 8 18 1 active sync /dev/sdb2
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
/dev/sdc2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:44:54 2010
State : clean
Active Devices : 1
Working Devices : 2
Failed Devices : 2
Spare Devices : 1
Checksum : 68b48975 - correct
Events : 53210
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 2 8 34 2 active sync /dev/sdc2
0 0 0 0 0 removed
1 1 0 0 1 faulty removed
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
/dev/sdd2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:44:54 2010
State : clean
Active Devices : 1
Working Devices : 2
Failed Devices : 2
Spare Devices : 1
Checksum : 68b48983 - correct
Events : 53210
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 4 8 50 4 spare /dev/sdd2
0 0 0 0 0 removed
1 1 0 0 1 faulty removed
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
Похоже, что все изменилось с момента последней загрузки. Если я правильно читаю, sda2, sdb2 и sdc2 работают и содержат синхронизированные данные, а sdd2 - запасной. Я отчетливо помню, как увидел 3 неисправных диска, но это хорошая новость. Но массив все еще не работает:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md125 : inactive sda2[0](S) sdb2[1](S) sdc2[2](S)
1875194880 blocks
md126 : inactive sdd2[4](S)
625064960 blocks
md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
64128 blocks [4/4] [UUUU]
unused devices: <none>
Кажется, md0 переименован в md127. md125 и md126 очень странные. Они должны быть одним массивом, а не двумя. Это раньше называлось md1. MD2 полностью ушел, но это был мой обмен, поэтому мне все равно.
Я могу понять разные имена, и это не имеет значения. Но почему массив с 3-мя «активными синхронизирующими» дисками не читается? А что случилось с sdd2 в отдельном массиве?
Обновить
Я попробовал следующее после резервного копирования суперблоков:
root@sysresccd /root % mdadm --stop /dev/md125
mdadm: stopped /dev/md125
root@sysresccd /root % mdadm --stop /dev/md126
mdadm: stopped /dev/md126
Все идет нормально. Так как sdd2 запасной, я пока не хочу его добавлять.
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c}2 missing
mdadm: cannot open device missing: No such file or directory
mdadm: missing has no superblock - assembly aborted
Видимо, я не могу этого сделать.
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c}2
mdadm: /dev/md1 assembled from 1 drive - not enough to start the array.
root@sysresccd /root % cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : inactive sdc2[2](S) sdb2[1](S) sda2[0](S)
1875194880 blocks
md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
64128 blocks [4/4] [UUUU]
unused devices: <none>
Это тоже не сработало. Давайте попробуем со всеми дисками.
mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c,d}2
mdadm: /dev/md1 assembled from 1 drive and 1 spare - not enough to start the array.
root@sysresccd /root % cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : inactive sdc2[2](S) sdd2[4](S) sdb2[1](S) sda2[0](S)
2500259840 blocks
md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
64128 blocks [4/4] [UUUU]
unused devices: <none>
Неудачно. На основании этого ответа я планирую попробовать:
mdadm --create /dev/md1 --assume-clean --metadata=0.90 --bitmap=/root/bitmapfile --level=5 --raid-devices=4 /dev/sd{a,b,c}2 missing
mdadm --add /dev/md1 /dev/sdd2
Это безопасно?
Обновить
Я публикую сценарий суперблока парсера, который использовал для создания этой таблицы в своем комментарии. Может быть, кто-то найдет это полезным. Спасибо за вашу помощь.
источник
mdadm --re-add
это не то, что вы ищете. Вы недавно делали тест памяти? Есть ли у вас какие-либо сообщения журнала, связанные с ошибкой массива?mdadm -A /dev/md1 /dev/sd{b,c,d}2
(возможно--force
)? (Если у вас нет, сначала сделайте резервную копию суперблоков.)/dev/sdd2
может быть в отдельном массиве, несмотря на тот же UUID, что иsd{a,b,c}2
.Ответы:
Сначала проверьте диски, попробуйте запустить Smart Selftest
Это может занять несколько часов, но проверяйте состояние каждого диска каждые несколько минут, т.е.
Если отчеты о состоянии диска не завершены из-за ошибок чтения, этот диск следует считать небезопасным для повторной сборки md1. После завершения самотестирования вы можете начать пытаться пересобрать массив. По желанию, если вы хотите быть особенно осторожным, перед продолжением переместите диски на другую машину (на случай плохого ram / controller / etc).
Недавно у меня был такой же случай. Один диск вышел из строя, я снова добавил в массив, но во время восстановления 3 из 4 дисков потерпели неудачу в целом. Содержимое / proc / mdadm было таким же, как у вас (возможно, не в том же порядке)
Но мне повезло и собрал массив с этим
Взглянув на предоставленный вами вывод --examine, я могу сказать, что произошел следующий сценарий: произошел сбой sdd2, вы удалили его и добавили заново, так что он стал резервным диском, пытающимся восстановить. Но во время восстановления sda2 не удалось, а затем sdb2 не удалось. Таким образом, счетчик событий больше в sdc2 и sdd2, которые являются последними активными дисками в массиве (хотя у sdd не было возможности восстановить, и поэтому он является наиболее устаревшим из всех). Из-за различий в счетчиках событий потребуется --force. Таким образом, вы также можете попробовать это
В заключение, я думаю, что если вышеприведенная команда завершится неудачно, вы должны попытаться воссоздать массив следующим образом:
Если вы сделаете это
--create
,missing
часть важна, не пытайтесь добавить четвертый диск в массив, потому что тогда начнется строительство, и вы потеряете свои данные . Создание массива с отсутствующим диском не изменит его содержимое, и у вас будет возможность получить копию в другом месте (raid5 не работает так же, как raid1).Если это не в состоянии вывести массив, попробуйте это решение (скрипт perl) здесь Воссоздание массива
Если вам, наконец, удастся запустить массив, файловая система будет нечистой и, вероятно, поврежденной. Если во время перестроения произойдет сбой одного диска, ожидается, что массив остановится и остановится, не делая никаких записей на другие диски. В этом случае два диска вышли из строя, возможно, система выполняла запросы на запись, которые не удалось выполнить, поэтому есть небольшая вероятность того, что вы потеряли некоторые данные, но также вероятность того, что вы никогда этого не заметите :-)
редактировать: некоторые уточнения добавлены.
источник
mdadm --assemble /dev/md1 /dev/sd[abc]2 --force
работал. Спасибо. Вы сохранили мои данные! :) Я не буду пытаться добавить четвертый диск, потому что первые 3 не так хороши, как я думал ранее. Самотестирование показало, что у каждого есть 10-20 нечитаемых блоков. Я чувствую себя глупо, что не проверил это первым.--assume-clean
(вы сделали), это не так.Я испытывал много проблем во время использования
mdadm
, но никогда не терял данные. Вам следует избегать этого--force
варианта или использовать его очень осторожно, потому что вы можете потерять все свои данные. Пожалуйста, оставьте свой/etc/mdadm/mdadm.conf
источник