Загрузка с 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
- Для комментирования войдите или зарегистрируйтесь

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