Outils pour utilisateurs

Outils du site


brouillon_xen_32_64

Ceci est une ancienne révision du document !


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”.

  1. desactiver toutes les partitions swap
  2. creer une nouvelle partition (lvm) pour recevoir le systeme
  3. point de mountage: ext3 “/”
  4. creer aussi un swap (qui sera le seul actif, donc)
  5. raviver la partition “boot”, donc: point de montage, ext3 “/boot”
  6. ⇒ 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'

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” !

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:

  1. installer “udev” sinon “PTY allocation request failed on channel 0”
brouillon_xen_32_64.1238341801.txt.gz · Dernière modification : 2009/03/29 15:50 de thierry