Сергей Любшин, мой коллега, недавно проделал установку XENSource на RAID.

Заметки о процессе - ниже.


Любшин Сергей Александрович пишет:

* Может содержать небольшие неточности

Установка XenServer для бедных или программное зеркало в действии.

Почти все было взято с

http://www.firstserved.net/blog/2007/06/07/booting-xenserver-or-xenenterprise-from-software-raid/

Предполагается знание ОС Линукс в объеме базового администрирования (у меня такого нет J)

У нас в серваке – 4ре SATA диска.

Видятся в Xen как /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd

Устанавливаем XenServer на /dev/sda

Виртуальное хранилище пока можно не создавать вообще.

Логинимся, смотрим разделы на /dev/sda

fdiskl /dev/sda

В 4.1 их три: /dev/sda1 (корень), /dev/sda2 (резервный?), /dev/sda3 (пустой)

Создаем на /dev/sdb точно такие же, но тип меняем на fd (Linux raid autodetect)

Создаем ноды для md:

mknod /dev/md0 b 9 0
mknod /dev/md1 b 9 1
mknod /dev/md2 b 9 2

Создаем «битые» зеркала на /dev/sdb

mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sdb1 missing
mdadm –create /dev/md1 –level=1 –raid-devices=2 /dev/sdb2 missing
mdadm –create /dev/md2 –level=1 –raid-devices=2 /dev/sdb3 missing

Самое интересное – игры с ядром

Разбираем текущее ядро

mkdir /root/initrd-raid

mkinitrd --fstab=/etc/fstab /root/initrd-raid/initrd-`uname -r`-raid.img `uname -r`

cd /root/initrd-raid
zcat initrd-`uname -r`-raid.img | cpio -i

Копируем в него драйвера md-raid

cp /lib/modules/`uname -r`/kernel/drivers/md/raid*.ko ./lib

Правим init

nano init

1. После строки (инит последнего терминала)

mknod /dev/ttyS3 c 4 67

Добавляем

echo  Setting up md slots

mknod /dev/md0 b 9 0

mknod /dev/md1 b 9 1

mknod /dev/md2 b 9 2

mknod /dev/md3 b 9 3

(последняя – на будущее)

2. После строк

echo Setting up hotplug.

hotplug

echo Creating block device nodes.

mkblkdevs

Добавляем загрузку драйвера md-raid

echo "Loading raid1.ko module"

insmod /lib/raid1.ko

3. После строк

stabilized --hash --interval 250 /proc/scsi/scsi

mkblkdevs

Добавляем

echo Starting md supported devices

raidautorun /dev/md0

raidautorun /dev/md1

raidautorun /dev/md2

raidautorun /dev/md3

Собираем новое загрузочное ядро (плохо от него точно не станет, поэтому пишем просто поверх старого – хотите, можете сохранить). Напоминаю, мы находимся в каталоге /boot/initrd-raid/

find . -print | cpio -o -Hnewc | gzip -c > /boot/initrd-`uname -r`.img

Перегружаемся, видим сообщения о том, что автоинициализация md прошла и зеркала завелись. Если нет – то где-то ошиблись, нужно проверить что загружается именно новое ядро.

Переезжаем на новый корень:

Правим /etc/fstab и /boot/grup/menu.lst

Заменяем в них LABEL=xxxxx на /dev/md0

Копируем корень

mkfs.ext3 /dev/md0
mount /dev/md0 /mnt
cd /
cp -ax . /mnt

Глубоко вздыхаем и перегружаемся еще раз. Если загрузились успешно – выдыхаем.

Доделываем зеркала

Меняем тип всех разделов на /dev/sda на fd

Создаем разделы /dev/sdc1 и /dev/sdd1 на весь размер с типом fd

«Чиним» зеркала

mdadm -a /dev/md0 /dev/sda1
mdadm -a /dev/md1 /dev/sda2
mdadm -a /dev/md2 /dev/sda3
Создаем еще одно зеркало на оставшихся двух разделах

mdadm –create /dev/md3 –level=1 –raid-devices=2 /dev/sdс1 /dev/sdd1

Создаем файловые системы на свободных разделах

mkfs.ext3 /dev/md2

mkfs.ext3 /dev/md3

Имеем:

/dev/md0 – Корень

/dev/md1 – резерв

/dev/md2 – свободно

/dev/md3 – свободно

Виртуальных групп у нас нет, потому создаем

pvcreate /dev/md2

pvcreate /dev/md3

xe sr-create name-label="LVM-1" shared=false type=lvm device-config-device=/dev/md2

vgscan

Запоминаем название виртуальной группы

Расширяем эту группу на /dev/md3

vgextend VG_XenStorage-длиннющий_ууид /dev/md3

!По какой-то причине новый размер группы показывается не сразу. Я вечером это проделал, посокрушался что не вышло, а утром размер LVM стал правильным (соответствующим сумме двух разделов)

… В следующей главе – дружим Xen и apcupsd

--

Любшин Сергей