Soft RAID pro XenServer 5.0+

nainstalovat XenServer bez tvorby jakékoliv repository

Zkopírovat partition table

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

Nastavit flagy oddílů na fd = raid autodetect

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

Vytvořit raid nody s kontrolou jestli existují

[ -e /dev/md0 ] || mknod /dev/md0 b 9 0
[ -e /dev/md1 ] || mknod /dev/md1 b 9 1

Vytvořit samotná raid1 pole jen s jedním diskem

mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb3

Pokud už máme existující repository, tak musíme udělat tento krok pvcreate /dev/md1 volume_group=`vgscan | grep VG | awk -F \„ '{print $2}'` vgextend $volume_group /dev/md1 pvmove /dev/sda3 /dev/md1 # If this is a fresh install, then there won't be any data to move vgreduce $volume_group /dev/sda3

Vytvořit filesystem a zkopírovat na něj obsah

mkfs.ext3 /dev/md0
cd / && mount /dev/md0 /mnt && rsync -a --progress --exclude=/sys --exclude=/proc --exclude=/dev/shm --exclude=/dev/pts / /mnt
mkdir /mnt/sys
mkdir /mnt/proc

Nastavit bootování na něj

sed -r -i 's,LABEL=root-\w+ ,/dev/md0 ,g' /mnt/etc/fstab

Vytvořit initrd

mkdir /root/initrd && cd /root/initrd
zcat /boot/initrd-`uname -r`.img | cpio -i
cp /lib/modules/`uname -r`/kernel/drivers/md/raid1.ko lib

Zeditujeme init soubor

q="echo Waiting for driver initialization."
sed -r -i "s,^${q}$,\n\necho Loading raid1.ko module\ninsmod /lib/raid1.ko\n${q}\n,g" init
q="resume /var/swap/swap.001"
sed -r -i "s,^${q}$,${q}\necho Running raidautorun\nraidautorun /dev/md0\nraidautorun /dev/md1,g" init
r=`grep mkroot /root/initrd/init`
sed -r -i "s|^${r}$|${r/sda1/md0}|g" init

zkopírujeme init ramdisk do /boot na RAIDu

find . -print | cpio -o -c | gzip -c > /mnt/boot/initrd-`uname -r`.img
sed -r -i 's,LABEL=root-\w+ ,/dev/md0 ,g' /mnt/etc/fstab
sed -r -i 's,root=LABEL=root-\w+ ,root=/dev/md0 ,g' /mnt/boot/extlinux.conf

Nastavíme bootování

cat /usr/lib/syslinux/mbr.bin > /dev/sdb
cd /mnt
extlinux -i boot/

Pokud se to dělá vzdáleně, a nemůžeme fyzicky prohodit disky, tak

cp /mnt/boot/extlinux.conf /boot/
cp /mnt/boot/initrd-`uname -r`.img /boot

Nakonec odmountujeme disk

cd ; umount /mnt || umount /dev/md0
sync

vypnout server, prohodit disky abysme nabootovali z toho nove prirpaveneho a pak

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

Přidat disky do pole

mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb3

Vytvořit repository

xe sr-create content-type=user type=lvm shared=false device-config:device=/dev/md1 name-label="RAID1 Repository"

Zdroje:
http://www.toddsmith.org/wordpress/uncategorized/configure-xenserver-50-free-for-software-raid-1/
http://dmit.lv/xs50raid/XenServer-on-RAID.txt