Настройка raid1 масcива на citrix xen server 6

Понадобилось нам поднять программный RAID на XenServer 6.

Идея такова:
– создать на втором диске файловую систему, аналогичную свежеустановленному XenServer
– запустить на нем softraid
– перенести сам XenServer на второй диск
– загрузиться со второго диска, т.е. уже с программного RAID
– подключить к новоиспеченному RAID массиву первый диск
Для начала нам потребуется свежеустановленный XenServer 6.0. Желательно без каких-либо настроек и данных, поскольку в случае нарушения порядка действий вы легко можете получить мертвую систему. Итак, в сервере должны находиться 2, желательно идентичных диска. На первый мы ставим обычной установкой XenServer, а второй я настоятельно рекомендую перед началом настройки полностью затереть нулями (к примеру с помощью MHDD). Итак приступим к настройке.
Данные:
sda – диск с XenServer
sdb – пустой диск

Смотрим и сохраняем где-нибудь таблицу разделов sda.
gdisk -l /dev/sda—
Проверяем, что таблица разделов sdb пуста:
gdisk -l /dev/sdb
С помощью gdisk вручную создаем на sdb таблицу разделов:

gdisk /dev/sdb
Таблица должна быть идентична диску sda (номер раздела, стартовые и конечные сектора должны полностью совпадать). Тип раздела при этом необходимо указывать fd00 (Linux RAID).

Создадим устройства MD на втором диске:
1# mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sdb1 missing
2# mdadm –create /dev/md1 –level=1 –raid-devices=2 /dev/sdb2 missing
3# mdadm –create /dev/md2 –level=1 –raid-devices=2 /dev/sdb3 missing

Создадим и перенесем Local Storage в RAID:
1# pvcreate /dev/md2
2# vgextend VG_[tab] /dev/md2
3# pvmove /dev/sda3 /dev/md2

Удалим старый storage с первого диска:
1# vgreduce VG_[tab] /dev/sda3
2# pvremove /dev/sda3

Создадим файловую систему на RAID:
1# mkfs.ext3 /dev/md0

И смонтируем ее:
2# mount /dev/md0 /mnt

Скопируем сам XenServer в RAID:
1# cd /
2# cp -axv . /mnt

Редактируем fstab для монтирования root раздела с RAID:
1# nano /mnt/etc/fstab

Вместо строки:
1# LABEL=root-xxx / ext3 defaults 1 1

Должна получиться строка:
1# /dev/md0 / ext3 defaults 1 1

Создаем загрузочный образ для RAID:
1# mkdir /mnt/root/initrd-raid
2# mkinitrd -v –fstab=/mnt/etc/fstab /mnt/root/initrd-raid/initrd-`uname -r`-raid.img `uname -r`
3# cd /mnt/root/initrd-raid
4# zcat initrd-`uname -r`-raid.img | cpio -i

Редактируем файл init:
1# nano init

и добавляем после
1# raidautorun /dev/md0

две строки:
1# raidautorun /dev/md1
2# raidautorun /dev/md2

Копируем новый диск в каталог /mnt/boot :
1# find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-`uname -r`-raid.img
2# rm /mnt/boot/initrd-2.6-xen.img
3# rm: remove symbolic link `/mnt/boot/initrd-2.6-xen.img’? y
4# ln -s initrd-`uname -r`-raid.img /mnt/boot/initrd-2.6-xen.img

Редактируем загрузочное меню:
1# nano /mnt/boot/extlinux.conf
Требуется заменить все упоминания:
1# root=LABEL=root-xxx
на:
2# root=/dev/md0

Устанавливаем MBR для GPT на втором диске:
1# cat /mnt/usr/share/syslinux/gptmbr.bin > /dev/sdb
2# cd /mnt
3# extlinux –raid -i boot/

Корректно размонтируем второй диск:
1# cd
2# umount /dev/md0
3# sync

Проверяем, что флаг загрузочного диска корректно установлен на обоих дисках:
1# sgdisk /dev/sda –attributes=1:set:2
2# sgdisk /dev/sdb –attributes=1:set:2

Перезагружаем сервер. И ЗАГРУЖАЕМСЯ СО ВТОРОГО ДИСКА, то есть уже с RAID. Во избежание путаницы, возможность загрузки с первого диска лучше вообще отключить в BIOS.

reboot
После загрузки с RAID нам требуется настроить файловую систему первого диска для работы в RAID:
1# gdisk /dev/sda

Для этого с помощью клавиши t меняем типы для всех трех разделов на fd00 (Linux RAID). После завершения нажимаем w для записи изменений и выходим из gdisk.
Теперь можно включать первый диск в RAID:
1# mdadm -a /dev/md0 /dev/sda1
2 mdadm: added /dev/sda1
3# mdadm -a /dev/md1 /dev/sda2
4 mdadm: added /dev/sda2
5# mdadm -a /dev/md2 /dev/sda3
6 mdadm: added /dev/sda3

Процесс синхронизации (ребилда) массива можно смотреть с помощью команды:
watch
cat /proc/mdstat

После завершения ребилда вносим последние изменения в настройки:
1# mdadm –detail –scan >> /etc/mdadm.conf
И перезагружаемся. Для корректной загрузки в случае отказа одного из дисков, требуется настроить в BIOS загрузку системы с обоих жестких дисков по-очереди.
Вот и все  Создание и перенос загрузочного раздела XenServer 6.0 на программный RAID1 на этом настройка software RAID1 для xenserver 6.0 завершена.

-----------------------------------------------------------------------------