вторник, 2 апреля 2013 г.

Софтварный рейд на ксен 6.*



скопипижжено с: http://kryuchkov62.blogspot.ru/2012/10/software-raid1-citrix-xenserver-602_4.html



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


- создать на втором диске файловую систему, аналогичную 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 можно найти здесь.





2# vgextend VG_[tab] /dev/md2
3# pvmove /dev/sda3 /dev/md2


1# vgreduce VG_[tab] /dev/sda3
2# pvremove /dev/sda3

у меня эти команды не выполнялись, поэтому я сам называл VolumeGroup по типу VG1 VG2 и т.д. и в конце сделал руками сторадж. Поэтому НАСТОЯТЕЛЬНО рекомендую делать это на чистой мшине, до того как вы начнете заселять её виртуалками. Ну и соответственно НЕ рекомендую делть это на живой машине.

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

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