Информация, которую я собрал здесь была изначально подготовлена Harald
Nordgеrd-Hansen <
hnh@bukharin.hiof.no> и была послана в список рассылки raid в
файле lilo.conf с комментариями Martin Bene .
Большое спасибо им за помощь. Я попытался собрать воедино эту информацию
и вспомогательную работу, проделанную многими, кто участвует в списке
рассылки raid и в проекте linux raid, в некоторое подобие КНИГИ
РЕЦЕПТОВ, включив примеры из реально работающих систем, чтобы было
проще понять и настроить загружаемый корневой raid (bootable root raid).
Один раздел посвящен преобразованию стандартной однодисковой системы в
RAID. Ключом к удачному преобразованию, по моему скромному мнению, является
понимание, что же такое загружаемый корневой raid.
<
mb@sime.com
Да, я уверен, что они есть. Если вы будете настолько добры, чтобы сообщить о них, то я исправлю документ. ;-)
This document is GNU copyleft by Michael Robinton Michael@BizSystems.com.
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 по электронной почте:
linux-howto@metalab.unc.edu, или к координатору русского
перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу
linux-howto@asplinux.ru
Ниже перечислены пакеты, которые вам понадобятся, а также приведен список документации, которая отвечает на все обычные вопросы о настройке и запуске 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
Подключиться к спискам рассылки можно по адресам:
почту посылайте по адресу: raiddev@nuclecu.unam.mx
почту посылайте по адресу: linux-raid@vger.rutgers.edu (это по-видимому наиболее активный список)
Я не собираюсь здесь описывать фундаментальные аспекты настройки 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 Добавить, Поддержать, Вебмастеру |