Назад | Перейти на главную страницу

Программный RAID1 Linux: как загрузиться после (физического) удаления / dev / sda? (LVM, mdadm, Grub2)

Сервер, настроенный с помощью Debian 6.0 / squeeze. Во время установки squeeze я настроил два диска SATA емкостью 500 ГБ (/ dev / sda и / dev / sdb) как RAID1 (управляемый с помощью mdadm). RAID содержит группу томов LVM 500 ГБ (vg0). В группе томов есть один логический том (lv0). vg0-lv0 отформатирован с помощью extfs3 и монтируется как корневой раздел (без выделенного / загрузочного раздела). Система загружается с использованием GRUB2.

При нормальном использовании система загружается нормально.

Кроме того, когда я попытался удалить второй диск SATA (/ dev / sdb) после выключения, система заработала без проблем, и после повторного подключения диска я смог --re-add / dev / sdb1 в RAID массив.

Но: После удаления первого диска SATA (/ dev / sda) система больше не загружается! На секунду появляется приветственное сообщение GRUB, затем система перезагружается.

Я попытался установить GRUB2 вручную на / dev / sdb ("grub-install / dev / sdb"), но это не помогло.

Похоже, что сжатие не может настроить GRUB2 для запуска со второго диска, когда первый диск удален, что кажется весьма важной особенностью при запуске такого типа программного RAID1, не так ли?

На данный момент я не понимаю, проблема ли это в GRUB2, LVM или настройке RAID. Есть подсказки?

Вам необходимо установить GRUB в MBR обоих дисков, и вам нужно сделать это таким образом, чтобы GRUB считал каждый диск первым диском в системе.

GRUB использует собственное перечисление дисков, которое абстрагируется от того, что представляет ядро ​​Linux. Вы можете изменить устройство, которое он считает первым диском (hd0), используя строку «device» в оболочке grub, например:

device (hd0) /dev/sdb

Это сообщает grub, что для всех последующих команд / dev / sdb следует рассматривать как диск hd0. Отсюда вы можете завершить установку вручную:

device (hd0) /dev/sdb
root (hd0,0)
setup (hd0)

Это устанавливает GRUB на первом разделе диска, который он считает hd0, который вы только что установили как / dev / sdb.

Я делаю то же самое для / dev / sda и / dev / sdb, на всякий случай.

Отредактировано для добавления: Я всегда находил Gentoo Wiki удобно, пока я не делал это достаточно часто, чтобы сохранить это в памяти.

Думали ли вы об установке третьего диска, который будет служить просто загрузочным? Я также видел проблемы с настройками raid 1 lvm (на CentOS), которые не могли загрузить второй диск. Я думаю, что проблема связана с тем, что grub не может обрабатывать собственные разделы lvm, хотя я не совсем уверен.

В любом случае, это мой ответ: установите третий небольшой диск исключительно для загрузки системы. Бьюсь об заклад, вы могли бы даже поумнеть и сделать это с помощью какой-нибудь маленькой флеш-памяти или SSD-накопителя.

Grub должен иметь возможность распознавать настройки RAID1 и устанавливать их на все подчиненные диски, когда им предлагается установить на MD-устройство.

Действительно, это должно работать. Это похоже на то, как grub-install работает с GRUB 1.99 и 2.02.

Независимо от того, каким образом sda + sdb RAID1 хранит ваш загрузочный раздел, на ядро, скорее всего, будет ссылаться UUID. Проверить мой связанный вопрос чтобы увидеть, так ли это. Другими словами, если grub-install --debug показывает что-то вроде --prefix=(md0)/boot/grub/ у вас может возникнуть проблема, если сначала будет обнаружен другой массив RAID, что, вероятно, даст grub rescue> скорее, чем сбой, наблюдаемый здесь. Если он использует --prefix=(mduuid/, он должен это найти.

Итак, если вы grub-install /dev/sda; grub-install /dev/sdb, не имеет значения, удаляете ли вы один из этих дисков: пока BIOS может загрузить MBR с одного из них, он найдет RAID UUID и LV путем поиска. MBR, однако, не зеркалируется. Так что наведите установщика на все компоненты по очереди.

Все это в теории ....


Меня интересует этот древний вопрос: Welcome to GRUB! был показан баннер, а затем сервер перезагрузился, потому что у меня похожие симптомы, возможно, вызвано тем, что BIOS не может прочитать диск размером 4 КБ / сектор. Я не знаю, нашел ли спрашивающий когда-нибудь решение.

Логика здесь в том, что приветственное сообщение находится в файле kernel.img, поэтому, по крайней мере, часть ядра должна загружаться. Однако согласно (возможно, устаревшее) руководство, при чтении второго сектора все остальное изображение загружается в память с использованием списка блоков. Если черный список поврежден (или, возможно, смещение LBA вычислено неправильно из-за размера сектора или по другим причинам), может произойти сбой, перезагрузка или зависание.