Информация, которую я собрал здесь была изначально подготовлена Harald
Nordgеrd-Hansen < 
[email protected]> и была послана в список рассылки raid в
файле lilo.conf с комментариями Martin Bene .
Большое спасибо им за помощь. Я попытался собрать воедино эту информацию
и вспомогательную работу, проделанную многими, кто участвует в списке
рассылки raid и в проекте linux raid, в некоторое подобие КНИГИ
РЕЦЕПТОВ, включив примеры из реально работающих систем, чтобы было
проще понять и настроить загружаемый корневой raid (bootable root raid).
Один раздел посвящен преобразованию стандартной однодисковой системы в
RAID. Ключом к удачному преобразованию, по моему скромному мнению, является
понимание, что же такое загружаемый корневой raid.
<
[email protected]
Да, я уверен, что они есть. Если вы будете настолько добры, чтобы сообщить о них, то я исправлю документ. ;-)
This document is GNU copyleft by Michael Robinton [email protected].
Permission to use, copy, distribute this document for any purpose is hereby granted, provided that the author's / editor's name and this notice appear in all copies and/or supporting documents; and that an unmodified version of this document is made freely available. This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, either expressed or implied. While every effort has been taken to ensure the accuracy of the information documented herein, the author / editor / maintainer assumes NO RESPONSIBILITY for any errors, or for any damages, direct or consequential, as a result of the use of the information documented herein.
Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу, приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но
при этом сохранить авторские права и быть уведомленными о всех планах
распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь
к координатору проекта Linux HOWTO по электронной почте:
[email protected], или к координатору русского
перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу
[email protected]
Ниже перечислены пакеты, которые вам понадобятся, а также приведен список документации, которая отвечает на все обычные вопросы о настройке и запуске raid. Пожалуйста, прочитайте это внимательно.
Вам понадобится получить наиболее новые версии этих пакетов.
Я взял linux-2.2.14 с kernel.org
Я использовал http://people.redhat.com/mingo/raid-patches/
Можете просмотреть последнюю версию авторского оригинала этого документа. Исправления и предложения приветствуются!
Мини-HOWTO Boot+Root+Raid+Lilo
Формат LaTeX (для DVI и PostScript), чистый текст, и HTML.
http://www.linuxdoc.org/HOWTO/mini/Boot+Root+Raid+LILO.htmlSGML и HTML.
ftp.bizsystems.net/pub/raid/
Если вы планируете использовать raid1/5 поверх raid0, прочтите:
/usr/src/linux/Documentation/initrd.txt
а также документацию и руководства, поставляемые с утилитами raidtools.
и..... Software-RAID-HOWTO.html
Подключиться к спискам рассылки можно по адресам:
почту посылайте по адресу: [email protected]
почту посылайте по адресу: [email protected] (это по-видимому наиболее активный список)
Я не собираюсь здесь описывать фундаментальные аспекты настройки raid0/1/5 на Linux, т.к. все полностью описано в других документах. Проблема, которой займусь я - это настройка raid на корневой файловой системе, и возможность сделать его загружаемым при помощи стандартного LILO. Документация, поставляемая с исходными текстами LILO (не руководствами) и с утилитами raidtools-0.90, описывает детали загрузки, загрузочные параметры и общую настройку raid соответственно.
Здесь описаны два варианта действий. Настройка и установка загружаемого корневого raid, и преобразование уже существующей не-raid системы в загружаемый корневой raid без потери данных.
Чтобы загрузочная информация была избыточной и легкой в сопровождении, создайте небольшой 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 * Заметьте, что здесь приведено начало каждого раздела
Здесь приведен файл 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
Переход с не-raid системы к raid достаточно прост, и состоит из нескольких последовательных шагов, приведенных ниже. Описание приведено для системы с загрузочным, корневым и swap-разделами.
СТАРЫЙ диск в существующей системе:
    /dev/hda1     загрузочный, возможно dos+loadlin или lilo
    /dev/hda2     корневой
    /dev/hda3     swap
Мы добавим дополнительный диск и преобразуем систему в RAID1. Вы можете легко добавить несколько дисков и сделать RAID5-массив, при помощи подобной процедуры.
Скачайте новое чистое ядро, утилиты raidtools-0.90 (или более новую версию), и патч к ядру, для поддержки raid версии 0.90.
Соберите и установите raidtools и ПРОЧИТАЙТЕ документацию.
Соберите и установите ядро с поддержкой тех видов (0/1/4/5 ?) raid, которые вы будете использовать. Убедитесь в том, что разрешили автозапуск raid-устройств в конфигурации ядра. Удостоверьтесь в том, что ядро нормально загружается и изучите файл /proc/mdstat, чтобы еще раз убедиться в том, что необходимые вам виды raid поддерживаются ядром.
Новый диск будет добавлен на второй IDE-контроллер как главное устройство, поэтому станет /dev/hdc
    /dev/hdc1     16 Мб -- более чем достаточно для нескольких ядер
    /dev/hdc2     большая часть диска
    /dev/hdc3     еще немного swap-пространства, если необходимо. Если нет, увеличьте /dev/hdc2
Измените виды разделов /dev/hdc1 и /dev/hdc2 на вид "fd" для автозапуска raid.
Используя параметр failed-disk, создайте raidtab для необходимой конфигурации RAID1. Этот параметр (failed disk) должен быть последним в таблице.
# пример raidtab # md0 - это корневой массив raiddev /dev/md0 raid-level 1 nr-raid-disks 2 chunk-size 32 # Свободные диски для реконструкции данных "на-ходу" nr-spare-disks 0 persistent-superblock 1 device /dev/hdc2 raid-disk 0 # это наш старый диск, временно пометим его как отказавший device /dev/hda2 failed-disk 1 # md1 - это загрузочный /boot массив raiddev /dev/md1 raid-level 1 nr-raid-disks 2 chunk-size 32 # Свободные диски для реконструкции данных "на-ходу" nr-spare-disks 0 persistent-superblock 1 device /dev/hdc1 raid-disk 0 # boot также пометим сломанным device /dev/hda1 failed-disk 1
Создайте md-устройства следующими командами:
    mkraid /dev/md0
    mkraid /dev/md1
Raid-устройства должны быть созданы, и запущены. Изучите /proc/mdstat, там должны быть указаны виды raid-устройств, поддерживаемые ядром, а также список работающих raid-устройств.
Отформатируйте загрузочное и корневое устройства командами:
    mke2fs /dev/md0
    mke2fs /dev/md1
Подключите новое корневое устройство туда, куда удобно, создайте в нем каталог /boot и подключите туда загрузочный раздел:
    mount /dev/md0 /mnt
    mkdir /mnt/boot
    mount /dev/md1 /mnt/boot
Это достаточно просто и понятно.
    cd /
    # настройте скрипт для того чтобы это сделать
    cp -a /bin /mnt
    cp -a /dev /mnt
    cp -a /etc /mnt
    cp -a (все каталоги кроме /mnt, /proc, и сетевых дисков) /mnt
Процедура может усложниться, если вы подключили или сделали ссылки
на другие диски к вашей корневой файловой системе. Пример, приведенный выше,
предполагает простую систему, вам, возможно, придется немного изменить
процедуру копирования.
Создайте загрузочный флоппи и запустите команду rdev для ядра.
    dd if=kernal.image of=/dev/fd0 bs=2k
    rdev /dev/fd0 /dev/md0
    rdev -r /dev/fd0 0
    rdev -R /dev/fd0 1
Измените файл fstab на RAID-устройстве для отражения новых точек подключения, как указано ниже:
/dev/md0 / ext2 defaults 1 1 /dev/md1 /boot ext2 defaults 1 1
Отключите raid-устройства и перезагрузите систему, чтобы убедиться в том, что все работает правильно.
    umount /mnt/boot
    umount /mnt
    raidstop /dev/md0
    raidstop /dev/md1
    shutdown -r now
Ваша RAID-система должна загрузиться и работать в сокращенном (degraded) режиме с загрузочным флоппи-диском. Аккуратно проверьте, что вы скопировали ВСЕ на вашу новую raid-систему. Если вы что-то на этом этапе напутаете без сохранения резервной копии, ВАМ БУДЕТ НЕСЛАДКО!
Если что-то не заработало, перезагрузите вашу старую систему, вернитесь и исправьте все, пока все не будет нормально.
Удачное завершение процедур предыдущего пункта означает, что raid-массив работает, но пока без излишеств. Теперь надо переделать разделы старого диска (дисков) для того, чтобы добавить его в raid-массив. Запомните, если геометрии дисков разные, то размер раздела на старом диске должен быть равен или больше размеров raid-разделов, а иначе их нельзя будет добавить в raid-массив.
Переделайте нужным образом разделы на старом диске, например:
    /dev/hda1     равен или больше /dev/hdc1
    /dev/hda2     равен или больше /dev/hdc2
    /dev/hda3     нечто, оставшееся под swap или что-то еще...
Смените параметр failed-disk в raidtab на raid-disk и добавьте новые (старые) разделы к raid-массиву, что называется "на ходу" (hot add).
    raidhotadd /dev/md1 /dev/hda1
    raidhotadd /dev/md0 /dev/hda2
В файле /proc/mdstat должны теперь появиться одно или более raid-устройств, перестраивающих данные для новых разделов. Через минуту или две...или несколько, raid-массивы должны быть полностью синхронизированы (эта процедура может занять длительное время для больших разделов).
Использование вышеописанной процедуры настроит загружаемый raid на новой raid-паре. Пользуйтесь загрузочным флоппи-диском, пока настраиваете и тестируете последний шаг.
Пример RAID1 описан в первых главах этого документа
df Filesystem 1k-blocks Used Available Use% Mounted on /dev/md0 19510780 1763188 16756484 10% / /dev/md1 15860 984 14051 7% /boot # -------------------------- 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 83 Linux native /dev/hda3 443520 40088159 19822320 fd Linux raid autodetect # -------------------------- fdisk -ul /dev/hdc Disk /dev/hdc: 16 heads, 63 sectors, 39770 cylinders Units = sectors of 1 * 512 bytes Device Boot Start End Blocks Id System /dev/hdc1 63 33263 16600+ fd Linux raid autodetect /dev/hdc2 33264 443519 205128 82 Linux swap /dev/hdc3 443520 40088159 19822320 fd Linux raid autodetect # -------------------------- # md0 - это корневой массив, примерно 20 Гб raiddev /dev/md0 raid-level 1 nr-raid-disks 2 chunk-size 32 # Свободные диски для реконструкции "на-ходу" nr-spare-disks 0 persistent-superblock 1 device /dev/hda3 raid-disk 0 device /dev/hdc3 raid-disk 1 # md1 - это загрузочный массив, примерно 16 Мб raiddev /dev/md1 raid-level 1 nr-raid-disks 2 chunk-size 32 # Свободные диски для реконструкции "на-ходу" nr-spare-disks 0 persistent-superblock 1 device /dev/hda1 raid-disk 0 device /dev/hdc1 raid-disk 1 # -------------------------- # ГЛОБАЛЬНЫЙ РАЗДЕЛ # устройство, содержащее каталог /boot 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 label=LinuxRaid read-only # ------------------------- # ГЛОБАЛЬНЫЙ РАЗДЕЛ # устройство, содержащее каталог /boot 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 label=LinuxRaid read-only
4-дисковый SCSI RAID5
 df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/md0              11753770   2146076   9000678  19% /
/dev/md1                 15739       885     14042   6% /boot
# --------------------------
 fdisk -ul /dev/sda
Disk /dev/sda: 64 heads, 32 sectors, 4095 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1            32     32767     16368   fd  Linux raid autodetect
/dev/sda2         32768    292863    130048    5  Extended
/dev/sda3        292864   8386559   4046848   fd  Linux raid autodetect
/dev/sda5         32800    260095    113648   82  Linux swap
/dev/sda6        260128    292863     16368   83  Linux native - test
# ------------------------
 fdisk -ul /dev/sdb
Disk /dev/sdb: 64 heads, 32 sectors, 4095 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/sdb1            32     32767     16368   fd  Linux raid autodetect
/dev/sdb2         32768    292863    130048    5  Extended
/dev/sdb3        292864   8386559   4046848   fd  Linux raid autodetect
/dev/sdb5         32800    260095    113648   82  Linux swap
/dev/sdb6        260128    292863     16368   83  Linux native - test
# ------------------------
# fdisk -ul /dev/sdc
Disk /dev/sdc: 64 heads, 32 sectors, 4095 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/sdc2            32    292863    146416    5  Extended
/dev/sdc3        292864   8386559   4046848   fd  Linux raid autodetect
/dev/sdc5            64    260095    130016   83  Linux native - development
/dev/sdc6        260128    292863     16368   83  Linux native - test
# ------------------------
 fdisk -ul /dev/sdd
Disk /dev/sdd: 64 heads, 32 sectors, 4095 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/sdd2            32    292863    146416    5  Extended
/dev/sdd3        292864   8386559   4046848   fd  Linux raid autodetect
/dev/sdd5            64    260095    130016   83  Linux native - development
/dev/sdd6        260128    292863     16368   83  Linux native - test
# --------------------------
# raidtab
#
raiddev /dev/md0
        raid-level      5
        nr-raid-disks   4
        persistent-superblock 1
        chunk-size      32
# Свободные диски для реконструкции "на-ходу"
        nr-spare-disks  0
        device          /dev/sda3
        raid-disk       0
        device          /dev/sdb3
        raid-disk       1
        device          /dev/sdc3
        raid-disk       2
        device          /dev/sdd3
        raid-disk       3
# загрузочный раздел
#
raiddev /dev/md1
        raid-level      1
        nr-raid-disks   2
        persistent-superblock 1
        chunk-size      32
# Свободные диски для реконструкции "на-ходу"
        nr-spare-disks  0
        device          /dev/sda1
        raid-disk       0
        device          /dev/sdb1
        raid-disk       1
# --------------------------
# cat lilo.conf.sda
# ГЛОБАЛЬНЫЙ РАЗДЕЛ
# устройство, содержащее каталог /boot
disk=/dev/md0
# геометрия
  bios=0x80
  sectors=32
  heads=64
  cylinders=4095
# подставная строка
  partition=/dev/md1
# начало "диска" на устройстве
  start=32
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
image=/boot/bzImage
root=/dev/md0
label=LinuxRaid
read-only
# ------------------------
# cat lilo.conf.sdb
# ГЛОБАЛЬНЫЙ РАЗДЕЛ
# устройство, содержащее каталог /boot
disk=/dev/md0
# геометрия
  bios=0x80
  sectors=32
  heads=64
  cylinders=4095
# подставная строка
  partition=/dev/md1
# начало "диска" на устройстве
  start=32
boot=/dev/sdb
map=/boot/map
install=/boot/boot.b
image=/boot/bzImage
root=/dev/md0
label=LinuxRaid
read-only
RAID1 поверх полосатой пары RAID0.... диски на RAID0-массивах не совсем одинаковые, но близки по размерам.
/dev/md0 - это раздел /boot, автоматически запускаемый ядром
/dev/md1 и /dev/md3 - это два RAID0-массива автоматически запускаемые ядром
/dev/md2 - это корневой раздел, запускаемый initrd
df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/md2                118531     76485     35925  68% /
/dev/md0                  1917      1361       457  75% /boot
# ----------------------------
 fdisk -ul /dev/hda
Disk /dev/hda: 4 heads, 46 sectors, 903 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1            46      4231      2093   fd  Linux raid autodetect
/dev/hda2          4232    166151     80960   fd  Linux raid autodetect
# ----------------------------
 fdisk -ul /dev/hdb
Disk /dev/hdb: 5 heads, 17 sectors, 981 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hdb1            17     83384     41684   fd  Linux raid autodetect
# ----------------------------
 fdisk -ul /dev/hdc
Disk /dev/hdc: 7 heads, 17 sectors, 1024 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hdc1            17     84013     41998+  fd  Linux raid autodetect
/dev/hdc2         84014    121855     18921   82  Linux swap
# ----------------------------
 fdisk -ul /dev/hdd
Disk /dev/hdd: 4 heads, 46 sectors, 903 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hdd1            46      4231      2093   fd  Linux raid autodetect
/dev/hdd2          4232    166151     80960   fd  Linux raid autodetect
# ----------------------------
# raidtab
#
raiddev /dev/md0
        raid-level      1
        nr-raid-disks   2
        persistent-superblock   1
        chunk-size      8
        device          /dev/hda1
        raid-disk       0
        device          /dev/hdd1
        raid-disk       1
raiddev /dev/md1
        raid-level      0
        nr-raid-disks   2
        persistent-superblock   1
        chunk-size      8
        device          /dev/hdd2
        raid-disk       0
        device          /dev/hdb1
        raid-disk       1
raiddev /dev/md2
        raid-level      1
        nr-raid-disks   2
        persistent-superblock   1
        chunk-size      8
        device          /dev/md1
        raid-disk       0
        device          /dev/md3
        raid-disk       1
raiddev /dev/md3
        raid-level      0
        nr-raid-disks   2
        persistent-superblock   1
        chunk-size      8
        device          /dev/hda2
        raid-disk       0
        device          /dev/hdc1
        raid-disk       1
# ----------------------------
Содержимое файла linuxrc
 cat linuxrc
#!/bin/sh
# версия 1.02 2-22-00
#
############# настоящее НАЧАЛО 'linuxrc' ###############
#
# подключаем файловую систему /proc
/bin/mount /proc
# запускаем raid-1, сделанный из raid-0 массивов
/bin/raidstart /dev/md2
# выведем на консоль суть происходящего
/bin/cat /proc/mdstat
# Все нормально, позволяем ядру подключить /dev/md2
# заставляем ядро воспринимать /dev/md2 как корневую файловую систему
# Значение 0x900 - это номер устройства, рассчитанный, как
# 256*главное_число_устройства + зависимое_число_устройства
echo "/dev/md2 mounted on root"
echo 0x902>/proc/sys/kernel/real-root-dev
# отключаем /proc для освобождения памяти, выделенной устройству initrd
/bin/umount /proc
exit
# ----------------------------
Содержимое initrd
./bin/ash
./bin/echo
./bin/raidstart
./bin/mount
./bin/umount
./bin/cat
./bin/sh
./dev/tty1
./dev/md0
./dev/md1
./dev/md2
./dev/md3
./dev/md4
./dev/console
./dev/hda
./dev/hda1
./dev/hda2
./dev/hda3
./dev/hdb
./dev/hdb1
./dev/hdb2
./dev/hdb3
./dev/hdc
./dev/hdc1
./dev/hdc2
./dev/hdc3
./dev/hdd
./dev/hdd1
./dev/hdd2
./dev/hdd3
./dev/initrd
./dev/ram0
./dev/ram1
./dev/ram2
./dev/ram3
./dev/ram4
./dev/ram5
./dev/ram6
./dev/ram7
./etc/raidtab
./etc/fstab
./lib/ld-2.1.2.so
./lib/ld-linux.so.1
./lib/ld-linux.so.1.9.9
./lib/ld-linux.so.2
./lib/ld.so
./lib/libc-2.1.2.so
./lib/libc.so.6
./linuxrc
./proc
Эта система создана из ассортимента старого и нового. Корневое устройство - это RAID1, созданный на основе одного RAID0-массива, из двух дисков разного размера и обычного дискового раздела большего размера. Подробное изучение файлов lilo.conf может вам в полной мере понять суть некоторых параметров.
/dev/md0 - это раздел с каталогом /boot, автоматически запускаемый ядром
/dev/md1 - это первая половина зеркального массива для md2, автоматически запускаемая ядром
/dev/hda3 - это вторая половина зеркального массива для md2
/dev/md2 - это RAID1 /dev/md1 + /dev/hda3, запускаемый initrd
df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/md2                138381     74421     56815  57% /
/dev/md0                  2011      1360       549  71% /boot
# ----------------------------
 fdisk -ul /dev/hda
Disk /dev/hda: 8 heads, 46 sectors, 903 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1            46      4415      2185   fd  Linux raid autodetect
/dev/hda2          4416     43423     19504   82  Linux swap
/dev/hda3         43424    332303    144440   83  Linux native
# ----------------------------
 fdisk -ul /dev/hdc
Disk /dev/hdc: 8 heads, 39 sectors, 762 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hdc1            39      4367      2164+  fd  Linux raid autodetect
/dev/hdc2          4368     70199     32916   82  Linux swap
/dev/hdc3         70200    237743     83772   fd  Linux raid autodetect
# ----------------------------
 fdisk -ul /dev/hdd
Disk /dev/hdd: 4 heads, 39 sectors, 762 cylinders
Units = sectors of 1 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hdd1            39    118871     59416+  fd  Linux raid autodetect
# ----------------------------
# raidtab
#
raiddev /dev/md0
        raid-level      1
        nr-raid-disks   2
        persistent-superblock   1
        chunk-size      8
        device          /dev/hdc1
        raid-disk       1
        device          /dev/hda1
        raid-disk       0
raiddev /dev/md1
        raid-level      0
        nr-raid-disks   2
        persistent-superblock   1
        chunk-size      8
        device          /dev/hdc3
        raid-disk       0
        device          /dev/hdd1
        raid-disk       1
raiddev /dev/md2
        raid-level      1
        nr-raid-disks   2
        persistent-superblock   1
        chunk-size      8
        device          /dev/md1
        raid-disk       1
        device          /dev/hda3
        raid-disk       0
# ----------------------------
 cat linuxrc
#!/bin/sh
# версия 1.02 2-22-00
#
############# настоящее НАЧАЛО 'linuxrc' ###############
#
# подключаем файловую систему /proc
/bin/mount /proc
# автозапуск раздела с каталогом /boot и raid0
/bin/raidstart /dev/md2
# выведем на консоль суть происходящего
/bin/cat /proc/mdstat
# Все нормально, позволяем ядру подключить /dev/md2
# заставляем ядро воспринимать /dev/md2 как корневую файловую систему
# Значение 0x900 - это номер устройства, рассчитанный, как
# 256*главное_число_устройства + зависимое_число_устройства
echo "/dev/md2 mounted on root"
echo 0x902>/proc/sys/kernel/real-root-dev
# отключаем /proc для освобождения памяти, выделенной устройству initrd
/bin/umount /proc
exit
# ----------------------------
Содержимое initrd.gz
./bin
./bin/ash
./bin/echo
./bin/raidstart
./bin/mount
./bin/umount
./bin/cat
./bin/sh
./dev/tty1
./dev/md0
./dev/md1
./dev/md2
./dev/md3
./dev/console
./dev/hda
./dev/hda1
./dev/hda2
./dev/hda3
./dev/hdc
./dev/hdc1
./dev/hdc2
./dev/hdc3
./dev/hdd
./dev/hdd1
./dev/hdd2
./dev/hdd3
./dev/initrd
./dev/ram0
./dev/ram1
./dev/ram2
./dev/ram3
./dev/ram4
./dev/ram5
./dev/ram6
./dev/ram7
./etc/raidtab
./etc/fstab
./lib/ld-2.1.2.so
./lib/ld-linux.so.1
./lib/ld-linux.so.1.9.9
./lib/ld-linux.so.2
./lib/ld.so
./lib/libc-2.1.2.so
./lib/libc.so.6
./linuxrc
./proc
# ----------------------------
 cat lilo.conf.hda
# ГЛОБАЛЬНЫЙ РАЗДЕЛ
# устройство содержащее каталог /boot
disk=/dev/md2
# геометрия
  bios=0x80
  cylinders=903
  heads=8
  sectors=46
# геометрия 2-го диска
# параметр BIOS будет аналогичный, потому что это все переместится на hda
#  cylinders=762
#  heads=8
#  sectors=39
# подставная строка
  partition=/dev/md0
# начало "диска" на устройстве
  start=46
# второе устройство
#  start=39
# У ядра 2.2.14, видимо есть кое-какие проблемы с распознаванием правильных IRQ
  append = "ide1=0x170,0x376,12 ether=10,0x300,eth0 ether=5,0x320,eth1"
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
initrd=/boot/initrd.gz
image=/boot/zImage
root=/dev/md2
label=LinuxRaid
read-only
# ----------------------------
 cat lilo.conf.hdc
# ГЛОБАЛЬНЫЙ РАЗДЕЛ
# устройство, содержащее каталог /boot
disk=/dev/md2
# геометрия
  bios=0x80
#  cylinders=903
#  heads=8
#  sectors=46
# геометрия 2-го диска
# параметр BIOS будет аналогичный, потому что это все переместится на hda
  cylinders=762
  heads=8
  sectors=39
# подставная строка
  partition=/dev/md0
# начало "диска" на устройстве
#  start=46
# второе устройство
  start=39
# У ядра 2.2.14, видимо есть кое-какие проблемы с распознаванием правильных IRQ
  append = "ide1=0x170,0x376,12 ether=10,0x300,eth0 ether=5,0x320,eth1"
boot=/dev/hdc
map=/boot/map
install=/boot/boot.b
initrd=/boot/initrd.gz
image=/boot/zImage
root=/dev/md2
label=LinuxRaid
read-only
| Закладки на сайте Проследить за страницей | Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |