Chez JL

Joliciel Libre

Accueil > Informatique > Haute Disponibilité > Xen sous Debian 7.0

Xen sous Debian 7.0

mercredi 15 mai 2013, par JL

ATTENTION : article en cours de modification.

Projet Kronos à suivre, xen-api :
- http://blog.xen.org/index.php/2011/07/22/project-kronos/
- http://wiki.xen.org/xenwiki/XAPI_on_debian

Autres liens Xen :
- http://runningxen.com/resources/index.html

 Préliminaire

Avoir fait l’installation l’OS Debian GNU/Linux 7.0

Si besoin, activer dans le bios, l’option de virtualisation du CPU qui permet de faire fonctionner les vms Windows (Virtualization technologie).

Voici comment vérifier si le serveur supporte la virtualisation AVANT d’installer Xen, si la liste des flags de vos/votre processeurs(s) s’affiche, alors tout est ok :

$ egrep '(vmx|svm)' /proc/cpuinfo

A présent, voici cette même vérification APRÈS avoir installe Xen :

$ sudo xm dmesg | grep -i hvm
(XEN) HVM: VMX enabled

Source : briceb

 installation

Il est fortement conseillé d’installer la version 64b.

# aptitude install \
xen-linux-system \
xen-tools \
xtightvncviewer

xen-linux-system est un paquet virtuel, qui peut installer par exemple : xen-linux-system-amd64

Dans les dépendances remarquables : bridge-utils, debootstrap, qemu-utils, xen-hypervisor-4.1-amd64

Pas besoin de gestionnaire graphique (convirt, virt-manager), pour le moment.

Autres outils, notamment pour gérer les vm windows :

aptitude install ntfs-3g kpartx ntfsprogs

Pour démarrer sur le noyau xen, plutôt que de changer la variable GRUB_DEFAULT dans /etc/default/grub, faire :

# mv /etc/grub.d/20_linux_xen /etc/grub.d/09_linux_xen
# update-grub

Egalement pour fixer la ram allouer au dom0 au démarrage, ajouter :

# vi /etc/default/grub
...
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=768M"
...
# update-grub

- vérifier grub (recherche sur "menuentry") :

view /boot/grub/grub.cfg

- redémarrer

shutdown -r now


- Après le redémarrage, vérification du bon noyau :

uname -a


- vérification que l’hyperviseur est actif :

# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0 15528    8     r-----     14.9


- Configuration réseau, avec un pont :

vi /etc/xen/xend-config.sxp

activer également pour les lives migrations :

(xend-http-server yes)
(xend-tcp-xmlrpc-server yes)
(xend-relocation-server yes)

- Pour que la connection de virt-manager fonctionne (Sinon message erreur : Unable to open connection to hypervisor URI ‘xen :///’ :) source info, décommenter l’option et mettre à yes :

(xend-unix-server yes)

Pour fixer la ram minimum pour le dom0

(dom0-min-mem 512)

J’ai fixer la ram du dom0 précédement, je ne veux pas qu’elle réduise :

(enable-dom0-ballooning no)

Vérifier que la ligne 191 est décommentée :

(vif-script vif-bridge)

Recharger la configuration

service xen restart

Réseau

Dans l’ancienne version (Debian 6.0), je décommentais la ligne :

(network-script network-bridge)

et relançait le service.

Maintenant il est conseillé de créé le bridge manuellement, laisser donc la ligne commentée et ajouter dans /etc/network/interfaces :

auto xenbr0
iface xenbr0 inet static
 address 192.168.0.X
 netmask 255.255.255.0
 broadcast 192.168.0.X
 gateway 192.168.0.X
 dns-nameservers 192.168.0.X 192.168.0.X
 dns-search mondomaine.fr
 bridge-ports eth0
ifup xenbr0

- vérifier le commutateur virtuel

# brctl show
xenbr0                8000.0024e833a25b        no                eth0
# ifconfig | less

- dans /etc/network/interface pour avoir une config stable, mettre

auto eth0

à la place de "allow-hotplug eth0"

- dans /etc/udev/rules.d/70-persistent-net.rules voir que les interfaces sont bien "fixées"

 Vieux noyaux

Pour faire marcher certaines vm, il faudrait ajouter leur noyau, intrd et dans /boot.

 Modification des fichiers de configuration des vms suite à la mise à jour

- pour une machine windows, commenter maxmem
- pour une machine redhat, vérifier (recréer avec un ln) le chemin vers pygrub
En effet on a dans le fichier de configuration de la redhat :

bootloader = "/usr/lib/xen-default/bin/pygrub"

Il faut alors créer le répertoire xen-default

ln -s /usr/lib/xen-4.1/ /usr/lib/xen-default

 Problème rencontrés

Suite à des migrations live, des services (réseaux) sur des vms ont du être redémarrés pour être opérationnels. Certains s’étaient arrêtés (gdm), d’autres étaient actifs me ne répondaient pas sur le réseau (slapd) :
- nagios-nrpe-server
- slapd
- tftpd-hpa
- portmap
- nfs-kernel-server
- gdm
- apache2
- cups

 La suite est à relire et mettre à jour ...

 Création d’un domU avec xen-tools

Partie non modifié, idem que pour lenny, à voir...

- modifier /etc/xen-tools/xen-tools.conf :

# lvm = vg1 (on précisera le volume -drbd- à utiliser)
install-method = debootstrap
#size   = 4Gb      # Disk image size.
memory = 128Mb    # Memory size
#swap   = 128Mb    # Swap size (sera dans un fichier swap)
fs     = ext3     # use the EXT3 filesystem for the disk image.
dist   = `xt-guess-suite-and-mirror --suite` # Default distribution to install. (doit être squeeze à l'heure actuelle)
image  = sparse
gateway    = 192.168.1.1
netmask    = 255.255.255.0
nameserver = 192.168.1.1
passwd = 1 # sinon peut être préciser avec --password=
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
mirror = `xt-guess-suite-and-mirror --mirror` # cela prendre le serveur apt-cacher dans /etc/apt/sources.list
arch = amd64
ext3_options     = noatime,nodiratime,errors=remount-ro
output    = /root/xen_vm_cfg/
...

- Utilisation de role : créer par exemple /etc/xen-tools/role.d/minimal2 en modifiant le role minimal. ajouter l’installation des paquets udev, openssh-server, ocsinventory-agent, ... Remarque : pour minimal, il ne faut pas supprimer le paquet "cpio"
- modifier le répertoire squelette : /etc/xen-tools/skel/etc/ (fichier de config, bashrc, vimrc, éventuellement fichier /etc/group...)

Attention, si utilisation d’un serveur apt-cache dans le sources.list, il faut mettre son adresse ip et pas son nom dns (sinon erreur de récupération).

Commande pour créer une vm en particulier :

- il faut d’abord passer le volume drbd en primary, pour avoir le droit d’écriture dessus

xen-create-image --image-dev=/dev/drbd18 --noswap --role=minimal2 --arch=amd64 --ip=192.168.3.211 --hostname=debian1
  • création sur un volume lvm (si le volume n’existe pas, il sera créé), distribution lenny :
    xen-create-image --ip=dhcp --hostname=vm1 --role=minimal2 --lvm=vg1 --dist=lenny

Pour voir les logs d’installation

tail - f /var/log/xen-tools/debian1.log

Pour voir l’avencement du téléchargement par debootstrap :

df -h
...
/dev/mapper/vg1-vm1--disk        2,0G  233M  1,6G  13% /tmp/R7GZOeyCPZ

...
ls -l /tmp/R7GZOeyCPZ/var/cache/apt/archives/

Il y a des erreurs, sans conséquences

df: Warning: cannot read table of mounted file systems: No such file or directory

Le fichier de configuration est mis dans /etc/xen

- Vérifier l’adresse mac (qu’elle ne soit pas déjà utilisée, sur un autre noeud).

Pour un volume lvm :

disk        = [ 'phy:/dev/vg1/vm1,sda1,w' ]

Pour un volume drbd, pour une vm gnu/linux :

disk        = [ 'drbd:drbd0,sda1,w' ]

Pour un volume drbd, pour une vm windows :

disk        = [ 'phy:/dev/drbd0,ioemu:hda,w' ]

Pour un fichier :

disk        = [ 'file:/srv/serveur1/machines_virtuelles/vm1.img,sda1,w' ]

La partie

disk        = [
                 'phy:/dev/drbd3,xvda2,w',
                 'phy:/dev/drbd4,xvda1,w',
             ]

peut être modifiée en (en admettant que les noms de ressources drbd soit vm1-disk et vm1-swp) :

disk        = [
                 'drbd:vm1-disk,xvda2,w',
                 'drbd:vm2-swap,xvda1,w',
             ]

- pour que "xm console vm1" fonctionne,ajouter à la fin du fichier de config :

extra = 'xencons=tty'

voir

extra = 'xencons=tty clocksource=jiffies'
vfb = ['type=vnc, vnclisten=127.0.0.1, vncdisplay=1']

- faire xm new, puis xm start -c

Rq : mettre assez de mémoire vive à la vm pour qu’elle puisse démarré. 32 Mo n’est pas suffisant pour le role minimal, 40Mo ça passe. J’ai pu mettre une vm de 40m de ram, sur un serveur qui ’navait que 256 (en mettant le min-dom à 150 dans xend-config.sxp)

  Création d’un domU lenny avec virt-manager

Partie non modifié, idem que pour lenny, à voir...

- 

# virt-manager


- bouton droit sur localhost, Nouveau
- nom : lenny1
- paravirtualisé
- Network install
- Type SE : Linux
- Variante : Debian Lenny
- URL d’installation du medium : http://mirrors.uwa.edu.au/debian/dists/lenny/main/installer-i386

ou http://ftp.us.debian.org/debian
- redéfinir si besoin chemin, taille 4Go ok, allouer la totalité ok
- réseau : pont eth0 (périphérique physique partagé)
- mémoire 512 Mo
- Terminer

- Problème : quand on double clique sur la nouvelle vm, on n’accède pas à l’interface graphique
- 

vncviewer localhost


- continuer l’installation, dhcp ok, utiliser tout le disque
=> plantage de l’install

- supprimer depuis virt-manager le matériel d’affichage, et le recréer

- Exemple pour un fichier de configuration :

kernel  = '/boot/vmlinuz-2.6.26-1-xen-686'
ramdisk = '/boot/initrd.img-2.6.26-1-xen-686'
memory  = '500'
maxmem = '1500'
vcpus=8
vcpu_avail=1
cpus="1-7"
root    = '/dev/sda1 ro'
disk    = [ 'phy:/dev/vg1/vmdd,sda1,w', 'phy:/dev/vg1/vmsw,sda2,w' ]
name    = 'vm'
vif  = [ 'ip=192.168.0.2', 'bridge=eth0' ]
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'
extra = 'xencons=tty'

 Installation de RHEL5.3

Partie non modifié, idem que pour lenny, à voir...

Mettre à disposition le CD d’install par nfs
- mount -o loop rhel5.5.iso /mnt/rhel5.
- aptitude install nfs-kernel-server
- vi /etc/exports

/mnt/rhel5.3    192.168.0.0/255.255.255.0(ro,sync,no_subtree_check)


- /etc/init.d/nfs-kernel-server restart

- virt-manager
- bouton droit sur localhost, Nouveau
- nnom : rhel
- paravirtualisé
- network install
- type : redhat 5
- url : /mnt/rhel5.3 (faire avant : mount -o loop rhel5.5.iso /mnt/rhel5.3)
- mkdir /var/lib/xen/
- mkdir /var/lib/xen/images/
- réseau physique partagé
- 512 MO, VCPU 1
- teminer
- vncviewer localhost:5900
- ou "vncviewer localhost:5901" (s’il y a un autre serveur vnc lancé sur la machine) ou autre.
- France, fr-lantin9, serveur NFS, adresse ip du serveur, chemin : /mnt/rhel5.3, code (pb pour faire les chiffres avec vncviewer : utiliser le pavé numérique mais en désactiver le verrouillage !)
- ... poursuite de l’installation de redhat

- source
- Pour sauver la vm : l’espace disque est dans /var/lib/xen/images/vm.img, pour sauver sa configuration :

virsh dumpxml vm > vm.xml


- Pour modifier la config

  • modifier le fichier vm.xml
  • shutdown de la vm (pas mieux ?)
  • virsh undefine vm
  • virsh define vm.xml

 virt-manager

Se connecter à un serveur Xen distant
- Fichier, ajouter une connexion
- hyperviseur Xen
- Connexion : tunnel distant à travers ssh (un échange de clé public a été fait auparavent)
- Nom d’hôte : mettre le nom du serveur xen

 Clone ou restauration

Après avoir cloner une machine virtuelle, penser à vérifier/modifier les éléments suivants :
- existence des répertoires /dev /proc /sys /tmp /srv /home /media /cdrom /floppy...

/mnt/vm1# mkdir dev sys proc tmp srv home media cdrom floppy


- mettre les bons droits (se positionne peut être tout seul, à l’utilisation...) :

chmod a+rwxt /tmp


- fichier /swapfile

Pour un clone, vérifier
- /etc/hostname
- /etc/hosts
- /etc/network/interfaces
- le mot de passe root