Qu’est que XEN ?
Dixit WIKIPEDIA ( http://fr.wikipedia.org/wiki/Xen ) :
Xen est un « paravirtualiseur » ou un « hyperviseur » de machines virtuelles. Les systèmes d'exploitation invités ont « conscience » du Xen sous-jacent, ils ont besoin d'être « portés » (adaptés) pour fonctionner sur Xen.
HA ! Vous faites moins les fiers, là… ?? 😉
Virtualiser une machine veut simplement dire que vous faites fonctionner un système « Invité » (Linux, BSD ou autre…) dans l’environnement d’une machine nommée « Hôte ».
Dans le cas de Xen, il y a 2 modes de fonctionnement.
-Le mode « Paravirtualisé », qui impose que le noyau du système Invité soit modifié pour fonctionner.
-Le mode de virtualisation complète, qui ne peut fonctionner que si vous avez la chance d’avoir une machine qui possède un processeur embarquant la technologie adéquate.
Par exemple les processeurs avec la certification VT de Intel.
C’est le cas par exemple, sur les derniers serveurs HP.
Sur ces machines, vous pourrez virtualiser des systèmes sans avoir besoin de noyau modifiés. C’est le matériel qui simule une seconde machine.
Ceci permet de virtualiser Windows par exemple, mais bon, on ne parlera pas de choses qui fâchent ici 🙂
Introduction
Cet article va vous décrire comment utiliser cette virtualisation dans un environnement Fedora 7.
A Savoir, que XEN est apparu dans la distribution Fedora dans sa version Core 5 et est maintenant bien rodé, car embarqué dans la version 5 de Redhat Enterprise, la version « Professionnelle » de RedHat.
Mise en uvre
Pour implémenter Xen sur votre Fedora 7, il y a plusieurs méthodes qui dépendent du moment où vous choisissez de faire cette installation.
- Si vous en êtes au moment de l’installation sur votre machine, vous pouvez tout simplement cliquer sur « Personnaliser Maintenant » lors de la sélection des paquetages de Fedora, puis de sélectionner Virtualisation, dans la section « Système de base ».
- Si votre Fedora 7 est déjà fonctionnelle, il vous faudra lui installer les paquets suivants :
– xen-libs
– kernel-xen
– xen
– virt-manager
Pour ce faire, choisissez une des 2 méthodes suivantes à votre convenance.
– Via la console système :
Ouvrez une console et changez d’identité pour devenir root:
[laurent@fedora7 ~]$ su -
Mot de passe :
[root@fedora7 ~]#
J’utilise yum pour installer les logiciels dont XEN a besoin XEN, car il y a quelques dépendances à résoudre.
[root@fedora7 ~]# yum install virt-manager xen kernel-xen
.....
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
kernel-xen i686 2.6.20-2925.11.fc7 updates 16 M
virt-manager i386 0.4.0-2.fc7 fedora 1.3 M
xen i386 3.1.0-2.fc7 updates 2.2 M
Installing for dependencies:
bridge-utils i386 1.1-2 fedora 28 k
dnsmasq i386 2.38-1.fc7 fedora 147 k
gnome-python2-gnomekeyring i386 2.18.0-1.fc7 fedora 18 k
libvirt i386 0.2.3-1.fc7 updates 648 k
libvirt-python i386 0.2.3-1.fc7 updates 66 k
python-virtinst noarch 0.103.0-3.fc7 fedora 64 k
xen-libs i386 3.1.0-2.fc7 updates 132 k
Transaction Summary
=============================================================================
Install 10 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 21 M
Is this ok [y/N]:
Tapez « y » puis Entrée.
Les paquets vont être téléchargés et installés.
– Via l’interface graphique :
Depuis Gnome ou Kde, ouvrez le menu Ajouter / Enlever des logiciels.
Entrez le mot de passe du compte root, vous obtenez le sélecteur de paquetages que vous avez rencontré lors de l’installation.
Placez-vous dans système de base et cochez Virtualisation.
Cliquez sur Appliquer et répondez favorablement aux sélections de dépendances et import de clef GPG.
Un message vous informera que l’installation s’est faite avec succès.
– Dans les 2 cas, il vous faudra alors rebooter votre machine afin que celle-ci démarre avec votre nouveau kernel XEN.
Dans le menu de démarrage de GRUB, sélectionnez le kernel Fedora ( version.fc7.xen) s’il n’est pas par défaut.
Vous devrez modifier l’ordre de démarrage dans /etc/grub.conf pour le sélectionner automatiquement.
Les services xend et xendomains seront chargés automatiquement lors de ce redémarrage.
Votre machine Hôte XEN est prête à accueillir ses invités ! 🙂
Qu’à cela ne tienne, on va lui en fournir un.
Création d’un miroir local FTP – Facultatif
Pour éviter de télécharger l’image d’installation depuis le net et ainsi gagner un peu de temps, je crée un dêpot ftp local qui va publier le dvdrom qui m’a servi à l’installation de l’os du système hôte.
Pour ce faire, il faut installer un service ftp.
J’utilise ici vsftpd, le serveur standard de fedora.
Ici j’utilise la console que je trouve plus rapide, mais la méthode graphique est la même que précédemment, il suffit d’ajouter vsftpd depuis la section serveurs.
Depuis la console système en root :
yum -y install vsftpd
/etc/init.d/vsftpd start
Je monte mon dvd dans l’arborescence du service ftp.
mount -t auto /dev/scd1 /var/ftp/pub/
Remplacez /dev/scd1 par la valeur correcte pour votre système.
Si je teste mon serveur, j’obtiens ceci :
[root@fedora7 ~]# ftp localhost
Connected to fedora7.castres-wireless.org.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (127,0,0,1,166,23)
150 Here comes the directory listing.
drwxrwxr-x 2 0 0 284672 May 27 14:30 Fedora
-rw-r--r-- 1 0 0 18385 May 27 14:40 GPL
-rw-r--r-- 1 0 0 10000 May 27 14:40 README-BURNING-ISOS-en_US.txt
-rw-r--r-- 1 0 0 157555 May 27 14:40 RELEASE-NOTES-en_US.html
-rw-r--r-- 1 0 0 1910 May 27 14:40 RPM-GPG-KEY
-rw-r--r-- 1 0 0 1706 May 27 14:40 RPM-GPG-KEY-beta
-rw-r--r-- 1 0 0 1519 May 27 14:40 RPM-GPG-KEY-fedora
-rw-r--r-- 1 0 0 1105 May 27 14:40 RPM-GPG-KEY-fedora-rawhide
-rw-r--r-- 1 0 0 1076 May 27 14:40 RPM-GPG-KEY-fedora-test
-rw-r--r-- 1 0 0 1232 May 27 14:40 RPM-GPG-KEY-rawhide
-r--r--r-- 1 0 0 3846 May 27 14:41 TRANS.TBL
-rw-r--r-- 1 0 0 2882 May 27 14:40 fedora.css
drwxrwxr-x 4 0 0 2048 May 27 14:40 images
drwxrwxr-x 2 0 0 2048 May 27 14:39 isolinux
drwxrwxr-x 2 0 0 2048 May 27 14:41 repodata
drwxr-xr-x 2 0 0 4096 May 27 14:40 stylesheet-images
226 Directory send OK.
ftp> bye
221 Goodbye.
Mon service ftp fonctionne correctement, on passe à la création de la machine invité.
Installation de la machine Invité
Attention, si vous utilisez le miroir local que l’on vient de créer, notez bien l’adresse ip de votre machine hôte, car c’est cette adresse ip que doit joindre le programme d’installation de la machine virtuelle !!
Dans mon cas j’utilise 192.168.10.111 que j’obtiens par la commande « /sbin/ifconfig eth0 »
Depuis l’interface graphique, ouvrez « Virtual Machine Manager » depuis le menu « Applications, Outils Système. »
Entrez le mot de passe de root et vous obtenez la console suivante :
Cliquez sur le bouton « Nouveau », l’assistant se lance.
Cliquez sur suivant.
Identifiez votre machine virtuelle.
Cliquez sur suivant.
Cet écran propose de choisir un mode de virtualisation.
Ma machine n’ayant pas de carte mère et processeur compatible VT, je ne peux choisir que « Paravirtualisé ».
Ce mode impose un noyau spécifique pour la machine Invité. La distribution de Fedora inclut ce type noyau, donc pas de problèmes.
Sachez que Fedora étant une distribution Redhat, il est aussi possible d’installer une RedHat 5 officielle ou un équivalent comme CentOS 5 ( la CentOS 4.5 devrait aussi fonctionner, mais je ne l’ai pas testé ).
Cliquez sur suivant.
Entrez maintenant la localisation de la distribution Fedora.
Ici j’utilise le miroir ftp que je viens de créer, mais rien ne vous empêche d’utiliser un miroir Internet si vous n’avez pas de dvd Fedora disponible ( par exemple : ftp://ftp.free.fr/mirrors/fedora.redhat.com/fedora/linux/releases/7/Fedora/i386/os )
Le second champ correspond à un fichier de réponse automatique optionnel que je n’utilise pas ici.
Cliquez sur suivant.
Ici je crée un fichier nommé fedora7.img car je n’ai pas de partition disque à assigner à la machine virtuelle. A vous de voir si cette méthode vous convient, personnellement je trouve cela plus simple à sauvegarder.
L’extension img est arbitraire, choisissez à votre convenance.
Pour ce qui est de la taille du fichier, elle est fonction des paquetages que vous voulez installer dans votre machine virtuelle.
Ici je prends 6 Go, mais cela peut être limite pour certains usage, se reporter aux préconisations de Fedora pour l’espace disque nécessaire en fonction des types d’installation.
Pour la connexion réseau je partage ma connexion eth0 qui me permettra de communiquer depuis les différentes machines de mon réseau avec le système invité Xen.
Choisissez la taille mémoire allouée à la machine virtuelle.
Pour Fedora ne pas descendre en dessous de 256Mo si vous utilisez l’interface graphique. Je conserve les valeurs par défaut dans mon cas, mais attention, cette allocation mémoire impacte la machine hôte. Faites un choix résonné.
Ceci dit, vous pourrez modifier cette valeur par la suite.
Un récapitulatif de vos choix s’affiche, cliquez sur « Terminer » pour débuter l’installation.
Un client VNC interne se lance et vous affiche le chargement de l’installation de Fedora.
ATTENTION !!! Petit bug, le client vnc interne s’obstine a mapper le clavier en anglais !!
Prenez garde lors de la saisie des informations durant l’installation, comme le mot de passe du root par exemple.
Pour ma part, j’utilise toujours password comme mot de passe à l’installation, même sur un système non virtualisé, car je sais qu’en clavier anglais cela se tape pqsszord. Une fois le système installé correctement, on pourra fixer le mot de passe que l’on veut.
Hormis ce problème, réalisez l’installation comme à votre habitude, la procédure est identique.
Une remarque, vous verrez que le système invité ne voit bien que la taille de 6 Go pour le disque virtuel qu’il utilise.
Une fois installé, votre virt-manager vous affichera cet d’écran.
Vous constatez que votre système invité Fedora7 est bien actif, comme on le voit en arrière plan.
J’ai modifié le démarrage de la Fedora invité pour ne pas charger l’interface graphique, d’où la superbe console noire en fond d’écran.
Vous remarquerez que la machine virtuelle possède sa propre adresse ip attribuée par mon dhcp local dans ce cas.
La machine invitée n’a aucune connaissance du système hôte si ce n’est par la communication via le réseau.
La gestion des hôtes virtuels de votre machine XEN se fait relativement simplement depuis la console de virt-manager.
Un clic droit vous permet de stopper, démarrer ou mettre en pause votre système invité.
L’option ouvrir, permet de lancer la console vnc sur ce système.
Lignes de commandes utiles XEN
Xen peut bien évidemment gérer ses machines virtuelles depuis la ligne de commande.
Visualisation de l’état du système XEN
Tapez la commande xm list
.
Vous obtenez un tableau comme celui ci-dessous qui vous montre l’activité des machines virtuelles.
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 55.7
Fedora7 500 1 36.3
On constate ici que la machine Fedora7 est stoppée, car elle n’a aucun ID. Nous allons la démarrer.
Démarrage de la machine virtuelle
Pour démarrer la machine virtuelle, utilisez simplement la commande suivante :
xm start Fedora7
La machine démarre en tache de fond.
La commande xm list
affiche le tableau suivant :
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 66.8
Fedora7 2 500 1 r----- 2.2
On voit que la machine invité à pris l’ID 2.
Connexion au système invité
Pour prendre la main sur le système hôte en ligne de commande, utilisez la commande suivante :
xm console Fedora7
Pour se déconnecter de la console, utilisez la combinaison de touches suivantes ( le + indique qu’il faut appuyer simultanément sur les touche, il ne faut pas les taper bien entendu… ) :
Ctrl + Shift + 5 ( sur le clavier alphanumérique ) ou Ctrl + 5 ( toujours, sur le clavier alphanumérique ) suivant si vous êtes sur la console de votre système hôte, ou connecté en ssh via le client putty.
Arrêt du système invité
Pour arréter la machine virtuelle.
xm shutdown Fedora7
Pour « tuer » la machine virtuelle (arrêt immédiat sans sauvegarde de l’état):
xm destroy Fedora7
Mettre en pause une machine virtuelle
On peut stopper momentanément une machine invité avec la commande xm pause
, voici un exemple :
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 210.6
Fedora7 3 500 1 -b---- 32.2
[root@fedora7 ~]# xm pause Fedora7
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 211.7
Fedora7 3 500 1 --p--- 32.2
On constate que la machine est en pause gràce à la lettre « p » qui apparait dans l’état du système.
On libère le système invité avec la commande unpause, comme ceci :
[root@fedora7 ~]# xm unpause Fedora7
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 212.4
Fedora7 3 500 1 -b---- 32.3
Modification à la volée des paramètres
On peut réduire à la volée la taille mémoire allouée au système invité. Pour ce faire la commande est xm mem-set IDSystemeInvite TailleMemoire
.
Voici un exemple :
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 104.0
Fedora7 2 500 1 -b---- 32.6
Le système fonctionne avec 500Mo de RAM. Je la réduit à 300Mo.
[root@fedora7 ~]# xm mem-set Fedora7 300
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 104.8
Fedora7 2 300 1 -b---- 32.8
Plutôt sympa pour faire enrager l’utilisateur qui vous ennuie non ? 🙂
On lui réattribue sa capacité originelle de la même manière.
[root@fedora7 ~]# xm mem-set Fedora7 500
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 107.7
Fedora7 2 500 1 -b---- 33.5
La taille de la mémoire que l’on peut attribuer, ne peut dépasser la valeur maximale fixée dans le fichier de configuration de la machine invité.
Cette valeur maximale ne peut être modifiée qu’une fois que la machine virtuelle est arrêtée.
Pour se faire, ouvrez virt-manager, puis faites un clic droit sur la machine concernée.
Stoppez-la avec la commande Shutdown si cela n’est pas encore fait, et sélectionnez « Détails ».
Cliquez sur l’onglet « Matériel » et sélectionnez « Memory ».
Modifiez la taille mémoire à votre guise en pensant toujours que cela prends la mémoire au système hôte.
Il y a 2 valeurs comme vous le constatez, la valeur que le système invité utilise dans son fonctionnement « normal » et la valeur maximale qu’il peut atteindre. C’est cette dernière valeur que ne peut dépasser la commande mem-set.
On peut également modifier le nombre de processeurs vus par le système invité.
Pour réduire ou ré-augmenter le nombre de CPU lorsque la machine virtuelle est démarrée, voici les lignes de commandes à utiliser :
xm vcpu-set Fedora7 1
xm vcpu-set Fedora7 2
Attention bien entendu au choix de cette ressource.
Il doit être à la moitié ou à égalité avec le nombre de CPUs vus utilisés par le système hôte.
Donc, pas de biprocesseur avec un P2. Le résultat ne serait pas très performant ;-))
Sauvegarde d’une machine Invité
Pour sauvegarder une machine invité, on peut créer un « snapshot » de la machine avec la commande xm save
.
Attention toutefois à cette commande. Voici pourquoi…
[root@fedora7 ~]# xm save Fedora7 /home/laurent/datas/MasauvegardeFedora7.sav
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 240.9
Fedora7 500 1 32.8
Je sauve l’état du système dans un fichier /home/laurent/datas/MasauvegardeFedora7.sav. Mais une fois la sauvegarde effectuée, la machine invité est stoppée.
Pour redémarrer la machine après la sauvegarde, il faut utiliser l’option « -c », comme ceci :
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 284.3
Fedora7 4 500 1 -b---- 33.5
[root@fedora7 ~]# xm save -c Fedora7 /home/laurent/datas/MasauvegardeFedora7.sav
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 495 2 r----- 297.4
Fedora7 4 500 1 -b---- 33.7
Pour restaurer une machine virtuelle depuis un fichier créé par xm save, il faut utilisez la commande xm retore
après avoir arrêté ou « tué » la machine à restaurer.
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 493 2 r----- 346.7
Fedora7 500 1 0.2
[root@fedora7 ~]# xm restore /home/laurent/datas/MasauvegardeFedora7.sav
[root@fedora7 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 493 2 r----- 354.9
Fedora7 9 500 1 -b---- 0.2
Vous constatez que la machine est démarrée après la restauration. Utilisez l’option « -p » pour ne pas la garder arrêtée.
Voila pour ce qui est des commandes que je pense les plus utiles.
En cas de besoins supplémentaires, consultez l’aide en ligne des commandes xm : xm help