Загрузка с 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

это очень плохая идея!

Никогда не ставил задачу автоматически стартовать систему с поломанным дисковым массивом, т.к. считаю, что это очень плохая идея! В качестве альтернативы я бы предложил включить в цепочку загрузочных дисков после стартового массива сетевой диск с диагностической системой, которая протестирует твою систему и пошлет тебе соответствующее извещение, если со стартового массива запуститься не удастся.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".