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 partitions" >> /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