Загрузка с degraded raid1 (mdadm)
Наткнулся на ситуацию, когда невозможно "автоматически" загрузиться с degraded raid1
. На этапе initramfs
массив остается в статусе inactive
. Rootfs
не найден, предлагается запустить shell
для исправления ситуации.
Изучив, что происходит в initramfs
(собрано штатным genkernel
), пришел к выводу, что сборка всех массивов mdadm
происходит через udev
-правила. По мере обнаружения каждого блочного устройства (/dev/sd*
) происходит попытка добавить его в массив через mdadm --incremental
. Соответственно, когда первый диск из raid1
обнаруживается, то создается /dev/mdX
в статусе inactive
(MD_STARTED=unsafe). Второй диск умер (отключен), соответственно никаких больше действий не происходит, и /dev/mdX
остается неактивным.
В аварийном shell
можно продолжить загрузку после серии команд:
mdadm --stop /dev/mdX mdadm --assemble /dev/mdX --run
Проблема критичная, так как диски летят в том числе и при выключении/включении серверов. Необходимо, чтобы сервер загружался с degraded raid1
(это в частности, а так для любых уровней)!
Вроде бы еще несколько лет назад mdadm
собирал массивы в initramfs
скриптами без udev
и сервера нормально загружались в статусе degraded
.
Если кто-то это поборол, прошу поделиться рецептом.
PS: к данной проблеме отношения не имеют: domdadm, bootdegraded, boot_degraded, start_dirty_degraded
- Для комментирования войдите или зарегистрируйтесь
это очень плохая идея!
Никогда не ставил задачу автоматически стартовать систему с поломанным дисковым массивом, т.к. считаю, что это очень плохая идея! В качестве альтернативы я бы предложил включить в цепочку загрузочных дисков после стартового массива сетевой диск с диагностической системой, которая протестирует твою систему и пошлет тебе соответствующее извещение, если со стартового массива запуститься не удастся.