Перенос установленного XenServer 6.2 на программный RAID на компьютере с UEFI (GPT)

Создано на основе: CodeAddict’s Blog и http://pastebin.com/buBHcfxU, а также http://wysotsky.info/?p=106&lang=ru и http://habrahabr.ru/post/179825/.

Сначала установите XenServer на первый диск (/dev/sda) и НЕ настраивайте локальное хранилище.
После инсталяции /dev/sda должен содержать три раздела, проверьте это:

sgdisk -p /dev/sda

Второй раздел используется для бекапа во время обновления XenServer. Для существующей методики обновления он не используется.
мы будем использовать /dev/sdb в качестве зеркала. Для начала, очистите таблицу разделов на диске

sgdisk --zap-all /dev/sdb

и установите GPT на нем

sgdisk --mbrtogpt --clear /dev/sdb

Следующие команды создают разделы на диске /dev/sdb и зависят от инсталяции XenServer. Разделы должны быть такие же как и на диске /dev/sda. Последний третий раздел на диске должен иметь заканчиваться на секторе РАзмер_диска - 34.

sgdisk --new=1:2048:8388641 /dev/sdb
sgdisk --typecode=1:fd00 /dev/sdb
sgdisk --attributes=1:set:2 /dev/sdb
sgdisk --new=2:8390656:16777249 /dev/sdb
sgdisk --typecode=2:fd00 /dev/sdb
sgdisk --new=3:16779264:$(expr $(sgdisk -p /dev/sdb | awk '/Disk \// {print($3)}') - 34) /dev/sdb
sgdisk --typecode=3:fd00 /dev/sdb

Перегрузите сервер

после перезагрузки, создайте устроства RAID:

mknod /dev/md0 b 9 0
mknod /dev/md1 b 9 1
mknod /dev/md2 b 9 2
mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2
mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb3

Отформатируйте корневой диск RAID, смонтируйте его в /mnt и скопируйте на него все файлы

mkfs.ext3 /dev/md0
mount /dev/md0 /mnt
cp -vxpR / /mnt

Измените /mnt/etc/fstab – замените корневую фалйловую систему на /dev/md0.

sed -i 's/LABEL=[a-zA-Z\-]*\s\(.*\)/\/dev\/md0 \1/' /mnt/etc/fstab

Создайте новый загрузочный образ и разархивируйте его:

mkdir /mnt/root/initrd-raid
mkinitrd -v --fstab=/mnt/etc/fstab /mnt/root/initrd-raid/initrd-`uname -r`-raid.img `uname -r`
cd /mnt/root/initrd-raid
zcat initrd-`uname -r`-raid.img | cpio -i

Отредактируйте файл init – вставьте raidautorun …:

sed -i 's/raidautorun \/dev\/md0/raidautorun \/dev\/md0\nraidautorun \/dev\/md1\nraidautorun \/dev\/md2/' init

Скопируйте новый загрузочный образ в каталог /mnt/boot и измените загрузочное меню

find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-`uname -r`-raid.img
rm /mnt/boot/initrd-2.6-xen.img
cd /mnt/boot
ln -s initrd-`uname -r`-raid.img initrd-2.6-xen.img

замените в /mnt/boot/extlinux.conf строку root=LABEL=root-… на root=/dev/md0 во всех пунктах меню

sed -i 's/LABEL=[a-zA-Z\-]*/\/dev\/md0/' extlinux.conf

Настройте MBR для GPT на /dev/sdb

cat /mnt/usr/share/syslinux/gptmbr.bin > /dev/sdb
cd /mnt
extlinux  --raid -i boot/

Перезагрузите сервере (ВНИМАНИЕ: загрузка должна происходить со ВТОРОГО диска, а НЕ с /dev/sda)
Когда XenServer загрузится, добавьте разделы с /dev/sda в массивы:

sgdisk --attributes=1:set:2 /dev/sda
sgdisk --typecode=1:fd00 /dev/sda
sgdisk --typecode=2:fd00 /dev/sda
sgdisk --typecode=3:fd00 /dev/sda
mdadm -a /dev/md0 /dev/sda1
mdadm -a /dev/md1 /dev/sda2
mdadm -a /dev/md2 /dev/sda3

Массивы RAID нуждаются в синхронизации, это может занять какое-то время. Вы можете отслеживать процесс синхронизации:

watch -n 1 cat /proc/mdstat

Когда все три массива синхронизируются, скопируйте настройки RAID в /etc/mdadm.conf

mdadm --detail --scan >> /etc/mdadm.conf

В конце добавьте /dev/md2 как локальное хранилище в XenServer (если вам это нужно).

xe sr-create content-type=user device-config:device=/dev/md2 host-uuid= name-label="Local Storage" shared=false type=lvm

Тип также может быть ext: type=ext

PS: Обновление установленной системы: Обновление XenServer, установленного на софт-RAID (с 6.1 до 6.2) - http://wysotsky.info/?p=145

Перенос установленного XenServer 6.2 на программный RAID на компьютере с BIOS

На компьютере с UEFI на диске должна быть таблица GPT, а на компе с BIOS - обычный MBR.

Копируем таблицу разделов с диска на который установлен XenServer на диск, который будет зеркалом:

dd if=/dev/sda of=/dev/sdb bs=512 count=1

После этого я перезагрузил сервер, так как partprobe в XenServer 6.2 не оказалось.
Потом назначим партиции (она там одна) правильный тип - Linux RAID

echo -e "\nt\nfd\nw\nx" | fdisk /dev/sdb

Создаем программный массив на втором зеркальном диске

mknod /dev/md1 b 9 0
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb1
mdadm --grow /dev/md1 -b internal

Правда после перезагрузки у меня массив сам определился как /dev/md0

Создаем файловую систему и монтируем root.

mkfs.ext3 /dev/md1
mount /dev/md1 /mnt

И хорошо бы проверить, что оно смонтировалось командой mount. У меня почему-то в первый раз не смонтировалось, хотя ошибку не показало.

Копируем корневую файловую систему.

cp -vxpR / /mnt

Меняем корень в /mnt/etc/fstab на /dev/md1.
То есть редактируем строку

LABEL=root-fmlzvoid    /         ext3     defaults   1  1

Чтобы она была

/dev/md1    /         ext3     defaults   1  1

Прописываем массивы в /mnt/etc/mdadm/mdadm.conf:

cp /mnt/etc/mdadm/mdadm.conf /mnt/etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /mnt/etc/mdadm/mdadm.conf

Устанавливаем загрузчик.

mount --bind /dev /mnt/dev
mount -t sysfs none /mnt/sys
mount -t proc none /mnt/proc
chroot /mnt /sbin/extlinux --install boot
dd if=/mnt/usr/share/syslinux/gptmbr.bin of=/dev/sdb

Создаем новый образ initrd, содержащий драйвер для новой корневой файловой системы на программном RAID-массиве.

chroot /mnt mkinitrd -v -f --theme=/usr/share/splash --without-multipath /boot/initrd-`uname -r`.img `uname -r`

Отредактируем /mnt/boot/extlinux.conf, заменив все ссылки на старую файловую систему (root=LABEL=xxx) на root=/dev/md1.

Размонтируем /dev/sdb1, перезагружаем сервер, указываем в BIOS грузиться со второго диска.

Проверяем что загрузились с /dev/md1.

mount

14. Добавляем /dev/sda в массивы.

sgdisk --typecode=1:fd00 /dev/sda
mdadm -a /dev/md1 /dev/sda1

Повторяем то же самое для всех разделов.

15. Дожидаемся завершения процесса перестроения массива, наслаждаясь видом прогрессбаров.

watch -n 1 cat /proc/mdstat

16. Для надежности перезагружаем сервер.
Далее нам потребуется создать репозиторий для хранения дисков виртуальных машин и установить обновления (начиная с XenServer 6.2, Citrix решила усложнить жизнь в этом вопросе), но об этом я расскажу в следующих записях.

Enter your comment. Wiki syntax is allowed:
 
  • citrix/программныи-реид-xenserver-6-2.txt
  • Last modified: 2019/02/11 09:13
  • by 127.0.0.1