У меня есть RAID1 md0 для / boot, состоящий из 4-х разделов (sda2, sdb2, sdc2, sdd2). Я использую GPT на жестких дисках емкостью 2 ТБ, поэтому первые разделы на каждом диске (sda1, ...) являются разделами bios_grub размером 1 мегабайт.
У меня также есть RAID10 md1 для LVM (содержащий /) и RAID0 md2 для подкачки, оба построены из разделов на всех 4 дисках.
Версия постоянного суперблока mdadm - 0.9.
Grub был установлен с чем-то вроде grub-install --modules="mdraid lvm" '(hd0)'
на всех 4 дисках (hd0, hd1, hd2, hd3).
Эта проблема.
При перезагрузке grub2 выдает ошибку «error: no such disk» и отображает запрос «grub rescue>». ls
команда показывает только 4 диска и их разделы - но нет md*
устройств. Пытаюсь insmod normal
опять выдает "ошибка: нет такого диска.". Изучение «корня» и «префикса» показывает что-то вроде «(md0) / grub», что правильно. Делать set prefix=(hd0,2)/grub
а потом insmod normal
позволяет нормально загружаться.
Вопрос.
Почему grub2 не видит md0?
Пока единственное решение, которое я вижу, - это вручную создать образ grub с жестко заданным рабочим префиксом (grub-mkimage --prefix = '(hd0,2) / grub'), а затем использовать grub-setup для записи образа в каждый диск. Однако это решение некрасиво и подвержено ошибкам (чтобы избежать ошибок, необходимо выяснить, как grub-install вызывает эти две команды). Я буду признателен за лучшие решения. (Примечание: это удаленный сервер, поэтому он не может выполнять «отладку перезагрузки».)
ИМХО, RAID по-прежнему остается одной из серых областей загрузчиков.
Я недавно построил систему RAID1, и через несколько часов, пытаясь заставить LILO / GRUB / GRUB2 обнаружить мой рейд, я сдался и просто сказал ему использовать первый раздел первого обнаруженного жесткого диска и убедился, что в случае сбоя жесткого диска следующий Жесткий диск уже был выстроен с правильным MBR / загрузчиком и т. Д. ...
Что он делает, так это загружается, захватывает ядро и initfs с первого жесткого диска (без рейда), а затем загружает ядро и оставляет все данные RAID ядру. Поскольку GRUB / LILO физически не записывает на диски, это не повредит их.
В основном я просто проигнорировал все вместе RAID на этапе загрузчика.
ядру необходимо повторно собрать массивы raid, даже если сначала это сделает grub. Нет реальной причины, по которой grub должен быть осведомлен о рейдах для системы RAID1, если только диск не выходит из строя во время загрузки.
P.S. Вам не нужно использовать raid0 SWAP, эта возможность уже есть в ядре. Просто установите приоритет для обоих устройств подкачки на 1 в FSTAB
/dev/sda2 none swap sw,pri=1 0 0
/dev/sdb2 none swap sw,pri=1 0 0
ect....
И если один диск подкачки выйдет из строя во время нормальной работы, очень высока вероятность отказа вашей системы. (вы можете обменять raid1, только не из fstab, как указано выше)