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, а затем отбросил определение рейда и посмотрел, поможет ли это.