Table des matières
Migration Xen 32 bit en Xen 64 bit
Soit une machine avec la configuration suivant:
- RAID 1 ⇒ /boot
- RAID 1 ⇒ LVM ⇒ xen 8G ⇒ /
- Debian Etch
- Xen 3.0… 32 bit
Le but: passer en Xen 64 bit , sous Lenny !
simulation
Afin de ne pas casser la machine en production, j'expérimente sur une autre machine.
Donc, installation de Etch a partir d'un cd… classique.
installer Xen
# aptitude install linux-image-xen-686 xen-hypervisor xen-linux-system-2.6.18-6-xen-686 # apt-get install xen-ioemu-3.0.3-1 # aptitude install xen-tools
Rebooter sous Xen.
Configurer le réseau, pour avoir:
# cat xend-config.sxp | egrep -v "^(#|$)" (network-script 'network-bridge netdev=eth0 bridge=xenbr0') (network-script network-dummy) (vif-script vif-bridge) (dom0-min-mem 196) (dom0-cpus 0)
Et puis:
# /etc/init.d/xend restart Restarting XEN control daemon: xend.
Ok?
winleft:/etc/xen# brctl show bridge name bridge id STP enabled interfaces xenbr0 8000.feffffffffff no vif0.0 peth0
il est possible que ca ne fonctionne pas… grrrrr |
Recuperer tout la liste des paquets installé sur la source:
# dpkg --get-selections | grep install | grep -v linux-source > /tmp/selections.txt
Copier cela sur la machine de test:
$ scp ..../tmp/selections.txt .
Puis installation de tout les paquets!
# apt-get update # cat selections.txt | dpkg --set-selections
Et puis:
# apt-get dselect-upgrade
Modifier /boot/grub/menu.lst
afin d'avoir aussi:
# xenkopt=console=tty0 xencons=off
Et puis:
# update-grub
Reboot pour voir si tout va bien.
installer DomU
On tester quelques DomU en fonctionnement…
domu deja arreté
Sur la source:
# lvs --units k /dev/vgraid1/bindtest* LV VG Attr LSize Origin Snap% Move Log Copy% bindtest vgraid1 -wi-a- 4194304,00K bindtest_swap vgraid1 -wi-a- 262144,00K
Sur la machine de test:
# lvcreate -L 4194304K -n bindtest vgraid1 Logical volume "bindtest" created # lvcreate -L 262144K -n bindtest_swap vgraid1 Logical volume "bindtest_swap" created
Toujours sur la machine de test:
# nc -lp 32767 | dd of=/dev/vgraid1/bindtest
(On est en attente sur le port 32767)
Puis sur la source:
# dd if=/dev/vgraid1/bindtest bs=4k | nc 192.168.0.52 32767
Toujours sur la source:
# mkswap /dev/vgraid1/bindtest_swap
Recuperer la configuration du “domU” :
# cd /etc/xen # scp .../bindtest.cfg .
Adapter la configuration, si necessaire. Et puis:
# xm create bindtest.cfg -c
domu en plein vol
Aprés avoir créé les volumes (qui sont donc encore vierge).
Sur la source:
# xm save wwwcave wwwcave.save
Sur la destination:
# nc -lp 32767 | dd of=/dev/vgraid1/wwwcave
Sur la source:
# dd if=/dev/vgraid1/wwwcave bs=4k | nc 192.168.0.52 32767
Pareil pour le swap:
(source)# nc -lp 32767 | dd of=/dev/vgraid1/wwwcave_swap (destination)# dd if=/dev/vgraid1/wwwcave_swap bs=4k | nc 192.168.0.52 32767
Puis transferer la sauvegarde et la configuration:
# cd /etc/xen # scp .../etc/xen/wwwcave.cfg . # scp .../etc/xen/wwwcave.save .
Et puis:
# xm restore wwwcave.save
domu sans arret
Recuperer un domu sans l'arreter, grace à lvm.
Sur la source:
# sync # lvcreate -s -L 1G -n netcave_snap /dev/vgraid1/netcave
Transferer l'image “netcave_snap” comme vu ci-dessus, mais en prenant la taille de “netcave”!
Sur la destination, vérifier le disk…
# fsck.ext3 /dev/vgraid1/netcave
lenny 64 bit
Booter sur le CD d'installation de Debian 5.00 AMD64 …
On va installer ce nouveau système sur une nouvelle partition !
Et aprés, on reinstallera les services !
partitionnement
A ce moment, choisir le partionnement “manuel”.
- desactiver toutes les partitions swap
- creer une nouvelle partition (lvm) pour recevoir le systeme
- point de mountage: ext3 “/”
- creer aussi un swap (qui sera le seul actif, donc)
- raviver la partition “boot”, donc: point de montage, ext3 “/boot”
- ⇒ forcer l'effacement de cette partition (ça sera plus propre ensuite)
Poursuivre l'installation…
grub
A la fin, “grub” pose une question pour s'installer, moi j'ai dit:
(hd0)
et voila.
test
$ uname -r 2.6.26-1-amd64 $ file /bin/ls /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped
Ok.
xen
# aptitude install xen-hypervisor linux-image-xen-amd64 # aptitude install xen-tools
par de “ioemu” ? et comment on fait pour windows ? |
je comprend pas le commentaire du package “old-style”: c koi ce border, there are a new style ??? |
Redemarrer sous xen…: reboot
test
# uname -r 2.6.26-1-xen-amd64
xen grub
Faire en sorte d'avoir dans /boot/grub/menu.lst
## Xen Linux kernel options to use with the default Xen boot option # xenkopt=console=tty0 xencons=off
xen reseau
Sans réseau, point de salut !
Ce qu'il y a dans le reseau:
# egrep -v "^(#|$)" /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto xenbr0 iface xenbr0 inet static address 192.168.0.52 netmask 255.255.255.0 gateway 192.168.0.254 broadcast 192.168.0.255 bridge_ports eth0 # optional bridge_stp off bridge_maxwait 0
activer la methode “debian” (avec le bridge): sinon, bang! plus de réseau |
Dans /etc/xen/xend-config.sxp
, faire en sorte d'avoir:
# egrep -v "^(#|$)" xend-config.sxp (network-script network-dummy) (vif-script vif-bridge) (dom0-min-mem 196) (dom0-cpus 0) (vncpasswd '')
Et puis:
# /etc/init.d/xend restart
Bonne chance.
domu
Modifier la config de chaque “DomU” afin d'avoir:
kernel = '/boot/vmlinuz-2.6.26-1-xen-amd64' ramdisk = '/boot/initrd.img-2.6.26-1-xen-amd64' #kernel = '/boot/vmlinuz-2.6.18-6-xen-686' #ramdisk = '/boot/initrd.img-2.6.18-6-xen-686' extra = 'clocksource=jiffies'
Le “jiffies” c'est pour un problème d'horloge d'effectueuse sur l'ensemble des DomU !
Mounter chaque “DomU” …
# mkdir /mnt/domu # mount /dev/vgraid1/<nom_du_volume> /mnt/domu
… et faire les modifications suivantes:
# cp -dpR /lib/modules/2.6.26-1-xen-amd64 /mnt/domu/lib/modules
… modifier “…/domu/etc/inittab” afin d'avoir:
1:2345:respawn:/sbin/getty 38400 hvc0 #1:2345:respawn:/sbin/getty 38400 tty1 #2:23:respawn:/sbin/getty 38400 tty2 #3:23:respawn:/sbin/getty 38400 tty3 #4:23:respawn:/sbin/getty 38400 tty4 #5:23:respawn:/sbin/getty 38400 tty5 #6:23:respawn:/sbin/getty 38400 tty6
sinon, plus de “console” !
Mais aussi, editer …/domu/etc/securetty
et ajouter:
# TJ ------ # xen console hvc0
Sinon, 'root' ne pourra pas se connecter via la console xen !
Demarrer “DomU” et tester:
# xm create <nom_du_fichier_de_conf_du_domu> -c ... # file /bin/ls /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped # uname -r 2.6.26-1-xen-amd64
Etrangement, ca fonctionne…
Pour les DomU “Etch”, il y a un peu plus de travail:
Installer “udev” sinon “PTY allocation request failed on channel 0”.
Faire attention au changement de “MAC” dans les configs des DomU, car “udev” va creer une nouvelle interface “ethX”.
Un bilan
Y a surement plus simple, (par exemple, sans re-installer a la main tout les packages), mais ca fonctionne.