LPS:Xen/Migrace na MetroCluster
Z HelpDesk
< LPS:Xen
Migrace virtuálních strojů z SW RAID na MetroCluster řešení, jako příklad poslouží migrace stroje VIRT (virtuální stroj - domU) na SRV (fyzický stroj - dom0), legenda:
- Tučně je vyznaceno, na co si dat pozor, je možné upravit dle situace
- modře je vyznačena práce v konzoli virtálního stroje xenmv
- zeleně jsou vyznačeny výpisy souborů nebo tvar výsledných úprav konfiguráků
- šedě jsou označny výpisy příkazů
- červeně jsou části (nejčastěji názvy strojů), které je potřeba v příkazech zaměnit dle aktuální situace
Tento návod je připraven pouze pro Debian/squeeze, pokud jde jeste o Debian/Lenny, pak je třeba napřed provést jeho upgrade.
Migrace
- kontrola serveru (kontrola dostatku místa na disku, volné paměti a obsazenosti swapu)
ssh root@VIRT uname -a df -h | grep /dev/md free cat /etc/debian_version cat > /tmp/debconf.txt << EOF grub-pc grub-pc/install_devices_empty boolean true grub-pc grub-pc/install_devices string EOF debconf-set-selections /tmp/debconf.txt rm /tmp/debconf.txt
- instalace grubu, v nabídce věe odsouhlasit, instalovat grub i přes to, ze NEVYBEREME žádné zařízení, protože to nepotřebujeme, na závěr možno odstranit staré nepoužívané verze jader a modulů
ssh root@VIRT apt-get update apt-get install grub-pc cp /usr/lib/grub/i386-pc/video.lst /boot/grub/ sed -i -e 's/^.*GRUB_DISABLE_LINUX_UUID=.*/GRUB_DISABLE_LINUX_UUID=true/' /etc/default/grub update-grub rm -f /boot/grub/menu.lst sed -i -e "s/set root='(.*)'/set root=(hd0)/g" /boot/grub/grub.cfg sed -i -e "s#root=/dev/md.#root=/dev/xvda#g" /boot/grub/grub.cfg
ls /boot/ dpkg -l | grep linux-image # pregeneruje grub.cfg! dpkg --purge linux-image-package dpkg --purge memtest86+
- vytvoření nových LVM oddílů, synchronizace s ostatními xen servery:
ssh root@zen1 lvcreate -L10G vgxen -n VIRT.root lvcreate -L256M vgxen -n VIRT.swap logout for i in zen1 zen2 zen3 hippod ; do ssh root@$i 'lvchange -ay `lvscan 2>/dev/null | grep inactive | perl -pe "s/^\s+\S+\s+.(.*?).\s+.*$/\1/g;"`' ; done
- příprava konfigurace migračního serveru, změna na nový disk vytvořený v LVM, kontrola
sed -i -e 's#/dev/vgxen/.*\(\..*\).*,xvd\(.*\)#/dev/vgxen/VIRT\1,xvd\2#' /afs/.zcu.cz/common/etc/xen/install/xenmv vos rel common.etc.xen -v
- spuštění migračního virtuálu
#b find /afs/zcu.cz/common/etc/xen/ | grep auto | grep VIRT ssh root@zen1 cat /etc/xen/install/xenmv |grep -v ^# | sed -e '/^\s*$/d' | grep VIRT 'phy:/dev/vgxen/VIRT.root,xvda,w', 'phy:/dev/vgxen/VIRT.swap,xvdb,w' xm create -c /etc/xen/install/xenmv
- vypnutí virtuálního serveru a připojení jeho disků do výše vytvořeného 'xenmv':
ssh root@VIRT 'halt' ssh root@zen1 cat /etc/xen/boot/VIRT | grep vgxen disk = [ 'phy:/dev/vgxen-ui420/VIRT.system,xvda,w', 'phy:/dev/vgxen-ul008/VIRT.system,xvdb,w' ] xm block-attach xenmv phy:/dev/vgxen-ui420/VIRT.system xvdc r xm block-attach xenmv phy:/dev/vgxen-ul008/VIRT.system xvdd r
- přerušit reboot FAIe v xenmv, připojit původní disky a zahájit kopírování, odpojit
ctrl+c - je třeba počkat na Press <RETURN> to reboot rm -rf /target/var mdadm --assemble --scan cat /proc/mdstat Personalities : [raid1] md126 : active raid1 xvdd1[0] xvdc1[1] 1020084 blocks super 1.2 [2/2] [UU] md127 : active raid1 xvdc2[0] xvdd2[1] 9461189 blocks super 1.2 [2/2] [UU] mdadm -o /dev/md126 mdadm -o /dev/md127 mount /dev/md127 -o ro /mnt cd /target time ( cd /mnt ; tar cp . ) | pv -s `df /mnt | tail -n 1 | awk '{print $3}'`k | tar xp --numeric-owner sed -i -e 's#^.* / #/dev/xvda / #' /target/etc/fstab sed -i -e 's#^.*none.*swap#/dev/xvdb none swap #' /target/etc/fstab cat /target/etc/fstab df -h cd / umount /mnt umount /target halt
- upravit konfiguraci pro virtuální stroj
vim /afs/.zcu.cz/common/etc/xen/boot/VIRT bootloader = '/usr/lib/xen-default/bin/pygrub' #kernel = ... #ramdisk = ... disk = [ 'phy:/dev/vgxen/VIRT.root,xvda,w', 'phy:/dev/vgxen/VIRT.swap,xvdb,w'] #root = ... #extra = ...
vos rel -v common.etc.xen find /afs/zcu.cz/common/etc/xen/ | grep auto | grep VIRT ssh root@SERV xm create -c /etc/xen/auto/VIRT
- odstraneni puvodnich LVM volumů a synchronizace
export PUVODNI=VIRT for i in zen1 zen2 zen3 hippod ; do ssh root@$i "echo \"$i\" ; lvchange -an /dev/vgxen-ui420/${PUVODNI}.system /dev/vgxen-ul008/${PUVODNI}.system" ; done ssh root@zen1 "lvremove /dev/vgxen-ui420/${PUVODNI}.system /dev/vgxen-ul008/${PUVODNI}.system" for i in zen2 zen3 hippod ; do ssh root@$i "echo \"$i\" ; lvscan >/dev/null" ; done
Triky
Test pygrubu
/usr/lib/xen-default/bin/pygrub /dev/vgxen/VIRT.root
Pokud se nezobrazi menu, je to spatne, vetsinou je chyba v /boot/grub/grub.cfg, kde je jinak definovaná volba root=(hd0) než právě takto.
Boot nefunguje
K původnímu bootu se lze vrátit, stačí upravit konfigurák do níže uvedené podoby:
#bootloader = ... kernel = ... ramdisk = ... root = "/dev/xvda ro"
Release volumu a znova se pokusit spustit virtuál
vos rel common.etc.xen -v ssh root@SRV xm create -c /etc/xen/auto/VIRT
Připojení souborového systému
Pokud je potřeba něco opravit, pak stačí, pokud virtuální stroj běží, je třeba jej vypnout nebo připojit jako read-only: mount -o ro
ssh root@zen1 mount /dev/vgxen/VIRT /mnt/floppy vim /mnt/floppy/ umount /mnt/floppy