XCP 1.6. Установка на RAID1.

/ Просмотров: 500
Метки: , ,
XCP 1.6. Установка на RAID1.

Как известно XenServer не устанавливается на программный RAID. Но выход есть.

1. Чтобы не запутаться, подключаем только два диска на которых будет располагаться програмный RAID1 и система. В нашем примере для удобства первый диск - 80Gb, второй - 160Gb.

2. Устанавливаем XCP 1.6. Один ньюанс, в окне "Virtual Mashine storage", снимаем метки со всех дисков (хранилище подключим позднее).

3. Стираем таблицу разделов на втором диске:

sgdisk --zap-all /dev/sdb

4. Копируем таблицу разделов с /dev/sda на /dev/sdb

sgdisk -R /dev/sdb /dev/sda

5. Смотрим структуру дисков (должна быть идентичной)

sgdisk -p /dev/sda
sgdisk -p /dev/sdb

6. Задаем тип RAID для разделов:

sgdisk --typecode=1:fd00 /dev/sdb
sgdisk --typecode=2:fd00 /dev/sdb
sgdisk --typecode=3:fd00 /dev/sdb

7. Ставим флаги загрузочного раздела

sgdisk /dev/sda --attributes=1:set:2
sgdisk /dev/sdb --attributes=1:set:2

8. Создаем, собственно, RAID:

yes|mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb1 missing
yes|mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb2 missing
yes|mdadm --create /dev/md2 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb3 missing
mdadm --grow /dev/md0 -b internal
mdadm --grow /dev/md1 -b internal
mdadm --grow /dev/md2 -b internal

9. Создаем разделы

mkfs.ext3 /dev/md0

10. Монтируем

mount /dev/md0 /mnt

11. Копируем файлы на новый раздел:

cp -xR --preserve=all / /mnt

12. Заменяем в файле /mnt/etc/fstab имя корня файловой системы на /dev/md0.

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

13. Делаем chroot в нашу будущую систему:

mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
chroot /mnt  /bin/bash

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

/sbin/extlinux --raid --install /boot
exit
dd if=/mnt/usr/share/syslinux/gptmbr.bin of=/dev/sdb

15. Генерируем новый образ системы.

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

16. Создаем файл mdadm.conf:

echo "MAILADDR root" > /mnt/etc/mdadm.conf
echo "auto +imsm +1.x -all" >> /mnt/etc/mdadm.conf
echo "DEVICE /dev/sd*[a-z][1-9]" >> /mnt/etc/mdadm.conf
mdadm --detail --scan >> /mnt/etc/mdadm.conf
cp /mnt/etc/mdadm.conf /etc

17. Копируем метку раздела на /dev/sdb:

e2label /dev/sda1 |xargs -t e2label /dev/sdb1

18. Исправляем конфиг загрузки. Для этого открываем в текстовом редакторе файл /mnt/boot/extlinux.conf и заменяем (root=LABEL=xxx) на root=/dev/md0.

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

19. Выключаем сервер. Отключаем диск /dev/sda, пробуем загрузиться с /dev/sdb. Если загрузка прошла успешно, обратно подключаем /dev/sda, но загружаемся по прежнему с /dev/sdb

20. Проверяем что все верно подмонтировалось.

[root@localhost ~]# mount
/dev/md0 on / type ext3 (rw)
...

21. Переписываем таблицу с /dev/sdb на /dev/sda:

sgdisk -R /dev/sda /dev/sdb

22. Добавление первого диска в массив.

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

23. Мониторим процесс сборки RAID

watch -n 1 cat /proc/mdstat

24. После сборки состояние RAID массива должно выглядеть так:

Personalities : [raid1]
md1 : active raid1 sda2[1] sdb2[0]
      4193216 blocks [2/2] [UU]
      bitmap: 1/128 pages [4KB], 16KB chunk
md2 : active raid1 sda3[1] sdb3[0]
      69761024 blocks [2/2] [UU]
      bitmap: 0/134 pages [0KB], 256KB chunk
md0 : active raid1 sda1[1] sdb1[0]
      4193216 blocks [2/2] [UU]
      bitmap: 4/128 pages [16KB], 16KB chunk
unused devices: <none>

25. Пробуем заменить один из дисков массива. Выключаем комп заменяем любой из винтов, загружаемся с того что остался нетронутым.

26. Выясняем какой диск остался в массиве (в нашем примере это /dev/sdb):

cat /proc/mdstat

27. Стираем таблицу разделов на новом диске:

sgdisk --zap-all /dev/sda

28. Переписываем таблицу с /dev/sdb на /dev/sda:

sgdisk -R /dev/sda /dev/sdb

29. Добавление нового диска в массив.

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

30. Мониторим процесс сборки RAID

watch -n 1 cat /proc/mdstat

PS: На всякий случай весь консольный вывод : list01.txt

Источники: раз, два, три