Niemożliwe, niewspierane, …
Zgodnie z dokumentacją, instalacja Xen Cloud Platform na macierzy RAID1 może odbyć się tylko w przypadku korzystania z wspieranego sprzętowego kontrolera RAID. Ze względu na ograniczoną przestrzeń na karty rozszerzeń w HP Microserver nie pozwalającą na wykorzystanie tanich kontrolerów Dell PERC, zdecydowałem się na instalację systemu na macierzy stworzonej mdadm.
Instalacja XCP 1.5
Instalator XCP nie pozwala nam ani na instalację na macierzy fake-raid ani nawet na modyfikację układu partycji.
Jako, że wykorzystałem dyski 1TB, nie miałem konieczności korzystania GUID Partition Table. Pozwoliło to na uproszczenie procedury i w tej też formie przedstawiam ją tutaj.
W przypadku instalacji z płyty CD wybieramy przy rozruchu opcję \”shell\”, w przypadku instalacji z sieci (PXE) przełączamy konsolę na 3 (ALT+F3) i dokonujemy poniższych modyfikacji, następnie restartując program instalatora (kill).
- Wyłączamy GPT – nie wspierane przez dmraid:
sed \’s/GPT_SUPPORT = True/GPT_SUPPORT = False/\' -i /opt/xensource/installer/constants.py
- Wychodzimy z shell komendą exit
- Prowadzeni przez instalator Anaconda dokonujemy instalacji na pierwszym z dysków nie tworząc local storage
Przeniesienie systemu na RAID1
- Tworzymy docelową struktury partycji
Najprościej:sfdisk -d /dev/sda | sed \’s/Id=83/Id=fd/g\' | sed \’s/Id=8e/Id=fd/g\' | sfdisk –force /dev/sdb
Lepiej: tworzymy analogiczną strukturę jak na pierwszym dysku, wypełniając go partycjami typu Linux RAID autodetect (w fdisk – typ \”fd\”), przeliczając odpowiednio wielkości w przypadku korzystania z dysków Advanced Format (4kb sektor).
- Tworzymy macierze RAID1, zapisujemy konfigurację…
mdadm –create /dev/md0 –level=1 -n 2 missing /dev/sdb1
mdadm –create /dev/md1 –level=1 -n 2 missing /dev/sdb2
mdadm –create /dev/md2 –level=1 -n 2 /dev/sda3 /dev/sdb3
mdadm –detail –scan | sed -r \’s\\$\\ auto=yes\' > /etc/mdadm.conf - …systemy plików…
mkfs.ext3 /dev/md0
mkfs.ext3 /dev/md1 - …oraz local storage.
xe sr-create content-type=user type=ext device-config:device=/dev/md2 shared=false name-label=\”Local storage\”
- Zmieniamy wpis dla / w /etc/fstab, ustawiając urządzenie na /dev/md0
- Modyfikujemy initrd:
mkinitrd -v -f –fstab=/etc/fstab –with=raid1 –preload=raid1 /boot/raid-initrd $(uname -r)
mkdir /tmp/initrd; cd /tmp/initrd; cat /boot/raid-initrd | gzip -d – | cpio -id
sed \’s/Scanning and configuring dmraid supported devices/raidautorun \\/dev\\/md0/\' -i init
sed \’s/sda1/md0/\' -i init
find . -print0 | cpio –null -ov –format=newc | gzip -9 > /boot/raid-initrd - Dodajemy wpisy w /boot/extlinux.conf z opcją z root=/dev/md0 i na końcu /boot/raid-initrd, zmieniamy opcję domyślną
- Kopiujemy system na dysk docelowy, instalujemy bootloader i restartujemy system:
mkdir /mnt/md0; mount /dev/md0 /mnt/md0; rsync -xav / /mnt/md0/
dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb
extlinux –install –raid /mnt/md0/boot - Po wyłączeniu komputera uruchamiamy go jedynie z drugim dyskiem.
- Jeżeli procedura powiodła się, dodajemy pierwotny dysk jako drugi, ponownie kopiujemy nań tablicę partycji i dołączamy go do macierzy
sfdisk -d /dev/sda | sfdisk –force /dev/sdb
mdadm –manage /dev/md0 –add /dev/sdb1
mdadm –manage /dev/md1 –add /dev/sdb2
mdadm –manage /dev/md2 –add /dev/sdb3