Premiers pas avec la virtualisation
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 Applications ⇒ Gestionnaire 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.
- Ouvrez une connexion à un hyperviseur en choisissant Fichier ⇒ Ajouter une connexion
- Choisissez qemu pour KVM, ou Xen pour Xen
- Choisissez local ou sélectionnez une méthode de connexion à un hyperviseur distant
- 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)
- 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. - 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
etssh-add
avant de lancervirt-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.
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