====== 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/ /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 -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.