Linux rootfs массив не может случайно собрать

У меня есть машина под управлением Arch x86_64 2.6.30.

Его корень установлен в массиве raid5, автоматически монтируемом в /dev/md0.
Это делается через параметры ядра следующим образом:
kernel /vmlinuz26 md=0,/dev/sda3,/dev/sdb3,/dev/sdc3 md=2,/dev/sda2,/dev/sdb2,/dev/sdc2 rootfstype=ext4 root=/dev/md0 ro

Раньше это работало нормально, однако иногда не удается собрать массив md0.
Что происходит, так это то, что все идет нормально, ядро ​​проверяет идентификаторы блоков, находит совпадения, затем ждет, пока массив соберется 10 секунд.

Обычно это делается мгновенно, однако иногда он ждет 10 секунд, после чего отключается и переходит на консоль восстановления, которую я не могу использовать, потому что она не принимает никаких данных. Я думаю, что это может быть потому, что единственные клавиатуры, которые у меня есть, это USB-клавиатуры (даже если клавиатура работает в меню GRUB).

Когда это произойдет, мне просто нужно перезагрузиться, и массив будет монтироваться очень хорошо.

Кстати, это происходит примерно в 30% случаев.
Это происходит после чистых отключений.
Это может происходить более одного раза подряд.

Поскольку он не может смонтировать rootfs, он не может писать ни в какие журналы.

Кто-нибудь когда-нибудь видел что-то подобное?
Есть идеи, почему это может происходить?

3 ответа

Решение

Я предполагаю, что это может быть просто из-за того, что ваше ядро ​​может переупорядочивать имена дисков, так как обычно оно просто присваивает имена в порядке поступления, а не как udev для переименования.

Мое предложение будет использовать initrd, который поставляется с udev, так что вы можете убедиться, что диски называются правильно. Было бы еще более отказоустойчиво, если бы вы использовали udev (или что-то похожее, созданное пользователем), а затем просто монтировали диски через /dev/disk/by-uuid/, так как они обычно не меняются.

Даже без скриншота ошибки, я думаю, никто не может сказать наверняка. Лучшее, что вы можете сделать, это ввести initrd в вашу систему и преобразовать процесс загрузки для использования UUID вместо имен устройств (которые могут быть изменены, например, если вы забыли свой pendrive в любом из слотов usb).

Когда вы совершаете рейд на разделы, вы можете проверить, что все они помечены как разделы Linux Raid с автоопределением (тип FD), а не как Linux (тип 83). Пока вы не измените размер раздела, вы можете смело изменять тип с помощью редактора разделов. Если вы чувствуете себя особенно параноиком, просто делайте по одному разделу за раз, чтобы не уничтожать весь рейд.

Ваше ядро ​​достаточно современно, что, если оно имеет соответствующий модуль mdadm, либо встроенный, либо предоставленный в initrd, оно будет сканировать все доступные разделы. Если он находит раздел типа FD, он проверяет наличие суперблока mdadm. Все разделы с одинаковым идентификатором рейда будут автоматически собраны без необходимости явно устанавливать его при загрузке.

Вы также можете продолжать его определять, но я бы начал с проверки, что все типы разделов являются FD, а затем отбросил определение рейда и посмотрел, поможет ли это.

Другие вопросы по тегам