From Fedora Project Wiki

Premiers pas avec la virtualisation

Le mot hôte en français est un mot ambivalent puisqu'il désigne tout aussi bien celui qui reçoit que celui qui est reçu. Tout au long de cette page le mot hôte sera réservé à l'hébergeur, le système qui accueille, tandis que les autres systèmes seront baptisés systèmes invités ou systèmes virtualisés.

Cette page traite de l'utilisation de Fedora pour héberger des systèmes invités (dits virtualisés). Pour des informations sur les technologies de virtualisation dans Fedora, reportez-vous à cette page dédiée.

Utilisation de la virtualisation dans Fedora

Fedora utilise la famille d'outils libvirt comme solution de virtualisation. Par défaut, libvirt utilise Qemu pour exécuter les instances de système invité dans Fedora.

Pour des informations sur d'autres plateformes de virtualisation, reportez-vous à http://virt.kernelnewbies.org/TechComparison.

Qemu peut émuler une machine hôte en logiciel, ou, pour un processeur donné pris en charge (voir plus bas), peut utiliser KVM pour fournir une virtualisation rapide et totale.

D'autres produits et paquets de virtualisation sont disponibles mais ne sont pas couverts par ce guide.

Installation et configuration de Fedora pour les systèmes invités virtualisés

Cette section traite de la configuration de libvirt sur votre système. Une fois cette section appliquée avec succès, vous pourrez créer des systèmes d'exploitation invités virtualisés.


Prérequis système

Les prérequis courants pour la virtualisation sur Fedora sont :

  • Au moins 600 Mio d'espace disque par invité. Un système minimal en ligne de commande requiert 600 Mio d'espace disque. Les stations de travail standard de Fedora requièrent au moins 3 Gio d'espace.
  • Au moins 256 Mio de mémoire vive par invité, plus 256 Mio pour le système de base. Au moins 756 Mio sont recommandés pour chaque système invité d'un système d'exploitation moderne. Une bonne règle de base est de se renseigner sur la quantité de mémoire requise par le système opérant normalement et de prendre cette valeur pour l'invité virtualisé.

KVM nécessite un processeur doté d'extensions de virtualisation. On les trouve sur la plupart des processeurs grand public récents. Ces extensions sont appelées Intel VT ou AMD-V. Pour savoir si votre processeur en dispose, exécutez la commande suivante :

$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo 

Si la commande ne retourne rien, votre système ne dispose pas des extensions nécessaires. Vous pouvez quand même utiliser QEMU/KVM, mais l'émulateur va adopter une solution de repli : la virtualisation logicielle. Cette dernière est vraiment bien moins rapide.


Installation des paquets nécessaires à la virtualisation

Lorsque vous installez Fedora, les paquets nécessaires à la virtualisation peuvent être installés en sélectionnant Virtualisation dans le groupe Base de l'installateur (cela peut néanmoins ne pas s'appliquer à votre méthode d'installation).

Pour des systèmes Fedora déjà installés, QEMU, KVM, et d'autres outils de virtualisation, peuvent être installés en exécutant la commande suivante qui installe le groupe virtualisation :

de Fedora 22 à la version actuelle :

Pour Fedora 21 ou pour des installations antérieures, remplacez dnf par yum. Le paquet yum est aujourd'hui obsolète et est remplacé par dnf en tant que gestionnaire de paquets depuis Fedora 22.

su -c "dnf install @virtualization"

Cela installe les paquets obligatoires et les paquets par défaut.

$ dnf groupinfo virtualization
Vérification de l'expiration des métadonnées effectuée il y a 0:00:56 sur Fri Apr 22 19:38:03 2016.

Groupe : Virtualisation
 Description : Ces paquets offrent un environnement de virtualisation graphique.
 Paquets obligatoires :
   virt-install
 Paquets par défaut :
   libvirt-daemon-config-network
   libvirt-daemon-kvm
   qemu-kvm
   virt-manager
   virt-viewer
 Paquets optionnels :
   guestfs-browser
   libguestfs-tools
   python-libguestfs
   virt-top
 

Cela installe les paquets obligatoires, les paquets par défaut et les paquets facultatifs :

su -c "dnf group install with-optional virtualization"

Pour démarrer le service :

su -c "systemctl start libvirtd"

Pour lancer le service au démarrage du système :

su -c "systemctl enable libvirtd"

Vérifiez que les modules kvm du noyau ont été chargés correctement :

$ lsmod | grep kvm
kvm_amd                55563  0 
kvm                   419458  1 kvm_amd

Si cette commande ne liste pas kvm_intel ou kvm_amd, kvm n'est pas configuré correctement. Voyez s'assurer que le système est compatible kvm pour des conseils sur la résolution des problèmes.

Prise en charge du réseau

Par défaut, libvirt crée un réseau privé pour vos invités sur la machine hôte. Ce réseau privé utilise un sous-réseau 192.168.x.x qui n'est pas directement accessible depuis le réseau sur lequel se trouve la machine hôte. Néanmoins, les invités peuvent utiliser la machine hôte comme une passerelle pour se connecter au réseau extérieur. Si vous avez besoin de fournir des services à partir de vos invités qui seront accessibles par les machines du réseau auquel appartient votre machine hôte, vous pouvez utiliser des règles DNAT dans des iptables pour rediriger sur des ports spécifiques, ou vous pouvez configurer un environnement ponté.


Reportez-vous à la page configuration de libvirt pour le réseau pour plus d'information sur la manière de configurer un réseau ponté.

Création d'un invité Fedora

L'installation d'un invité Fedora à l'aide d'Anaconda est pris en charge. L'installation peut être démarrée en ligne de commande via le programme virt-install ou graphiquement via virt-manager.

Création d'un invité avec virt-install

L'outil virt-install est un outil en ligne de commande pour créer des systèmes virtualisés. Reportez-vous à http://virt-tools.org/learning/install-with-command-line/ pour connaître comment utiliser cet outil. Exécutez virt-install --help pour obtenir de l'aide.

L'outil virt-install peut utiliser des fichiers Kickstart, par exemple :

virt-install -x ks=kickstart-file-name.ks

Si l'option graphics est validée, une fenêtre VNC s'ouvre et présente l'installateur graphique. Si l'option graphics n'est pas validée, un installateur textuel apparaît. Vous pouvez commencer l'installation.


Création d'un invité avec virt-manager

Démarrez le gestionnaire graphique de machines virtuelles en le sélectionnant depuis le menu ApplicationsGestionnaire de machines virtuelles ou en tapant la commande suivante dans un terminal :

su -c "virt-manager"

Si vous rencontrez une erreur parmi les lignes de sortie du type « Échec lors de la tentative de connexion au serveur », quelques raisons possibles sont que vous devez activer la mise en réseau TCP/ID pour ORBit, ou que vous avez des verrous NFS résiduels à cause d'un plantage du système lors d'une tentative d'exécution de virt-manager en tant qu'utilisateur ordinaire (non administrateur) c.-à-d. sans su -c). L'interface graphique vous invite à donner le mot de passe d'administration.

  1. Ouvrez une connexion à un hyperviseur en choisissant FichierAjouter une connexion
  2. Choisissez qemu pour KVM, ou Xen pour Xen
  3. Choisissez local ou sélectionnez une méthode de connexion à un hyperviseur distant
  4. Après que la connexion est ouverte, cliquez sur la nouvelle icône à côté de l'hyperviseur, ou cliquez avec le bouton de droite sur l'hyperviseur actif et choisissez Nouveau (Note: la nouvelle icône sera améliorée pour être plus visible)
  5. Un assistant présente les mêmes questions que celles qui sont présentées par l'outil en ligne de commande virt-install (voir ci-dessus). L'assistant suppose qu'une installation graphique est désirée et ne vous invite pas à préciser cette option.
  6. Sur la dernière page de l'assistant, en cliquant sur le bouton Terminer, la machine virtuelle est créée et vous pouvez commencer l'installation du système invité comme s'il s'agissait d'une installation normale.

Gestion à distance

Les options suivantes pour la gestion à distance sont disponibles :

  • (la plus facile) Si vous utilisez SSH en tant qu'utilisateur ordinaire, alors les instructions de configuration se trouvent à http://wiki.libvirt.org/page/SSHSetup
  • Si vous utilisez un accès SSH en tant qu'administrateur, alors créez des clés SSH pour l'administrateur, et utilisez ssh-agent et ssh-add avant de lancer virt-manager.
  • Pour utiliser TLS, configurez une autorité locale de certification et créez des certificats x509 pour tous les clients et tous les serveurs. Pour des informations sur la manière de configurer cette option, reportez-vous à http://wiki.libvirt.org/page/TLSSetup.

Administration du système invité

Lorsque l'installation du système d'exploitation invité est terminée, ce dernier peut être géré en utilisant le programme graphique virt-manager ou en ligne de commande via virsh.

Gestion des invités avec virt-manager

Démarrez le gestionnaire de machines virtuelles. Recherchez le gestionnaire de machines virtuelles parmi vos applications graphiques ou lancez le en ligne de commande avec :

su -c "virt-manager"

{1} Si vous n'êtes pas administrateur, vous êtes invité à entrer le mot de passe d'administration. Choisissez Exécutez sans privilège pour travailler en mode lecture seule, non administrateur.

  • Choisissez l'invité que vous voulez gérer est cliquez sur Connecter dans la la fenêtre d'ouverture de connexion.
  • La liste des machines virtuelles est affichée dans la fenêtre principale. Les invités qui sont en exécution sont marqués d'un signe >. Les invités qui ne tournent pas sont estompés.
  • Pour gérer un invité particulier, double-cliquez-le, ou cliquez-le avec le bouton de droite et choisissez Ouvrir dans le menu contextuel.
  • Une nouvelle fenêtre pour l'invité s'ouvre, vous permettant d'utiliser sa console. Voir les informations sur son matériel virtuel et sur la manière de le démarrer, l'arrêter et le suspendre.

Pour des informations complémentaires sur virt-manager, consultez le site web du projet.

Les bogues de virt-manager doivent être rapportés dans BugZilla en faisant référence au composant virt-manager.

Gérer les invités avec virsh

L'utilitaire en ligne de commande virsh vous permet de gérer les machines virtuelles.

Les invités peuvent être gérés en ligne de commande via l'utilitaire virsh . L'utilitaire virsh est construit autour de l'APIl de gestion libvirt :

  • virsh dispose d'un jeu de commandes stable dont la syntaxe et la sémantique sont préservées au fil des mises à jour de la plateforme de virtualisation sous-jacente.
  • virsh peut être utilisé comme un utilisateur sans privilège pour des opération en lecture seule (p. ex. lister des domaines, lister des statistiques de domaines).
  • virsh peut gérer des domaines qui s'exécutent sous Xen, Qemu/KVM, esx ou d'autres processus d'arrière plan sans différence perceptible par l'utilisateur.
Un URI valide doit être passé virsh avec -c pour se connecter à une instance distante de libvirtd. Pour les détails, reportez-vous à http://libvirt.org/uri.html

Pour démarrer une machine virtuelle :

su -c "virsh create <nom de la machine virtuelle>"

Pour lister les machines virtuelles actuellement en marche :

su -c "virsh list"

Pour lister toutes les machines virtuelles, en marche ou pas :

su -c "virsh list --all"

Pour arrêter de manière sure un invité :

su -c "virsh shutdown <machine virtuelle (nom | id | uuid)>"

Pour arrêter un invité sans ménagement:

su -c "virsh destroy <machine virtuelle (nom | id | uuid)>"

Pour sauvegarder un instantané de la machine dans un fichier :

su -c "virsh save <machine virtuelle (nom | id | uuid)> <nom de fichier>"

Pour restaurer un instantané préalablement sauvegardé :

su -c "virsh restore <nom de fichier>"

Pour exporter le fichier de configuration d'une machine virtuelle :

su -c "virsh dumpxml <machine virtuelle (nom | id | uuid)>"

Pour une liste des commandes de virsh disponibles :

su -c "virsh help"

Ou pour consulter la page de manuel : man 1 virsh

Les bogues de virsh doivent être rapportés dans BugZilla en faisant référence au composant 'libvirt'.

Autres options de virtualisation

QEMU/KVM sans Libvirt

QEMU/KVM peut être invoqué directement sans libvirt. Néanmoins, vous ne pourrez pas utiliser des outils tels que virt-manager, virt-install ou virsh. QEMU nu (sans KVM) peut aussi virtualiser d'autres architectures de processeurs comme ARM ou PowerPC. Voir How to use qemu.

Xen

Fedora peut tourner en tant que système d'exploitation invité sous Xen et également être utilisé en tant qu'hôte Xen (le dernier étant vrai depuis Fedora16). Pour utiliser une version antérieure de Fedora en tant qu'hôte Xen, utilisez le dépôt expérimental disponible à http://myoung.fedorapeople.org/dom0. Pour des conseils sur la manière d'installer et de configurer un hôte Fedora Xen, consultez la page Fedora Host Installation du wiki du projet Xen.

OpenStack

OpenStack est un ensemble de services pour exécuter des nuages IaaS. Il y a le magasin d'objets (Swift), des services de compilation (Nova) et d'Images (Glance). C'est une fonctionnalité de Fedora 16.

OpenNebula

OpenNebula est une boîte à outils open source pour la virtualisation des centres de données.

oVirt

The oVirt project est un projet open source de virtualisation qui fournit un système de gestion de serveurs virtualisés, riche de fonctionnalités, end to end, doté de capacités avancées pour les hôtes et les invités, y compris la haute disponibilité, la migration live, la gestion du stockage, la planification système et bien plus encore.


Résolution des problèmes, signalement de bogues et problèmes connus

Pour voir une liste des problèmes non encore résolus, ainsi que des conseils pour régler les problèmes, reportez-vous à How to debug virtualization problems