[Comm] root raid on Master 2.2

Grigory Batalov =?iso-8859-1?q?bga-no-spam_=CE=C1_kovgok=2Eru?=
Чт Ноя 6 10:36:54 MSK 2003


  Господа, как правильно организовать software raid с загрузкой
с оного в Master 2.2 ?

  Я перечитал дискуссию "root raid" в community@ и "software
raid" в kernel-devel@ и не нашёл готового рецепта (без миграции
на Сизиф). Поэтому опишу свои настройки; если появятся комментарии,
буду признателен.

  Имеются:
- 5 SCSI дисков
- корзина hot-swap для них
- работающая инсталляция Master 2.2 на /dev/hda

  Было решено создать RAID-5 на 4-х дисках плюс spare на пятом.
В некоторых источниках упоминается, что lilo может грузиться
с RAID-1, поэтому /boot сделан зеркальным.

$ cat /etc/raidtab
raiddev /dev/md0
        raid-level      5
        nr-raid-disks   4
        nr-spare-disks  1
        persistent-superblock   1
        parity-algorithm        left-symmetric
        chunk-size              32
        device                  /dev/sdb2
        raid-disk               0
        device                  /dev/sdc2
        raid-disk               1
        device                  /dev/sdd2
        raid-disk               2
        device                  /dev/sde2
        raid-disk               3
        device                  /dev/sda2
        spare-disk              0

raiddev /dev/md1
        raid-level      5
        nr-raid-disks   4
        nr-spare-disks  1
        persistent-superblock   1
        parity-algorithm        left-symmetric
        chunk-size              32
        device                  /dev/sdb3
        raid-disk               0
        device                  /dev/sdc3
        raid-disk               1
        device                  /dev/sdd3
        raid-disk               2
        device                  /dev/sde3
        raid-disk               3
        device                  /dev/sda3
        spare-disk              0

raiddev /dev/md2
        raid-level      1
        nr-raid-disks   4
        nr-spare-disks  1
        persistent-superblock   1
        chunk-size              32
        device                  /dev/sdb1
        raid-disk               0
        device                  /dev/sdc1
        raid-disk               1
        device                  /dev/sdd1
        raid-disk               2
        device                  /dev/sde1
        raid-disk               3
        device                  /dev/sda1
        spare-disk              0

Для копирования таблиц разделов использовался sfdisk:

$ sudo sfdisk -d /dev/sda
Password:
# partition table of /dev/sda
unit: sectors

/dev/sda1 : start=       63, size=  2056257, Id=fd
/dev/sda2 : start=  2056320, size= 20482875, Id=fd
/dev/sda3 : start= 22539195, size= 49142835, Id=fd
/dev/sda4 : start=        0, size=        0, Id= 0

$ sudo sfdisk -d /dev/sda > table.sda
$ sudo sfdisk /dev/sdb < table.sda
...
$ sudo sfdisk /dev/sde < table.sda

Создание массивов:

$ sudo mkraid /dev/md0
$ sudo mkraid /dev/md1
$ sudo mkraid /dev/md2

md0 - корневой, md1 - /var, md2 - /boot

md* были подмонтированы в /mnt/disk и на них сброшена
работающая версия Master 2.2

Далее отредактированы /mnt/disk/etc/{fstab,lilo.conf}

$ cat /etc/fstab
/dev/md0 / reiserfs notail 1 1
/dev/md2 /boot reiserfs notail 1 2
devpts /dev/pts devpts gid=5,mode=0620 0 0
/dev/cdrom /mnt/cdrom auto user,iocharset=koi8-r,exec,ro,noauto 0 0
/dev/floppy /mnt/floppy auto user,noauto 0 0
proc /proc proc gid=19 0 0
/dev/md1 /var reiserfs notail 1 2

$ sudo cat /etc/lilo.conf
disk=/dev/md0
partition=/dev/md2
boot=/dev/md2
map=/boot/map
install=/boot/boot-bmp.b
vga=normal
default=2420-alt10-smp
lba32
prompt
timeout=50
image=/boot/vmlinuz-up
        label=failsafe
        root=/dev/md0
        initrd=/boot/initrd-up.img
        append=" failsafe"
        vga=normal
        read-only
other=/dev/fd0
        label=floppy
        unsafe

image=/boot/vmlinuz-2.4.20-alt10-up
        label=2420-alt10-up
        root=/dev/md0
        read-only
        optional
        vga=normal
        append=" "
        initrd=/boot/initrd-2.4.20-alt10-up.img

image=/boot/vmlinuz-2.4.20-alt10-smp
        label=2420-alt10-smp
        root=/dev/md0
        read-only
        optional
        vga=normal
        append=" "
        initrd=/boot/initrd-2.4.20-alt10-smp.img

Про disk=? и partition=? вычитано здесь:
http://www.tldp.org/HOWTO/Boot+Root+Raid+LILO-3.html#ss3.1
Не уверен, насколько это правильно или необходимо.
Затем было сказано 'lilo -r /mnt/disk'.

initrd для загрузки создавался по мотивам
http://www.atmsk.ru/index.php?option=faq&task=viewfaq&artid=163

Использовалась команда:
$ sudo mkinitrd --with raid5 --with raid1 --pause initrd-2.4.20-alt10-smp.img 2.4.20-alt10-smp

Для создания дискеты:
$ sudo mkbootdisk --mkinitrdargs '--with raid1 --with raid5 --pause' 2.4.20-alt10-smp

Во время паузы и ожидания нажатия ENTER в указанную директорию
initrd были скопированы:

/dev/md{0,1,2}
/dev/sd{a,b,c,d,e}{,1,2,3}
/etc/raidtab
/sbin/raidstart

В linuxrc дописано:
/sbin/raidstart /dev/md0 /dev/md1 /dev/md2

Raidstart в данном случае собирался статически, что позволило
обойтись без динамических библиотек и уместить initrd на дискету.
Для пересборки был взят raidtools-0.90-ipl11mdk.src.rpm.
В specfile добавлено '-static':
...
CFLAGS="$RPM_OPT_FLAGS -static" CXXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-static" ./autogen.sh
...

Бинарник получается после 
$ rpmbuild -bi --target i586 raidtools.spec
в директории ~/tmp/raidtools-buildroot/sbin.


Несмотря на вышеизложенные действия (где была ошибка?),
загрузиться со SCSI не удалось. Не оказалось загрузочной
записи. Поэтому, загрузились с дискеты и сказали поочерёдно
$ sudo lilo -b /dev/sda
...
$ sudo lilo -b /dev/sde
После чего стало возможно загружаться сразу с дисков.

При сбое одного из дисков в массиве предполагается сделать:
$ sudo raidhotremove /dev/md0 /dev/sdN
$ sudo raidhotremove /dev/md1 /dev/sdN
$ sudo raidhotremove /dev/md2 /dev/sdN
<заменить диск N>
$ sudo sfdisk -d /dev/sda > table.sda
$ sudo sfdisk /dev/sdN < table.sda
$ sudo raidhotadd /dev/md0 /dev/sdN
$ sudo raidhotadd /dev/md1 /dev/sdN
$ sudo raidhotadd /dev/md2 /dev/sdN
$ sudo lilo -b /dev/sdN

Вопросы:

1. Как реагировать на сообщения типа:

md: invalid raid superblock magic on md2
md: md2 has invalid sb, not importing!
(ругается на все md*)

2. Чем чревато, что при перезагрузке не размонтируется md0
   по причине busy, хотя md2 и md1 были только что успешно
   размонтированы, и как с этим бороться?

3. Есть ли какая-нибудь утилитка, следящая за шиной SCSI и
   рассылающая письма или мигающая лампочками при сбое диска?

-- 
Григорий Баталов,
группа техподдержки
ОАО "Ковдорский ГОК"



Подробная информация о списке рассылки community