Virtualisation · 10 min read · Dec 09, 2025
Paravirtualisation Avec Xen 4.0 Sur Debian Squeeze (AMD64)
Paravirtualisation Avec Xen 4.0 Sur Debian Squeeze (AMD64)
Version 1.0
Auteur : Falko Timme
Suivez-moi sur Twitter
Ce tutoriel fournit des instructions étape par étape sur la façon d’installer Xen 4.0 sur un système Debian Squeeze (6.0) (AMD64) et de créer des invités paravirtualisés (ne pas confondre avec des invités entièrement virtualisés, c’est-à-dire la virtualisation matérielle (HVM)).
Xen vous permet de créer des systèmes d’exploitation invités (nix comme Linux et FreeBSD), appelés “machines virtuelles” ou domU, sous un système d’exploitation hôte (dom0). En utilisant Xen, vous pouvez séparer vos applications en différentes machines virtuelles qui sont totalement indépendantes les unes des autres (par exemple, une machine virtuelle pour un serveur de messagerie, une machine virtuelle pour un site web à fort trafic, une autre machine virtuelle qui sert les sites web de vos clients, une machine virtuelle pour DNS, etc.), mais utiliser le même matériel. Cela permet d’économiser de l’argent, et ce qui est encore plus important, c’est plus sécurisé. Si la machine virtuelle de votre serveur DNS est piratée, cela n’a aucun effet sur vos autres machines virtuelles. De plus, vous pouvez déplacer des machines virtuelles d’un serveur Xen à un autre.
Je ne donne aucune garantie que cela fonctionnera pour vous !
1 Remarque Préliminaire
J’utilise un système Debian Squeeze (x86_64) avec le nom d’hôte server1.example.com et l’adresse IP 192.168.0.100 comme système hôte (dom0). (La configuration peut légèrement différer si vous êtes sur un système i386.) J’utiliserai également Debian Squeeze pour les machines virtuelles (domU) (mais je montrerai aussi les modifications nécessaires si vous souhaitez installer un invité Ubuntu Maverick).
Ce guide expliquera comment configurer des machines virtuelles basées sur des images et également des machines virtuelles basées sur LVM.
2 Installation de Xen
Pour installer Xen, nous exécutons simplement
apt-get install xen-hypervisor xen-linux-system xen-utils xenstore-utils xenwatch xen-toolsEnsuite, nous ouvrons /etc/modules et nous assurons que nous avons la ligne loop max_loop=64 dedans (cette étape n’est nécessaire que si vous souhaitez créer des machines virtuelles basées sur des images - vous pouvez l’ignorer si vous souhaitez créer des machines virtuelles basées sur LVM) :
vi /etc/modules| [...] loop max_loop=64 |
Ensuite, nous ouvrons /etc/xen/xend-config.sxp…
vi /etc/xen/xend-config.sxp… et décommentons/ajoutons la ligne (network-script ‘network-bridge antispoof=yes’) et commentons toutes les autres lignes (network-script …) (antispoof=yes active le pare-feu Xen qui empêche qu’une VM puisse utiliser une adresse IP qu’elle n’est pas autorisée à utiliser, comme, par exemple, votre adresse IP de passerelle). Assurez-vous également que la ligne (vif-script vif-bridge) est activée :
| [...] (network-script 'network-bridge antispoof=yes') [...] (vif-script vif-bridge) [...] |
Puis redémarrez le système :
rebootExécutez
uname -ret votre nouveau noyau Xen devrait apparaître :
root@server1:~# uname -r
2.6.32-5-xen-amd64
root@server1:~#
Maintenant, exécutez
xm dmesg Si vous obtenez une sortie comme celle-ci…
root@server1:~# xm dmesg
WARNING! Can’t find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is xend running?
root@server1:~#
… cela signifie que vous exécutez simplement un noyau prêt pour Xen, mais pas l’hyperviseur Xen lui-même (ce qui signifie que vous ne pourrez pas démarrer des machines virtuelles). Pour changer cela, modifiez l’ordre de démarrage de vos noyaux comme suit et mettez à jour le chargeur de démarrage GRUB :
mv /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2
Cela garantit que la prochaine fois que vous démarrez, l’hyperviseur Xen est chargé.
Redémarrez à nouveau :
rebootEnsuite,
xm dmesgdevrait vous montrer que l’hyperviseur fonctionne :
root@server1:~# xm dmesg
(XEN) Version Xen 4.0.1 (Debian 4.0.1-2) ( [email protected]) (gcc version 4.4.5 (Debian 4.4.5-10) ) Mer Jan 12 14:04:06 UTC 2011
(XEN) Chargeur de démarrage : GRUB 1.98+20100804-14
(XEN) Ligne de commande : placeholder
(XEN) Informations vidéo :
(XEN) VGA est en mode texte 80x25, police 8x16
(XEN) Méthodes VBE/DDC : V2; temps de transfert EDID : 1 seconde
(XEN) Informations sur le disque :
(XEN) Trouvé 1 signature MBR
(XEN) Trouvé 1 structure d’informations EDD
(XEN) Carte RAM Xen-e820 :
(XEN) 0000000000000000 - 000000000009f000 (usable)
(XEN) 000000000009f000 - 00000000000a0000 (reserved)
(XEN) 00000000000e0000 - 0000000000100000 (reserved)
(XEN) 0000000000100000 - 00000000affa0000 (usable)
(XEN) 00000000affa0000 - 00000000affae000 (ACPI data)
(XEN) 00000000affae000 - 00000000afff0000 (ACPI NVS)
(XEN) 00000000afff0000 - 00000000b0000000 (reserved)
(XEN) 00000000fec00000 - 00000000fec01000 (reserved)
(XEN) 00000000fee00000 - 00000000fef00000 (reserved)
(XEN) 00000000ff700000 - 0000000100000000 (reserved)
(XEN) 0000000100000000 - 0000000140000000 (usable)
(XEN) ACPI : RSDP 000FA310, 0014 (r0 ACPIAM)
(XEN) ACPI : RSDT AFFA0000, 0044 (r1 052608 RSDT1415 20080526 MSFT 97)
(XEN) ACPI : FACP AFFA0200, 0084 (r1 052608 FACP1415 20080526 MSFT 97)
(XEN) ACPI : DSDT AFFA0450, 960C (r1 1AAAA 1AAAA000 0 INTL 20051117)
(XEN) ACPI : FACS AFFAE000, 0040
(XEN) ACPI : APIC AFFA0390, 0080 (r1 052608 APIC1415 20080526 MSFT 97)
(XEN) ACPI : MCFG AFFA0410, 003C (r1 052608 OEMMCFG 20080526 MSFT 97)
(XEN) ACPI : OEMB AFFAE040, 0073 (r1 052608 OEMB1415 20080526 MSFT 97)
(XEN) ACPI : HPET AFFA9A60, 0038 (r1 052608 OEMHPET0 20080526 MSFT 97)
(XEN) ACPI : INFO AFFAE0C0, 0124 (r1 052608 AMDINFO 20080526 MSFT 97)
(XEN) ACPI : NVHD AFFAE1F0, 0284 (r1 052608 NVHDCP 20080526 MSFT 97)
(XEN) ACPI : SSDT AFFA9AA0, 028A (r1 A M I POWERNOW 1 AMD 1)
(XEN) RAM système : 3839Mo (3931388kB)
(XEN) Tas de domaine initialisé
(XEN) Processeur #0 15:11 version APIC 16
(XEN) Processeur #1 15:11 version APIC 16
(XEN) IOAPIC[0] : apic_id 2, version 17, adresse 0xfec00000, GSI 0-23
(XEN) Activation du mode APIC : Plat. Utilisation de 1 IO APICs
(XEN) Utilisation du planificateur : Planificateur SMP Credit (credit)
(XEN) Processeur 2600.088 MHz détecté.
(XEN) Initialisation du partage de mémoire.
(XEN) HVM : ASIDs activés.
(XEN) HVM : SVM activé
(XEN) AMD-Vi : IOMMU non trouvé !
(XEN) Virtualisation I/O désactivée
(XEN) AMD : Désactivation de C1 Clock Ramping Node #0
(XEN) Total de 2 processeurs activés.
(XEN) ACTIVATION DES IRQs IO-APIC
(XEN) -> Utilisation de la nouvelle méthode ACK
(XEN) vérification de la synchronisation TSC entre 2 CPUs :
(XEN) CPU#0 avait -2 usecs de décalage TSC, corrigé.
(XEN) CPU#1 avait 2 usecs de décalage TSC, corrigé.
(XEN) Le minuteur de plateforme est 25.000MHz HPET
(XEN) Anneau de console alloué de 16 KiB.
(XEN) 2 CPUs activés
(XEN) CHARGEMENT DU DOMAINE 0
(XEN) Noyau Xen : 64 bits, lsb, compat32
(XEN) Noyau Dom0 : 64 bits, PAE, lsb, paddr 0x1000000 -> 0x16ba000
(XEN) ARRANGEMENT DE LA MEMOIRE PHYSIQUE :
(XEN) Dom0 alloc. : 0000000138000000->000000013c000000 (921455 pages à allouer)
(XEN) ARRANGEMENT DE LA MEMOIRE VIRTUELLE :
(XEN) Noyau chargé : ffffffff81000000->ffffffff816ba000
(XEN) Init. ramdisk : ffffffff816ba000->ffffffff8323b600
(XEN) Carte Phys-Mach : ffffffff8323c000->ffffffff83963b78
(XEN) Informations de démarrage : ffffffff83964000->ffffffff839644b4
(XEN) Tables de pages : ffffffff83965000->ffffffff83986000
(XEN) Pile de démarrage : ffffffff83986000->ffffffff83987000
(XEN) TOTAL : ffffffff80000000->ffffffff83c00000
(XEN) ADRESSE D’ENTREE : ffffffff81509200
(XEN) Dom0 a un maximum de 2 VCPUs
(XEN) Nettoyage de la RAM libre : .done.
(XEN) Tampons de trace Xen : désactivés
(XEN) Niveau de journalisation Std. : Erreurs et avertissements
(XEN) Niveau de journalisation Invité : Rien (Limité : Erreurs et avertissements)
(XEN) Xen relinquissant la console VGA.
(XEN) * Entrée série -> DOM0 (tapez ’CTRL-a’ trois fois pour passer l’entrée à Xen)
(XEN) 176kB de mémoire init libérée.
(XEN) MCE : MSR 417 n’est pas MCA MSR
(XEN) MCE : MSR 417 n’est pas MCA MSR
root@server1:~#
3 Création de Machines Virtuelles Basées sur des Images
Nous allons utiliser xen-tools pour créer des machines virtuelles. xen-tools facilite beaucoup la création de machines virtuelles - veuillez lire ce tutoriel pour en savoir plus : https://www.howtoforge.com/xen_tools_xen_shell_argo. Nous avons déjà installé xen-tools à l’étape précédente (chapitre 2).
Maintenant, nous éditons /etc/xen-tools/xen-tools.conf. Ce fichier contient les valeurs par défaut utilisées par le script xen-create-image à moins que vous ne spécifiiez d’autres valeurs sur la ligne de commande. J’ai changé les valeurs suivantes et laissé le reste intact :
vi /etc/xen-tools/xen-tools.conf| [...] dir = /home/xen [...] # lvm = vg0 [...] dist = `xt-guess-suite-and-mirror --suite` # Distribution par défaut à installer. [...] gateway = 192.168.0.1 netmask = 255.255.255.0 broadcast = 192.168.0.255 [...] passwd = 1 [...] kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` [...] mirror = `xt-guess-suite-and-mirror --mirror` [...] serial_device = hvc0 #par défaut [...] disk_device = xvda #par défaut [...] |
La ligne dir spécifie où les images des machines virtuelles seront stockées. Assurez-vous qu’en même temps, lvm est commenté (ces paramètres sont mutuellement exclusifs !).
dist spécifie la distribution à installer dans les machines virtuelles (si vous exécutez la commande
xt-guess-suite-and-mirror --suitesur la ligne de commande, vous verrez qu’elle se traduit par squeeze, donc dans ce cas Debian Squeeze serait installé à moins que vous ne spécifiiez autre chose sur la ligne de commande).
Pour savoir quelles distributions vous pouvez installer dans une machine virtuelle, exécutez :
gunzip /usr/share/doc/xen-tools/README.gz
cat /usr/share/doc/xen-tools/README
La ligne passwd = 1 permet de spécifier un mot de passe root lors de la création d’un nouveau domaine invité.
Les lignes kernel et initrd spécifient le noyau et le ramdisk qui sont installés dans une machine virtuelle. Si vous souhaitez installer Debian Squeeze, veuillez utiliser les paramètres comme indiqué ci-dessus (sinon l’invité Debian Squeeze pourrait ne pas démarrer). Si vous souhaitez installer Ubuntu Maverick, par exemple, vous pouvez utiliser les mêmes paramètres, ou vous commenter les deux lignes, auquel cas le noyau Ubuntu par défaut serait utilisé (oui, Xen 4.0 vous permet d’utiliser des noyaux non-Xen dans un invité !).
Assurez-vous de spécifier une passerelle, un masque de sous-réseau et une adresse de diffusion. Si vous ne le faites pas, et que vous ne spécifiez pas de passerelle et de masque de sous-réseau sur la ligne de commande lors de l’utilisation de xen-create-image, vos domaines invités n’auront pas de réseau même si vous avez spécifié une adresse IP !
La ligne mirror spécifie le miroir à utiliser (la commande
xt-guess-suite-and-mirror --mirrorse traduit par un miroir Debian par défaut. Bien sûr, vous pouvez spécifier un autre miroir, par exemple comme suit :
mirror = http://ftp.de.debian.org/debian/ou
mirror = http://archive.ubuntu.com/ubuntu (pour Ubuntu ; dans ce cas, assurez-vous de spécifier une version d’Ubuntu dans la ligne dist, par exemple dist = maverick)
)
Il est très important que vous ajoutiez la ligne serial_device = hvc0 car sinon vos machines virtuelles pourraient ne pas démarrer correctement !
disk_device = xvda fait que les disques virtualisés sont nommés xvda1, xvda2, etc. C’est le paramètre correct pour un invité Debian Squeeze ; les invités Ubuntu, en particulier lorsqu’ils utilisent un noyau non-Xen, pourraient ne pas démarrer avec ce paramètre, mais vous pouvez le remplacer avec l’option –scsi que vous passez à la commande xen-create-image - dans ce cas, les disques virtualisés seront nommés sda1, sda2, etc.
Pour résumer, les paramètres ci-dessus sont parfaits pour les invités Debian Squeeze ; si vous souhaitez installer Ubuntu Maverick à la place, vous devrez remplacer certains des paramètres dans /etc/xen-tools/xen-tools.conf (options –dist, –mirror, –scsi ; peut-être aussi commenter les lignes kernel et initrd) - j’y reviendrai dans un moment.
Avant de continuer, nous devons créer le répertoire où les images des machines virtuelles doivent être stockées :
mkdir /home/xen Maintenant, créons notre premier domaine invité, xen1.example.com, avec l’adresse IP 192.168.0.101 :
xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udevLes options que vous spécifiez sur la ligne de commande remplacent les paramètres dans /etc/xen-tools/xen-tools.conf. Les options qui ne sont pas spécifiées sur la ligne de commande sont prises de /etc/xen-tools/xen-tools.conf. Veuillez vous assurer d’ajouter –role=udev, sinon votre machine virtuelle pourrait ne pas démarrer correctement !
(Pour en savoir plus sur les options disponibles, consultez la page de manuel de xen-create-image :
man xen-create-image)
La commande xen-create-image va maintenant créer la machine virtuelle xen1.example.com pour nous. Cela peut prendre quelques minutes. La sortie devrait être similaire à celle-ci :
root@server1:~# xen-create-image –hostname=xen1.example.com –size=4Gb –swap=256Mb –ip=192.168.0.101 –memory=256Mb –arch=amd64 –role=udev
Informations Générales
Nom d’hôte : xen1.example.com
Distribution : squeeze
Miroir : http://ftp.de.debian.org/debian/
Partitions : swap 256Mb (swap)
/ 4Gb (ext3)
Type d’image : sparse
Taille de la mémoire : 256Mb
Chemin du noyau : /boot/vmlinuz-2.6.32-5-xen-amd64
Chemin de l’initrd : /boot/initrd.img-2.6.32-5-xen-amd64
Informations Réseau
Adresse IP 1 : 192.168.0.101 [MAC: 00:16:3E:E8:61:97]
Masque de sous-réseau : 255.255.255.0
Adresse de diffusion : 192.168.0.255
Passerelle : 192.168.0.1
Création de l’image de partition : /home/xen/domains/xen1.example.com/swap.img
Fait
Création de swap sur /home/xen/domains/xen1.example.com/swap.img
Fait
Création de l’image de partition : /home/xen/domains/xen1.example.com/disk.img
Fait
Création du système de fichiers ext3 sur /home/xen/domains/xen1.example.com/disk.img
Fait
Méthode d’installation : debootstrap
Fait
Exécution des hooks
Fait
Rôle : udev
Fichier : /etc/xen-tools/role.d/udev
Script de rôle terminé.
Création du fichier de configuration Xen
Fait
Configuration du mot de passe root
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : mot de passe mis à jour avec succès
Tout est fait
Fichier journal produit à :
/var/log/xen-tools/xen1.example.com.log
Résumé de l’installation
Nom d’hôte : xen1.example.com
Distribution : squeeze
Adresse IP(s) : 192.168.0.101
Empreinte RSA : 81:d1:7a:44:3b:07:41:3a:0f:46:d5:d5:30:bc:26:43
Mot de passe root : N/A
root@server1:~#
Pour un invité Ubuntu Maverick, vous devriez utiliser cette commande à la place :
xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev --scsi --dist maverick --mirror=http://archive.ubuntu.com/ubuntu (Pour utiliser le noyau Ubuntu par défaut au lieu du noyau Xen de Debian dans l’invité, vous pouvez également commenter les lignes kernel et initrd dans /etc/xen-tools/xen-tools.conf.)
Il devrait maintenant y avoir un fichier de configuration xen1.example.com - /etc/xen/xen1.example.com.cfg. Jetez un œil à celui-ci pour vous familiariser avec les fichiers de configuration des machines virtuelles :
cat /etc/xen/xen1.example.com.cfg| # # Fichier de configuration pour l'instance Xen xen1.example.com, créé # par xen-tools 4.2 le ven. Mar 25 15:56:51 2011. # # Noyau + taille de mémoire # kernel = '/boot/vmlinuz-2.6.32-5-xen-amd64' ramdisk = '/boot/initrd.img-2.6.32-5-xen-amd64' vcpus = '1' memory = '256' # Disque(s) de périphérique. # root = '/dev/xvda2 ro' disk = [ 'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w', 'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w', ] # # Volumes physiques # # # Nom d'hôte # name = 'xen1.example.com' # # Réseau # vif = [ 'ip=192.168.0.101,mac=00:16:3E:E8:61:97' ] # # Comportement # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' |
(Veuillez noter : si vous avez un processeur dual-core ou quad-core et que vous souhaitez que la machine virtuelle utilise tous les cœurs de processeur, veuillez changer la ligne vcpus à vcpus = ‘2’ ou vcpus = ‘4’.)
Pour démarrer la machine virtuelle, exécutez
xm create /etc/xen/xen1.example.com.cfgroot@server1:~# xm create /etc/xen/xen1.example.com.cfg
Utilisation du fichier de configuration “/etc/xen/xen1.example.com.cfg”.
Domaine xen1.example.com démarré (id=1)
root@server1:~#
Exécutez
xm console xen1.example.compour vous connecter à cette machine virtuelle (tapez CTRL+] si vous êtes à la console, ou CTRL+5 si vous utilisez PuTTY pour revenir à dom0), ou utilisez un client SSH pour vous y connecter (192.168.0.101).
Pour obtenir une liste des machines virtuelles en cours d’exécution, tapez
xm list La sortie devrait ressembler à ceci :
root@server1:~# xm list
Nom ID Mem VCPUs État Temps(s)
Domaine-0 0 2811 2 r—– 137.2
xen1.example.com 1 256 1 -b—- 1.7
root@server1:~#
Pour éteindre xen1.example.com, faites ceci :
xm shutdown xen1.example.com Si vous souhaitez que xen1.example.com démarre automatiquement au prochain démarrage du système, faites ceci :
mkdir /etc/xen/auto
ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto
Voici les commandes Xen les plus importantes :
xm create -c /path/to/config - Démarrer une machine virtuelle.
xm shutdown
xm destroy
xm list - Lister tous les systèmes en cours d’exécution.
xm console
xm help - Liste de toutes les commandes.
Une liste de toutes les machines virtuelles qui ont été créées avec la commande xen-create-image est disponible sous
xen-list-imagesroot@server1:~# xen-list-images
Nom: xen1.example.com
Mémoire: 256
IP: 192.168.0.101
root@server1:~#
Pour en savoir plus sur ce que vous pouvez faire avec xen-tools, jetez un œil à ce tutoriel : https://www.howtoforge.com/xen_tools_xen_shell_argo
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.