Table des matières
Xen
Xen4 et Debian …
Liens:
Pre-requis
Sous Debian, il faut configurer l'interface reseau en “bridge”, ce qui implique:
# aptitude install bridge-utils
Et puis, par exemple, on transforme un classique:
auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.254
En:
auto eth0 iface eth0 inet manual auto brlan iface brlan inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.254 bridge_ports eth0 bridge_stp off bridge_maxwait 0
Et puis:
# reboot
ou autres, pour prendre en compte les modifs.
Install
Sous Debian Squeeze donc :
# aptitude install xen-hypervisor xen-linux-system xen-tools xen-qemu-dm
Dom0 et cpu
Liens:
Lorsqu'on a beaucoup de CPUs, il est malin d'en garantir un peu pour le Dom0, dans le cas ou des DomU s'affollent !
Au reboot
Avec Grub2 par exemple, si on veut garantir 2G , et 2 CPUs :
GRUB_CMDLINE_XEN_DEFAULT="com2=57600,8n1 console=com2,vga dom0_mem=2048M dom0_max_vcpus=2 dom0_vcpus_pin=true"
C'est dom0_vcpus_pin=true
qui force Xen a choisir et a dédié dom0_max_vcpus
CPUs au Dom0.
A chaud
Pour forcer 2 CPUS :
# xm vcpu-set Domain-0 2
Puis dédiés a CPU virtuel 1 et 2 , respectivement le CPU 1 et 2.
# xm vcpu-pin Domain-0 0 0 # xm vcpu-pin Domain-0 1 1
Et voila:
# xm vcpu-list Name ID VCPU CPU State Time(s) CPU Affinity Domain-0 0 0 0 -b- 82257.8 0 Domain-0 0 1 1 r-- 18666.4 1
Lenny en Squeeze
avant
S'assurer que Lenny est *up-to-date* et qu'il reboote !
Donc:
# aptitude update # aptitude dist-upgrade # reboot
apt
Virer toutes les references a “lenny”.
Donc, /etc/apt/sources.list
devient:
# ---- Squeeze ------ deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free deb http://security.debian.org/ squeeze/updates main contrib non-free deb-src http://security.debian.org/ squeeze/updates main contrib non-free # remplace "volatile": deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
Virer les “pinnings”, c'est a dire:
/etc/apt/preferences
(qu'on renommer “old-preferences” par exemple)
Et dans /etc/apt/apt.conf.d
si un fichier force “lenny” ou un package quelconque.
upgrade
Il faut être attentif au question posé, mais la plupart du temps, la réponse par défaut suffit.
# aptitude update # LANG=C aptitude install apt dpkg aptitude # LANG=C aptitude full-upgrade
Et elle souvent nécessaire de finir le travail par:
# LANG=C aptitude install
Et enfin:
# aptitude autoclean
Grub2
Afin que “Xen” soit prioritaire dans la liste des kernels:
# cd /etc/grub.d/ # mv 10_linux 21_linux
Modifier grub2:
# vi /etc/default/grub
Et faire en sorte d'avoir:
# TJ ----------------- GRUB_DISABLE_OS_PROBER="true" GRUB_CMDLINE_XEN="" GRUB_CMDLINE_XEN_DEFAULT="xencons=off dom0_mem=1024M dom0_max_vcpus=2" # --------------------
Ou bien, si vous avez un port serie “COM2” pour monitorer votre serveur:
# TJ ----------------- GRUB_DISABLE_OS_PROBER="true" GRUB_CMDLINE_XEN="" GRUB_CMDLINE_XEN_DEFAULT="com2=57600,8n1 console=com2,vga dom0_mem=1024M dom0_max_vcpus=2" GRUB_TERMINAL="serial console" GRUB_SERIAL_COMMAND="serial --speed=57600 --unit=1 --word=8 --parity=no --stop=1" # --------------------
Dans ce dernier cas, adapter aussi /etc/inittab
:
# TJ ------------------ #CONS:2345:respawn:/sbin/getty -i -h -L 57600 ttyS1 vt100 CONS:2345:respawn:/sbin/getty -i -h -L 57600 hvc0 vt100 # ---------------------
Forcer “grub2” en outre passant le chainage via Grub0:
# upgrade-from-grub-legacy # mv /boot/grub/menu.lst* ~backups/.
Xen4
Installer !
On suppose que les paquets suivants sont déjà installé:
linux-image-2.6.32-5-xen-amd64 xen-tools
# aptitude install xen-hypervisor xen-qemu-dm
Xen3
A virer a la main !
Xen3
# aptitude remove xen-hypervisor-3.2-1-amd64
Verifier dans /boot/grub/grub.cfg
que “Xen4” est en premier choix (par default, donc).
Remove
Il reste des paquets “lenny” a purger:
# dpkg -l | grep lenny
# aptitude remove libvolume-id0 ...
Sauf les “kernel 2.6.26” qui peuvent être utile pour certain DomU…
sysctl.conf
Préparer le reboot :
# TJ --------------------- # Desactiver Ipv6 (sous Squeeze) net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.all.autoconf=0 net.ipv6.conf.default.disable_ipv6=1 net.ipv6.conf.default.autoconf=0 # En cas de crash noyau kernel.panic=300 # Les requetes ARP ne traversent pas net.ipv4.conf.all.arp_ignore=1 # ------------------------
Reboot
# reboot
Purge
Purger les paquets retournés par la commande:
# dpkg -l | grep "^rc"
# aptitude purge $(dpkg --get-selections | grep deinstall | awk '{print $1}')
Xen 4
Pas de difficulté particulière a installer et utiliser Xen 4 sur un noyau Debian/Squeeze/Testing.
clocksource
Liens:
problème
$ uname -r 2.6.32-5-xen-amd64
$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource xen tsc
“jiffies” a disparu des horloges disponible…
Donc, ne plus faire dans la conf des DomU:
extra = 'clocksource=jiffies'
Mais petit a petit, il y a toujours un décalage de temps en le Dom0 et DomU …
solution
Lien:
Il y a un problème (encore): ca ne fonctionne simplement plus.
Entre autre, /proc/sys/xen/independent_wallclock
n'existe plus.
La seule solution : Installer un client ntp sur chaque “DomU” !!!!!!!!
Gasp.
Solution qui marche
Ne pas démarrer le DomU avec :
extra = 'clocksource=jiffies'
Mais laissé par defaut: c'est equivalent de 'clocksource=xen'
Puis dans le DomU, modifier “ntp.conf” en ajoutant:
disable kernel
Voila.
Solution (marche pas)
Dans le Dom0:
Editer /etc/ntp.conf
et ajouter:
disable kernel
Et puis:
# /etc/init.d/ntp restart
Dans chaque DomU:
# aptitude install ntp
… puis apporter les mêmes modification dans ntp.conf
.
Pas mieux.
xvda
Liens:
Il y a (encore!) un bug entre “grub” et “xen”.
Lorsqu'un DomU demarre, il ne voit pas “xvda” !!!! ce serait un bug de grub2 !
solution 1 : PyGrub
Lien: http://wiki.debian.org/PyGrub
Creer le DomU avec “xen-create-image” en ajoutant l'option “–pygrub”
On va alors demarrer le “DomU” en s'appuyant sur “grub”, ce qui, par miracle ?, decouvre “xvda” !
Interessant: car le noyau du DomU est independant de celui du Dom0.
Mais quid des vieux DomU qui n'utilise pas “PyGrub” ?
solution 2
: en recherche d'autres solutions.
PyGrub
“PyGrub” permet de demarrer les DomU “Squeeze”, sous Xen 4 Squeeze.
Installer “PyGrub”, aprés coup.
Monter l'image du disk.
Creer le fichier menu.lst
comme suit dans “<IMAGE_DISK>/boot/grub/” :
default 0 timeout 2 title Debian GNU/Linux 6.0 root (hd0,0) kernel /boot/vmlinuz-2.6.32-5-xen-amd64 root=/dev/xvda2 ro initrd /boot/initrd.img-2.6.32-5-xen-amd64 title Debian GNU/Linux 6.0 (Single-User) root (hd0,0) kernel /boot/vmlinuz-2.6.32-5-xen-amd64 root=/dev/xvda2 ro single initrd /boot/initrd.img-2.6.32-5-xen-amd64
Adapter selon le contenu de “…/boot” , bien sur.
Demounter ce volume.
Faculatif ? faire un test ?:
/usr/lib/xen-default/bin/pygrub /dev/vg0/vpntls-disk
En tout cas on voit le menu…
Dans le fichier de conf du DomU , faire les changements suivant:
bootloader = '/usr/lib/xen-default/bin/pygrub' #kernel = '/boot/vmlinuz-2.6.32-5-xen-amd64' #ramdisk = '/boot/initrd.img-2.6.32-5-xen-amd64'
Lenny et squeeze
Transition
Lenny est en fin de vie et squeeze n'est pas encore là…
Que faire: mélanger squeeze et lenny :)
Dans /etc/apt/sources.list
:
deb http://ftp.fr.debian.org/debian/ lenny main non-free contrib deb-src http://ftp.fr.debian.org/debian/ lenny main non-free contrib deb http://security.debian.org/ lenny/updates main contrib non-free deb-src http://security.debian.org/ lenny/updates main contrib non-free deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free # Backports deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free # squeeze deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib deb http://security.debian.org/ squeeze/updates main contrib non-free deb-src http://security.debian.org/ squeeze/updates main contrib non-free
Dans /etc/apt/preferences
(a créer au besoin) :
Package: * Pin: release a=stable Pin-Priority: 990 Package: * Pin: release a=testing Pin-Priority: 99 Package: * Pin: release a=lenny-backports Pin-Priority: 200
Dans /etc/apt/apt.conf.d/local
(a créer au besoin) :
APT::Default-Release "stable";
En pour finir:
# aptitude update
Nous voila avec 3 choix de packages:
Lenny/Stable | Backports | Squeeze/Testing |
bridge
Sous Debian, Xen fonctionne trés bien (mieux? plus simple?) avec une interface bridge
. Et ce n'est pas compliqué a mettre en place.
Il existe d'autres méthodes.
On va faire ca alors qu'on est en “dhcp” : c'est pour le fun. Mieux vaut avoir une IP FIXE. |
Préparer l'interface…
# aptitude install brigde-utils # brtcl show bridge name bridge id STP enabled interfaces (rien)
Dans /etc/network/interfaces
, au lieu d'avoir le classique:
allow-hotplug eth0 iface eth0 inet dhcp
On va avoir:
auto eth0 iface eth0 inet manual # dhcp ! auto brlan iface brlan inet dhcp bridge_ports eth0 bridge_stp off bridge_maxwait 0
D'abord, je suis en dhcp
, ce qui etait un test, mais ca fonctionne aussi comme cela. (En prod, j'ai plutot une IP FIXE !)
Ensuite, il ne faut pas oublier “eth0” , et la forcer “manual” : On monte l'interface “eth0” mais on ne la configure pas.
En montant, “eth0” va permettre a ces dépendances, “brlan”, de monter aussi. (Sinon, ca ne fonctionnera pas).
Ceci fait.
# /etc/init.d/networking restart
Compter jusqu'a 30 (secondes) … et verifier que c'est UP.
# ip a ... 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 ... 6: brlan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
Et aussi:
# brctl show bridge name bridge id STP enabled interfaces brlan 8000.00xxxxxxxxx no eth0
C'est tout bon.
Package
“Xen 4” est dans Squeeze/Testing, donc:
Donc:
# aptitude -t testing install xen-hypervisor-4.0-amd64 # aptitude -t testing install linux-image-xen-amd64
Reboot…
1er test
vu
Aprés reboot:
# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 15567 8 r----- 31.4
xen-tools
On peut creer des DomU sans “xen-tools”: mais c'est un peu plus simple avec.
Je ne vois pas la différence avec la version précédente pour l'instant.
# aptitude -t testing install xen-tools
Adapter le fichier /etc/xen-tools/xen-tools.conf
a ses besoins. Pour moi:
# egrep -v "^(#|$)" /etc/xen-tools/xen-tools.conf lvm = vg0 install-method = debootstrap size = 10Gb # Disk image size. memory = 512Mb # Memory size swap = 512Mb # Swap size fs = ext3 # use the EXT3 filesystem for the disk image. dist = `xt-guess-suite-and-mirror --suite` # Default distribution to install. image = full # tj # sparse # Specify sparse vs. full disk images. dhcp = 1 bridge = brlan hash_method = sha512 kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` arch = amd64 mirror = `xt-guess-suite-and-mirror --mirror` ext3_options = noatime,nodiratime,errors=remount-ro ext2_options = noatime,nodiratime,errors=remount-ro xfs_options = defaults reiserfs_options = defaults btrfs_options = defaults serial_device = hvc0 #default disk_device = xvda #default
1er DomU
On va creer un DomU pour tester “samba” :
# xen-create-image --hostname samba-test --role udev
A la fin: ca me donne le mot de passe “root”…. et ca créé:
/dev/vg0/samba-test-swap /dev/vg0/samba-test-disk /etc/xen/samba-test.cfg
Dans “cfg” :
kernel = '/boot/vmlinuz-2.6.32-5-xen-amd64' ramdisk = '/boot/initrd.img-2.6.32-5-xen-amd64' vcpus = '1' memory = '512' root = '/dev/xvda2 ro' disk = [ 'phy:/dev/vg0/samba-test-disk,xvda2,w', 'phy:/dev/vg0/samba-test-swap,xvda1,w', ] name = 'samba-test' dhcp = 'dhcp' vif = [ 'mac=00:16:3E:XX:XX:XX,bridge=brlan' ] on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
La conf mérite d'être corrigé ?
Mettre en commentaire “dhcp …” et mounter la partition afin d'y apporter les modifications “nécessaire”…
# mkdir /mnt/domu # mount /dev/vg0/samba-test-disk /mnt/domu
# cd /mnt/domu/etc
Vérifier (et rectifier):
# cat hostname samba-test
# cat inittab | egrep "^1" 1:2345:respawn:/sbin/getty 38400 hvc0
# cat pam.d/common-password | egrep "^password" password required pam_unix.so nullok obscure md5
Correction en:
password required pam_unix.so nullok obscure sha512
# cat network/interfaces | egrep -v "^(#|$)" auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
Correction en (par exemple):
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.12 netmask 255.255.255.0 gateway 192.168.1.254
# cat hosts 127.0.0.1 localhost 127.0.1.1 samba-test.thierry-jaouen.local samba-test
# cat resolv.conf domain thierry-jaouen.local search thierry-jaouen.local nameserver 192.168.1.253 nameserver 8.8.8.8 nameserver 8.8.4.4
# cat apt/sources.list | egrep -v "^(#|$)" deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free deb http://security.debian.org/ lenny/updates main contrib non-free deb-src http://security.debian.org/ lenny/updates main contrib non-free
# cat fstab # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/xvda1 none swap sw 0 0 /dev/xvda2 / ext3 noatime,nodiratime,errors=remount-ro 0 1
Fin? on demounte:
# umount /mnt/domu
Demarrage
# xm create samba-test -c
Oups
Afin de pouvoir faire toujours tourner les anciens DomU:
# aptitude install linux-modules-2.6-xen-amd64
Oups2
Pour mémoire: le noyau plante parfois lorsque mes scripts de backup s'excute: combinaison de lvm snapshot…
Bref, en attendant de comprendre:
- j'ai udev qui rale parce qu'il manquerai des scripts
- j'ai kpart_x qui gigote
- j'ai xen qui me dit: “BUG: unable to handle kernel paging request …”
Pas de meilleure idée que:
# aptitude -t testing install udev kpartx
ce qui elimine au moins les 2 premiers messages d'erreurs…
Oups3
Lien: http://ubuntuforums.org/showthread.php?t=1431118
A verifier:
Le petit message là:
... kernel: [ 586.970351] svc: failed to register lockdv1 RPC service (errno 97).
serait lié au fait que je “blacklist ipv6”.
Donc, dans /boot/grub/menu.lst
, faire en sorte d'avoir aussi:
kernel /boot/vmlinuz-2.6.XXXX root=/dev/md1 ro quiet splash ipv6.disable=1
Donc: “ipv6.disable=1”
A verifier |
Upgrade Xen 3 -> Xen 4
Help:
Au préalable:
- arreter proprement tout les DomU …
- faire en sorte qu'il ne redemarre pas au prochain reboot: mv {,DISABLED-}/etc/xen/auto
Mettre a jour les noyaux (avec et sans support Xen):
# aptitude -t testing install linux-image-2.6 linux-image-xen-amd64 xen-hypervisor-4.0-amd64 uuid-runtime xen-tools xenstore-utils
Attention! Xen 3 et Xen 4 co-habite.
Donc:
# aptitude purge xen-hypervisor-3.2-1-amd64 xen-utils-3.2-1
Et ca alors:
# aptitude -t testing show xen-linux-system-2.6.32-5-xen-amd64
Reboot !
Pour le DomU
La conf:
kernel = '/boot/vmlinuz-2.6.32-5-xen-amd64' ramdisk = '/boot/initrd.img-2.6.32-5-xen-amd64'
Monter la partition du DomU:
# mount /dev/vg0/mon_domu /mnt/domu # cp -dpR /lib/modules/2.6.32-5-xen-amd64 /mnt/domu/lib/modules/
Grub2
Liens:
Faire le ménage et plus tard: Migrer vers GRUB2:
# upgrade-from-grub-legacy
Mais aussi:
“The Xen hypervisor (and not just a Xen-ready kernel!) should be the first entry, so do this:”
# mv -i /etc/grub.d/10_linux /etc/grub.d/21_linux # update-grub2
(juste aprés 20_linux_xen
en fait…)
Essentiellement dans /etc/default/grub
:
Modifier le chargement par defaut (pour le choix entre 0 et “X”) :
GRUB_DEFAULT=X
Désactiver la prise en compte des DomU sur des partitions LVM:
GRUB_DISABLE_OS_PROBER="true"
Remplacant de “# xenhopt=” :
GRUB_CMDLINE_XEN_DEFAULT="..."
Exemple:
GRUB_CMDLINE_XEN_DEFAULT="com2=57600,8n1 console=com2,vga dom0_mem=2048M dom0_max_vcpus=4"
GRUB_CMDLINE_XEN_DEFAULT=“xenhopt=com2=57600,8n1 console=com2,vga dom0_mem=2048M dom0_max_vcpus=4”
Remplacant de “#xenkopt=” :
GRUB_CMDLINE_XEN="..."
Exemple:
GRUB_CMDLINE_XEN="console=tty0 console=hvc0"
et non pas “GRUB_CMDLINE_XEN_KERNEL” !!!! |
serial
Pour mémoire:
GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=57600 --unit=1 --word=8 --parity=no --stop=1"
grub dans domU squeeze
nvidia et Xorg
Lien: http://blogs.simc.be/simc/index.php/post/2009/02/08/Nvidia-est-xen-encore-plus-simple
export IGNORE_XEN_PRESENCE=1
./NVIDIA-Linux-x86_64-180.22-pkg2.run
qemu et Windows
Bugs
timer bug
TSC & HPET timer !!!!!!
Liens:
Que ce passe ?
- (XEN) Platform timer appears to have unexpectedly wrapped 10 or more times.
- daemon ntp disparait (pas de trace de plantage dans les logs)
- l'heure deraille
# dmesg | grep -I acpi [ 0.267127] hpet_acpi_add: no address or irqs in _CRS # lsmod | grep -i acpi acpi_processor 5087 1 processor,[permanent]
La soluce serait ( à verifier ) :
cpuidle=0 et clocksource=pit dans les parametres de demarrage Xen !
network
Liens:
http://wiki.r1soft.com/display/kb/Poor+Network+Performance+Between+CDP+Server+and+Host+on+a+XEN+Virtual+Machine,+or+Connection+Closed+due+to+%28ClosedChannelException%29
En gros, dans les DomU :
ethtool -K eth0 tx off