Вперед Назад Содержание

3. Загружаемый Raid

Я не собираюсь здесь описывать фундаментальные аспекты настройки raid0/1/5 на Linux, т.к. все полностью описано в других документах. Проблема, которой займусь я - это настройка raid на корневой файловой системе, и возможность сделать его загружаемым при помощи стандартного LILO. Документация, поставляемая с исходными текстами LILO (не руководствами) и с утилитами raidtools-0.90, описывает детали загрузки, загрузочные параметры и общую настройку raid соответственно.

Здесь описаны два варианта действий. Настройка и установка загружаемого корневого raid, и преобразование уже существующей не-raid системы в загружаемый корневой raid без потери данных.

3.1 Загрузка RAID 1 при помощи стандартного LILO

Чтобы загрузочная информация была избыточной и легкой в сопровождении, создайте небольшой RAID1 и смонтируйте его в каталог /boot вашего системного диска. LILO не знает об устройствах 0x9?? и не может найти информацию во время загрузки, потому что подсистема raid еще не активна. Чтобы обойти это, вы можете передать LILO информацию о геометрии диска (дисков), из которой LILO сможет определить положение информации, необходимой для загрузки ядра, даже если он на RAID1-разделе. Это происходит потому, что раздел RAID1 аналогичен стандартному разделу, за исключением супер-блока raid, записанного в конце. Загружаемый raid-массив должен находиться в пределах первых 1024 Мбайт диска. Теоретически, он может начинаться, где угодно в 1024 Мегабайтном пространстве, но на практике мне так и не удалось его запустить, если загружаемый raid не находился в самом начале этого гигабайта. Возможно, это было из-за того, что я делал что-то глупое, но теперь это не имеет значения. С тех пор я всегда настраиваю все мои системы так, чтобы загружаемый raid-массив был первым разделом в системе. У меня есть следующие конфигурации корневых raid-систем, с загружаемым RAID1, подключенным к /boot с корневыми raid-массивами: RAID1, RAID5, RAID10 & RAID1-10 ( 1 зеркало + 1 raid0-блок). У последнего имеется особая пара lilo-файлов, потому что у всех дисков разные геометрии, однако, принципы первоначального загрузочного процесса абсолютно одинаковы. Корневые системы RAID10 и RAID1-10 требуют использования initrd для подключения корневой файловой системы после того, как процесс загрузки ядра закончен. Смотрите приложения с примерами конфигурационных файлов для всех моих систем.

Стандартный конфигурационный файл LILO выглядит примерно так:

# lilo.conf - предполагаем, что диск менее 1024 Мб
        boot = /dev/hda
        delay = 40               # многовато, но красиво
        vga = normal             # обычно не требуется
        image = /bzImage
        root = /dev/hda1
        read-only
        label = Linux

Пара конфигурационных файлов LILO для raid выглядят примерно так:

# lilo.conf.hda - первичный ide, главный диск
        disk=/dev/md0
        bios=0x80
        sectors=63
        heads=16
        cylinders=39770
        partition=/dev/md1
        start=63
        boot=/dev/hda
        map=/boot/map
        install=/boot/boot.b
        image=/boot/bzImage
        root=/dev/md0
        read-only
        label=LinuxRaid

# ---------------------

# lilo.conf.hdc - вторичный ide, главный диск
        disk=/dev/md0
        bios=0x80                # см. замечание ниже
        sectors=63
        heads=16
        cylinders=39770
        partition=/dev/md1
        start=63
        boot=/dev/hdc            # вот это второй диск
        map=/boot/map
        install=/boot/boot.b
        image=/boot/bzImage
        root=/dev/md0
        read-only
        label=LinuxRaid

Если ваш BIOS достаточно "умен" (многие нет), чтобы понять, что первый диск не работает или отсутствует, и затем начать загружаться со второго, то здесь должна находиться строка bios=81. Это ситуация больше подходит для SCSI-bios, чем для IDE-bios. Я просто планирую перенос диска, в случае проблем с главным загрузочным диском, чтобы заменить отказавший диск C.

Информация о геометрии диска может быть получена при помощи fdisk:

fdisk -ul (маленькая L)
fdisk -ul /dev/hda

Disk /dev/hda: 16 heads, 63 sectors, 39770 cylinders
Units = sectors of 1 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1            63     33263     16600+  fd  Linux raid autodetect
/dev/hda2         33264    443519    205128   82  Linux swap
/dev/hda3        443520  40088159  19822320   fd  Linux raid autodetect

* Заметьте, что здесь приведено начало каждого раздела

3.2 Подробный разбор lilo.conf для загружаемого raid

Здесь приведен файл lilo.conf для raid, показанный выше, с комментариями к каждой строке.

# lilo.conf.hda - первичный ide, главный диск
#       местоположение каталога /boot, в котором буден находиться
#       ядро, таблицы Lilo, и т.п.
#       Заметьте, что это не НАСТОЯЩИЙ раздел, в котором находятся
#       загрузочный образ и информация, а устройство,
#       которое логически содержит этот каталог.
#       В этом примере /dev/md1 подключен к точке /dev/md0/boot
     disk=/dev/md0

#       указать LILO, которое BIOS-устройство использовать для загрузки, т.е. диск C:
     bios=0x80

#       указать LILO физическую геометрию устройства,
#       которая не всегда совпадает с "логической"
#       геометрией. Смотрите файловую систему /proc или
#       просмотрите сообщения ядра при загрузке, когда он опрашивает  диски
#
     sectors=63
     heads=16
     cylinders=39770

#       Это подставная строка, чтобы LILO был удовлетворен тем, что
#       узнал raid-набор (set) и потом нашел НАЧАЛО
#       загрузочного сектора. Для того, чтобы узнать
#       для чего эта строка на самом деле, читайте
#       документацию, идущую с пакетом исходных текстов LILO.
#       Этот параметр "должен" отличаться от строки
#       disk= ,приведенной выше. Это может быть любое другое mdx
#       устройство, используемое или нет, и не обязательно должно быть тем,
#       которое содержит информацию каталога /boot
#
     partition=/dev/md1

#       первый сектор раздела, содержащего каталог /boot
     start=63

#       настоящее устройство, куда LILO запишет загрузочную информацию
     boot=/dev/hda

#       логическое устройство, куда LILO поместит загрузочную информацию
     map=/boot/map
     install=/boot/boot.b

#       логическое местоположение ядра
     image=/boot/bzImage

#       стандартные строки приведены ниже
#       корневым (root) может быть raid1/4/5-устройство
     root=/dev/md0
     read-only
     label=LinuxRaid


Вперед Назад Содержание
Используются технологии uCoz