Загрузка 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

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

Аватар пользователя AS_Pushkin

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

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

Сижу вот, ядро пересобираю. Включил RAID в ядро. Теперь заработает?

Аватар пользователя Ali

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

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

Аватар пользователя Ali

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

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

По этому и нужен initrd т.е. маленькая корневая ФС на которой лежит модуль и файлы конфигурации md .

Аватар пользователя AS_Pushkin

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

Ali писал(а):
По этому и нужен initrd т.е. маленькая корневая ФС на которой лежит модуль и файлы конфигурации md .

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

Аватар пользователя Ali

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

Посмотрел сейчас на 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

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

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

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

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

Аватар пользователя Ali

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

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

Аватар пользователя AS_Pushkin

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

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

И этим тоже. Что-то читал из OpenNET, что-то с сайта Debian'а (или около него), что-то в man'ах. Главное - работет! Улыбка

Аватар пользователя Вячеслав Улюшов

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

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

Как-то попыталься сделать RAID1 по своему описанию. Честно скажу, ничего у меня не вышло.
Сейчас многое поменялось. Но grub никакими особенными новшествами не оброс, и его принцип работы не изменился.

Если мне надо сделать зеркало, пользуюсь страничкой "Как перенеси существующую Linux систему на RAID1 добавив второй диск" для справки.

А чтобы избежать лишних проблем и перезагрузок, процесс создания RAID-а от начала и до конца выполняю не на рабочей ОС, а загрузившись с LiveCD, желательно того же дистрибутива, что стоит на жестком диске.

RSS-материал