четверг, 4 октября 2012 г.

Software RAID1 на Citrix XenServer 6.0.2

Здравствуйте, уважаемые посетители.
Сегодня заметка о создании Software RAID1 на Citrix XenServer 6.0.2.
Два сервера работают на аппаратном контроллере, а на этот не хватило. Выбора не остаётся. Приступаем.

Алгоритм работы:

- создать на втором диске файловую систему, аналогичную XenServer
- запустить на нем softraid
- перенести сам XenServer на второй диск
- загрузиться со второго диска, т.е. уже с программного RAID
- подключить к новоиспеченному RAID массиву первый диск

Системный блок:
Материнская плата - Foxconn G31MXP
Процессор - Intel Pentium E5300 @ 2600 МГц
Оперативная память - 4096  Кб (2 x 2048 DDR2-SDRAM )
Дисковая подсистема - 2 Seagate ST3250813AS (250 Гб)

*Примечание: если у вас аналогичная материнская плата, то решение проблемы с определением 3 гигабайт оперативной  памяти тут.
Устанавливаем XenServer 6.0.2. При установке я выбрал первый диск.
Установили. Переходим в консоль или подключаемся по SSH. Я использую Putty.

Расклад:
sda – диск с XenServer
sdb – пустой диск
 
Задача: подготовить второй диск к созданию массива (создать на нём копию таблицы разделов первого диска)
Смотрим таблицу разделов на sda
# gdisk -l /dev/sda

Проверяем, что таблица разделов на sdb пуста:
# gdisk -l /dev/sdb

С помощью gdisk вручную создаем на sdb таблицу разделов:
# gdisk /dev/sdb

*Примечание: с помощью клавиши "n" создаём три раздела (номер раздела, стартовые и конечные сектора должны полностью совпадать, тип раздела при этом необходимо указывать fd00 (Linux RAID)). После завершения нажимаем "w" для записи изменений и выходим из gdisk. Все команды можно узнать набрав "?".
Таблица должна быть идентична диску sda. 
*Примечание: рекомендую настраивать по SSH, т.к. там легко копируюся любые элементы.

Проверяем наши диски:
# gdisk -l /dev/sda
# gdisk -l /dev/sdb
и если никаких различий (кроме типа раздела) - продолжаем

Создадим устройства 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

Примечание: [tab] - означает нажать клавишу Tab, чтобы дописать ваше значение.

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

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

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

Редактируем fstab для монтирования root раздела с RAID: 
# nano /mnt/etc/fstab
вместо строки:
LABEL=root-xxx / ext3 defaults 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:
# nano init
и добавляем после 
raidautorun /dev/md0
две строки:
# raidautorun /dev/md1
# 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
rm: remove symbolic link `/mnt/boot/initrd-2.6-xen.img’? y
3# ln -s initrd-`uname -r`-raid.img /mnt/boot/initrd-2.6-xen.img


Редактируем загрузочное меню: 
# nano /mnt/boot/extlinux.conf
Требуется заменить все упоминания: 
root=LABEL=root-xxx
на: 
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:
# gdisk /dev/sda
*Примечание: с помощью клавиши t меняем типы для всех трех разделов на fd00 (Linux RAID). После завершения нажимаем w для записи изменений и выходим из gdisk. Все команды можно узнать набрав "?".

Теперь можно включать первый диск в RAID:
1# mdadm -a /dev/md0 /dev/sda1
mdadm: added /dev/sda1
2# mdadm -a /dev/md1 /dev/sda2
mdadm: added /dev/sda2
3# mdadm -a /dev/md2 /dev/sda3
mdadm: added /dev/sda3

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

После завершения ребилда вносим последние изменения в настройки:
# mdadm --detail --scan >> /etc/mdadm.conf

И перезагружаемся. Для корректной загрузки в случае отказа одного из дисков, требуется настроить в BIOS загрузку системы с обоих жестких дисков по-очереди.
Необходимые команды для работы с RAID можно найти здесь.

Спасибо за внимание.
Статья, по которой настраивал сам: http://it-growing.blogspot.com/2012/03/blog-post.html

Комментариев нет:

Отправить комментарий

Спасибо за Ваш комментарий