Восстановление mdadm в live/rescue режиме
Вводные - есть сервер, на нем linux, на нем mdadm raid 1 из 2 дисков. Один диск выходит из строя, загрузиться со 2го не получается, нужно восстановить работу после замены диска на новый.
-
Грузимся в Live CD (при восстановлении использовался https://grml.org/)
-
Для начала нужно смонтировать рейд
mdadm --assemble --scan
В этом режиме mdadm смотрит диски, видит на них разделы рейда и собирает рейды в неполном режиме, т.е. 1 диск на месте, другого нет
-
Смотрим разделы дисков, чтобы понять названия дисков
lsblk -fУвидим, что 1 диск чистый, другой с разделами
-
Чтобы нам собрать обратно - нужно перенести файловую структуру с исправного диска на новый
sfdisk -d /dev/sdX | sfdisk /dev/sdY
где sdX - исправный диск с разделами, а sdY - новый диск, куда нужно перенести разметку
-
Дальше начинаем собирать наш рейд обратно. Для начала смотрим статус
cat /proc/mdstatВывод примерно такой должен быть

-
Нам нужно добавить в соответствующие рейды нужные разделы. На скрине выше нужно было бы добавить sda4 или sdb4 к рейду md125, sda5 или sdb5 к md126 и так далее, в зависимости от того, какой диск выжил
-
Добавляем командой
mdadm --manage /dev/mdX --add /dev/sdYгде mdX - целевой рейд, sdY - раздел с нового диска
-
После того как добавим во все рейды разделы с нового диска - начнется ребилд рейда, нужно дождаться конца процесса
Дальше нужно накатить загрузчик на новый диск
-
Монтируем наш корень / с рейда (как правило самый большой раздел) в каталог на лайв системе, например в /mnt
mount /dev/mdX /mntгде mdX - рейд с корнем нашей системы
-
Монтируем раздел с UEFI в /boot нашей системы
mount /dev/mdY /mnt/bootгде mdY - рейд с UEFI (пример раздела - /dev/sdb2 4096 2101247 2097152 1G Linux extended boot , но иногда может быть просто Linux RAID отображать)
-
Прокидываем системные разделы с девайсами, чтобы нормально прописать загрузчик
mount --bind /dev /mnt/devmount --bind /proc /mnt/procmount --bind /sys /mnt/sys -
Меняем корень системы на наш, чтобы действия происходили в нем и указываем путь до оболочки консоли
chroot /mnt /bin/bash -
Ставим загрузчик
grub-install /dev/sdYupdate-grubгде sdY - новый диск
-
Выходим из нашего рута, ребутаемся, грузимся в нашу систему
exitreboot
Если все сделали правильно, то система загрузится