Загрузка grub из raid1

Изображение пользователя AS_Pushkin.
Опубликовано:
Раздел:

Бьюсь с raid'ом уровня 1. Пока он меня побеждает. Грустный

Сделал я так, как рассказано в многочисленных HOWTO, но безрезультатно. Т.е. почти безрезультатно.

Расскажу по порядку.
Был один диск SATA II объемом 200Gb. Разбит она на
sda1 - /boot
sda2 - /
sda5 - /home
sda6 - /var
sda7 - swap

Приобрели второй диск такого же объема, я его разбил точно так же, только тип партиций указал не 83, а fd. Сделал устройства /dev/md0,1,2,3,4, связал их с устройствами /dev/sdbX:
md0 - sdb1 (/boot)
md1 - sdb5 (/home)
md2 - sdb6 (/var)
md3 - sdb7 (swap)
md4 - sdb2 (/)

Далее скопировал все с sda на sdb и стал шаманить над grub'ом.

В принципе, все разделы, кроме md4 = sdb2 = /, у меня зеркалируются. Этот раздел - никак не хочет!

Вот тут и прооизошел косяк. Во всяких howto не описано как поступать, когда /boot лежит на отдельном разделе (в одном слегка описано, но неправильно, поскольку вывод команд там не для этого случая).

Всевозможные вариации настройки grub дали один результат: Kernel panic.

Вообще-то, у меня есть подозрение, что ядро не может работать с raid'ом, потому что raid скомпилирован отдельным модулем и этот модуль находится на другом разделе. И скорее всего это подозрение верное.

Если в grub.conf написано
kernel (hd0,0)/vmlinuz-2.6.14-1.1653.1asp root=/dev/sda2
, то все работает. Только устройство /dev/sda2 оказывается занятым и его невозможно сделать вторам диском для /dev/md4. Если же я меняю на
kernel (hd0,0)/vmlinuz-2.6.14-1.1653.1asp root=/dev/md4
- косяк. Грустный

Вот, кстати, еще:

# cat config-2.6.14-1.1653.1asp | grep RAID
CONFIG_RAID_ATTRS=m
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_SCSI_AACRAID=m
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
CONFIG_MEGARAID_LEGACY=m
CONFIG_MEGARAID_SAS=m
# Multi-device support (RAID and LVM)
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID5=m
CONFIG_MD_RAID6=m

Выходит, raid1 грузится модулем.

Можно ли как-то обойти эту модульность без пересбокри ядра? Или где взять это SRPM этого же ядра?


Души прекрасные порывы!

Изображение пользователя Ali.

Re: Загрузка grub из raid1 #1

Дело не в том, что поддержка md модулем, а в том, что нужно использовать initrd.img собранный с поддержкой raid'а.

Изображение пользователя AS_Pushkin.

Re: Загрузка grub из raid1 #2

Ali писал(а):
Дело не в том, что поддержка md модулем, а в том, что нужно использовать initrd.img собранный с поддержкой raid'а.
Сижу вот, ядро пересобираю. Включил RAID в ядро. Теперь заработает?


Души прекрасные порывы!

Изображение пользователя Ali.

Re: Загрузка grub из raid1 #3

ИМХО Нет! Неважно как собрано ядро. Важно то, что grub не понимает ФС. Boot раздел лучше сделать простым. Далее
при сборке ядра обычно собирается правильный initrd, ведь вне зависимости от того как ядро собрано конфигурацию программного массива оно с него узнать не может.

Изображение пользователя Ali.

Re: Загрузка grub из raid1 #4

Цитата:
Вообще-то, у меня есть подозрение, что ядро не может работать с raid'ом, потому что raid скомпилирован отдельным модулем и этот модуль находится на другом разделе. И скорее всего это подозрение верное.
По этому и нужен initrd т.е. маленькая корневая ФС на которой лежит модуль и файлы конфигурации md .

Изображение пользователя AS_Pushkin.

Re: Загрузка grub из raid1 #5

Ali писал(а):
По этому и нужен initrd т.е. маленькая корневая ФС на которой лежит модуль и файлы конфигурации md .
Ядро собрал. Сделал два rpm-пакета. initrd-blah-blah.img, как я понимаю, потом появится при установке. Как на него занести файлы конфигурации md?


Души прекрасные порывы!

Изображение пользователя Ali.

Re: Загрузка grub из raid1 #6

Посмотрел сейчас на vmware и понял, что был поспешен в суждениях и потому отчасти не прав. Пардон.
Моя категоричность связана с тем, что программный raid я использовал исключительно для ускорения дисковых операций, и по - тому это был raid0 с которого загрузка не возможна.
Выводы:
1) В grub.conf в случае модульного ядра должна быть строка initrd /initrd.img . Если его(initrd.img) разобрать, то в нем обнаружится необходимый моуль(и) и ни какого намека на /etc/raidtab, недаром 85 тип раздела называется автодетект. Создать нужный initrd.img можно не пересобирая ядро с помощью mkinitrd. Утилита эта очень дистрспецифична см. ман.
2) Зеркалировать корневую ФС из работающей системы не возможно, бо она изменяется. Видимо существуют спец утилиты (man raidhotadd). Кстати, другие разделы в single.
Да, совсем забыл, swap не надо зеркалировать raid0.

Изображение пользователя AS_Pushkin.

Re: Загрузка grub из raid1 #7

Ali,
В общем, так.
Пересобрал ядро, установил, перезагрузил. Все работает, все грузится с md. Даже swap на raid1 работает. Улыбка

Правда, я предварительно настроил raid через mdadm, создал файл /etc/mdadm.conf. Потом перезагрузился и добавил в /dev/md4 диск /dev/sdb2. Минут пятнтадцать оно там синхронизировалось и теперь работает на радость всем. Улыбка

Не знаю, показалось ли мне, но такое чувство, что диск стал работать быстрее.

Правда, что-то стало с ip-tables. Грустный В принципе, сейчас это некритично, но потом понадобится...


Души прекрасные порывы!

Изображение пользователя Ali.

Re: Загрузка grub из raid1 #8

Ну и славно. Вы этим Особенности построение Soft-RAID-1 в Linux | Linux на "Мягкой кровле" пользовались, или чем еще.
Интересно.

Изображение пользователя AS_Pushkin.

Re: Загрузка grub из raid1 #9

Ali писал(а):
Вы этим Особенности построение Soft-RAID-1 в Linux | Linux на "Мягкой кровле" пользовались, или чем еще.
И этим тоже. Что-то читал из OpenNET, что-то с сайта Debian'а (или около него), что-то в man'ах. Главное - работет! Улыбка


Души прекрасные порывы!