Rechercher

Configuration et gestion de la virtualisation

download PDF
Red Hat Enterprise Linux 9

Configurer votre hôte, créer et administrer des machines virtuelles, et comprendre les fonctions de virtualisation

Red Hat Customer Content Services

Résumé

Pour utiliser un système Red Hat Enterprise Linux (RHEL) en tant qu'hôte de virtualisation, suivez les instructions de ce document.
Les informations fournies comprennent
  • Les capacités et les cas d'utilisation de la virtualisation
  • Comment gérer votre hôte et vos machines virtuelles à l'aide d'utilitaires en ligne de commande, ainsi qu'à l'aide de la console web
  • Les limites de la prise en charge de la virtualisation sur différentes architectures de systèmes, telles que Intel 64, AMD64 et IBM Z

Fournir un retour d'information sur la documentation de Red Hat

Nous apprécions vos commentaires sur notre documentation. Faites-nous savoir comment nous pouvons l'améliorer.

Soumettre un retour d'information via Jira (compte requis)

  1. Connectez-vous au site web Jira.
  2. Cliquez sur Create dans la barre de navigation supérieure
  3. Saisissez un titre descriptif dans le champ Summary.
  4. Saisissez votre suggestion d'amélioration dans le champ Description. Incluez des liens vers les parties pertinentes de la documentation.
  5. Cliquez sur Create en bas de la boîte de dialogue.

Chapitre 1. Introduction de la virtualisation dans RHEL

Si vous n'êtes pas familier avec le concept de virtualisation ou sa mise en œuvre dans Linux, les sections suivantes fournissent une vue d'ensemble de la virtualisation dans RHEL 9 : ses bases, ses avantages, ses composants et d'autres solutions de virtualisation possibles fournies par Red Hat.

1.1. Qu'est-ce que la virtualisation ?

RHEL 9 offre la fonctionnalité virtualization, qui permet à une machine exécutant RHEL 9 de host plusieurs machines virtuelles (VM), également appelées guests. Les VM utilisent le matériel physique et les ressources informatiques de l'hôte pour exécuter un système d'exploitation distinct et virtualisé (guest OS) en tant que processus de l'espace utilisateur sur le système d'exploitation de l'hôte.

En d'autres termes, la virtualisation permet d'avoir des systèmes d'exploitation dans des systèmes d'exploitation.

Les machines virtuelles vous permettent de tester en toute sécurité les configurations et les fonctionnalités des logiciels, d'exécuter des logiciels existants ou d'optimiser l'efficacité de la charge de travail de votre matériel. Pour plus d'informations sur les avantages de la virtualisation, voir Avantages de la virtualisation.

Pour plus d'informations sur ce qu'est la virtualisation, voir la page thématique sur la virtualisation.

Prochaines étapes

1.2. Avantages de la virtualisation

L'utilisation de machines virtuelles (VM) présente les avantages suivants par rapport à l'utilisation de machines physiques :

  • Flexible and fine-grained allocation of resources

    Une VM s'exécute sur une machine hôte, qui est généralement physique, et du matériel physique peut également être attribué au système d'exploitation invité. Cependant, l'allocation des ressources physiques à la VM se fait au niveau du logiciel et est donc très flexible. Une VM utilise une fraction configurable de la mémoire, des processeurs ou de l'espace de stockage de l'hôte, et cette configuration peut spécifier des demandes de ressources très fines.

    Par exemple, ce que le système d'exploitation invité considère comme son disque peut être représenté comme un fichier sur le système de fichiers de l'hôte, et la taille de ce disque est moins limitée que les tailles disponibles pour les disques physiques.

  • Software-controlled configurations

    L'ensemble de la configuration d'une VM est sauvegardé sous forme de données sur l'hôte et est sous le contrôle du logiciel. Par conséquent, une VM peut facilement être créée, supprimée, clonée, migrée, exploitée à distance ou connectée à un système de stockage distant.

  • Separation from the host

    Un système d'exploitation invité fonctionne sur un noyau virtualisé, distinct du système d'exploitation hôte. Cela signifie que n'importe quel système d'exploitation peut être installé sur une VM et que même si le système d'exploitation invité devient instable ou est compromis, l'hôte n'est en aucun cas affecté.

  • Space and cost efficiency

    Une seule machine physique peut héberger un grand nombre de machines virtuelles. Il n'est donc pas nécessaire d'utiliser plusieurs machines physiques pour effectuer les mêmes tâches, ce qui réduit les besoins en espace, en énergie et en maintenance associés au matériel physique.

  • Software compatibility

    Étant donné qu'une VM peut utiliser un système d'exploitation différent de son hôte, la virtualisation permet d'exécuter des applications qui n'ont pas été publiées à l'origine pour votre système d'exploitation hôte. Par exemple, en utilisant un système d'exploitation invité RHEL 7, vous pouvez exécuter des applications publiées pour RHEL 7 sur un système hôte RHEL 9.

    Note

    Tous les systèmes d'exploitation ne sont pas pris en charge en tant que système d'exploitation invité dans un hôte RHEL 9. Pour plus de détails, voir Fonctionnalités recommandées dans la virtualisation RHEL 9.

1.3. Les composants de la machine virtuelle et leur interaction

La virtualisation dans RHEL 9 est constituée des principaux composants logiciels suivants :

Hypervisor

La base de la création de machines virtuelles (VM) dans RHEL 9 est hypervisor, une couche logicielle qui contrôle le matériel et permet d'exécuter plusieurs systèmes d'exploitation sur une machine hôte.

L'hyperviseur comprend le module Kernel-based Virtual Machine (KVM) et les pilotes du noyau de virtualisation. Ces composants garantissent que le noyau Linux de la machine hôte fournit aux logiciels de l'espace utilisateur les ressources nécessaires à la virtualisation.

Au niveau de l'espace utilisateur, l'émulateur QEMU simule une plate-forme matérielle virtualisée complète dans laquelle le système d'exploitation invité peut s'exécuter, et gère la manière dont les ressources sont allouées sur l'hôte et présentées à l'invité.

En outre, la suite logicielle libvirt sert de couche de gestion et de communication, facilitant l'interaction avec QEMU, appliquant les règles de sécurité et fournissant un certain nombre d'outils supplémentaires pour la configuration et l'exécution des machines virtuelles.

Configuration XML

Un fichier de configuration XML basé sur l'hôte (également connu sous le nom de fichier domain XML ) détermine tous les paramètres et périphériques d'une VM spécifique. La configuration comprend

  • Métadonnées telles que le nom de la VM, le fuseau horaire et d'autres informations sur la VM.
  • Description des dispositifs de la VM, y compris les unités centrales virtuelles (vCPUS), les dispositifs de stockage, les dispositifs d'entrée/sortie, les cartes d'interface réseau et d'autres matériels, réels et virtuels.
  • Paramètres de la VM tels que la quantité maximale de mémoire qu'elle peut utiliser, les paramètres de redémarrage et d'autres paramètres relatifs au comportement de la VM.

Pour plus d'informations sur le contenu d'une configuration XML, voir Exemple de configuration XML de machine virtuelle.

Interaction des composants

Lorsqu'une VM est démarrée, l'hyperviseur utilise la configuration XML pour créer une instance de la VM en tant que processus de l'espace utilisateur sur l'hôte. L'hyperviseur rend également le processus VM accessible aux interfaces basées sur l'hôte, telles que les utilitaires virsh, virt-install, et guestfish, ou l'interface graphique de la console web.

Lorsque ces outils de virtualisation sont utilisés, libvirt traduit leurs données en instructions pour QEMU. QEMU communique les instructions à KVM, qui s'assure que le noyau attribue correctement les ressources nécessaires à l'exécution des instructions. Par conséquent, QEMU peut exécuter les changements correspondants dans l'espace utilisateur, tels que la création ou la modification d'une VM, ou l'exécution d'une action dans le système d'exploitation invité de la VM.

Note

Bien que QEMU soit un composant essentiel de l'architecture, il n'est pas destiné à être utilisé directement sur les systèmes RHEL 9, pour des raisons de sécurité. Par conséquent, les commandes qemu-* ne sont pas prises en charge par Red Hat, et il est fortement recommandé d'interagir avec QEMU en utilisant libvirt.

Pour plus d'informations sur les interfaces basées sur l'hôte, voir Outils et interfaces pour la gestion de la virtualisation.

Figure 1.1. Architecture de virtualisation RHEL 9

virt architecture

1.4. Outils et interfaces pour la gestion de la virtualisation

Vous pouvez gérer la virtualisation dans RHEL 9 en utilisant l'interface de ligne de commande (CLI) ou plusieurs interfaces utilisateur graphiques (GUI).

Interface de ligne de commande

La CLI est la méthode la plus puissante pour gérer la virtualisation dans RHEL 9. Les principales commandes de la CLI pour la gestion des machines virtuelles (VM) sont les suivantes :

  • virsh - Un utilitaire de ligne de commande de virtualisation polyvalent et un shell avec une grande variété d'objectifs, en fonction des arguments fournis. En voici un exemple :

    • Démarrage et arrêt d'une VM - virsh start et virsh shutdown
    • Liste des machines virtuelles disponibles - virsh list
    • Création d'une VM à partir d'un fichier de configuration - virsh create
    • Entrer dans un shell de virtualisation - virsh

    Pour plus d'informations, voir la page de manuel virsh(1).

  • virt-install - Un utilitaire CLI pour créer de nouvelles VM. Pour plus d'informations, voir la page de manuel virt-install(1).
  • virt-xml - Un utilitaire permettant de modifier la configuration d'une VM.
  • guestfish - Un utilitaire permettant d'examiner et de modifier les images de disques VM. Pour plus d'informations, voir la page de manuel guestfish(1).

Interfaces graphiques

Vous pouvez utiliser les interfaces graphiques suivantes pour gérer la virtualisation dans RHEL 9 :

  • Le site RHEL 9 web console, également connu sous le nom de Cockpit, fournit une interface utilisateur graphique facile à utiliser et accessible à distance pour gérer les machines virtuelles et les hôtes de virtualisation.

    Pour obtenir des instructions sur la gestion de base de la virtualisation avec la console web, voir Gestion des machines virtuelles dans la console web.

1.5. Solutions de virtualisation Red Hat

Les produits Red Hat suivants sont construits sur la base des fonctionnalités de virtualisation de RHEL 9 et étendent les capacités de virtualisation KVM disponibles dans RHEL 9. En outre, de nombreuses limitations de la virtualisation de RHEL 9 ne s'appliquent pas à ces produits :

Virtualisation OpenShift

Basée sur la technologie KubeVirt, OpenShift Virtualization fait partie de la plateforme Red Hat OpenShift Container Platform et permet d'exécuter des machines virtuelles dans des conteneurs.

Pour plus d'informations sur OpenShift Virtualization, consultez les pages de Red Hat Hybrid Cloud.

Plate-forme Red Hat OpenStack (RHOSP)

Red Hat OpenStack Platform offre une base intégrée pour créer, déployer et faire évoluer un nuage OpenStack public ou privé sécurisé et fiable.

Pour plus d'informations sur Red Hat OpenStack Platform, consultez le portail client de Red Hat ou la suite de documentation de Red Hat OpenStack Platform.

Note

Pour plus de détails sur les fonctionnalités de virtualisation non prises en charge par RHEL mais prises en charge par d'autres solutions de virtualisation Red Hat, voir : Fonctionnalités non prises en charge dans la virtualisation RHEL 9

Chapitre 2. Permettre la virtualisation

Pour utiliser la virtualisation dans RHEL 9, vous devez installer les paquets de virtualisation et vous assurer que votre système est configuré pour héberger des machines virtuelles (VM). Les étapes spécifiques pour ce faire varient en fonction de l'architecture de votre processeur.

2.1. Activation de la virtualisation sur AMD64 et Intel 64

Pour configurer un hyperviseur KVM et créer des machines virtuelles (VM) sur un système AMD64 ou Intel 64 exécutant RHEL 9, suivez les instructions ci-dessous.

Conditions préalables

  • Red Hat Enterprise Linux 9 est installé et enregistré sur votre machine hôte.
  • Votre système répond aux exigences matérielles suivantes pour fonctionner en tant qu'hôte de virtualisation :

    • L'architecture de votre machine hôte prend en charge la virtualisation KVM.
    • Les ressources minimales suivantes doivent être disponibles :

      • 6 Go d'espace disque libre pour l'hôte, plus 6 Go pour chaque VM prévue.
      • 2 Go de RAM pour l'hôte, plus 2 Go supplémentaires pour chaque VM prévue.

Procédure

  1. Installer les paquets de l'hyperviseur de virtualisation.

    # dnf install qemu-kvm libvirt virt-install virt-viewer
  2. Démarrer les services de virtualisation :

    # for drv in qemu network nodedev nwfilter secret storage interface; do systemctl start virt${drv}d{,-ro,-admin}.socket; done

Vérification

  1. Vérifiez que votre système est prêt à devenir un hôte de virtualisation :

    # virt-host-validate
    [...]
    QEMU: Checking for device assignment IOMMU support         : PASS
    QEMU: Checking if IOMMU is enabled by kernel               : WARN (IOMMU appears to be disabled in kernel. Add intel_iommu=on to kernel cmdline arguments)
    LXC: Checking for Linux >= 2.6.26                          : PASS
    [...]
    LXC: Checking for cgroup 'blkio' controller mount-point    : PASS
    LXC: Checking if device /sys/fs/fuse/connections exists    : FAIL (Load the 'fuse' module to enable /proc/ overrides)
  2. Si tous les contrôles virt-host-validate renvoient une valeur PASS, votre système est prêt à créer des VM.

    Si l'un des contrôles renvoie une valeur FAIL, suivez les instructions affichées pour résoudre le problème.

    Si l'un des contrôles renvoie une valeur WARN, envisagez de suivre les instructions affichées pour améliorer les capacités de virtualisation.

Résolution de problèmes

  • Si la virtualisation KVM n'est pas prise en charge par le processeur hôte, virt-host-validate génère le message suivant :

    QEMU: Checking for hardware virtualization: FAIL (Only emulated CPUs are available, performance will be significantly limited)

    Cependant, les machines virtuelles installées sur un tel système hôte ne démarreront pas et n'auront pas de problèmes de performance.

    Pour contourner ce problème, vous pouvez modifier la valeur <domain type> dans la configuration XML de la VM en qemu. Notez cependant que Red Hat ne prend pas en charge les VM qui utilisent le type de domaine qemu, et que ce paramètre est fortement déconseillé dans les environnements de production.

2.2. Activation de la virtualisation sur IBM Z

Pour configurer un hyperviseur KVM et créer des machines virtuelles (VM) sur un système IBM Z exécutant RHEL 9, suivez les instructions ci-dessous.

Conditions préalables

  • Les ressources minimales suivantes doivent être disponibles :

    • 6 Go d'espace disque libre pour l'hôte, plus 6 Go pour chaque VM prévue.
    • 2 Go de RAM pour l'hôte, plus 2 Go supplémentaires pour chaque VM prévue.
    • 4 CPU sur l'hôte. Les VM peuvent généralement fonctionner avec une seule vCPU assignée, mais Red Hat recommande d'assigner 2 vCPU ou plus par VM afin d'éviter que les VM ne deviennent insensibles en cas de charge élevée.
  • Votre système hôte IBM Z utilise un processeur z13 ou ultérieur.
  • RHEL 9 est installé sur une partition logique (LPAR). En outre, la LPAR prend en charge les fonctions de virtualisation start-interpretive execution (SIE).

    Pour le vérifier, recherchez sie dans votre fichier /proc/cpuinfo.

    # grep sie /proc/cpuinfo
    features        : esan3 zarch stfle msa ldisp eimm dfp edat etf3eh highgprs te sie

Procédure

  1. Installer les paquets de virtualisation :

    # dnf install qemu-kvm libvirt virt-install
  2. Démarrer les services de virtualisation :

    # for drv in qemu network nodedev nwfilter secret storage interface; do systemctl start virt${drv}d{,-ro,-admin}.socket; done

Vérification

  1. Vérifiez que votre système est prêt à devenir un hôte de virtualisation.

    # virt-host-validate
    [...]
    QEMU: Checking if device /dev/kvm is accessible             : PASS
    QEMU: Checking if device /dev/vhost-net exists              : PASS
    QEMU: Checking if device /dev/net/tun exists                : PASS
    QEMU: Checking for cgroup 'memory' controller support       : PASS
    QEMU: Checking for cgroup 'memory' controller mount-point   : PASS
    [...]
  2. Si tous les contrôles virt-host-validate renvoient une valeur PASS, votre système est prêt à créer des VM.

    Si l'un des contrôles renvoie une valeur FAIL, suivez les instructions affichées pour résoudre le problème.

    Si l'un des contrôles renvoie une valeur WARN, envisagez de suivre les instructions affichées pour améliorer les capacités de virtualisation.

Résolution de problèmes

  • Si la virtualisation KVM n'est pas prise en charge par le processeur hôte, virt-host-validate génère le message suivant :

    QEMU: Checking for hardware virtualization: FAIL (Only emulated CPUs are available, performance will be significantly limited)

    Cependant, les machines virtuelles installées sur un tel système hôte ne démarreront pas et n'auront pas de problèmes de performance.

    Pour contourner ce problème, vous pouvez modifier la valeur <domain type> dans la configuration XML de la VM en qemu. Notez cependant que Red Hat ne prend pas en charge les VM qui utilisent le type de domaine qemu, et que ce paramètre est fortement déconseillé dans les environnements de production.

2.3. Activation de la virtualisation sur ARM 64

Pour configurer un hyperviseur KVM afin de créer des machines virtuelles (VM) sur un système ARM 64 (également connu sous le nom de AArch64) qui exécute RHEL 9, suivez les instructions ci-dessous.

Conditions préalables

  • Votre système hôte et vos systèmes invités utilisent un noyau avec une taille de page mémoire de 64 Ko. Pour installer un tel noyau sur un système RHEL, voir Installation de RHEL sur ARM avec Kernel-64k.
  • Les ressources minimales suivantes doivent être disponibles :

    • 6 Go d'espace disque libre pour l'hôte, plus 6 Go pour chaque invité prévu.
    • 4 Go de RAM pour l'hôte, plus 4 Go pour chaque invité.

Procédure

  1. Installer les paquets de virtualisation :

    # dnf install qemu-kvm libvirt virt-install
  2. Démarrer les services de virtualisation :

    # for drv in qemu network nodedev nwfilter secret storage interface; do systemctl start virt${drv}d{,-ro,-admin}.socket; done

Vérification

  1. Vérifiez que votre système est prêt à devenir un hôte de virtualisation :

    # virt-host-validate
    [...]
    QEMU: Checking if device /dev/vhost-net exists              : PASS
    QEMU: Checking if device /dev/net/tun exists                : PASS
    QEMU: Checking for cgroup 'memory' controller support       : PASS
    QEMU: Checking for cgroup 'memory' controller mount-point   : PASS
    [...]
    QEMU: Checking for cgroup 'blkio' controller support        : PASS
    QEMU: Checking for cgroup 'blkio' controller mount-point    : PASS
    QEMU: Checking if IOMMU is enabled by kernel                : WARN (Unknown if this platform has IOMMU support)
  2. Si tous les contrôles virt-host-validate renvoient une valeur PASS, votre système est prêt à créer des machines virtuelles.

    Si l'un des contrôles renvoie une valeur FAIL, suivez les instructions affichées pour résoudre le problème.

    Si l'un des contrôles renvoie une valeur WARN, envisagez de suivre les instructions affichées pour améliorer les capacités de virtualisation.

2.4. Activation des fonctionnalités de l'agent invité QEMU sur vos machines virtuelles

Pour utiliser certaines fonctionnalités sur une machine virtuelle (VM) hébergée sur votre système RHEL 9, vous devez d'abord configurer la VM pour qu'elle utilise l'agent invité QEMU (GA).

Pour une liste complète de ces fonctionnalités, voir Fonctionnalités de virtualisation nécessitant l'agent invité QEMU.

Les étapes spécifiques requises pour configurer QEMU GA sur une VM diffèrent en fonction du système d'exploitation invité utilisé par la VM :

2.4.1. Activation de l'agent invité QEMU sur les invités Linux

Pour permettre à un hôte RHEL d'effectuer un certain sous-ensemble d'opérations sur une machine virtuelle (VM) Linux, vous devez activer l'agent invité QEMU (GA).

Vous pouvez activer QEMU GA à la fois sur les machines virtuelles en cours d'exécution et sur celles qui sont arrêtées.

Procédure

  1. Créer un fichier de configuration XML pour l'AG QEMU, par exemple nommé qemuga.xml:

    # touch qemuga.xml
  2. Ajoutez les lignes suivantes au fichier :

    <channel type='unix'>
       <source mode='bind' path='/var/lib/libvirt/qemu/f16x86_64.agent'/>
       <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
  3. Utilisez le fichier XML pour ajouter QEMU GA à la configuration de la VM.

    • Si la VM est en cours d'exécution, utilisez la commande suivante :

      # virsh attach-device <vm-name> qemuga.xml --live --config
    • Si la VM est arrêtée, utilisez la commande suivante :

      # virsh attach-device <vm-name> qemuga.xml --config
  4. Dans le système d'exploitation invité Linux, installez l'AG QEMU :

    # dnf install qemu-guest-agent
  5. Démarrer le service QEMU GA sur l'invité :

    # systemctl start qemu-guest-agent

Vérification

Pour vous assurer que QEMU GA est activé et fonctionne sur la VM Linux, effectuez l'une des opérations suivantes :

  • Dans le système d'exploitation invité, utilisez la commande systemctl status qemu-guest-agent | grep Loaded. Si la sortie comprend enabled, QEMU GA est actif sur la VM.
  • Utilisez la commande virsh domfsinfo <vm-name> sur l'hôte. Si elle affiche une sortie, QEMU GA est actif sur la VM spécifiée.

2.4.2. Activation de QEMU Guest Agent sur les invités Windows

Pour permettre à un hôte RHEL d'effectuer un certain sous-ensemble d'opérations sur une machine virtuelle (VM) Windows, vous devez activer l'agent invité QEMU (GA). Pour ce faire, ajoutez un périphérique de stockage contenant le programme d'installation de l'agent invité QEMU à une machine virtuelle existante ou lors de la création d'une nouvelle machine virtuelle, et installez les pilotes sur le système d'exploitation invité Windows.

Pour installer l'agent invité (GA) à l'aide de l'interface graphique, voir la procédure ci-dessous. Pour installer l'AG dans une interface de ligne de commande, utilisez le programme d'installation Microsoft Windows (MSI).

Conditions préalables

Procédure

  1. Dans le système d'exploitation invité Windows, ouvrez l'application File Explorer.
  2. Cliquez sur This PC.
  3. Dans le volet Devices and drives, ouvrez le support virtio-win.
  4. Ouvrez le dossier guest-agent.
  5. En fonction du système d'exploitation installé sur la VM, exécutez l'un des programmes d'installation suivants :

    • Si vous utilisez un système d'exploitation 32 bits, exécutez le programme d'installation qemu-ga-i386.msi.
    • Si vous utilisez un système d'exploitation 64 bits, exécutez le programme d'installation qemu-ga-x86_64.msi.
  6. Optional: Si vous souhaitez utiliser le pilote série para-virtualisé (virtio-serial) comme interface de communication entre l'hôte et l'invité Windows, vérifiez que le pilote virtio-serial est installé sur l'invité Windows. Pour plus d'informations sur l'installation des pilotes virtio, voir : Installation des pilotes virtio sur un invité Windows.

Vérification

  1. Sur votre VM Windows, accédez à la fenêtre Services.

    Computer Management > Services

  2. Assurez-vous que l'état du service QEMU Guest Agent est Running.

2.4.3. Fonctionnalités de virtualisation nécessitant l'agent invité QEMU

Si vous activez QEMU Guest Agent (GA) sur une machine virtuelle (VM), vous pouvez utiliser les commandes suivantes sur votre hôte pour gérer la VM :

virsh shutdown --mode=agent
Cette méthode d'arrêt est plus fiable que virsh shutdown --mode=acpi, car virsh shutdown utilisé avec QEMU GA garantit l'arrêt d'un invité coopératif dans un état propre.
virsh domfsfreeze et virsh domfsthaw
Gèle le système de fichiers de l'invité de manière isolée.
virsh domfstrim

Indique à l'invité de découper son système de fichiers, ce qui permet de réduire les données à transférer lors des migrations.

Important

Si vous souhaitez utiliser cette commande pour gérer une VM Linux, vous devez également définir le booléen SELinux suivant dans le système d'exploitation invité :

# setsebool virt_qemu_ga_read_nonsecurity_files on
virsh domtime
Interroge ou règle l'horloge de l'hôte.
virsh setvcpus --guest
Indique à l'invité de mettre les processeurs hors ligne, ce qui est utile lorsque les processeurs ne peuvent pas être débranchés à chaud.
virsh domifaddr --source agent
Interroge l'adresse IP du système d'exploitation invité en utilisant QEMU GA. Cette fonction est utile, par exemple, lorsque l'interface de l'invité est directement reliée à une interface hôte.
virsh domfsinfo
Affiche une liste des systèmes de fichiers montés dans l'invité en cours d'exécution.
virsh set-user-password
Définit le mot de passe d'un compte utilisateur donné dans l'invité.
virsh set-user-sshkeys

Modifie le fichier des clés SSH autorisées pour un utilisateur donné dans l'invité.

Important

Si vous souhaitez utiliser cette commande pour gérer une VM Linux, vous devez également définir le booléen SELinux suivant dans le système d'exploitation invité :

# setsebool virt_qemu_ga_manage_ssh on

Chapitre 3. Création de machines virtuelles

Pour créer une machine virtuelle (VM) dans RHEL 9, utilisez l'interface de ligne de commande ou la console web RHEL 9.

3.1. Création de machines virtuelles à l'aide de l'interface de ligne de commande

Pour créer une machine virtuelle (VM) sur votre hôte RHEL 9 à l'aide de l'utilitaire virt-install, suivez les instructions ci-dessous.

Conditions préalables

  • La virtualisation est activée sur votre système hôte.
  • Vous disposez d'une quantité suffisante de ressources système à allouer à vos machines virtuelles, telles que l'espace disque, la mémoire vive ou les processeurs. Les valeurs recommandées peuvent varier de manière significative en fonction des tâches prévues et de la charge de travail des VM.
  • Une source d'installation du système d'exploitation (OS) est disponible localement ou sur un réseau. Il peut s'agir de l'une des sources suivantes

    • Une image ISO d'un support d'installation
    • Une image disque d'une installation VM existante

      Avertissement

      L'installation à partir d'un CD-ROM ou d'un DVD-ROM hôte n'est pas possible dans RHEL 9. Si vous sélectionnez un CD-ROM ou un DVD-ROM comme source d'installation lors de l'utilisation d'une méthode d'installation de VM disponible dans RHEL 9, l'installation échouera. Pour plus d'informations, consultez la base de connaissances de Red Hat.

      Notez également que Red Hat ne prend en charge qu'un nombre limité de systèmes d'exploitation invités.

  • Facultatif : Un fichier Kickstart peut être fourni pour faciliter et accélérer la configuration de l'installation.

Procédure

Pour créer une VM et lancer l'installation de son système d'exploitation, utilisez la commande virt-install, avec les arguments obligatoires suivants :

  • --namele nom de la nouvelle machine
  • --memoryla quantité de mémoire allouée
  • --vcpusle nombre d'unités centrales virtuelles allouées
  • --diskle type et la taille de l'espace de stockage alloué
  • --cdrom ou --location: le type et l'emplacement de la source d'installation du système d'exploitation

En fonction de la méthode d'installation choisie, les options et valeurs nécessaires peuvent varier. Voir les commandes ci-dessous pour des exemples :

  • La commande suivante crée une VM nommée demo-guest1 qui installe le système d'exploitation Windows 10 à partir d'une image ISO stockée localement dans le fichier /home/username/Downloads/Win10install.iso. Cette VM est également dotée de 2048 MiB de RAM et de 2 vCPU, et un disque virtuel qcow2 de 80 GiB est automatiquement configuré pour la VM.

    # virt-install \
        --name demo-guest1 --memory 2048 \
        --vcpus 2 --disk size=80 --os-variant win10 \
        --cdrom /home/username/Downloads/Win10install.iso
  • La commande suivante crée une VM nommée demo-guest2 qui utilise l'image /home/username/Downloads/rhel9.iso pour exécuter un système d'exploitation RHEL 9 à partir d'un CD live. Aucun espace disque n'est attribué à cette VM, de sorte que les modifications apportées pendant la session ne seront pas conservées. En outre, la VM se voit attribuer 4096 MiB de RAM et 4 vCPU.

    # virt-install \
        --name demo-guest2 --memory 4096 --vcpus 4 \
        --disk none --livecd --os-variant rhel9.0 \
        --cdrom /home/username/Downloads/rhel9.iso
  • La commande suivante crée une VM RHEL 9 nommée demo-guest3 qui se connecte à une image disque existante, /home/username/backup/disk.qcow2. Cela revient à déplacer physiquement un disque dur d'une machine à l'autre, de sorte que le système d'exploitation et les données disponibles pour demo-guest3 sont déterminés par la manière dont l'image a été gérée précédemment. En outre, cette VM est dotée de 2048 MiB de RAM et de 2 vCPU.

    # virt-install \
        --name demo-guest3 --memory 2048 --vcpus 2 \
        --os-variant rhel9.0 --import \
        --disk /home/username/backup/disk.qcow2

    Notez que l'option --os-variant est fortement recommandée lors de l'importation d'une image disque. Si elle n'est pas fournie, les performances de la VM créée seront affectées négativement.

  • La commande suivante crée une VM nommée demo-guest4 qui s'installe à partir de l'URL http://example.com/OS-install. Pour que l'installation démarre avec succès, l'URL doit contenir une arborescence d'installation du système d'exploitation qui fonctionne. En outre, le système d'exploitation est automatiquement configuré à l'aide du fichier kickstart de /home/username/ks.cfg. Cette VM est également dotée de 2048 MiB de RAM, de 2 vCPU et d'un disque virtuel qcow2 de 160 GiB.

    # virt-install \
        --name demo-guest4 --memory 2048 --vcpus 2 --disk size=160 \
        --os-variant rhel9.0 --location http://example.com/OS-install \
        --initrd-inject /home/username/ks.cfg --extra-args="inst.ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8"

    En outre, si vous souhaitez héberger demo-guest4 sur un hôte RHEL 9 on an ARM 64, incluez les lignes suivantes pour vous assurer que le fichier kickstart installe le paquetage kernel-64k:

    %packages
    -kernel
    kernel-64k
    %end
  • La commande suivante crée une VM nommée demo-guest5 qui s'installe à partir d'un fichier image RHEL9.iso en mode texte uniquement, sans graphiques. Elle connecte la console invitée à la console série. La VM a 16384 MiB de mémoire, 16 vCPU, et 280 GiB de disque. Ce type d'installation est utile pour se connecter à un hôte sur un réseau lent.

    # virt-install \
        --name demo-guest5 --memory 16384 --vcpus 16 --disk size=280 \
        --os-variant rhel9.0 --location RHEL9.iso \
        --graphics none --extra-args='console=ttyS0'
  • La commande suivante crée une VM nommée demo-guest6, qui a la même configuration que demo-guest5, mais qui réside sur l'hôte distant 192.0.2.1.

    # virt-install \
        --connect qemu+ssh://root@192.0.2.1/system --name demo-guest6 --memory 16384 \
        --vcpus 16 --disk size=280 --os-variant rhel9.0 --location RHEL9.iso \
        --graphics none --extra-args='console=ttyS0'
  • La commande suivante crée une VM nommée demo-guest-7, qui a la même configuration que demo-guest5, mais pour son stockage, elle utilise un périphérique DASD médiatisé mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8, et lui attribue le numéro de périphérique 1111.

    # virt-install \
        --name demo-guest7 --memory 16384 --vcpus 16 --disk size=280 \
        --os-variant rhel9.0 --location RHEL9.iso --graphics none \
        --disk none --hostdev mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8,address.type=ccw,address.cssid=0xfe,address.ssid=0x0,address.devno=0x1111,boot-order=1 \
        --extra-args 'rd.dasd=0.0.1111'

    Notez que le nom du dispositif médiatisé disponible pour l'installation peut être récupéré à l'aide de la commande virsh nodedev-list --cap mdev.

Vérification

  • Si la VM est créée avec succès, une fenêtre virt-viewer s'ouvre avec une console graphique de la VM et démarre l'installation du système d'exploitation invité.

Résolution de problèmes

  • Si virt-install échoue avec une erreur cannot find default network:

    • Assurez-vous que le paquetage libvirt-daemon-config-network est installé :

      # {PackageManagerCommand} info libvirt-daemon-config-network
      Installed Packages
      Name         : libvirt-daemon-config-network
      [...]
    • Vérifiez que le réseau par défaut libvirt est actif et configuré pour démarrer automatiquement :

      # virsh net-list --all
       Name      State    Autostart   Persistent
      --------------------------------------------
       default   active   yes         yes
    • Si ce n'est pas le cas, activez le réseau par défaut et configurez-le pour qu'il démarre automatiquement :

      # virsh net-autostart default
      Network default marked as autostarted
      
      # virsh net-start default
      Network default started
      • Si l'activation du réseau par défaut échoue avec l'erreur suivante, c'est que le paquet libvirt-daemon-config-network n'a pas été installé correctement.

        error: failed to get network 'default'
        error: Network not found: no network with matching name 'default'

        Pour résoudre ce problème, réinstallez libvirt-daemon-config-network:

        # {PackageManagerCommand} reinstall libvirt-daemon-config-network
      • Si l'activation du réseau par défaut échoue avec une erreur similaire à la suivante, un conflit s'est produit entre le sous-réseau du réseau par défaut et une interface existante sur l'hôte.

        error: Failed to start network default
        error: internal error: Network is already in use by interface ens2

        Pour résoudre ce problème, utilisez la commande virsh net-edit default et modifiez les valeurs de 192.0.2.* dans la configuration pour un sous-réseau qui n'est pas déjà utilisé sur l'hôte.

3.2. Création de machines virtuelles et installation de systèmes d'exploitation invités à l'aide de la console web

Pour gérer les machines virtuelles (VM) dans une interface graphique sur un hôte RHEL 9, utilisez la console Web. Les sections suivantes fournissent des informations sur l'utilisation de la console Web RHEL 9 pour créer des machines virtuelles et y installer des systèmes d'exploitation invités.

3.2.1. Création de machines virtuelles à l'aide de la console web

Pour créer une machine virtuelle (VM) sur une machine hôte à laquelle votre console web RHEL 9 est connectée, suivez les instructions ci-dessous.

Conditions préalables

Procédure

  1. Dans l'interface Virtual Machines de la console web, cliquez sur Create VM.

    La boîte de dialogue Create new virtual machine apparaît.

    Image displaying the Create new virtual machine dialog box.
  2. Saisissez la configuration de base de la VM que vous souhaitez créer.

    • Name - Le nom de la VM.
    • Connection - Le niveau de privilèges accordé à la session. Pour plus de détails, développez la boîte de dialogue associée dans la console web.
    • Installation type - L'installation peut utiliser un support d'installation local, une URL, un démarrage réseau PXE, une image de base dans le nuage ou télécharger un système d'exploitation à partir d'un ensemble limité de systèmes d'exploitation.
    • Operating system - Le système d'exploitation invité fonctionnant sur la VM. Notez que Red Hat ne prend en charge qu'un nombre limité de systèmes d'exploitation invités.

      Note

      Pour télécharger et installer Red Hat Enterprise Linux directement à partir de la console Web, vous devez ajouter un jeton hors ligne dans le champ Offline token.

    • Storage - Le type de stockage.
    • Storage Limit - La quantité d'espace de stockage.
    • Memory - La quantité de mémoire.
  3. Créer la VM :

    • Si vous souhaitez que la VM installe automatiquement le système d'exploitation, cliquez sur Créer et exécuter.
    • Si vous souhaitez modifier la VM avant l'installation du système d'exploitation, cliquez sur Créer et modifier.

3.2.2. Créer des machines virtuelles en important des images de disque à l'aide de la console web

Vous pouvez créer une machine virtuelle (VM) en important une image disque d'une installation VM existante dans la console web RHEL 9.

Conditions préalables

  • Le plug-in VM de la console web est installé sur votre système.
  • Vous disposez d'une quantité suffisante de ressources système à allouer à vos machines virtuelles, telles que l'espace disque, la mémoire vive ou les processeurs. Les valeurs recommandées peuvent varier considérablement en fonction des tâches prévues et de la charge de travail des VM.
  • Vous avez téléchargé une image disque d'une installation VM existante.

Procédure

  1. Dans l'interface Virtual Machines de la console web, cliquez sur Import VM.

    Le site Import a virtual machine dialog s'affiche.

    Image displaying the Import a virtual machine dialog box.
  2. Saisissez la configuration de base de la VM que vous souhaitez créer :

    • Name - Le nom de la VM.
    • Disk image - Chemin d'accès à l'image disque existante d'une VM sur le système hôte.
    • Operating system - Le système d'exploitation fonctionnant sur un disque VM. Notez que Red Hat ne prend en charge qu'un nombre limité de systèmes d'exploitation invités.
    • Memory - Quantité de mémoire à allouer à la VM.
  3. Importer la VM :

    • Pour installer le système d'exploitation sur la VM sans modifier les paramètres de la VM, cliquez sur Importer et exécuter.
    • Pour modifier les paramètres de la VM avant l'installation du système d'exploitation, cliquez sur Importer et modifier.

3.2.3. Installation des systèmes d'exploitation invités à l'aide de la console web

Lorsqu'une machine virtuelle (VM) démarre pour la première fois, vous devez installer un système d'exploitation sur la VM.

Note

Si vous cliquez sur Créer et exécuter ou Importer et exécuter lors de la création d'une nouvelle VM, la routine d'installation du système d'exploitation démarre automatiquement lors de la création de la VM.

Procédure

  1. Dans l'interface Virtual Machines, cliquez sur la VM sur laquelle vous souhaitez installer un système d'exploitation invité.

    Une nouvelle page s'ouvre avec des informations de base sur la VM sélectionnée et des commandes permettant de gérer divers aspects de la VM.

    Page displaying detailed information about the virtual machine.
  2. Optional: Modifier le micrologiciel.

    Note

    Vous ne pouvez modifier le microprogramme que si vous avez sélectionné Créer et modifier ou Importer et modifier lors de la création d'une nouvelle VM et si le système d'exploitation n'est pas déjà installé sur la VM.

    . Cliquez sur le micrologiciel.

    1. Dans la fenêtre Change Firmware, sélectionnez le micrologiciel requis.
    2. Cliquez sur Enregistrer.
  3. Cliquez sur Installer.

    La routine d'installation du système d'exploitation s'exécute dans la console VM.

Résolution de problèmes

  • Si la routine d'installation échoue, supprimez et recréez la VM avant de recommencer l'installation.

3.2.4. Création de machines virtuelles avec authentification d'images en nuage à l'aide de la console web

Par défaut, les images de cloud distro n'ont pas de comptes de connexion. Cependant, en utilisant la console web RHEL, vous pouvez maintenant créer une machine virtuelle (VM) et spécifier les identifiants de connexion des comptes root et utilisateur, qui sont ensuite transmis à cloud-init.

Conditions préalables

  • Le plug-in VM de la console web est installé sur votre système.
  • La virtualisation est activée sur votre système hôte.
  • Vous disposez d'une quantité suffisante de ressources système à allouer à vos machines virtuelles, telles que l'espace disque, la mémoire vive ou les processeurs. Les valeurs recommandées peuvent varier de manière significative en fonction des tâches prévues et de la charge de travail des VM.

Procédure

  1. Dans l'interface Machines virtuelles de la console web, cliquez sur Create VM.

    La boîte de dialogue Créer une nouvelle machine virtuelle apparaît.

    Image displaying the Create new virtual machine dialog box.
  2. Dans le champ Name, entrez un nom pour la VM.
  3. Dans l'onglet Details, dans le champ Installation type, sélectionnez Cloud base image.

    Image displaying the Create new virtual machine by using cloud-init dialog box.
  4. Dans le champ Installation source, indiquez le chemin d'accès au fichier image sur votre système hôte.
  5. Saisissez la configuration de la VM que vous souhaitez créer.

    • Operating system - Le système d'exploitation de la VM. Notez que Red Hat ne prend en charge qu'un nombre limité de systèmes d'exploitation invités.
    • Storage - Le type de stockage avec lequel la VM doit être configurée.
    • Storage Limit - La quantité d'espace de stockage nécessaire pour configurer la VM.
    • Memory - La quantité de mémoire avec laquelle la VM doit être configurée.
  6. Cliquez sur l'onglet Automation.

    Définissez vos informations d'authentification pour le cloud.

    • Root password - Saisissez un mot de passe racine pour votre VM. Laissez le champ vide si vous ne souhaitez pas définir de mot de passe root.
    • User login - Saisissez un identifiant pour l'utilisateur de cloud-init. Laissez ce champ vide si vous ne souhaitez pas créer de compte utilisateur.
    • User password - Entrez un mot de passe. Laissez ce champ vide si vous ne souhaitez pas créer de compte utilisateur.

      Image displaying the Automation tab of the Create new virtual machine dialog box.
  7. Cliquez sur Créer et exécuter.

    La VM est créée.

Chapitre 4. Démarrage des machines virtuelles

Pour démarrer une machine virtuelle (VM) dans RHEL 9, vous pouvez utiliser l'interface de ligne de commande ou l'interface graphique de la console web.

Conditions préalables

  • Avant de pouvoir démarrer une VM, il faut la créer et, idéalement, l'installer avec un système d'exploitation. Pour savoir comment procéder, voir Création de machines virtuelles.

4.1. Démarrer une machine virtuelle à l'aide de l'interface de ligne de commande

Vous pouvez utiliser l'interface de ligne de commande (CLI) pour démarrer une machine virtuelle (VM) arrêtée ou restaurer une VM sauvegardée. En utilisant l'interface de ligne de commande, vous pouvez démarrer des machines virtuelles locales et distantes.

Conditions préalables

  • Une VM inactive qui est déjà définie.
  • Le nom de la VM.
  • Pour les machines virtuelles distantes :

    • L'adresse IP de l'hôte où se trouve la VM.
    • Privilèges d'accès à la racine de l'hôte.

Procédure

  • Pour une VM locale, utilisez l'utilitaire virsh start.

    Par exemple, la commande suivante démarre la VM demo-guest1.

    # virsh start demo-guest1
    Domain 'demo-guest1' started
  • Pour une VM située sur un hôte distant, utilisez l'utilitaire virsh start ainsi que la connexion SSH QEMU à l'hôte.

    Par exemple, la commande suivante démarre la VM demo-guest1 sur l'hôte 192.0.2.1.

    # virsh -c qemu+ssh://root@192.0.2.1/system start demo-guest1
    
    root@192.0.2.1's password:
    
    Domain 'demo-guest1' started

4.2. Démarrer des machines virtuelles à l'aide de la console web

Si une machine virtuelle (VM) est dans l'état shut off, vous pouvez la démarrer à l'aide de la console web RHEL 9. Vous pouvez également configurer la VM pour qu'elle soit démarrée automatiquement au démarrage de l'hôte.

Conditions préalables

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur la VM que vous souhaitez démarrer.

    Une nouvelle page s'ouvre avec des informations détaillées sur la VM sélectionnée et des commandes pour arrêter et supprimer la VM.

  2. Cliquez sur Exécuter.

    La VM démarre et vous pouvez vous connecter à sa console ou à sa sortie graphique.

  3. Optional: Pour configurer la VM afin qu'elle démarre automatiquement au démarrage de l'hôte, cochez la case Autostart dans la section Overview.

    Si vous utilisez des interfaces réseau qui ne sont pas gérées par libvirt, vous devez également apporter des modifications supplémentaires à la configuration de systemd. Sinon, les machines virtuelles concernées risquent de ne pas démarrer, voir Démarrage automatique des machines virtuelles au démarrage de l'hôte.

4.3. Démarrage automatique des machines virtuelles au démarrage de l'hôte

Lorsqu'un hôte avec une machine virtuelle (VM) en cours d'exécution redémarre, la VM est arrêtée et doit être redémarrée manuellement par défaut. Pour s'assurer qu'une VM est active lorsque son hôte est en cours d'exécution, vous pouvez configurer la VM pour qu'elle soit démarrée automatiquement.

Conditions préalables

Procédure

  1. Utilisez l'utilitaire virsh autostart pour configurer la VM afin qu'elle démarre automatiquement au démarrage de l'hôte.

    Par exemple, la commande suivante configure la VM demo-guest1 pour qu'elle démarre automatiquement.

    # virsh autostart demo-guest1
    Domain 'demo-guest1' marked as autostarted
  2. Si vous utilisez des interfaces réseau qui ne sont pas gérées par libvirt, vous devez également apporter des modifications supplémentaires à la configuration de systemd. Dans le cas contraire, les machines virtuelles concernées risquent de ne pas démarrer.

    Note

    Ces interfaces comprennent par exemple

    • Dispositifs de pont créés par NetworkManager
    • Les réseaux configurés pour utiliser <forward mode='bridge'/>
    1. Dans l'arborescence des répertoires de configuration de systemd, créez un répertoire virtqemud.service.d s'il n'existe pas encore.

      # mkdir -p /etc/systemd/system/virtqemud.service.d/
    2. Créez un fichier 10-network-online.conf systemd unit override dans le répertoire précédemment créé. Le contenu de ce fichier remplace la configuration par défaut de systemd pour le service virtqemud.

      # touch /etc/systemd/system/virtqemud.service.d/10-network-online.conf
    3. Ajoutez les lignes suivantes au fichier 10-network-online.conf. Ce changement de configuration garantit que systemd ne démarre le service virtqemud qu'une fois que le réseau de l'hôte est prêt.

      [Unit]
      After=network-online.target

Vérification

  1. Affichez la configuration de la VM et vérifiez que l'option autostart est activée.

    Par exemple, la commande suivante affiche des informations de base sur la VM demo-guest1, y compris l'option autostart.

    # virsh dominfo demo-guest1
    Id:             2
    Name:           demo-guest1
    UUID:           e46bc81c-74e2-406e-bd7a-67042bae80d1
    OS Type:        hvm
    State:          running
    CPU(s):         2
    CPU time:       385.9s
    Max memory:     4194304 KiB
    Used memory:    4194304 KiB
    Persistent:     yes
    Autostart:      enable
    Managed save:   no
    Security model: selinux
    Security DOI:   0
    Security label: system_u:system_r:svirt_t:s0:c873,c919 (enforcing)
  2. Si vous utilisez des interfaces réseau qui ne sont pas gérées par libvirt, vérifiez si le contenu du fichier 10-network-online.conf correspond à la sortie suivante.

    $ cat /etc/systemd/system/virtqemud.service.d/10-network-online.conf
    [Unit]
    After=network-online.target

Ressources supplémentaires

Chapitre 5. Connexion aux machines virtuelles

Pour interagir avec une machine virtuelle (VM) dans RHEL 9, vous devez vous y connecter en effectuant l'une des opérations suivantes :

Si les machines virtuelles auxquelles vous vous connectez se trouvent sur un hôte distant plutôt que sur un hôte local, vous pouvez éventuellement configurer votre système pour un accès plus pratique aux hôtes distants.

Conditions préalables

5.1. Interagir avec les machines virtuelles en utilisant la console web

Pour interagir avec une machine virtuelle (VM) dans la console web RHEL 9, vous devez vous connecter à la console de la VM. Il existe des consoles graphiques et des consoles série.

5.1.1. Affichage de la console graphique de la machine virtuelle dans la console web

En utilisant l'interface de la console de la machine virtuelle (VM), vous pouvez visualiser la sortie graphique d'une VM sélectionnée dans la console web de RHEL 9.

Conditions préalables

  • Le plug-in VM de la console web est installé sur votre système.
  • Assurez-vous que l'hôte et la machine virtuelle prennent en charge une interface graphique.

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur la VM dont vous souhaitez afficher la console graphique.

    Une nouvelle page s'ouvre avec une section Overview et une section Console pour la VM.

  2. Sélectionnez la console VNC dans le menu déroulant de la console.

    La console VNC apparaît sous le menu de l'interface web.

    La console graphique apparaît dans l'interface web.

  3. Cliquez pour agrandir

    Vous pouvez désormais interagir avec la console VM en utilisant la souris et le clavier de la même manière que vous interagissez avec une machine réelle. L'affichage de la console VM reflète les activités effectuées sur la VM.

Note

L'hôte sur lequel la console web est exécutée peut intercepter des combinaisons de touches spécifiques, telles que Ctrl+Alt+Supprles empêchant d'être envoyées à la VM.

Pour envoyer ces combinaisons de touches, cliquez sur le menu Envoyer une touche et sélectionnez la séquence de touches à envoyer.

Par exemple, pour envoyer la touche Ctrl+Alt+Del à la VM, cliquez sur la touche Envoyer et sélectionnez l'entrée de menu Ctrl Alt Del.

Résolution de problèmes

  • Si le fait de cliquer dans la console graphique n'a aucun effet, agrandissez la console en plein écran. Il s'agit d'un problème connu lié au décalage du curseur de la souris.

5.1.2. Visualisation de la console graphique dans un visualiseur distant à l'aide de la console web

En utilisant l'interface de la console web, vous pouvez afficher la console graphique d'une machine virtuelle (VM) sélectionnée dans un visualiseur distant, tel que Virt Viewer.

Note

Vous pouvez lancer Virt Viewer à partir de la console web. D'autres visionneuses VNC peuvent être lancées manuellement.

Conditions préalables

  • Le plug-in VM de la console web est installé sur votre système.
  • Assurez-vous que l'hôte et la machine virtuelle prennent en charge une interface graphique.
  • Avant de pouvoir afficher la console graphique dans Virt Viewer, vous devez installer Virt Viewer sur la machine à laquelle la console web est connectée.

    1. Cliquez sur Lancer la visionneuse à distance.

      Le virt viewer, .vv, permet de télécharger des fichiers.

    2. Ouvrir le fichier pour lancer Virt Viewer.
Note

Remote Viewer est disponible sur la plupart des systèmes d'exploitation. Cependant, certaines extensions de navigateur et certains plug-ins ne permettent pas à la console web d'ouvrir Virt Viewer.

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur la VM dont vous souhaitez afficher la console graphique.

    Une nouvelle page s'ouvre avec une section Overview et une section Console pour la VM.

  2. Sélectionnez Desktop Viewer dans le menu déroulant de la console.

    Page displaying the Console section of the virtual machine interface along with other VM details.
  3. Cliquez sur Lancer la visionneuse à distance.

    La console graphique s'ouvre dans Virt Viewer.

    Vous pouvez interagir avec la console VM en utilisant la souris et le clavier de la même manière que vous interagissez avec une machine réelle. L'affichage de la console VM reflète les activités effectuées sur la VM.

Note

Le serveur sur lequel tourne la console web peut intercepter des combinaisons de touches spécifiques, telles que Ctrl+Alt+Supprles empêchant ainsi d'être envoyées à la VM.

Pour envoyer ces combinaisons de touches, cliquez sur le menu Envoyer une touche et sélectionnez la séquence de touches à envoyer.

Par exemple, pour envoyer la touche Ctrl+Alt+Del à la VM, cliquez sur le menu Envoyer la touche et sélectionnez l'entrée de menu Ctrl Alt Del.

Résolution de problèmes

  • Si le fait de cliquer dans la console graphique n'a aucun effet, agrandissez la console en plein écran. Il s'agit d'un problème connu lié au décalage du curseur de la souris.
  • Si le lancement du visualiseur à distance dans la console web ne fonctionne pas ou n'est pas optimal, vous pouvez vous connecter manuellement avec n'importe quelle application de visualisation en utilisant les protocoles suivants :

    • Address - L'adresse par défaut est 127.0.0.1. Vous pouvez modifier le paramètre vnc_listen dans /etc/libvirt/qemu.conf pour le remplacer par l'adresse IP de l'hôte.
    • VNC port - 5901

5.1.3. Affichage de la console série de la machine virtuelle dans la console web

Vous pouvez afficher la console série d'une machine virtuelle (VM) sélectionnée dans la console web RHEL 9. Cette fonction est utile lorsque la machine hôte ou la VM n'est pas configurée avec une interface graphique.

Pour plus d'informations sur la console de série, voir Ouvrir la console de série d'une machine virtuelle.

Conditions préalables

Procédure

  1. Dans le volet Machines virtuelles, cliquez sur la VM dont vous souhaitez afficher la console série.

    Une nouvelle page s'ouvre avec une section Overview et une section Console pour la VM.

  2. Sélectionnez Console série dans le menu déroulant Console.

    La console graphique apparaît dans l'interface web.

    Page displaying the virtual machine serial console along with other VM details.

Vous pouvez déconnecter et reconnecter la console série de la VM.

  • Pour déconnecter la console série de la VM, cliquez sur Disconnect (Déconnecter).
  • Pour reconnecter la console série à la VM, cliquez sur Reconnect.

5.1.4. Remplacement du protocole d'affichage à distance SPICE par VNC dans la console web

La prise en charge du protocole d'affichage à distance SPICE a été supprimée sur les hôtes RHEL 9. Si vous avez une machine virtuelle (VM) configurée pour utiliser le protocole SPICE, vous pouvez remplacer le protocole SPICE par le protocole VNC en utilisant la console web. Dans le cas contraire, la machine virtuelle ne démarre pas. Cependant, certains périphériques SPICE, tels que l'audio et le passage USB, seront supprimés de la VM parce qu'ils n'ont pas de remplacement approprié dans le protocole VNC.

Important

Par défaut, les machines virtuelles RHEL 8 sont configurées pour utiliser le protocole SPICE. Sur un hôte RHEL 9, ces machines virtuelles ne démarrent pas, à moins que vous ne passiez de SPICE à VNC.

Conditions préalables

  • Le plug-in VM de la console web est installé sur votre système.
  • Vous disposez d'une VM existante qui est configurée pour utiliser le protocole d'affichage à distance SPICE et qui est déjà arrêtée.

Procédure

  1. Dans l'interface Machines virtuelles de la console web, cliquez sur le bouton Menu de la VM configurée pour utiliser le protocole SPICE.

    Un menu déroulant s'ouvre avec des commandes pour diverses opérations VM.

  2. Cliquez sur Remplacer les dispositifs SPICE.

    La boîte de dialogue Remplacer les dispositifs SPICE s'ouvre.

    Note

    Si vous avez plusieurs machines virtuelles existantes qui utilisent le protocole SPICE, elles sont répertoriées dans cette boîte de dialogue. Vous pouvez y sélectionner plusieurs machines virtuelles à convertir de SPICE à VNC en une seule étape.

  3. Cliquez sur Remplacer.

    Une confirmation de la réussite de l'opération apparaît.

5.2. Ouvrir la console graphique d'une machine virtuelle à l'aide de Virt Viewer

Pour se connecter à une console graphique d'une machine virtuelle KVM (VM) et l'ouvrir dans l'application de bureau Virt Viewer, suivez la procédure ci-dessous.

Conditions préalables

  • Votre système, ainsi que la machine virtuelle à laquelle vous vous connectez, doivent prendre en charge les affichages graphiques.
  • Si la VM cible se trouve sur un hôte distant, une connexion et des privilèges d'accès à la racine de l'hôte sont nécessaires.
  • Optional: Si la VM cible est située sur un hôte distant, configurez votre libvirt et SSH pour un accès plus pratique aux hôtes distants.

Procédure

  • Pour vous connecter à une VM locale, utilisez la commande suivante et remplacez guest-name par le nom de la VM à laquelle vous souhaitez vous connecter :

    # virt-viewer guest-name
  • Pour se connecter à une VM distante, utilisez la commande virt-viewer avec le protocole SSH. Par exemple, la commande suivante permet de se connecter en tant que root à une VM appelée guest-name, située sur le système distant 192.0.2.1. La connexion nécessite également une authentification root pour 192.0.2.1.

    # virt-viewer --direct --connect qemu+ssh://root@192.0.2.1/system guest-name
    root@192.0.2.1's password:

Vérification

Si la connexion fonctionne correctement, l'écran VM s'affiche dans la fenêtre Virt Viewer.

Vous pouvez interagir avec la console VM en utilisant la souris et le clavier de la même manière que vous interagissez avec une machine réelle. L'affichage de la console VM reflète les activités effectuées sur la VM.

Résolution de problèmes

  • Si le fait de cliquer dans la console graphique n'a aucun effet, agrandissez la console en plein écran. Il s'agit d'un problème connu lié au décalage du curseur de la souris.

5.3. Se connecter à une machine virtuelle en utilisant SSH

Pour interagir avec le terminal d'une machine virtuelle (VM) en utilisant le protocole de connexion SSH, suivez la procédure ci-dessous.

Conditions préalables

  • Vous disposez d'une connexion réseau et des privilèges d'accès root à la VM cible.
  • Si la VM cible se trouve sur un hôte distant, vous disposez également de privilèges de connexion et d'accès root à cet hôte.
  • Votre réseau VM attribue des adresses IP par dnsmasq générées par libvirt. C'est le cas par exemple dans les réseaux NAT libvirt.

    Notamment, si votre VM utilise l'une des configurations réseau suivantes, vous ne pouvez pas vous connecter à la VM à l'aide de SSH :

    • hostdev interfaces
    • Interfaces directes
    • Interfaces de pont
  • Le composant libvirt-nss est installé et activé sur l'hôte de la VM. Si ce n'est pas le cas, procédez comme suit :

    1. Installez le paquetage libvirt-nss:

      # dnf install libvirt-nss
    2. Modifiez le fichier /etc/nsswitch.conf et ajoutez libvirt_guest à la ligne hosts:

      ...
      passwd:      compat
      shadow:      compat
      group:       compat
      hosts:       files libvirt_guest dns
      ...

Procédure

  1. Lorsque vous vous connectez à une machine virtuelle distante, vous devez d'abord vous connecter en SSH à son hôte physique. L'exemple suivant illustre la connexion à une machine hôte 192.0.2.1 à l'aide des informations d'identification root :

    # ssh root@192.0.2.1
    root@192.0.2.1's password:
    Last login: Mon Sep 24 12:05:36 2021
    root~#
  2. Utilisez le nom de la VM et les informations d'accès de l'utilisateur pour vous y connecter. Par exemple, la procédure suivante permet de se connecter à la VM testguest1 à l'aide des informations d'identification de l'utilisateur root :

    # ssh root@testguest1
    root@testguest1's password:
    Last login: Wed Sep 12 12:05:36 2018
    root~]#

Résolution de problèmes

  • Si vous ne connaissez pas le nom de la VM, vous pouvez dresser la liste de toutes les VM disponibles sur l'hôte à l'aide de la commande virsh list --all:

    # virsh list --all
    Id    Name                           State
    ----------------------------------------------------
    2     testguest1                    running
    -     testguest2                    shut off

Ressources supplémentaires

5.4. Ouvrir la console série d'une machine virtuelle

En utilisant la commande virsh console, il est possible de se connecter à la console série d'une machine virtuelle (VM).

Ceci est utile lorsque la VM :

  • Ne fournit pas de protocoles VNC et n'offre donc pas d'affichage vidéo pour les outils d'interface graphique.
  • Ne dispose pas d'une connexion réseau et ne peut donc pas être contacté à l'aide de SSH.

Conditions préalables

  • Le chargeur d'amorçage GRUB de votre hôte doit être configuré pour utiliser la console série. Pour le vérifier, vérifiez que le fichier /etc/default/grub de votre hôte contient le paramètre GRUB_TERMINAL=serial.

    $ sudo grep GRUB_TERMINAL /etc/default/grub
    GRUB_TERMINAL=serial
  • La VM doit avoir un périphérique de console série configuré, tel que console type='pty'. Pour vérifier, procédez comme suit :

    # virsh dumpxml vm-name | grep console
    
    <console type='pty' tty='/dev/pts/2'>
    </console>
  • La console série doit être configurée dans la ligne de commande du noyau de la machine virtuelle. Pour le vérifier, la sortie de la commande cat /proc/cmdline sur la VM doit inclure console=<console-name>, où <console-name> est spécifique à l'architecture :

    • Pour AMD64 et Intel 64 : ttyS0
    • Pour ARM 64 : ttyAMA0

      Note

      Les commandes suivantes de cette procédure utilisent ttyS0.

      # cat /proc/cmdline
      BOOT_IMAGE=/vmlinuz-3.10.0-948.el7.x86_64 root=/dev/mapper/rhel-root ro console=tty0 console=ttyS0,9600n8 rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb

      Si la console série n'est pas configurée correctement sur une VM, l'utilisation de virsh console pour se connecter à la VM vous connecte à une console invitée qui ne répond pas. Cependant, vous pouvez toujours quitter la console qui ne répond pas en utilisant la touche Ctrl+] pour quitter la console qui ne répond pas.

    • Pour configurer la console série sur la VM, procédez comme suit :

      1. Sur la VM, activez l'option console=ttyS0 kernel :

        # grubby --update-kernel=ALL --args="console=ttyS0"
      2. Effacez les options du noyau qui pourraient empêcher vos modifications de prendre effet.

        # grub2-editenv - unset kernelopts
      3. Redémarrez la VM.
  • Le service serial-getty@<console-name> doit être activé. Par exemple, sur AMD64 et Intel 64 :

    # systemctl status serial-getty@ttyS0.service
    
    ○ serial-getty@ttyS0.service - Serial Getty on ttyS0
         Loaded: loaded (/usr/lib/systemd/system/serial-getty@.service; enabled; preset: enabled)

Procédure

  1. Sur votre système hôte, utilisez la commande virsh console. L'exemple suivant se connecte à la VM guest1, si le pilote libvirt prend en charge la gestion de la console sécurisée :

    # virsh console guest1 --safe
    Connected to domain 'guest1'
    Escape character is ^]
    
    Subscription-name
    Kernel 3.10.0-948.el7.x86_64 on an x86_64
    
    localhost login:
  2. Vous pouvez interagir avec la console virsh de la même manière qu'avec une interface de ligne de commande standard.

Ressources supplémentaires

  • La page de manuel virsh

5.5. Mise en place d'un accès facile aux hôtes de virtualisation distants

Lorsque vous gérez des machines virtuelles sur un système hôte distant à l'aide des utilitaires libvirt, il est recommandé d'utiliser la syntaxe -c qemu ssh://root@hostname/system. Par exemple, pour utiliser la commande virsh list en tant que root sur l'hôte 192.0.2.1:

# virsh -c qemu+ssh://root@192.0.2.1/system list
root@192.0.2.1's password:

Id   Name              State
---------------------------------
1    remote-guest      running

Cependant, vous pouvez supprimer la nécessité de spécifier les détails de la connexion en modifiant votre configuration SSH et libvirt. Par exemple :

# virsh -c remote-host list
root@192.0.2.1's password:

Id   Name              State
---------------------------------
1    remote-guest      running

Pour activer cette amélioration, suivez les instructions ci-dessous.

Procédure

  1. Modifiez le fichier ~/.ssh/config avec les détails suivants, où host-alias est un nom abrégé associé à un hôte distant spécifique et un alias pour root@192.0.2.1, et hosturl est l'adresse URL de l'hôte :

    # vi ~/.ssh/config
    Host example-host-alias
      User                    root
      Hostname                192.0.2.1
  2. Modifiez le fichier /etc/libvirt/libvirt.conf avec les détails suivants, le example-qemu-host-alias est un alias d'hôte que les utilitaires QEMU et libvirt associeront à qemu ssh://192.0.2.1/system avec l'hôte prévu example-host-alias:

    # vi /etc/libvirt/libvirt.conf
    uri_aliases = [
      "example-qemu-host-alias=qemu+ssh://example-host-alias/system",
    ]

Vérification

  1. Confirmez que vous pouvez gérer des machines virtuelles distantes en utilisant des utilitaires basés sur libvirt sur le système local avec un paramètre supplémentaire -c qemu-host-alias ajouté. Cela permet d'exécuter automatiquement les commandes via SSH sur l'hôte distant.

    Par exemple, vérifiez que la liste suivante répertorie les machines virtuelles sur l'hôte distant 192.0.2.1, dont la connexion a été configurée à l'adresse example-qemu-host-alias dans les étapes précédentes :

    # virsh -c example-qemu-host-alias list
    
    root@192.0.2.1's password:
    
    Id   Name                       State
    ----------------------------------------
    1    example-remote-guest      running
    Note

    Outre virsh, l'option -c (ou --connect) et la configuration de l'accès à l'hôte distant décrite ci-dessus peuvent être utilisées par les utilitaires suivants :

Prochaines étapes

Si vous souhaitez utiliser les utilitaires libvirt exclusivement sur un seul hôte distant, vous pouvez également définir une connexion spécifique comme cible par défaut pour les utilitaires basés sur libvirt. Toutefois, cela n'est pas recommandé si vous souhaitez également gérer des machines virtuelles sur votre hôte local ou sur différents hôtes distants.

  • Vous pouvez éditer le fichier /etc/libvirt/libvirt.conf et définir la valeur du paramètre uri_default à example-qemu-host-alias comme cible libvirt par défaut.

    # These can be used in cases when no URI is supplied by the application
    # (@uri_default also prevents probing of the hypervisor driver).
    #
    uri_default = "example-qemu-host-alias"

    Par conséquent, toutes les commandes basées sur libvirt seront automatiquement exécutées sur l'hôte distant spécifié.

    $ virsh list
    root@192.0.2.1's password:
    
    Id   Name              State
    ---------------------------------
    1   example-remote-guest      running
  • Lorsque vous vous connectez à un hôte distant, vous pouvez éviter de fournir le mot de passe root au système distant. Pour ce faire, utilisez une ou plusieurs des méthodes suivantes :

  • L'option -c (ou --connect) peut être utilisée pour exécuter le programme virt-install, virt-vieweret virsh sur un hôte distant.

Chapitre 6. Arrêt des machines virtuelles

Pour arrêter une machine virtuelle en cours d'exécution hébergée sur RHEL 9, utilisez l'interface de ligne de commande ou l'interface graphique de la console Web.

6.1. Arrêter une machine virtuelle à l'aide de l'interface de ligne de commande

Pour arrêter une machine virtuelle (VM) réactive, effectuez l'une des opérations suivantes :

  • Utilisez une commande d'arrêt appropriée au système d'exploitation de l'invité lorsque vous êtes connecté à l'invité.
  • Utilisez la commande virsh shutdown sur l'hôte :

    • Si la VM se trouve sur un hôte local :

      # virsh shutdown demo-guest1
      Domain 'demo-guest1' is being shutdown
    • Si la VM se trouve sur un hôte distant, dans cet exemple 192.0.2.1 :

      # virsh -c qemu+ssh://root@192.0.2.1/system shutdown demo-guest1
      
      root@192.0.2.1's password:
      Domain 'demo-guest1' is being shutdown

Pour forcer une VM à s'arrêter, par exemple si elle ne répond plus, utilisez la commande virsh destroy sur l'hôte :

# virsh destroy demo-guest1
Domain 'demo-guest1' destroyed
Note

La commande virsh destroy ne supprime pas la configuration de la VM ou les images de disque. Elle ne fait que mettre fin à l'instance de la VM en cours d'exécution, de la même manière que l'on débranche le cordon d'alimentation d'une machine physique. Ainsi, dans de rares cas, virsh destroy peut entraîner la corruption du système de fichiers de la VM. L'utilisation de cette commande n'est donc recommandée que si toutes les autres méthodes d'arrêt ont échoué.

6.2. Arrêter et redémarrer les machines virtuelles à l'aide de la console web

À l'aide de la console web RHEL 9, vous pouvez arrêter ou redémarrer des machines virtuelles en cours d'exécution. Vous pouvez également envoyer une interruption non masquable à une machine virtuelle qui ne répond pas.

6.2.1. Arrêter des machines virtuelles dans la console web

Si une machine virtuelle (VM) est dans l'état running, vous pouvez l'arrêter en utilisant la console web RHEL 9.

Conditions préalables

Procédure

  1. Dans l'interface Machines virtuelles, recherchez la ligne de la VM que vous souhaitez arrêter.
  2. Dans la partie droite de la ligne, cliquez sur Arrêter.

    La machine virtuelle s'arrête.

Résolution de problèmes

  • Si la VM ne s'arrête pas, cliquez sur le bouton Menu à côté du bouton Arrêter et sélectionnez Forcer l'arrêt.
  • Pour arrêter une VM qui ne répond pas, vous pouvez également envoyer une interruption non masquable.

6.2.2. Redémarrer les machines virtuelles à l'aide de la console web

Si une machine virtuelle (VM) est dans l'état running, vous pouvez la redémarrer en utilisant la console web RHEL 9.

Conditions préalables

Procédure

  1. Dans l'interface Machines virtuelles, recherchez la ligne de la VM que vous souhaitez redémarrer.
  2. Sur le côté droit de la ligne, cliquez sur le bouton Menu .

    Un menu déroulant d'actions apparaît.

  3. Dans le menu déroulant, cliquez sur Redémarrer.

    La VM s'arrête et redémarre.

Résolution de problèmes

  • Si la VM ne redémarre pas, cliquez sur le bouton Menu à côté du bouton Redémarrer et sélectionnez Forcer le redémarrage.
  • Pour arrêter une VM qui ne répond pas, vous pouvez également envoyer une interruption non masquable.

6.2.3. Envoi d'interruptions non masquables aux machines virtuelles à l'aide de la console web

L'envoi d'une interruption non masquable (NMI) peut amener une machine virtuelle (VM) en cours d'exécution qui ne répond pas à réagir ou à s'arrêter. Par exemple, vous pouvez envoyer la touche Ctrl+Alt+Del À une VM qui ne répond pas à l'entrée standard.

Conditions préalables

Procédure

  1. Dans l'interface Machines virtuelles, recherchez la ligne de la VM à laquelle vous souhaitez envoyer un NMI.
  2. Sur le côté droit de la ligne, cliquez sur le bouton Menu .

    Un menu déroulant d'actions apparaît.

  3. Dans le menu déroulant, cliquez sur Envoyer une interruption non masquable.

    Un NMI est envoyé à la VM.

Chapitre 7. Suppression des machines virtuelles

Pour supprimer des machines virtuelles dans RHEL 9, utilisez l'interface de ligne de commande ou l'interface graphique de la console web.

7.1. Suppression de machines virtuelles à l'aide de l'interface de ligne de commande

Pour supprimer une machine virtuelle (VM), vous pouvez supprimer sa configuration XML et les fichiers de stockage associés de l'hôte à l'aide de la ligne de commande. Suivez la procédure ci-dessous :

Conditions préalables

  • Sauvegarder les données importantes de la VM.
  • Arrêtez la VM.
  • Assurez-vous qu'aucune autre VM n'utilise le même stockage associé.

Procédure

  • Utilisez l'utilitaire virsh undefine.

    Par exemple, la commande suivante supprime la VM guest1, les volumes de stockage associés et la mémoire vive non volatile, le cas échéant.

    # virsh undefine guest1 --remove-all-storage --nvram
    Domain 'guest1' has been undefined
    Volume 'vda'(/home/images/guest1.qcow2) removed.

Ressources supplémentaires

  • La commande virsh undefine --help
  • La page de manuel virsh

7.2. Suppression de machines virtuelles à l'aide de la console web

Pour supprimer une machine virtuelle (VM) et ses fichiers de stockage associés de l'hôte auquel la console web RHEL 9 est connectée, suivez la procédure ci-dessous :

Conditions préalables

  • Le plug-in VM de la console web est installé sur votre système.
  • Sauvegarder les données importantes de la VM.
  • Assurez-vous qu'aucune autre VM n'utilise le même stockage associé.
  • Optional: Arrêtez la VM.

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur le bouton Menu de la VM que vous souhaitez supprimer.

    Un menu déroulant apparaît avec des commandes pour diverses opérations VM.

  2. Cliquez sur Supprimer.

    Une boîte de dialogue de confirmation apparaît.

    Image displaying the Confirm deletion of VM dialog box.
  3. Optional: Pour supprimer tout ou partie des fichiers de stockage associés à la VM, cochez les cases situées en regard des fichiers de stockage à supprimer.
  4. Cliquez sur Supprimer.

    La VM et tous les fichiers de stockage sélectionnés sont supprimés.

Chapitre 8. Gérer les machines virtuelles dans la console web

Pour gérer les machines virtuelles dans une interface graphique sur un hôte RHEL 9, vous pouvez utiliser le volet Virtual Machines dans la console Web RHEL 9.

Image displaying the virtual machine tab of the web console.

8.1. Vue d'ensemble de la gestion des machines virtuelles à l'aide de la console web

La console web RHEL 9 est une interface web pour l'administration du système. Parmi ses fonctionnalités, la console web fournit une vue graphique des machines virtuelles (VM) sur le système hôte, et permet de créer, d'accéder et de configurer ces VM.

Notez que pour utiliser la console web pour gérer vos machines virtuelles sur RHEL 9, vous devez d'abord installer un plug-in de console web pour la virtualisation.

Prochaines étapes

8.2. Configurer la console web pour gérer les machines virtuelles

Avant d'utiliser la console Web RHEL 9 pour gérer les machines virtuelles (VM), vous devez installer le plug-in de machine virtuelle de la console Web sur l'hôte.

Conditions préalables

  • Assurez-vous que la console web est installée et activée sur votre machine.

    # systemctl status cockpit.socket
    cockpit.socket - Cockpit Web Service Socket
    Loaded: loaded (/usr/lib/systemd/system/cockpit.socket
    [...]

    Si cette commande renvoie Unit cockpit.socket could not be found, suivez le document Installation de la console web pour activer la console web.

Procédure

  • Installer le plug-in cockpit-machines.

    # dnf install cockpit-machines

Vérification

  1. Accédez à la console web, par exemple en saisissant l'adresse https://localhost:9090 dans votre navigateur.
  2. Se connecter.
  3. Si l'installation a réussi, Machines virtuelles apparaît dans le menu latéral de la console web.

    Image displaying the virtual machine tab of the web console.

8.3. Renommer des machines virtuelles à l'aide de la console web

Vous pouvez avoir besoin de renommer une machine virtuelle (VM) existante pour éviter les conflits de noms ou attribuer un nouveau nom unique en fonction de votre cas d'utilisation. Pour renommer la VM, vous pouvez utiliser la console web RHEL.

Conditions préalables

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur le bouton Menu de la VM que vous souhaitez renommer.

    Un menu déroulant apparaît avec des commandes pour diverses opérations VM.

  2. Cliquez sur Renommer.

    La boîte de dialogue Rename a VM apparaît.

    Image displaying the rename a VM dialog box.
  3. Dans le champ New name, entrez un nom pour la VM.
  4. Cliquez sur Renommer.

Vérification

  • Vérifiez que le nouveau nom de la VM est apparu dans l'interface Machines virtuelles.

8.4. Fonctions de gestion des machines virtuelles disponibles dans la console web

En utilisant la console web RHEL 9, vous pouvez effectuer les actions suivantes pour gérer les machines virtuelles (VM) sur votre système.

Tableau 8.1. Tâches de gestion des machines virtuelles que vous pouvez effectuer dans la console web RHEL 9
TâchePour plus de détails, voir

Créer une VM et l'installer avec un système d'exploitation invité

Création de machines virtuelles et installation de systèmes d'exploitation invités à l'aide de la console web

Supprimer une VM

Suppression de machines virtuelles à l'aide de la console web

Démarrer, arrêter et redémarrer la VM

Démarrer des machines virtuelles à l'aide de la console web et Arrêter et redémarrer des machines virtuelles à l'aide de la console web

Se connecter à une VM et interagir avec elle à l'aide de diverses consoles

Interagir avec les machines virtuelles en utilisant la console web

Visualiser diverses informations sur la VM

Visualisation des informations sur les machines virtuelles à l'aide de la console web

Ajuster la mémoire hôte allouée à une VM

Ajouter et supprimer la mémoire d'une machine virtuelle à l'aide de la console web

Gérer les connexions réseau pour la VM

Utilisation de la console web pour gérer les interfaces réseau des machines virtuelles

Gérer le stockage de la VM disponible sur l'hôte et attacher des disques virtuels à la VM

Gestion du stockage pour les machines virtuelles à l'aide de la console web

Configurer les paramètres de l'unité centrale virtuelle de la VM

Gestion des CPU virtuels à l'aide de la console web

Migration en direct d'une VM

Migration en direct d'une machine virtuelle à l'aide de la console web

Gérer les dispositifs hôtes

Gestion des périphériques hôtes à l'aide de la console web

Gérer les lecteurs optiques virtuels

Gestion des lecteurs optiques virtuels

Attacher un dispositif de surveillance

Attacher un dispositif de surveillance à une machine virtuelle en utilisant la console web

Chapitre 9. Affichage d'informations sur les machines virtuelles

Lorsque vous devez ajuster ou dépanner un aspect de votre déploiement de virtualisation sur RHEL 9, la première étape à effectuer consiste généralement à afficher des informations sur l'état et la configuration actuels de vos machines virtuelles. Pour ce faire, vous pouvez utiliser l'interface de ligne de commande ou la console Web. Vous pouvez également consulter les informations dans la configuration XML de la machine virtuelle.

9.1. Visualisation des informations sur les machines virtuelles à l'aide de l'interface de ligne de commande

Pour récupérer des informations sur les machines virtuelles (VM) de votre hôte et leurs configurations, utilisez une ou plusieurs des commandes suivantes.

Procédure

  • Pour obtenir une liste des machines virtuelles sur votre hôte :

    # virsh list --all
    Id   Name              State
    ----------------------------------
    1    testguest1             running
    -    testguest2             shut off
    -    testguest3             shut off
    -    testguest4             shut off
  • Pour obtenir des informations de base sur une VM spécifique :

    # virsh dominfo testguest1
    Id:             1
    Name:           testguest1
    UUID:           a973666f-2f6e-415a-8949-75a7a98569e1
    OS Type:        hvm
    State:          running
    CPU(s):         2
    CPU time:       188.3s
    Max memory:     4194304 KiB
    Used memory:    4194304 KiB
    Persistent:     yes
    Autostart:      disable
    Managed save:   no
    Security model: selinux
    Security DOI:   0
    Security label: system_u:system_r:svirt_t:s0:c486,c538 (enforcing)
  • Pour obtenir la configuration XML complète d'une VM spécifique :

    # virsh dumpxml testguest2
    
    <domain type='kvm' id='1'>
      <name>testguest2</name>
      <uuid>a973434f-2f6e-4ěša-8949-76a7a98569e1</uuid>
      <metadata>
    [...]
  • Pour obtenir des informations sur les disques et autres périphériques de bloc d'une VM :

    # virsh domblklist testguest3
     Target   Source
    ---------------------------------------------------------------
     vda      /var/lib/libvirt/images/testguest3.qcow2
     sda      -
     sdb      /home/username/Downloads/virt-p2v-1.36.10-1.el7.iso
  • Pour obtenir des informations sur les systèmes de fichiers d'une VM et leurs points de montage :

    # virsh domfsinfo testguest3
    Mountpoint   Name   Type   Target
    ------------------------------------
     /            dm-0   xfs
     /boot        vda1   xfs
  • Pour obtenir plus de détails sur les vCPU d'une VM spécifique :

    # virsh vcpuinfo testguest4
    VCPU:           0
    CPU:            3
    State:          running
    CPU time:       103.1s
    CPU Affinity:   yyyy
    
    VCPU:           1
    CPU:            0
    State:          running
    CPU time:       88.6s
    CPU Affinity:   yyyy

    Pour configurer et optimiser les vCPU de votre VM, voir Optimiser les performances du CPU de la machine virtuelle.

  • Pour dresser la liste de toutes les interfaces réseau virtuelles de votre hôte :

    # virsh net-list --all
     Name       State    Autostart   Persistent
    ---------------------------------------------
     default    active   yes         yes
     labnet     active   yes         yes

    Pour obtenir des informations sur une interface spécifique :

    # virsh net-info default
    Name:           default
    UUID:           c699f9f6-9202-4ca8-91d0-6b8cb9024116
    Active:         yes
    Persistent:     yes
    Autostart:      yes
    Bridge:         virbr0

    Pour plus d'informations sur les interfaces réseau, les réseaux de VM et les instructions pour les configurer, voir Configuration des connexions réseau des machines virtuelles.

9.2. Visualisation des informations sur les machines virtuelles à l'aide de la console web

En utilisant la console web RHEL 9, vous pouvez afficher des informations sur toutes les machines virtuelles et tous les pools de stockage auxquels la session de la console web peut accéder.

Vous pouvez afficher des informations sur une VM sélectionnée à laquelle la session de la console Web est connectée. Il s'agit notamment d'informations sur les disques, l'interface réseau virtuelle et l'utilisation des ressources.

9.2.1. Visualisation d'une vue d'ensemble de la virtualisation dans la console web

En utilisant la console web, vous pouvez accéder à une vue d'ensemble de la virtualisation qui contient des informations résumées sur les machines virtuelles (VM), les pools de stockage et les réseaux disponibles.

Conditions préalables

Procédure

  • Cliquez sur Machines virtuelles dans le menu latéral de la console Web.

    Une boîte de dialogue s'affiche avec des informations sur les pools de stockage disponibles, les réseaux disponibles et les machines virtuelles auxquelles la console Web est connectée.

    Image displaying the virtual machine tab of the web console.

Les informations comprennent les éléments suivants :

  • Storage Pools - Le nombre de pools de stockage, actifs ou inactifs, accessibles par la console web et leur état.
  • Networks - Le nombre de réseaux, actifs ou inactifs, auxquels la console web peut accéder et leur état.
  • Name - Le nom de la VM.
  • Connection - Le type de connexion libvirt, système ou session.
  • State - L'état de la VM.

9.2.2. Visualisation des informations sur les pools de stockage à l'aide de la console web

En utilisant la console web, vous pouvez afficher des informations détaillées sur les pools de stockage disponibles sur votre système. Les pools de stockage peuvent être utilisés pour créer des images de disque pour vos machines virtuelles.

Conditions préalables

Procédure

  1. Cliquez sur Pools de stockage en haut de l'interface Machines virtuelles.

    La fenêtre Storage pools s'affiche et présente une liste des pools de stockage configurés.

    Image displaying the storage pool tab of the web console with information about existing storage pools.

    Les informations comprennent les éléments suivants :

    • Name - Le nom du pool de stockage.
    • Size - L'allocation actuelle et la capacité totale du pool de stockage.
    • Connection - La connexion utilisée pour accéder au pool de stockage.
    • State - L'état du pool de stockage.
  2. Cliquez sur la flèche située à côté du pool de stockage dont vous souhaitez consulter les informations.

    La ligne se développe pour faire apparaître le volet Vue d'ensemble contenant des informations détaillées sur le pool de stockage sélectionné.

    Image displaying the detailed information about the selected storage pool.

    Les informations comprennent

    • Target path - Emplacement du pool de stockage.
    • Persistent - Indique si le pool de stockage a une configuration persistante ou non.
    • Autostart - Indique si le pool de stockage démarre automatiquement au démarrage du système.
    • Type - Le type de pool de stockage.
  3. Pour afficher la liste des volumes de stockage associés au pool de stockage, cliquez sur Volumes de stockage.

    Le volet Volumes de stockage s'affiche et présente une liste des volumes de stockage configurés.

    Image displaying the list of storage volumes associated with the selected storage pool.

    Les informations comprennent

    • Name - Le nom du volume de stockage.
    • Used by - La VM qui utilise actuellement le volume de stockage.
    • Size - La taille du volume.

9.2.3. Visualisation des informations de base sur les machines virtuelles dans la console web

En utilisant la console web, vous pouvez afficher des informations de base, telles que les ressources affectées ou les détails de l'hyperviseur, à propos d'une machine virtuelle (VM) sélectionnée.

Conditions préalables

Procédure

  1. Cliquez sur Machines virtuelles dans le menu latéral de la console Web.
  2. Cliquez sur la VM dont vous souhaitez consulter les informations.

    Une nouvelle page s'ouvre avec une section Vue d'ensemble contenant des informations de base sur la VM sélectionnée et une section Console permettant d'accéder à l'interface graphique de la VM.

    La section Vue d'ensemble comprend les informations générales suivantes sur la VM :

    • State - L'état de la VM, en cours d'exécution ou à l'arrêt.
    • Memory - Quantité de mémoire attribuée à la VM.
    • CPU - Le nombre et le type de CPU virtuels configurés pour la VM.
    • Boot Order - L'ordre de démarrage configuré pour la VM.
    • Autostart - Activation ou non du démarrage automatique pour la VM.

    Les informations comprennent également les détails suivants sur l'hyperviseur :

    • Emulated Machine - Type de machine émulée par la VM.
    • Firmware - Le micrologiciel de la VM.

9.2.4. Visualisation de l'utilisation des ressources de la machine virtuelle dans la console web

En utilisant la console web, vous pouvez visualiser la mémoire et l'utilisation du processeur virtuel d'une machine virtuelle (VM) sélectionnée.

Conditions préalables

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur la VM dont vous voulez voir les informations.

    Une nouvelle page s'ouvre avec une section Vue d'ensemble contenant des informations de base sur la VM sélectionnée et une section Console permettant d'accéder à l'interface graphique de la VM.

  2. Faites défiler jusqu'à Usage.

    La section Utilisation affiche des informations sur l'utilisation de la mémoire et du processeur virtuel de la VM.

    Image displaying the memory and CPU usage of the selected VM.

9.2.5. Visualisation des informations sur les disques des machines virtuelles dans la console web

En utilisant la console web, vous pouvez afficher des informations détaillées sur les disques affectés à une machine virtuelle (VM) sélectionnée.

Conditions préalables

Procédure

  1. Cliquez sur la VM dont vous souhaitez consulter les informations.

    Une nouvelle page s'ouvre avec une section Vue d'ensemble contenant des informations de base sur la VM sélectionnée et une section Console permettant d'accéder à l'interface graphique de la VM.

  2. Faites défiler jusqu'à Disques.

    La section Disques affiche des informations sur les disques affectés à la VM, ainsi que des options permettant d'accéder à Add ou Edit.

    Image displaying the disk usage of the selected VM.

Les informations comprennent les éléments suivants :

  • Device - Le type de périphérique du disque.
  • Used - Quantité de disque actuellement allouée.
  • Capacity - Taille maximale du volume de stockage.
  • Bus - Le type de disque émulé.
  • Access - Si le disque est Writeable ou Read-only. Pour les disques raw, vous pouvez également définir l'accès à Writeable and shared.
  • Source - L'unité de disque ou le fichier.

9.2.6. Visualisation et modification des informations relatives à l'interface réseau virtuelle dans la console web

En utilisant la console web RHEL 9, vous pouvez afficher et modifier les interfaces réseau virtuelles sur une machine virtuelle (VM) sélectionnée :

Conditions préalables

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur la VM dont vous voulez voir les informations.

    Une nouvelle page s'ouvre avec une section Vue d'ensemble contenant des informations de base sur la VM sélectionnée et une section Console permettant d'accéder à l'interface graphique de la VM.

  2. Faites défiler jusqu'à Interfaces réseau.

    La section Interfaces réseau affiche des informations sur l'interface réseau virtuelle configurée pour la VM ainsi que des options pour les interfaces réseau Add, Delete, Edit, ou Unplug.

    Image displaying the network interface details of the selected virtual machine.

    Les informations comprennent les éléments suivants :

    • Type - Type d'interface réseau pour la VM. Les types comprennent le réseau virtuel, le pont vers le réseau local et l'attachement direct.

      Note

      La connexion Ethernet générique n'est pas prise en charge dans RHEL 9 et les versions ultérieures.

    • Model type - Le modèle de l'interface réseau virtuelle.
    • MAC Address - L'adresse MAC de l'interface réseau virtuelle.
    • IP Address - L'adresse IP de l'interface réseau virtuelle.
    • Source - La source de l'interface réseau. Elle dépend du type de réseau.
    • State - État de l'interface réseau virtuelle.
  3. Pour modifier les paramètres de l'interface réseau virtuelle, cliquez sur Edit. La boîte de dialogue Virtual Network Interface Settings (Paramètres de l'interface réseau virtuelle) s'ouvre.

    Image displaying the various options that can be edited for the selected network interface.
  4. Modifier le type d'interface, la source, le modèle ou l'adresse MAC.
  5. Cliquez sur Enregistrer. L'interface réseau est modifiée.

    Note

    Les modifications apportées aux paramètres de l'interface réseau virtuelle ne prennent effet qu'après le redémarrage de la VM.

    En outre, l'adresse MAC ne peut être modifiée que lorsque la machine virtuelle est éteinte.

9.3. Exemple de configuration XML d'une machine virtuelle

La configuration XML d'une VM, également appelée domain XML, détermine les paramètres et les composants de la VM. Le tableau suivant présente les sections d'un exemple de configuration XML d'une machine virtuelle (VM) et en explique le contenu.

Pour obtenir la configuration XML d'une VM, vous pouvez utiliser la commande virsh dumpxml suivie du nom de la VM.

# virsh dumpxml testguest1
Tableau 9.1. Exemple de configuration XML
Domaine Section XMLDescription
<domain type='kvm'>
 <name>Testguest1</name>
 <uuid>ec6fbaa1-3eb4-49da-bf61-bb02fbec4967</uuid>
 <memory unit='KiB'>1048576</memory>
 <currentMemory unit='KiB'>1048576</currentMemory>

Il s'agit d'une machine virtuelle KVM appelée Testguest1, avec 1024 MiB de RAM alloués.

 <vcpu placement='static'>1</vcpu>

La VM est dotée d'un seul processeur virtuel (vCPU).

Pour plus d'informations sur la configuration des vCPU, voir Optimisation des performances du processeur de la machine virtuelle.

 <os>
  <type arch='x86_64' machine='pc-q35-rhel9.0.0'>hvm</type>
  <boot dev='hd'/>
 </os>

L'architecture de la machine est réglée sur AMD64 et Intel 64, et utilise le type de machine Intel Q35 pour déterminer la compatibilité des fonctionnalités. Le système d'exploitation est configuré pour être démarré à partir du disque dur.

Pour plus d'informations sur la création d'une machine virtuelle avec un système d'exploitation installé, voir Création de machines virtuelles et installation de systèmes d'exploitation invités à l'aide de la console web.

 <features>
  <acpi/>
  <apic/>
 </features>

Les fonctionnalités des hyperviseurs acpi et apic sont désactivées.

 <cpu mode='host-model' check='partial'/>

Les définitions de l'unité centrale de l'hôte à partir de capabilities XML (obtenues avec virsh domcapabilities) sont automatiquement copiées dans la configuration XML de la VM. Par conséquent, lorsque la VM est démarrée, libvirt choisit un modèle d'unité centrale similaire à l'unité centrale de l'hôte, puis ajoute des fonctions supplémentaires pour se rapprocher le plus possible du modèle de l'hôte.

 <clock offset='utc'>
  <timer name='rtc' tickpolicy='catchup'/>
  <timer name='pit' tickpolicy='delay'/>
  <timer name='hpet' present='no'/>
 </clock>

L'horloge du matériel virtuel de la VM utilise le fuseau horaire UTC. En outre, trois horloges différentes sont configurées pour la synchronisation avec l'hyperviseur QEMU.

 <on_poweroff>destroy</on_poweroff>
 <on_reboot>restart</on_reboot>
 <on_crash>destroy</on_crash>

Lorsque la VM s'éteint ou que son système d'exploitation s'arrête de manière inattendue, libvirt met fin à la VM et libère toutes les ressources qui lui ont été allouées. Lorsque la VM est redémarrée, libvirt la redémarre avec la même configuration.

 <pm>
  <suspend-to-mem enabled='no'/>
  <suspend-to-disk enabled='no'/>
 </pm>

Les états de veille ACPI S3 et S4 sont désactivés pour cette VM.

<devices>
 <emulator>/usr/libexec/qemu-kvm</emulator>
 <disk type='file' device='disk'>
  <driver name='qemu' type='qcow2'/>
  <source file='/var/lib/libvirt/images/Testguest.qcow2'/>
  <target dev='vda' bus='virtio'/>
 </disk>
 <disk type='file' device='cdrom'>
  <driver name='qemu' type='raw'/>
  <target dev='sdb' bus='sata'/>
  <readonly/>
 </disk>

La VM utilise le fichier binaire /usr/libexec/qemu-kvm pour l'émulation et dispose de deux périphériques de disque.

Le premier disque est un disque dur virtualisé basé sur le disque /var/lib/libvirt/images/Testguest.qcow2 stocké sur l'hôte, et son nom de périphérique logique est défini sur vda. Dans les invités Windows, il est recommandé d'utiliser le bus sata au lieu de virtio.

Le deuxième disque est un CD-ROM virtualisé et son nom de périphérique logique est sdb.

  <controller type='usb' index='0' model='qemu-xhci' ports='15'/>
  <controller type='sata' index='0'/>
  <controller type='pci' index='0' model='pcie-root'/>
  <controller type='pci' index='1' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='1' port='0x10'/>
  </controller>
  <controller type='pci' index='2' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='2' port='0x11'/>
  </controller>
  <controller type='pci' index='3' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='3' port='0x12'/>
  </controller>
  <controller type='pci' index='4' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='4' port='0x13'/>
  </controller>
  <controller type='pci' index='5' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='5' port='0x14'/>
  </controller>
  <controller type='pci' index='6' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='6' port='0x15'/>
  </controller>
  <controller type='pci' index='7' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='7' port='0x16'/>
  </controller>
  <controller type='virtio-serial' index='0'/>

La VM utilise un seul contrôleur pour attacher les périphériques USB et un contrôleur racine pour les périphériques PCI-Express (PCIe). En outre, un contrôleur virtio-serial est disponible, ce qui permet à la VM d'interagir avec l'hôte de diverses manières, comme la console série.

Pour plus d'informations sur les dispositifs virtuels, voir Types de dispositifs virtuels.

 <interface type='network'>
  <mac address='52:54:00:65:29:21'/>
  <source network='default'/>
  <model type='virtio'/>
 </interface>

Une interface réseau est configurée dans la VM qui utilise le réseau virtuel default et le modèle de périphérique réseau virtio. Pour les invités Windows, il est recommandé d'utiliser le modèle e1000e au lieu de virtio.

Pour plus d'informations sur la configuration de l'interface réseau, voir Optimisation des performances du réseau de la machine virtuelle.

  <serial type='pty'>
   <target type='isa-serial' port='0'>
    <model name='isa-serial'/>
   </target>
  </serial>
  <console type='pty'>
   <target type='serial' port='0'/>
  </console>
  <channel type='unix'>
   <target type='virtio' name='org.qemu.guest_agent.0'/>
   <address type='virtio-serial' controller='0' bus='0' port='1'/>
  </channel>

Une console série pty est installée sur la VM, ce qui permet une communication rudimentaire de la VM avec l'hôte. La console utilise le canal UNIX sur le port 1. Cette configuration est automatique et il n'est pas recommandé de la modifier.

Pour plus d'informations sur l'interaction avec les machines virtuelles, voir Interagir avec les machines virtuelles à l'aide de la console web.

  <input type='tablet' bus='usb'>
   <address type='usb' bus='0' port='1'/>
  </input>
  <input type='mouse' bus='ps2'/>
  <input type='keyboard' bus='ps2'/>

La VM utilise un port virtuel usb, qui est configuré pour recevoir l'entrée de la tablette, et un port virtuel ps2 configuré pour recevoir l'entrée de la souris et du clavier. Ces paramètres sont configurés automatiquement et il n'est pas recommandé de les modifier.

  <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'>
   <listen type='address' address='127.0.0.1'/>
  </graphics>

La VM utilise le protocole vnc pour le rendu de sa sortie graphique.

  <redirdev bus='usb' type='tcp'>
   <source mode='connect' host='localhost' service='4000'/>
   <protocol type='raw'/>
  </redirdev>
  <memballoon model='virtio'>
   <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
  </memballoon>
 </devices>
</domain>

La VM utilise tcp re-director pour attacher des périphériques USB à distance, et le memory ballooning est activé. Ces paramètres sont configurés automatiquement et il n'est pas recommandé de les modifier.

Chapitre 10. Sauvegarde et restauration des machines virtuelles

Pour libérer les ressources du système, vous pouvez arrêter une machine virtuelle (VM) fonctionnant sur ce système. Cependant, lorsque vous avez de nouveau besoin de la VM, vous devez démarrer le système d'exploitation invité et redémarrer les applications, ce qui peut prendre un temps considérable. Pour réduire ce temps d'arrêt et permettre à la charge de travail de la VM de commencer à fonctionner plus tôt, vous pouvez utiliser la fonction de sauvegarde et de restauration pour éviter complètement l'arrêt du système d'exploitation et la séquence de démarrage.

Cette section fournit des informations sur la sauvegarde des VM, ainsi que sur leur restauration dans le même état sans un démarrage complet de la VM.

10.1. Fonctionnement de la sauvegarde et de la restauration des machines virtuelles

La sauvegarde d'une machine virtuelle (VM) permet d'enregistrer sa mémoire et l'état des périphériques sur le disque de l'hôte et d'arrêter immédiatement le processus de la VM. Vous pouvez sauvegarder une VM qui est en cours d'exécution ou en pause, et lors de la restauration, la VM reviendra à cet état.

Ce processus libère des ressources de RAM et de CPU sur le système hôte en échange d'espace disque, ce qui peut améliorer les performances du système hôte. Lorsque la VM est restaurée, le système d'exploitation invité n'ayant pas besoin d'être démarré, la longue période de démarrage est également évitée.

Pour sauvegarder une machine virtuelle, vous pouvez utiliser l'interface de ligne de commande (CLI). Pour plus d'informations, voir Sauvegarder des machines virtuelles à l'aide de l'interface de ligne de commande.

Pour restaurer une VM, vous pouvez utiliser le CLI ou l'interface graphique de la console web.

Vous pouvez également sauvegarder et restaurer l'état d'une VM à l'aide d'instantanés. Pour plus d'informations, voir Sauvegarde et restauration de l'état d'une machine virtuelle à l'aide d'instantanés.

10.2. Sauvegarder une machine virtuelle à l'aide de l'interface de ligne de commande

Vous pouvez enregistrer une machine virtuelle (VM) et son état actuel sur le disque de l'hôte. Cette fonction est utile, par exemple, lorsque vous devez utiliser les ressources de l'hôte à d'autres fins. La VM sauvegardée peut alors être rapidement restaurée à son état de fonctionnement antérieur.

Pour sauvegarder une VM à l'aide de la ligne de commande, suivez la procédure ci-dessous.

Conditions préalables

  • Assurez-vous que vous disposez d'un espace disque suffisant pour sauvegarder la VM et sa configuration. Notez que l'espace occupé par la VM dépend de la quantité de RAM allouée à cette VM.
  • S'assurer que la VM est persistante.
  • Optional: Sauvegarder les données importantes de la VM si nécessaire.

Procédure

  • Utilisez l'utilitaire virsh managedsave.

    Par exemple, la commande suivante arrête la VM demo-guest1 et enregistre sa configuration.

    # virsh managedsave demo-guest1
    Domain 'demo-guest1' saved by libvirt

    Le fichier VM sauvegardé est situé par défaut dans le répertoire /var/lib/libvirt/qemu/save sous le nom de demo-guest1.save.

    La prochaine fois que la VM sera démarrée, elle restaurera automatiquement l'état sauvegardé dans le fichier ci-dessus.

Vérification

  • Répertoriez les machines virtuelles pour lesquelles la fonction de gestion des sauvegardes est activée. Dans l'exemple suivant, les VM répertoriées sous saved ont leur sauvegarde gérée activée.

    # virsh list --managed-save --all
    Id    Name                           State
    ----------------------------------------------------
    -     demo-guest1                    saved
    -     demo-guest2                    shut off

    Pour dresser la liste des machines virtuelles dont l'image de sauvegarde est gérée :

    # virsh list --with-managed-save --all
    Id    Name                           State
    ----------------------------------------------------
    -     demo-guest1                    shut off

    Notez que pour lister les machines virtuelles sauvegardées qui sont dans un état d'arrêt, vous devez utiliser les options --all ou --inactive avec la commande.

Résolution de problèmes

  • Si le fichier VM sauvegardé est corrompu ou illisible, la restauration de la VM lancera un démarrage VM standard à la place.

10.3. Démarrer une machine virtuelle à l'aide de l'interface de ligne de commande

Vous pouvez utiliser l'interface de ligne de commande (CLI) pour démarrer une machine virtuelle (VM) arrêtée ou restaurer une VM sauvegardée. En utilisant l'interface de ligne de commande, vous pouvez démarrer des machines virtuelles locales et distantes.

Conditions préalables

  • Une VM inactive qui est déjà définie.
  • Le nom de la VM.
  • Pour les machines virtuelles distantes :

    • L'adresse IP de l'hôte où se trouve la VM.
    • Privilèges d'accès à la racine de l'hôte.

Procédure

  • Pour une VM locale, utilisez l'utilitaire virsh start.

    Par exemple, la commande suivante démarre la VM demo-guest1.

    # virsh start demo-guest1
    Domain 'demo-guest1' started
  • Pour une VM située sur un hôte distant, utilisez l'utilitaire virsh start ainsi que la connexion SSH QEMU à l'hôte.

    Par exemple, la commande suivante démarre la VM demo-guest1 sur l'hôte 192.0.2.1.

    # virsh -c qemu+ssh://root@192.0.2.1/system start demo-guest1
    
    root@192.0.2.1's password:
    
    Domain 'demo-guest1' started

10.4. Démarrer des machines virtuelles à l'aide de la console web

Si une machine virtuelle (VM) est dans l'état shut off, vous pouvez la démarrer à l'aide de la console web RHEL 9. Vous pouvez également configurer la VM pour qu'elle soit démarrée automatiquement au démarrage de l'hôte.

Conditions préalables

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur la VM que vous souhaitez démarrer.

    Une nouvelle page s'ouvre avec des informations détaillées sur la VM sélectionnée et des commandes pour arrêter et supprimer la VM.

  2. Cliquez sur Exécuter.

    La VM démarre et vous pouvez vous connecter à sa console ou à sa sortie graphique.

  3. Optional: Pour configurer la VM afin qu'elle démarre automatiquement au démarrage de l'hôte, cochez la case Autostart dans la section Overview.

    Si vous utilisez des interfaces réseau qui ne sont pas gérées par libvirt, vous devez également apporter des modifications supplémentaires à la configuration de systemd. Sinon, les machines virtuelles concernées risquent de ne pas démarrer, voir Démarrage automatique des machines virtuelles au démarrage de l'hôte.

Chapitre 11. Clonage de machines virtuelles

Pour créer rapidement une nouvelle machine virtuelle (VM) avec un ensemble spécifique de propriétés, vous pouvez clone une VM existante.

Le clonage crée une nouvelle VM qui utilise sa propre image disque pour le stockage, mais la plupart de la configuration et des données stockées du clone sont identiques à celles de la VM source. Cela permet de préparer plusieurs VM optimisées pour une certaine tâche sans avoir à optimiser chaque VM individuellement.

11.1. Comment fonctionne le clonage de machines virtuelles ?

Le clonage d'une machine virtuelle (VM) copie la configuration XML de la VM source et de ses images de disque, et apporte des ajustements aux configurations pour garantir l'unicité de la nouvelle VM. Il s'agit notamment de changer le nom de la VM et de s'assurer qu'elle utilise les clones d'images de disque. Néanmoins, les données stockées sur les disques virtuels du clone sont identiques à celles de la VM source.

Ce processus est plus rapide que la création d'une nouvelle VM et son installation avec un système d'exploitation invité, et peut être utilisé pour générer rapidement des VM avec une configuration et un contenu spécifiques.

Si vous envisagez de créer plusieurs clones d'une VM, créez d'abord une VM template qui ne contient pas de clone :

  • Paramètres uniques, tels que la configuration MAC persistante du réseau, qui peuvent empêcher les clones de fonctionner correctement.
  • Les données sensibles, telles que les clés SSH et les fichiers de mots de passe.

Pour plus d'informations, voir Création de modèles de machines virtuelles.

11.2. Création de modèles de machines virtuelles

Pour créer plusieurs clones de machines virtuelles (VM) qui fonctionnent correctement, vous pouvez supprimer les informations et les configurations qui sont propres à une VM source, telles que les clés SSH ou la configuration MAC du réseau persistant. Vous créez ainsi une VM template, que vous pouvez utiliser pour créer facilement et en toute sécurité des clones de VM.

Vous pouvez créer des modèles de VM à l'aide de l'utilitaire virt-sysprep ou les créer manuellement en fonction de vos besoins.

11.2.1. Création d'un modèle de machine virtuelle à l'aide de virt-sysprep

Pour créer un modèle de clonage à partir d'une machine virtuelle (VM) existante, vous pouvez utiliser l'utilitaire virt-sysprep. Cet utilitaire supprime certaines configurations susceptibles d'entraîner un fonctionnement incorrect du clone, telles que des paramètres réseau spécifiques ou des métadonnées d'enregistrement du système. Par conséquent, virt-sysprep rend la création de clones de la VM plus efficace et garantit un fonctionnement plus fiable des clones.

Conditions préalables

  • Le paquet guestfs-tools, qui contient l'utilitaire virt-sysprep, est installé sur votre hôte :

    # dnf install guestfs-tools
  • La VM source destinée à servir de modèle est arrêtée.
  • Vous savez où se trouve l'image disque de la VM source et vous êtes le propriétaire du fichier image disque de la VM.

    Notez que les images de disque pour les machines virtuelles créées dans la connexion système de libvirt sont situées dans le répertoire /var/lib/libvirt/images et appartiennent par défaut à l'utilisateur root :

    # ls -la /var/lib/libvirt/images
    -rw-------.  1 root root  9665380352 Jul 23 14:50 a-really-important-vm.qcow2
    -rw-------.  1 root root  8591507456 Jul 26  2017 an-actual-vm-that-i-use.qcow2
    -rw-------.  1 root root  8591507456 Jul 26  2017 totally-not-a-fake-vm.qcow2
    -rw-------.  1 root root 10739318784 Sep 20 17:57 another-vm-example.qcow2
  • Optional: Toutes les données importantes se trouvant sur le disque de la VM source ont été sauvegardées. Si vous souhaitez conserver la VM source intacte, clonez-la d'abord et transformez le clone en modèle.

Procédure

  1. Assurez-vous d'être connecté en tant que propriétaire de l'image disque de la VM :

    # whoami
    root
  2. Optional: Copier l'image disque de la VM.

    # cp /var/lib/libvirt/images/a-really-important-vm.qcow2 /var/lib/libvirt/images/a-really-important-vm-original.qcow2

    Il est utilisé ultérieurement pour vérifier que la VM a bien été transformée en modèle.

  3. Utilisez la commande suivante et remplacez /var/lib/libvirt/images/a-really-important-vm.qcow2 par le chemin d'accès à l'image disque de la VM source.

    # virt-sysprep -a /var/lib/libvirt/images/a-really-important-vm.qcow2
    [   0.0] Examining the guest ...
    [   7.3] Performing "abrt-data" ...
    [   7.3] Performing "backup-files" ...
    [   9.6] Performing "bash-history" ...
    [   9.6] Performing "blkid-tab" ...
    [...]

Vérification

  • Pour confirmer que le processus a réussi, comparez l'image disque modifiée à l'image originale. L'exemple suivant montre la création réussie d'un modèle :

    # virt-diff -a /var/lib/libvirt/images/a-really-important-vm-orig.qcow2 -A /var/lib/libvirt/images/a-really-important-vm.qcow2
    - - 0644       1001 /etc/group-
    - - 0000        797 /etc/gshadow-
    = - 0444         33 /etc/machine-id
    [...]
    - - 0600        409 /home/username/.bash_history
    - d 0700          6 /home/username/.ssh
    - - 0600        868 /root/.bash_history
    [...]

Ressources supplémentaires

11.2.2. Créer manuellement un modèle de machine virtuelle

Pour créer un modèle à partir d'une machine virtuelle (VM) existante, vous pouvez réinitialiser ou déconfigurer manuellement une VM invitée afin de la préparer au clonage.

Conditions préalables

  • Assurez-vous de connaître l'emplacement de l'image disque de la VM source et d'être le propriétaire du fichier d'image disque de la VM.

    Notez que les images de disque pour les machines virtuelles créées dans la connexion système de libvirt sont par défaut situées dans le répertoire /var/lib/libvirt/images et appartiennent à l'utilisateur root :

    # ls -la /var/lib/libvirt/images
    -rw-------.  1 root root  9665380352 Jul 23 14:50 a-really-important-vm.qcow2
    -rw-------.  1 root root  8591507456 Jul 26  2017 an-actual-vm-that-i-use.qcow2
    -rw-------.  1 root root  8591507456 Jul 26  2017 totally-not-a-fake-vm.qcow2
    -rw-------.  1 root root 10739318784 Sep 20 17:57 another-vm-example.qcow2
  • Assurez-vous que la machine virtuelle est arrêtée.
  • Optional: Toutes les données importantes présentes sur le disque de la VM ont été sauvegardées. Si vous souhaitez conserver la VM source intacte, clonez-la d'abord et modifiez le clone pour créer un modèle.

Procédure

  1. Configurer la VM pour le clonage :

    1. Installer les logiciels nécessaires sur le clone.
    2. Configurez tous les paramètres non uniques pour le système d'exploitation.
    3. Configurer les paramètres de l'application qui ne sont pas uniques.
  2. Supprimer la configuration du réseau :

    1. Supprimez toutes les règles udev persistantes à l'aide de la commande suivante :

      # rm -f /etc/udev/rules.d/70-persistent-net.rules
      Note

      Si les règles udev ne sont pas supprimées, le nom du premier NIC peut être eth1 au lieu de eth0.

    2. Supprimer les informations uniques des fichiers NMConnection dans le répertoire /etc/NetworkManager/system-connections/.

      1. Supprimez l'adresse MAC, l'adresse IP, le DNS, la passerelle et toute autre information unique ou les paramètres non souhaités.

        *ID=ExampleNetwork
        BOOTPROTO="dhcp"
        HWADDR="AA:BB:CC:DD:EE:FF"                  <- REMOVE
        NM_CONTROLLED="yes"
        ONBOOT="yes"
        TYPE="Ethernet"
        UUID="954bd22c-f96c-4b59-9445-b39dd86ac8ab" <- REMOVE
      2. Supprimer les informations similaires de unique et les paramètres non souhaités des fichiers /etc/hosts et /etc/resolv.conf.
  3. Supprimer les détails de l'enregistrement :

    • Pour les machines virtuelles enregistrées sur le Red Hat Network (RHN) :

      # rm /etc/sysconfig/rhn/systemid
    • Pour les machines virtuelles enregistrées auprès du gestionnaire d'abonnement Red Hat (RHSM) :

      • Si vous n'avez pas l'intention d'utiliser la VM d'origine :

        # subscription-manager unsubscribe --all # subscription-manager unregister # subscription-manager clean
      • Si vous prévoyez d'utiliser la VM d'origine :

        # subscription-manager clean
        Note

        Le profil RHSM original reste dans le portail avec votre code d'identification. Utilisez la commande suivante pour réactiver votre enregistrement RHSM sur la VM après son clonage :

        # subscription-manager register --consumerid=71rd64fx-6216-4409-bf3a-e4b7c7bd8ac9
  4. Supprimer les autres détails uniques :

    1. Supprimer les paires de clés publiques et privées SSH :

      # rm -rf /etc/ssh/ssh_host_example
    2. Supprimer la configuration des périphériques LVM :

      # rm /etc/lvm/devices/system.devices
    3. Supprimer tout autre identifiant ou configuration spécifique à l'application qui pourrait entraîner des conflits en cas d'exécution sur plusieurs machines.
  5. Supprimez le fichier gnome-initial-setup-done pour configurer la VM afin qu'elle exécute l'assistant de configuration au prochain démarrage :

    # rm ~/.config/gnome-initial-setup-done
    Note

    L'assistant qui s'exécute au démarrage suivant dépend des configurations qui ont été supprimées de la VM. En outre, lors du premier démarrage du clone, il est recommandé de modifier le nom d'hôte.

11.3. Clonage d'une machine virtuelle à l'aide de l'interface de ligne de commande

Pour les tests, afin de créer une nouvelle machine virtuelle (VM) avec un ensemble spécifique de propriétés, vous pouvez cloner une VM existante à l'aide de l'interface CLI.

Conditions préalables

  • La VM source est arrêtée.
  • Assurez-vous qu'il y a suffisamment d'espace disque pour stocker les images de disque clonées.
  • Optional: Lorsque vous créez plusieurs clones de VM, supprimez les données et les paramètres uniques de la VM source afin de garantir le bon fonctionnement des VM clonées. Pour plus d'informations, voir Création de modèles de machines virtuelles.

Procédure

  • Utilisez l'utilitaire virt-clone avec les options appropriées à votre environnement et à votre cas d'utilisation.

    Sample use cases

    • La commande suivante clone une VM locale nommée example-VM-1 et crée la VM example-VM-1-clone. Elle crée et alloue également l'image disque example-VM-1-clone.qcow2 au même endroit que l'image disque de la VM d'origine et avec les mêmes données :

      # virt-clone --original example-VM-1 --auto-clone
      Allocating 'example-VM-1-clone.qcow2'                            | 50.0 GB  00:05:37
      
      Clone 'example-VM-1-clone' created successfully.
    • La commande suivante clone une VM nommée example-VM-2, et crée une VM locale nommée example-VM-3, qui n'utilise que deux des multiples disques de example-VM-2:

      # virt-clone --original example-VM-2 --name example-VM-3 --file /var/lib/libvirt/images/disk-1-example-VM-2.qcow2 --file /var/lib/libvirt/images/disk-2-example-VM-2.qcow2
      Allocating 'disk-1-example-VM-2-clone.qcow2'                                      | 78.0 GB  00:05:37
      Allocating 'disk-2-example-VM-2-clone.qcow2'                                      | 80.0 GB  00:05:37
      
      Clone 'example-VM-3' created successfully.
    • Pour cloner votre VM sur un autre hôte, migrez la VM sans la redéfinir sur l'hôte local. Par exemple, les commandes suivantes clonent la VM example-VM-3 précédemment créée sur le système distant 192.0.2.1, y compris ses disques locaux. Notez que vous devez disposer des privilèges root pour exécuter ces commandes sur 192.0.2.1:

      # virsh migrate --offline --persistent example-VM-3 qemu+ssh://root@192.0.2.1/system
      root@192.0.2.1's password:
      
      # scp /var/lib/libvirt/images/<disk-1-example-VM-2-clone>.qcow2 root@192.0.2.1/<user@remote_host.com>://var/lib/libvirt/images/
      
      # scp /var/lib/libvirt/images/<disk-2-example-VM-2-clone>.qcow2 root@192.0.2.1/<user@remote_host.com>://var/lib/libvirt/images/

Vérification

  1. Pour vérifier que la VM a été clonée avec succès et qu'elle fonctionne correctement :

    1. Confirmez que le clone a été ajouté à la liste des VM sur votre hôte :

      # virsh list --all
      Id   Name                  State
      ---------------------------------------
      -    example-VM-1          shut off
      -    example-VM-1-clone    shut off
    2. Démarrez le clone et observez s'il démarre :

      # virsh start example-VM-1-clone
      Domain 'example-VM-1-clone' started

Ressources supplémentaires

11.4. Clonage d'une machine virtuelle à l'aide de la console web

Pour créer de nouvelles machines virtuelles (VM) avec un ensemble spécifique de propriétés, vous pouvez cloner une VM que vous avez précédemment configurée à l'aide de la console web.

Note

Le clonage d'une VM entraîne également le clonage des disques associés à cette VM.

Conditions préalables

Procédure

  1. Dans l'interface Machines virtuelles de la console web, cliquez sur le bouton Menu de la VM que vous souhaitez cloner.

    Un menu déroulant apparaît avec des commandes pour diverses opérations VM.

  2. Cliquez sur Cloner.

    La boîte de dialogue Créer un clone de VM s'affiche.

    Create a clone VM dialog box with an option to enter a new name for the VM.
  3. Optional: Saisissez un nouveau nom pour le clone de VM.
  4. Cliquez sur Cloner.

    Une nouvelle VM est créée sur la base de la VM source.

Vérification

  • Confirmez que la VM clonée apparaît dans la liste des VM disponibles sur votre hôte.

Chapitre 12. Migration des machines virtuelles

Si l'hôte actuel d'une machine virtuelle (VM) ne convient plus ou ne peut plus être utilisé, ou si vous souhaitez redistribuer la charge de travail d'hébergement, vous pouvez migrer la VM vers un autre hôte KVM.

12.1. Comment fonctionne la migration des machines virtuelles

La partie essentielle de la migration d'une machine virtuelle (VM) consiste à copier la configuration XML d'une VM vers une machine hôte différente. Si la VM migrée n'est pas arrêtée, la migration transfère également l'état de la mémoire de la VM et de tous les périphériques virtualisés vers une machine hôte de destination. Pour que la VM reste fonctionnelle sur l'hôte de destination, les images de disque de la VM doivent rester disponibles.

Par défaut, la VM migrée est transitoire sur l'hôte de destination et reste définie sur l'hôte source.

Vous pouvez migrer une VM en cours d'exécution en utilisant les migrations live ou non-live. Pour migrer une VM éteinte, vous devez utiliser une migration offline. Pour plus de détails, voir le tableau suivant.

Tableau 12.1. Types de migration de VM
Type de migrationDescriptionCas d'utilisationStorage requirements

Live migration

La VM continue de fonctionner sur la machine hôte source pendant que KVM transfère les pages mémoire de la VM vers la machine hôte de destination. Lorsque la migration est presque terminée, KVM suspend brièvement la VM et la reprend sur l'hôte de destination.

Utile pour les machines virtuelles qui nécessitent une disponibilité constante. Cependant, les machines virtuelles qui modifient les pages de mémoire plus rapidement que KVM ne peut les transférer, telles que les machines virtuelles soumises à une forte charge d'E/S, ne peuvent pas être migrées en direct, et non-live migration doit être utilisé à la place.

Les images de disque de la VM doivent être situées sur un réseau partagé, accessible à la fois à l'hôte source et à l'hôte de destination.

Non-live migration

Suspend la VM, copie sa configuration et sa mémoire sur l'hôte de destination et reprend la VM.

Elle entraîne une indisponibilité de la VM, mais elle est généralement plus fiable que la migration en direct. Recommandé pour les machines virtuelles soumises à une forte charge de mémoire.

Les images de disque de la VM doivent être situées sur un réseau partagé, accessible à la fois à l'hôte source et à l'hôte de destination.

Offline migration

Déplace la configuration de la VM vers l'hôte de destination

Recommandé pour les machines virtuelles arrêtées et dans les cas où l'arrêt de la machine virtuelle ne perturbe pas la charge de travail.

Les images de disque de la VM ne doivent pas nécessairement être disponibles sur un réseau partagé et peuvent être copiées ou déplacées manuellement vers l'hôte de destination.

Vous pouvez également combiner live migration et non-live migration. Cette méthode est recommandée, par exemple, lors de la migration en direct d'une VM qui utilise un très grand nombre de vCPU ou une grande quantité de mémoire, ce qui empêche la migration de s'achever. Dans un tel scénario, vous pouvez suspendre la VM source. Cela permet d'éviter la génération de pages de mémoire sales supplémentaires et d'augmenter considérablement les chances de réussite de la migration. En fonction de la charge de travail de l'invité et du nombre de pages statiques pendant la migration, une telle migration hybrid peut entraîner un temps d'arrêt nettement inférieur à celui d'une migration non live.

12.2. Avantages de la migration des machines virtuelles

La migration des machines virtuelles (VM) peut être utile pour :

Équilibrage de la charge
Les machines virtuelles peuvent être déplacées vers des machines hôtes moins utilisées si leur hôte est surchargé ou si un autre hôte est sous-utilisé.
Indépendance du matériel
Lorsque vous avez besoin de mettre à niveau, d'ajouter ou de supprimer des périphériques matériels sur la machine hôte, vous pouvez déplacer en toute sécurité les machines virtuelles vers d'autres hôtes. Cela signifie que les VM ne subissent pas de temps d'arrêt pour les améliorations matérielles.
Économie d'énergie
Les machines virtuelles peuvent être redistribuées à d'autres hôtes, et les systèmes hôtes non chargés peuvent ainsi être mis hors tension pour économiser de l'énergie et réduire les coûts pendant les périodes de faible utilisation.
Migration géographique
Les machines virtuelles peuvent être déplacées vers un autre emplacement physique pour réduire la latence ou pour d'autres raisons.

12.3. Limites de la migration des machines virtuelles

Avant de migrer des machines virtuelles (VM) dans RHEL 9, assurez-vous de connaître les limites de la migration.

  • La migration des machines virtuelles depuis ou vers une connexion de session de libvirt n'est pas fiable et n'est donc pas recommandée.
  • Les machines virtuelles qui utilisent certaines fonctions et configurations ne fonctionneront pas correctement si elles sont migrées, ou la migration échouera. Il s'agit notamment des fonctions suivantes

    • Passage d'appareil
    • Affectation des dispositifs SR-IOV
    • Dispositifs médiatisés, tels que les vGPU
  • Une migration entre des hôtes qui utilisent l'épinglage NUMA (Non-Uniform Memory Access) ne fonctionne que si les hôtes ont une topologie similaire. Cependant, les performances des charges de travail en cours d'exécution peuvent être affectées par la migration.
  • Les CPU émulés, tant sur la VM source que sur la VM de destination, doivent être identiques, sinon la migration risque d'échouer. Toute différence entre les VM dans les domaines suivants liés au processeur peut entraîner des problèmes de migration :

    • Modèle de CPU

    • Paramètres du micrologiciel
    • Version du microcode
    • Version du BIOS
    • Paramètres du BIOS
    • Version de QEMU
    • Version du noyau
  • La migration en direct d'une VM qui utilise plus de 1 To de mémoire peut, dans certains cas, ne pas être fiable. Pour savoir comment éviter ou résoudre ce problème, voir La migration en direct d'une VM prend beaucoup de temps sans se terminer.

12.4. Vérification de la compatibilité de l'unité centrale de l'hôte pour la migration des machines virtuelles

Pour que les machines virtuelles (VM) migrées fonctionnent correctement sur l'hôte de destination, les CPU des hôtes source et de destination doivent être compatibles. Pour vous en assurer, calculez une base commune de CPU avant de commencer la migration.

Note

Les instructions de cette section s'appuient sur un exemple de scénario de migration avec les processeurs hôtes suivants :

  • Hôte source : Intel Core i7-8650U
  • Hôtes de destination : Intel Xeon CPU E5-2620 v2

Conditions préalables

  • La virtualisation est installée et activée sur votre système.
  • Vous disposez d'un accès administrateur à l'hôte source et à l'hôte de destination pour la migration.

Procédure

  1. Sur l'hôte source, obtenez les caractéristiques de son processeur et collez-les dans un nouveau fichier XML, tel que domCaps-CPUs.xml.

    # virsh domcapabilities | xmllint --xpath "//cpu/mode[@name='host-model']" - > domCaps-CPUs.xml
  2. Dans le fichier XML, remplacez les balises <mode> </mode> par <cpu> </cpu>.
  3. Optional: Vérifiez que le contenu du fichier domCaps-CPUs.xml ressemble à ce qui suit :

    # cat domCaps-CPUs.xml
    
        <cpu>
              <model fallback="forbid">Skylake-Client-IBRS</model>
              <vendor>Intel</vendor>
              <feature policy="require" name="ss"/>
              <feature policy="require" name="vmx"/>
              <feature policy="require" name="pdcm"/>
              <feature policy="require" name="hypervisor"/>
              <feature policy="require" name="tsc_adjust"/>
              <feature policy="require" name="clflushopt"/>
              <feature policy="require" name="umip"/>
              <feature policy="require" name="md-clear"/>
              <feature policy="require" name="stibp"/>
              <feature policy="require" name="arch-capabilities"/>
              <feature policy="require" name="ssbd"/>
              <feature policy="require" name="xsaves"/>
              <feature policy="require" name="pdpe1gb"/>
              <feature policy="require" name="invtsc"/>
              <feature policy="require" name="ibpb"/>
              <feature policy="require" name="ibrs"/>
              <feature policy="require" name="amd-stibp"/>
              <feature policy="require" name="amd-ssbd"/>
              <feature policy="require" name="rsba"/>
              <feature policy="require" name="skip-l1dfl-vmentry"/>
              <feature policy="require" name="pschange-mc-no"/>
              <feature policy="disable" name="hle"/>
              <feature policy="disable" name="rtm"/>
        </cpu>
  4. Sur l'hôte de destination, utilisez la commande suivante pour obtenir les caractéristiques de son processeur :

    # virsh domcapabilities | xmllint --xpath "//cpu/mode[@name='host-model']" -
    
        <mode name="host-model" supported="yes">
                <model fallback="forbid">IvyBridge-IBRS</model>
                <vendor>Intel</vendor>
                <feature policy="require" name="ss"/>
                <feature policy="require" name="vmx"/>
                <feature policy="require" name="pdcm"/>
                <feature policy="require" name="pcid"/>
                <feature policy="require" name="hypervisor"/>
                <feature policy="require" name="arat"/>
                <feature policy="require" name="tsc_adjust"/>
                <feature policy="require" name="umip"/>
                <feature policy="require" name="md-clear"/>
                <feature policy="require" name="stibp"/>
                <feature policy="require" name="arch-capabilities"/>
                <feature policy="require" name="ssbd"/>
                <feature policy="require" name="xsaveopt"/>
                <feature policy="require" name="pdpe1gb"/>
                <feature policy="require" name="invtsc"/>
                <feature policy="require" name="ibpb"/>
                <feature policy="require" name="amd-ssbd"/>
                <feature policy="require" name="skip-l1dfl-vmentry"/>
                <feature policy="require" name="pschange-mc-no"/>
        </mode>
  5. Ajoutez les caractéristiques de l'unité centrale obtenues de l'hôte de destination au fichier domCaps-CPUs.xml de l'hôte source. Remplacez à nouveau les balises <mode> </mode> par <cpu> </cpu> et enregistrez le fichier.
  6. Optional: Vérifiez que le fichier XML contient à présent les caractéristiques de l'unité centrale des deux hôtes.

    # cat domCaps-CPUs.xml
    
        <cpu>
              <model fallback="forbid">Skylake-Client-IBRS</model>
              <vendor>Intel</vendor>
              <feature policy="require" name="ss"/>
              <feature policy="require" name="vmx"/>
              <feature policy="require" name="pdcm"/>
              <feature policy="require" name="hypervisor"/>
              <feature policy="require" name="tsc_adjust"/>
              <feature policy="require" name="clflushopt"/>
              <feature policy="require" name="umip"/>
              <feature policy="require" name="md-clear"/>
              <feature policy="require" name="stibp"/>
              <feature policy="require" name="arch-capabilities"/>
              <feature policy="require" name="ssbd"/>
              <feature policy="require" name="xsaves"/>
              <feature policy="require" name="pdpe1gb"/>
              <feature policy="require" name="invtsc"/>
              <feature policy="require" name="ibpb"/>
              <feature policy="require" name="ibrs"/>
              <feature policy="require" name="amd-stibp"/>
              <feature policy="require" name="amd-ssbd"/>
              <feature policy="require" name="rsba"/>
              <feature policy="require" name="skip-l1dfl-vmentry"/>
              <feature policy="require" name="pschange-mc-no"/>
              <feature policy="disable" name="hle"/>
              <feature policy="disable" name="rtm"/>
        </cpu>
        <cpu>
              <model fallback="forbid">IvyBridge-IBRS</model>
              <vendor>Intel</vendor>
              <feature policy="require" name="ss"/>
              <feature policy="require" name="vmx"/>
              <feature policy="require" name="pdcm"/>
              <feature policy="require" name="pcid"/>
              <feature policy="require" name="hypervisor"/>
              <feature policy="require" name="arat"/>
              <feature policy="require" name="tsc_adjust"/>
              <feature policy="require" name="umip"/>
              <feature policy="require" name="md-clear"/>
              <feature policy="require" name="stibp"/>
              <feature policy="require" name="arch-capabilities"/>
              <feature policy="require" name="ssbd"/>
              <feature policy="require" name="xsaveopt"/>
              <feature policy="require" name="pdpe1gb"/>
              <feature policy="require" name="invtsc"/>
              <feature policy="require" name="ibpb"/>
              <feature policy="require" name="amd-ssbd"/>
              <feature policy="require" name="skip-l1dfl-vmentry"/>
              <feature policy="require" name="pschange-mc-no"/>
        </cpu>
  7. Utilisez le fichier XML pour calculer la ligne de base de la fonctionnalité CPU pour la VM que vous avez l'intention de migrer.

    # virsh hypervisor-cpu-baseline domCaps-CPUs.xml
    
        <cpu mode='custom' match='exact'>
          <model fallback='forbid'>IvyBridge-IBRS</model>
          <vendor>Intel</vendor>
          <feature policy='require' name='ss'/>
          <feature policy='require' name='vmx'/>
          <feature policy='require' name='pdcm'/>
          <feature policy='require' name='pcid'/>
          <feature policy='require' name='hypervisor'/>
          <feature policy='require' name='arat'/>
          <feature policy='require' name='tsc_adjust'/>
          <feature policy='require' name='umip'/>
          <feature policy='require' name='md-clear'/>
          <feature policy='require' name='stibp'/>
          <feature policy='require' name='arch-capabilities'/>
          <feature policy='require' name='ssbd'/>
          <feature policy='require' name='xsaveopt'/>
          <feature policy='require' name='pdpe1gb'/>
          <feature policy='require' name='invtsc'/>
          <feature policy='require' name='ibpb'/>
          <feature policy='require' name='amd-ssbd'/>
          <feature policy='require' name='skip-l1dfl-vmentry'/>
          <feature policy='require' name='pschange-mc-no'/>
        </cpu>
  8. Ouvrez la configuration XML de la VM que vous souhaitez migrer et remplacez le contenu de la section <cpu> par les paramètres obtenus à l'étape précédente.

    # virsh edit VM-name
  9. Si la VM est en cours d'exécution, redémarrez-la.

    # virsh reboot VM-name

12.5. Partage d'images de disques de machines virtuelles avec d'autres hôtes

Pour effectuer une migration en direct d'une machine virtuelle (VM) entre des hôtes KVM pris en charge, un stockage VM partagé est nécessaire. La procédure suivante fournit des instructions pour partager une image de VM stockée localement avec l'hôte source et l'hôte de destination à l'aide du protocole NFS.

Conditions préalables

  • La machine virtuelle destinée à la migration est arrêtée.
  • Optional: Un système hôte est disponible pour héberger le stockage qui n'est pas l'hôte source ou l'hôte de destination, mais l'hôte source et l'hôte de destination peuvent tous deux l'atteindre via le réseau. Il s'agit de la solution optimale pour le stockage partagé et elle est recommandée par Red Hat.
  • Assurez-vous que le verrouillage des fichiers NFS n'est pas utilisé car il n'est pas pris en charge par KVM.
  • NFS est installé et activé sur les hôtes source et destination. Voir
  • Déploiement d'un serveur NFS.

Procédure

  1. Connectez-vous à l'hôte qui fournira le stockage partagé. Dans cet exemple, il s'agit de l'hôte example-shared-storage:

    # ssh root@example-shared-storage
    root@example-shared-storage's password:
    Last login: Mon Sep 24 12:05:36 2019
    root~#
  2. Créez un répertoire sur l'hôte source qui contiendra l'image disque et sera partagé avec les hôtes de migration :

    # mkdir /var/lib/libvirt/shared-images
  3. Copiez l'image disque de la VM depuis l'hôte source vers le répertoire nouvellement créé. L'exemple suivant copie l'image disque example-disk-1 de la VM dans le répertoire /var/lib/libvirt/shared-images/ de l'hôte example-shared-storage:

    # scp /var/lib/libvirt/images/example-disk-1.qcow2 root@example-shared-storage:/var/lib/libvirt/shared-images/example-disk-1.qcow2
  4. Sur l'hôte que vous voulez utiliser pour partager le stockage, ajoutez le répertoire de partage au fichier /etc/exports. L'exemple suivant partage le répertoire /var/lib/libvirt/shared-images avec les hôtes example-source-machine et example-destination-machine:

    # /var/lib/libvirt/shared-images example-source-machine(rw,no_root_squash) example-destination-machine(rw,no\_root_squash)
  5. Sur l'hôte source et l'hôte de destination, montez le répertoire partagé dans le répertoire /var/lib/libvirt/images:

    # mount example-shared-storage:/var/lib/libvirt/shared-images /var/lib/libvirt/images

Vérification

  • Démarrez la VM sur l'hôte source et observez si elle démarre correctement.

Ressources supplémentaires

12.6. Migrer une machine virtuelle à l'aide de l'interface de ligne de commande

Si l'hôte actuel d'une machine virtuelle (VM) ne convient plus ou ne peut plus être utilisé, ou si vous souhaitez redistribuer la charge de travail d'hébergement, vous pouvez migrer la VM vers un autre hôte KVM. La procédure suivante fournit des instructions et des exemples pour divers scénarios de migration.

Conditions préalables

  • L'hôte source et l'hôte de destination utilisent tous deux l'hyperviseur KVM.
  • L'hôte source et l'hôte de destination sont en mesure de se joindre l'un l'autre sur le réseau. Utilisez l'utilitaire ping pour le vérifier.
  • Assurez-vous que les ports suivants sont ouverts sur l'hôte de destination.

    • Le port 22 est nécessaire pour se connecter à l'hôte de destination en utilisant SSH.
    • Le port 16509 est nécessaire pour se connecter à l'hôte de destination en utilisant TLS.
    • Le port 16514 est nécessaire pour se connecter à l'hôte de destination en utilisant TCP.
    • Les ports 49152-49215 sont nécessaires à QEMU pour transférer les données de migration de la mémoire et du disque.
  • Pour que la migration soit prise en charge par Red Hat, l'hôte source et l'hôte de destination doivent utiliser des systèmes d'exploitation et des types de machines spécifiques. Pour vous assurer que c'est le cas, consultez la section Hôtes pris en charge pour la migration de machines virtuelles.
  • La machine virtuelle doit être compatible avec les caractéristiques du processeur de l'hôte de destination. Pour s'en assurer, voir Vérification de la compatibilité du CPU de l'hôte pour la migration de la machine virtuelle.
  • Les images de disque des machines virtuelles qui seront migrées sont situées sur un emplacement réseau distinct accessible à la fois à l'hôte source et à l'hôte de destination. Cette opération est facultative pour la migration hors ligne, mais obligatoire pour la migration d'une VM en cours d'exécution.

    Pour obtenir des instructions sur la configuration d'un tel stockage partagé de VM, voir Partage d'images de disques de machines virtuelles avec d'autres hôtes.

  • Lors de la migration d'une VM en cours d'exécution, la bande passante de votre réseau doit être supérieure à la vitesse à laquelle la VM génère des pages de mémoire sale.

    Pour obtenir le taux de pages sales de votre VM avant de lancer la migration en direct, procédez comme suit :

    • Surveillez le taux de génération de pages sales de la VM pendant une courte période.

      # virsh domdirtyrate-calc example-VM 30
    • Une fois le contrôle terminé, obtenez ses résultats :

      # virsh domstats example-VM --dirtyrate
      Domain: 'example-VM'
        dirtyrate.calc_status=2
        dirtyrate.calc_start_time=200942
        dirtyrate.calc_period=30
        dirtyrate.megabytes_per_second=2

      Dans cet exemple, la VM génère 2 Mo de pages de mémoire sale par seconde. Si vous tentez de migrer en direct une telle VM sur un réseau dont la bande passante est inférieure ou égale à 2 Mo/s, la migration en direct ne progressera pas si vous ne mettez pas la VM en pause ou si vous ne réduisez pas sa charge de travail.

      Pour s'assurer que la migration en direct se termine avec succès, Red Hat recommande que la bande passante de votre réseau soit significativement plus grande que le taux de génération de pages sales de la VM.

  • Lors de la migration d'une VM existante dans un réseau de robinets à pont public, les hôtes source et destination doivent être situés sur le même réseau. Dans le cas contraire, le réseau VM ne fonctionnera pas après la migration.
Note

La valeur de l'option calc_period peut varier en fonction de la charge de travail et du taux de pages sales. Vous pouvez expérimenter plusieurs valeurs de calc_period pour déterminer la période la plus appropriée en fonction du taux de pages sales dans votre environnement.

  • Lors de la migration d'une VM, le client virsh sur l'hôte source peut utiliser l'un des protocoles suivants pour se connecter au démon libvirt sur l'hôte de destination. Les exemples de la procédure suivante utilisent une connexion SSH, mais vous pouvez en choisir une autre.

    • Si vous souhaitez que libvirt utilise une connexion SSH, assurez-vous que le socket virtqemud est activé et fonctionne sur l'hôte de destination.

      # systemctl enable --now virtqemud.socket
    • Si vous souhaitez que libvirt utilise une connexion TLS, assurez-vous que le socket virtproxyd-tls est activé et fonctionne sur l'hôte de destination.

      # systemctl enable --now virtproxyd-tls.socket
    • Si vous souhaitez que libvirt utilise une connexion TCP, assurez-vous que le socket virtproxyd-tcp est activé et fonctionne sur l'hôte de destination.

      # systemctl enable --now virtproxyd-tcp.socket

Procédure

  1. Utilisez la commande virsh migrate avec les options appropriées à vos besoins de migration.

    1. La commande suivante permet de migrer la VM example-VM-1 de votre hôte local vers la connexion système de l'hôte example-destination à l'aide d'un tunnel SSH. La machine virtuelle continue de fonctionner pendant la migration.

      # virsh migrate --persistent --live example-VM-1 qemu ssh://example-destination/system
    2. Les commandes suivantes vous permettent d'apporter des ajustements manuels à la configuration de la VM example-VM-2 fonctionnant sur votre hôte local, puis de migrer la VM vers l'hôte example-destination. La VM migrée utilisera automatiquement la configuration mise à jour.

      # virsh dumpxml --migratable example-VM-2 > example-VM-2.xml
      # vi example-VM-2.xml
      # virsh migrate --live --persistent --xml example-VM-2.xml example-VM-2 qemu+ssh://example-destination/system

      Cette procédure peut s'avérer utile, par exemple, lorsque l'hôte de destination doit utiliser un chemin différent pour accéder au stockage partagé de la VM ou lorsqu'il s'agit de configurer une fonction spécifique à l'hôte de destination.

    3. La commande suivante suspend la VM example-VM-3 de l'hôte example-source, la migre vers l'hôte example-destination et lui demande d'utiliser la configuration XML ajustée, fournie par le fichier example-VM-3-alt.xml. Lorsque la migration est terminée, libvirt reprend la VM sur l'hôte de destination.

      # virsh migrate example-VM-3 qemu ssh://example-source/system qemu ssh://example-destination/system --xml example-VM-3-alt.xml

      Après la migration, la VM est à l'arrêt sur l'hôte source, et la copie migrée est supprimée après son arrêt.

    4. La procédure suivante supprime la VM example-VM-4 arrêtée de l'hôte example-source et déplace sa configuration vers l'hôte example-destination.

      # virsh migrate --offline --persistent --undefinesource example-VM-4 qemu ssh://example-source/system qemu ssh://example-destination/system

      Notez que ce type de migration ne nécessite pas le déplacement de l'image disque de la VM vers le stockage partagé. Cependant, pour que la VM soit utilisable sur l'hôte de destination, vous devez également migrer l'image disque de la VM. Par exemple :

      # scp root@example-source:/var/lib/libvirt/images/example-VM-4.qcow2 root@example-destination:/var/lib/libvirt/images/example-VM-4.qcow2
    5. La commande suivante migre la VM example-VM-5 vers l'hôte example-destination et utilise plusieurs connexions parallèles, également connues sous le nom de migration à descripteurs de fichiers multiples (multi-FD). La migration multi-FD permet d'accélérer la migration en utilisant toute la bande passante disponible pour le processus de migration.

      # virsh migrate --parallel --parallel-connections 4 <example-VM-5> qemu ssh://<example-destination>/system

      Cet exemple utilise 4 canaux multi-FD pour migrer la VM example-VM-5. Il est recommandé d'utiliser un canal pour chaque 10 Gbps de bande passante réseau disponible. La valeur par défaut est de 2 canaux.

  2. Attendez la fin de la migration. Le processus peut prendre un certain temps en fonction de la bande passante du réseau, de la charge du système et de la taille de la VM. Si l'option --verbose n'est pas utilisée pour virsh migrate, la CLI n'affiche aucun indicateur de progression, à l'exception des erreurs.

    Lorsque la migration est en cours, vous pouvez utiliser l'utilitaire virsh domjobinfo pour afficher les statistiques de migration.

Vérification

  • Sur l'hôte de destination, dressez la liste des VM disponibles pour vérifier si la VM a été migrée :

    # virsh list
    Id      Name             State
    ----------------------------------
    10    example-VM-1      running

    Si la migration est toujours en cours, cette commande indique que l'état de la VM est paused.

Résolution de problèmes

  • Dans certains cas, l'hôte cible ne sera pas compatible avec certaines valeurs de la configuration XML de la VM migrée, telles que le nom du réseau ou le type de CPU. Par conséquent, la VM ne pourra pas démarrer sur l'hôte cible. Pour résoudre ces problèmes, vous pouvez mettre à jour les valeurs problématiques à l'aide de la commande virsh edit. Après avoir mis à jour les valeurs, vous devez redémarrer la VM pour que les modifications soient appliquées.
  • Si une migration en direct prend beaucoup de temps à se terminer, cela peut être dû au fait que la VM est fortement sollicitée et que trop de pages mémoire sont modifiées pour que la migration en direct soit possible. Pour résoudre ce problème, remplacez la migration par une migration non dynamique en suspendant la VM.

    # virsh suspend example-VM-1

Ressources supplémentaires

  • virsh migrate --help commande
  • virsh (1) page de manuel

12.7. Migration en direct d'une machine virtuelle à l'aide de la console web

Si vous souhaitez migrer une machine virtuelle (VM) qui exécute des tâches nécessitant un fonctionnement constant, vous pouvez migrer cette VM vers un autre hôte KVM sans l'arrêter. C'est ce que l'on appelle la migration en direct. Les instructions suivantes expliquent comment procéder en utilisant la console web.

Avertissement

Pour les tâches qui modifient les pages de mémoire plus rapidement que KVM ne peut les transférer, telles que les tâches à forte charge d'E/S, il est recommandé de ne pas migrer la VM en direct.

Conditions préalables

  • Le plug-in VM de la console web est installé sur votre système.
  • Les hôtes source et destination fonctionnent.
  • Assurez-vous que les ports suivants sont ouverts sur l'hôte de destination.

    • Le port 22 est nécessaire pour se connecter à l'hôte de destination en utilisant SSH.
    • Le port 16509 est nécessaire pour se connecter à l'hôte de destination en utilisant TLS.
    • Le port 16514 est nécessaire pour se connecter à l'hôte de destination en utilisant TCP.
    • Les ports 49152-49215 sont nécessaires à QEMU pour transférer les données de migration de la mémoire et du disque.
  • La machine virtuelle doit être compatible avec les caractéristiques du processeur de l'hôte de destination. Pour s'en assurer, voir Vérification de la compatibilité du CPU de l'hôte pour la migration de la machine virtuelle.
  • Les images de disque de la VM sont situées sur un stockage partagé accessible à l'hôte source et à l'hôte de destination.
  • Lors de la migration d'une VM en cours d'exécution, la bande passante de votre réseau doit être supérieure à la vitesse à laquelle la VM génère des pages de mémoire sale.

    Pour obtenir le taux de pages sales de votre VM avant de lancer la migration en direct, procédez comme suit dans votre interface de ligne de commande :

    1. Surveillez le taux de génération de pages sales de la VM pendant une courte période.

      # virsh domdirtyrate-calc vm-name 30
    2. Une fois le contrôle terminé, obtenez ses résultats :

      # virsh domstats vm-name --dirtyrate
      Domain: 'vm-name'
        dirtyrate.calc_status=2
        dirtyrate.calc_start_time=200942
        dirtyrate.calc_period=30
        dirtyrate.megabytes_per_second=2

      Dans cet exemple, la VM génère 2 Mo de pages de mémoire sale par seconde. Si vous tentez de migrer en direct une telle VM sur un réseau dont la bande passante est inférieure ou égale à 2 Mo/s, la migration en direct ne progressera pas si vous ne mettez pas la VM en pause ou si vous ne réduisez pas sa charge de travail.

      Pour s'assurer que la migration en direct se termine avec succès, Red Hat recommande que la bande passante de votre réseau soit significativement plus grande que le taux de génération de pages sales de la VM.

Note

La valeur de l'option calc_period peut varier en fonction de la charge de travail et du taux de pages sales. Vous pouvez expérimenter plusieurs valeurs de calc_period pour déterminer la période la plus appropriée en fonction du taux de pages sales dans votre environnement.

Procédure

  1. Dans l'interface Machines virtuelles de la console web, cliquez sur le bouton Menu de la VM que vous souhaitez migrer.

    Un menu déroulant apparaît avec des commandes pour diverses opérations VM.

    The virtual machines main page displaying the available options when the VM is running.
  2. Cliquez sur Migrer

    La boîte de dialogue Migrer la VM vers un autre hôte s'affiche.

    The Migrate VM to another host dialog box with fields to enter the URI of the destination host and set the migration duration.
  3. Saisissez l'URI de l'hôte de destination.
  4. Configurez la durée de la migration :

    • Permanent - Ne cochez pas la case si vous souhaitez migrer la VM de façon permanente. La migration permanente supprime complètement la configuration de la VM de l'hôte source.
    • Temporary - La migration temporaire migre une copie de la VM vers l'hôte de destination. Cette copie est supprimée de l'hôte de destination lorsque la VM est arrêtée. La VM d'origine reste sur l'hôte source.
  5. Cliquez sur Migrer

    Votre VM est migrée vers l'hôte de destination.

Vérification

Pour vérifier si la VM a été migrée avec succès et si elle fonctionne correctement :

  • Confirmez si la VM apparaît dans la liste des VM disponibles sur l'hôte de destination.
  • Démarrez la VM migrée et observez si elle démarre.

12.8. Migration en direct d'une machine virtuelle avec une fonction virtuelle Mellanox attachée

En tant qu'aperçu technologique, vous pouvez migrer en direct une machine virtuelle (VM) avec une fonction virtuelle (VF) attachée à un dispositif de mise en réseau Mellanox. Actuellement, cela n'est possible qu'en utilisant un dispositif de mise en réseau Mellanox CX-7. Le VF sur le périphérique de mise en réseau Mellanox CX-7 utilise un nouveau pilote mlx5_vfio_pci, qui ajoute des fonctionnalités nécessaires à la migration en direct, et libvirt lie automatiquement le nouveau pilote au VF.

Limites

Actuellement, certaines fonctions de virtualisation ne peuvent pas être utilisées lors de la migration en direct d'une VM à laquelle est attachée une fonction virtuelle Mellanox :

  • Calcul du taux de génération de pages de mémoire sale de la VM.
  • Utilisation d'une migration post-copie en direct.
  • Utilisation d'une unité virtuelle de gestion de la mémoire d'E/S (vIOMMU) dans la VM.
Important

Cette fonctionnalité n'est incluse dans RHEL 9 qu'en tant qu'aperçu technologique, ce qui signifie qu'elle n'est pas prise en charge.

Conditions préalables

  • Vous avez un périphérique réseau Mellanox CX-7 dont la version du micrologiciel est égale ou supérieure à 28.36.1010.

    Reportez-vous à la documentation de Mellanox pour plus de détails sur les versions du micrologiciel.

  • Le paquetage mstflint est installé à la fois sur l'hôte source et sur l'hôte de destination :

    # dnf install mstflint
  • Le périphérique de mise en réseau Mellanox CX-7 a pour adresse VF_MIGRATION_MODE MIGRATION_ENABLED :

    # mstconfig -d <device_pci_address> query | grep -i VF_migration
    
    VF_MIGRATION_MODE                           MIGRATION_ENABLED(2)
    • Vous pouvez remplacer VF_MIGRATION_MODE par MIGRATION_ENABLED à l'aide de la commande suivante :

      # mstconfig -d <device_pci_address> set VF_MIGRATION_MODE=2
  • Le paquetage openvswitch est installé à la fois sur l'hôte source et sur l'hôte de destination :

    # dnf install openvswitch
  • L'unité centrale et le micrologiciel de votre hôte prennent en charge l'unité de gestion de la mémoire d'E/S (IOMMU).

    • Si vous utilisez un processeur Intel, il doit supporter la technologie de virtualisation Intel pour Directed I/O (VT-d).
    • Si vous utilisez un processeur AMD, il doit prendre en charge la fonction AMD-Vi.
  • Le système hôte utilise le service de contrôle d'accès (ACS) pour assurer l'isolation de l'accès direct à la mémoire (DMA) pour la topologie PCIe. Vérifiez ce point auprès du fournisseur du système.

    Pour plus d'informations, voir Considérations matérielles pour l'implémentation du SR-IOV.

  • L'interface réseau hôte que vous souhaitez utiliser pour créer des VF est en cours d'exécution. Par exemple, pour activer l'interface eth1 et vérifier qu'elle fonctionne, utilisez les commandes suivantes :

    # ip link set eth1 up
    # ip link show eth1
    8: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
       link/ether a0:36:9f:8f:3f:b8 brd ff:ff:ff:ff:ff:ff
       vf 0 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 1 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 2 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 3 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
  • Pour que l'attribution de périphériques SR-IOV fonctionne, la fonction IOMMU doit être activée dans le BIOS et le noyau de l'hôte. Pour ce faire, il faut

    • Sur un hôte Intel, activez la technologie de virtualisation Intel pour Directed I/O (VT-d) :

      1. Régénérer la configuration GRUB avec les paramètres intel_iommu=on et iommu=pt:

        # grubby --args="intel_iommu=on iommu=pt" --update-kernel=ALL
      2. Redémarrer l'hôte.
    • Sur un hôte AMD, activez AMD-Vi :

      1. Régénérer la configuration GRUB avec le paramètre iommu=pt:

        # grubby --args="iommu=pt" --update-kernel=ALL
      2. Redémarrer l'hôte.
  • L'hôte source et l'hôte de destination utilisent tous deux l'hyperviseur KVM.
  • L'hôte source et l'hôte de destination sont en mesure de se joindre l'un l'autre sur le réseau. Utilisez l'utilitaire ping pour le vérifier.
  • Les ports suivants sont ouverts sur l'hôte de destination.

    • Le port 22 est nécessaire pour se connecter à l'hôte de destination en utilisant SSH.
    • Le port 16509 est nécessaire pour se connecter à l'hôte de destination en utilisant TLS.
    • Le port 16514 est nécessaire pour se connecter à l'hôte de destination en utilisant TCP.
    • Les ports 49152-49215 sont nécessaires à QEMU pour transférer les données de migration de la mémoire et du disque.
  • L'hôte source et l'hôte de destination utilisent des systèmes d'exploitation et des types de machines qui autorisent la migration. Pour s'en assurer, voir Hôtes pris en charge pour la migration des machines virtuelles.
  • La machine virtuelle doit être compatible avec les caractéristiques du processeur de l'hôte de destination. Pour s'en assurer, voir Vérification de la compatibilité du CPU de l'hôte pour la migration de la machine virtuelle.
  • Les images de disque des machines virtuelles qui seront migrées sont situées sur un emplacement réseau distinct accessible à la fois à l'hôte source et à l'hôte de destination. Cette opération est facultative pour la migration hors ligne, mais obligatoire pour la migration d'une VM en cours d'exécution.

    Pour obtenir des instructions sur la configuration d'un tel stockage partagé de VM, voir Partage d'images de disques de machines virtuelles avec d'autres hôtes.

  • Lors de la migration d'une VM en cours d'exécution, la bande passante de votre réseau doit être supérieure à la vitesse à laquelle la VM génère des pages de mémoire sale.
  • Une prise réseau virtuelle correspondant au protocole de connexion est activée.

    When performing a VM migration, the virsh client on the source host can use one of several protocols to connect to the libvirt daemon on the destination host. Examples in the following procedure use an SSH connection, but you can choose a different one. ** If you want libvirt to use an SSH connection, ensure that the virtqemud socket is enabled and running on the destination host.

    # systemctl enable --now virtqemud.socket
    • Si vous souhaitez que libvirt utilise une connexion TLS, assurez-vous que le socket virtproxyd-tls est activé et fonctionne sur l'hôte de destination.

      # systemctl enable --now virtproxyd-tls.socket
    • Si vous souhaitez que libvirt utilise une connexion TCP, assurez-vous que le socket virtproxyd-tcp est activé et fonctionne sur l'hôte de destination.

      # systemctl enable --now virtproxyd-tcp.socket

Procédure

  1. Sur l'hôte source, configurez le périphérique réseau Mellanox en mode switchdev.

    # devlink dev eswitch set pci/<device_pci_address> mode switchdev
  2. Sur l'hôte source, créez une fonction virtuelle sur le dispositif Mellanox.

    # echo 1 > /sys/bus/pci/devices/0000\:e1\:00.0/sriov_numvfs

    La partie /0000\:e1\:00.0/ du chemin d'accès au fichier est basée sur l'adresse PCI de l'appareil. Dans l'exemple, il s'agit de : 0000:e1:00.0

  3. Sur l'hôte source, détachez le VF de son pilote.

    # virsh nodedev-detach <vf_pci_address> --driver pci-stub

    Vous pouvez afficher l'adresse PCI du VF à l'aide de la commande suivante :

    # lshw -c network -businfo
    
    Bus info                     Device             Class           Description
    ===========================================================================
    pci@0000:e1:00.0  enp225s0np0    network        MT2910 Family [ConnectX-7]
    pci@0000:e1:00.1  enp225s0v0     network        ConnectX Family mlx5Gen Virtual Function
  4. Sur l'hôte source, activez la fonction de migration du VF.

    # devlink port function set pci/0000:e1:00.0/1 migratable enable

    Dans cet exemple, pci/0000:e1:00.0/1 fait référence au premier VF sur le périphérique Mellanox avec l'adresse PCI donnée.

  5. Sur l'hôte source, configurez Open vSwitch (OVS) pour la migration du VF. Si le périphérique Mellanox est en mode switchdev, il ne peut pas transférer de données sur le réseau.

    1. Assurez-vous que le service openvswitch est en cours d'exécution.

      # systemctl start openvswitch
    2. Activer le délestage matériel pour améliorer les performances du réseau.

      # ovs-vsctl set Open_vSwitch . other_config:hw-offload=true
    3. Augmentez la durée maximale d'inactivité pour vous assurer que les connexions réseau restent ouvertes pendant la migration.

      # ovs-vsctl set Open_vSwitch . other_config:max-idle=300000
    4. Créer un nouveau pont dans l'instance OVS.

      # ovs-vsctl add-br <bridge_name>
    5. Redémarrez le service openvswitch.

      # systemctl restart openvswitch
    6. Ajoutez l'appareil physique Mellanox au pont OVS.

      # ovs-vsctl add-port <bridge_name> enp225s0np0

      Dans cet exemple, <bridge_name> est le nom du pont que vous avez créé à l'étape d et enp225s0np0 est le nom de l'interface réseau du périphérique Mellanox.

    7. Ajouter le VF de l'appareil Mellanox au pont OVS.

      # ovs-vsctl add-port <bridge_name> enp225s0npf0vf0

      Dans cet exemple, <bridge_name> est le nom du pont que vous avez créé à l'étape d et enp225s0npf0vf0 est le nom de l'interface réseau du VF.

  6. Répétez les étapes 1 à 5 sur le site destination host.
  7. Sur l'hôte source, ouvrez un nouveau fichier, tel que mlx_vf.xml, et ajoutez la configuration XML suivante du VF :

     <interface type='hostdev' managed='yes'>
          <mac address='52:54:00:56:8c:f7'/>
          <source>
            <address type='pci' domain='0x0000' bus='0xe1' slot='0x00' function='0x1'/>
          </source>
     </interface>

    Cet exemple configure un passage du VF en tant qu'interface réseau pour la VM. Assurez-vous que l'adresse MAC est unique et utilisez l'adresse PCI du VF sur l'hôte source.

  8. Sur l'hôte source, attachez le fichier XML VF à la VM.

    # virsh attach-device <vm_name> mlx_vf.xml --live --config

    Dans cet exemple, mlx_vf.xml est le nom du fichier XML contenant la configuration du VF. Utilisez l'option --live pour attacher le périphérique à une VM en cours d'exécution.

  9. Sur l'hôte source, démarrez la migration en direct de la VM en cours d'exécution avec le VF joint.

    # virsh migrate --live --domain <vm_name> --desturi qemu ssh://<destination_host_ip_address>/system

Vérification

  1. Dans la VM migrée, affichez le nom de l'interface réseau du VF Mellanox.

    # ifconfig
    
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 fe80::a00:27ff:fe4e:66a1  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:4e:66:a1  txqueuelen 1000  (Ethernet)
            RX packets 100000  bytes 6543210 (6.5 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 100000  bytes 6543210 (6.5 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    enp4s0f0v0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.3.10  netmask 255.255.255.0  broadcast 192.168.3.255
            inet6 fe80::a00:27ff:fe4e:66c3  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:4e:66:c3  txqueuelen 1000  (Ethernet)
            RX packets 200000  bytes 12345678 (12.3 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 200000  bytes 12345678 (12.3 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  2. Dans la VM migrée, vérifiez que le VF Mellanox fonctionne, par exemple :

    # ping -I <VF_interface_name> 8.8.8.8
    
    PING 8.8.8.8 (8.8.8.8) from 192.168.3.10 <VF_interface_name>: 56(84) bytes of data.
    64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=27.4 ms
    64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=26.9 ms
    
    --- 8.8.8.8 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1002ms
    rtt min/avg/max/mdev = 26.944/27.046/27.148/0.102 ms

12.9. Dépannage des migrations de machines virtuelles

Si vous rencontrez l'un des problèmes suivants lors de la migration de machines virtuelles (VM), consultez les instructions fournies pour résoudre ou éviter le problème.

12.9.1. La migration en direct d'une VM prend beaucoup de temps sans se terminer

Cause

Dans certains cas, la migration d'une VM en cours d'exécution peut amener la VM à générer dirty memory pages plus rapidement qu'elle ne peut être migrée. Dans ce cas, la migration ne peut pas s'achever correctement.

Les scénarios suivants sont souvent à l'origine de ce problème :

  • Migration en direct d'une VM sous forte charge
  • Migration en direct d'une VM qui utilise une grande quantité de mémoire, par exemple 1 To ou plus

    Important

    Red Hat a testé avec succès la migration en direct de VMs ayant jusqu'à 6 TB de mémoire. Cependant, pour les scénarios de migration en direct qui impliquent des machines virtuelles avec plus de 1 TB de mémoire, les clients doivent contacter le support technique de Red Hat.

Diagnosis

Si la migration en direct de votre VM prend plus de temps que prévu, utilisez la commande virsh domjobinfo pour obtenir les données de la page mémoire de la VM :

# virsh domjobinfo vm-name

Job type:         Unbounded
Operation:        Outgoing migration
Time elapsed:     168286974    ms
Data processed:   26.106 TiB
Data remaining:   34.383 MiB
Data total:       10.586 TiB
Memory processed: 26.106 TiB
Memory remaining: 34.383 MiB
Memory total:     10.586 TiB
Memory bandwidth: 29.056 MiB/s
Dirty rate: 17225 pages/s
Page size: 4096 bytes

Dans cette sortie, la multiplication de Dirty rate et Page size est supérieure à Memory bandwidth, ce qui signifie que la VM génère des pages de mémoire sales plus rapidement que le réseau ne peut les migrer. Par conséquent, l'état de la VM sur l'hôte de destination ne peut pas converger avec l'état de la VM sur l'hôte source, ce qui empêche la migration de se terminer.

Fix

Pour améliorer les chances qu'une migration en direct bloquée se termine avec succès, vous pouvez prendre l'une des mesures suivantes :

  • Réduire la charge de travail de la VM, en particulier les mises à jour de la mémoire.

    • Pour ce faire, arrêtez ou annulez les processus non essentiels dans le système d'exploitation invité de la machine virtuelle source.
  • Augmenter le temps d'arrêt prévu pour la migration en direct :

    1. Affiche le temps d'arrêt maximum actuel à la fin d'une migration en direct pour la VM en cours de migration :

      # virsh migrate-getmaxdowntime vm-name
    2. Fixer un temps d'arrêt maximal plus élevé :

      # virsh migrate-setmaxdowntime vm-name downtime-in-miliseconds

      Plus le temps d'indisponibilité maximal est élevé, plus la migration a de chances de s'achever.

  • Passez la migration en direct en mode post-copy.

    # virsh migrate-start-postcopy vm-name
    • Cela permet de s'assurer que les pages de mémoire de la VM peuvent converger vers l'hôte de destination et que la migration peut s'achever.

      Cependant, lorsque le mode post-copie est actif, la VM peut ralentir de manière significative, en raison des demandes de pages distantes de l'hôte de destination vers l'hôte source. En outre, si la connexion réseau entre l'hôte source et l'hôte de destination cesse de fonctionner pendant la migration post-copie, certains processus de la VM peuvent s'arrêter en raison de pages de mémoire manquantes.

      Par conséquent, n'utilisez pas la migration post-copie si la disponibilité de la VM est critique ou si le réseau de migration est instable.

  • Si votre charge de travail le permet, suspendez la VM et laissez la migration se terminer comme une migration non-live. Cela augmente le temps d'arrêt de la VM, mais dans la plupart des cas, cela garantit que la migration se termine avec succès.

Prevention

La probabilité de réussir la migration d'une VM dépend des éléments suivants :

  • La charge de travail de la VM pendant la migration

    • Avant de commencer la migration, arrêtez ou annulez les processus non essentiels dans le système d'exploitation invité de la VM.
  • La bande passante du réseau que l'hôte peut utiliser pour la migration

    • Pour obtenir des résultats optimaux lors d'une migration en direct, la bande passante du réseau utilisé pour la migration doit être nettement supérieure au taux de génération de pages sales de la machine virtuelle. Pour savoir comment obtenir le taux de génération de pages sales de la VM, reportez-vous à la section Conditions préalables à la migration d'une machine virtuelle à l'aide de l'interface de ligne de commande.
    • L'hôte source et l'hôte de destination doivent disposer d'un contrôleur d'interface réseau (NIC) dédié à la migration. Pour la migration en direct d'une VM avec plus de 1 To de mémoire, Red Hat recommande une carte d'interface réseau avec une vitesse de 25 Gb/s ou plus.
    • Vous pouvez également spécifier la bande passante réseau affectée à la migration en direct en utilisant l'option --bandwidth lorsque vous lancez la migration. Pour la migration de très grandes machines virtuelles, attribuez autant de bande passante que possible pour votre déploiement.
  • Le mode de migration en direct

    • Le mode de migration par défaut pre-copy copie les pages de mémoire à plusieurs reprises si elles sont sales.
    • Post-copy la migration ne copie les pages de mémoire qu'une seule fois.

      Pour permettre à votre migration en direct de passer en mode post-copie si la migration se bloque, utilisez l'option --postcopy avec virsh migrate lors du démarrage de la migration.

  • Le temps d'arrêt spécifié pour le déploiement

    • Vous pouvez l'ajuster pendant la migration en utilisant virsh migrate-setmaxdowntime comme décrit précédemment.

12.10. Hôtes pris en charge pour la migration des machines virtuelles

Pour que la migration de la machine virtuelle (VM) fonctionne correctement et soit prise en charge par Red Hat, les hôtes source et destination doivent être des versions RHEL et des types de machines spécifiques. Le tableau suivant présente les chemins de migration de VM pris en charge.

Tableau 12.2. Compatibilité avec la migration en direct
Méthode de migrationType d'autorisationExemple de version futureStatut de soutien

En avant

Version mineure

9.0.1 → 9.1

Sur les systèmes RHEL 9 pris en charge : type de machine q35.

Retour en arrière

Version mineure

9.1 → 9.0.1

Sur les systèmes RHEL 9 pris en charge : type de machine q35.

Note

Le niveau de support est différent pour les autres solutions de virtualisation fournies par Red Hat, notamment RHOSP et OpenShift Virtualization.

Chapitre 13. Sauvegarde et restauration de l'état d'une machine virtuelle à l'aide d'instantanés

Pour sauvegarder l'état actuel d'une machine virtuelle (VM), vous pouvez créer un snapshot de la VM. Ensuite, vous pouvez revenir à l'instantané pour ramener la VM à l'état sauvegardé.

Un instantané de VM contient l'image disque de la VM. Si vous créez un instantané à partir d'une VM en cours d'exécution (également appelée live snapshot), l'instantané contient également l'état de la mémoire de la VM, ce qui inclut les processus et les applications en cours d'exécution.

La création d'instantanés peut être utile, par exemple, pour les tâches suivantes :

  • Sauvegarde d'un état propre du système d'exploitation invité
  • S'assurer de disposer d'un point de restauration avant d'effectuer une opération potentiellement destructrice sur la VM

13.1. Limitations de la prise en charge des instantanés de machines virtuelles

Red Hat prend en charge la fonctionnalité d'instantané pour les machines virtuelles (VM) sur RHEL uniquement lorsque vous utilisez les instantanés external. Actuellement, les instantanés externes sont créés sur RHEL uniquement lorsque toutes les conditions suivantes sont remplies :

  • Votre hôte utilise RHEL 9.4 ou une version ultérieure.
  • La VM utilise un stockage basé sur des fichiers.
  • Vous ne créez l'instantané de la VM que dans l'un des scénarios suivants :

    • La VM est arrêtée.
    • Si la VM est en cours d'exécution, vous utilisez les options --disk-only --quiesce ou --live --memspec.

La plupart des autres configurations créent des instantanés internal, qui sont obsolètes dans RHEL 9. Les instantanés internes peuvent fonctionner pour votre cas d'utilisation, mais Red Hat ne fournit pas de test et de support complets pour eux.

Avertissement

N'utilisez pas d'instantanés internes dans les environnements de production.

Pour vous assurer qu'un instantané est pris en charge, affichez la configuration XML de l'instantané et vérifiez le type d'instantané et le stockage :

# virsh snapshot-dumpxml <vm-name> <snapshot-name>
  • Exemple de sortie d'un instantané pris en charge :

    <domainsnapshot>
      <name>sample-snapshot-name-1<name>
      <state>shutoff</state>
      <creationTime>1706658764</creationTime>
      <memory snapshot='no'/>
      <disks>
        <disk name='vda' snapshot='external' type='file'>
          <driver type='qcow2'/>
          <source file='/var/lib/libvirt/images/vm-name.sample-snapshot-name-1'/>
        </disk>
      </disks>
      <domain type='kvm'>
      [...]
  • Exemple de sortie d'un instantané non pris en charge :

    <domainsnapshot>
      <name>sample-snapshot-name-2</name>
      <state>running</state>
      <creationTime>1653396424</creationTime>
      <memory snapshot='internal'/>
      <disks>
        <disk name='vda' snapshot='internal'/>
        <disk name='sda' snapshot='no'/>
      </disks>
      <domain type='kvm'>
      [...]

13.2. Création d'instantanés de machines virtuelles à l'aide de l'interface de ligne de commande

Pour sauvegarder l'état d'une machine virtuelle (VM) dans un instantané, vous pouvez utiliser la commande virsh snapshot-create-as.

Conditions préalables

  • Votre hôte utilise RHEL 9.4 ou une version ultérieure.
  • La VM utilise un stockage basé sur des fichiers. Pour vérifier si c'est le cas, utilisez la commande suivante et assurez-vous que le périphérique disk affiche disk type comme file:

    # virsh dumpxml <vm-name> | grep "disk type"
        <disk type='file' device='disk'>
        <disk type='file' device='cdrom'>
  • Si vous souhaitez créer un instantané de VM qui inclut la mémoire d'une VM en cours d'exécution, vous devez disposer de suffisamment d'espace disque pour stocker la mémoire de la VM.

    • L'espace minimum recommandé pour la sauvegarde de la mémoire d'une VM est égal à la RAM attribuée à la VM. Par exemple, la sauvegarde de la mémoire d'une VM avec 32 Go de RAM nécessite jusqu'à 32 Go d'espace disque.
    • Si la VM est soumise à une forte charge d'E/S, un espace disque supplémentaire important peut être nécessaire.
    • Si des périphériques VFIO passthrough ont été attribués à la VM, de l'espace disque supplémentaire peut être nécessaire.
    • Si un instantané est créé sans mettre la VM en pause, de l'espace disque supplémentaire peut être nécessaire.

      Avertissement

      Red Hat recommande de ne pas sauvegarder la mémoire d'une VM en cours d'exécution qui est soumise à une charge de travail très élevée ou qui utilise des périphériques VFIO passthrough. Sauvegarder la mémoire de telles VM pourrait remplir le disque de l'hôte et dégrader le système. Au lieu de cela, envisagez de créer des instantanés sans mémoire pour de telles VM.

      En outre, il convient de noter que tous les périphériques VFIO ne sont pas en mesure de créer des instantanés avec mémoire. Actuellement, la création d'un instantané avec mémoire ne fonctionne correctement que si le périphérique VFIO connecté est un VF Mellanox dont la capacité de migration est activée.

Procédure

  • Pour créer un instantané de VM avec les paramètres requis, utilisez la commande virsh snapshot-create-as.

    # virsh snapshot-create-as <vm-name> <snapshot-name> <optional-description> <additional-parameters>
    • Pour créer un instantané d'une VM arrêtée, utilisez le paramètre --disk-only. Par exemple, la commande suivante crée Snapshot1 à partir de l'état actuel du disque de la VM arrêtée Testguest1:

      # virsh snapshot-create-as Testguest1 Snapshot1 --disk-only
      Domain snapshot Snapshot1 created.
    • Pour créer un instantané qui sauvegarde l'état du disque d'une VM en cours d'exécution mais pas sa mémoire, utilisez les paramètres --disk-only --quiesce. Par exemple, la commande suivante crée Snapshot2 à partir de l'état actuel du disque de la VM en cours d'exécution Testguest2, avec la description clean system install:

      # virsh snapshot-create-as Testguest2 Snapshot2 "clean system install" --disk-only --quiesce
      Domain snapshot Snapshot2 created.
    • Pour créer un instantané qui met en pause une VM en cours d'exécution et sauvegarde son état de disque et de mémoire, utilisez le paramètre --memspec. Par exemple, la commande suivante met en pause la VM Testguest3 et crée Snapshot3 à partir de l'état actuel du disque et de la mémoire de la VM. La mémoire de la VM est enregistrée dans le fichier /var/lib/libvirt/images/saved_memory.img. Lorsque l'instantané est terminé, la VM reprend automatiquement ses activités.

      # virsh snapshot-create-as Testguest3 Snapshot3 --memspec /var/lib/libvirt/images/saved_memory.img
      Domain snapshot Snapshot3 created.

      La mise en pause de la VM pendant le processus d'instantané crée un temps d'arrêt, mais peut fonctionner de manière plus fiable que la création d'un instantané en direct d'une VM en cours d'exécution (en utilisant l'option --live ), en particulier pour les VM soumises à une charge importante.

    • Pour créer un instantané qui enregistre l'état du disque d'une VM en cours d'exécution ainsi que sa mémoire vive, utilisez les paramètres --live --memspec. Par exemple, la commande suivante crée Snapshot4 à partir de l'état actuel du disque et de la mémoire de la VM en cours d'exécution Testguest4, et enregistre l'état de la mémoire dans le fichier /var/lib/libvirt/images/saved_memory2.img.

      # virsh snapshot-create-as Testguest4 Snapshot4 --live --memspec /var/lib/libvirt/images/saved_memory2.img
      Domain snapshot Snapshot4 created.
Avertissement

L'enregistrement de la mémoire d'une VM dans un instantané permet de sauvegarder l'état des processus en cours d'exécution dans le système d'exploitation invité de la VM. Toutefois, lorsque vous revenez à un tel instantané, les processus peuvent échouer en raison de divers facteurs, tels que la perte de connectivité réseau ou la désynchronisation de l'heure système.

Vérification

  1. Liste les instantanés associés à la VM spécifiée :

    # virsh snapshot-list <Testguest1>
    
     Name                    Creation Time               State
    --------------------------------------------------------------
    Snapshot1               2024-01-30 18:34:58 +0100   shutoff
  2. Vérifiez que l'instantané a été créé à l'adresse external:

    # virsh snapshot-dumpxml <Testguest1> <Snapshot1> | grep external
    
      <disk name='vda' snapshot='external' type='file'>

    Si la sortie de cette commande inclut snapshot='external', l'instantané est externe et donc entièrement pris en charge par Red Hat.

Ressources supplémentaires

13.3. Création d'instantanés de machines virtuelles à l'aide de la console web

Pour enregistrer l'état d'une machine virtuelle (VM) dans un instantané, vous pouvez utiliser la console web RHEL.

Conditions préalables

  • Votre hôte utilise RHEL 9.4 ou une version ultérieure.
  • Le plug-in VM de la console web est installé sur votre système.
  • La VM utilise un stockage basé sur des fichiers. Pour vous en assurer, procédez comme suit :

    1. Dans l'interface Virtual machines de la console Web, cliquez sur la VM dont vous souhaitez créer un instantané.
    2. Dans le volet Disks de la vue d'ensemble de la gestion, vérifiez la colonne Source des appareils répertoriés. Dans tous les appareils qui listent une source, cette source doit être File.

Procédure

  1. Dans l'interface Virtual machines de la console Web, cliquez sur la VM dont vous souhaitez créer un instantané.

    Une vue d'ensemble de la gestion de la VM s'ouvre.

  2. Dans le volet Snapshots de la vue d'ensemble de la gestion, cliquez sur le bouton Create snapshot.
  3. Saisissez un nom pour l'instantané et, éventuellement, une description.
  4. Cliquez sur Create.

Vérification

  1. Pour vous assurer que la création de l'instantané a réussi, vérifiez que l'instantané est désormais répertorié dans le volet Snapshots de la VM.
  2. Vérifiez que l'instantané a été créé à l'adresse external. Pour ce faire, utilisez la commande suivante dans l'interface de ligne de commande de l'hôte :

    # virsh snapshot-dumpxml <Testguest1> <Snapshot1> | grep external
    
      <disk name='vda' snapshot='external' type='file'>

    Si la sortie de cette commande inclut snapshot='external', l'instantané est externe et donc pris en charge par Red Hat.

13.4. Revenir à un instantané de machine virtuelle en utilisant l'interface de ligne de commande

Pour ramener une machine virtuelle (VM) à l'état sauvegardé dans un instantané, vous pouvez utiliser l'interface de ligne de commande (CLI).

Conditions préalables

  • Un instantané de la VM est disponible, que vous avez préalablement créé dans la console web ou en utilisant l'interface de ligne de commande.
  • Optional: Vous avez créé un instantané de l'état actuel de la VM. Si vous revenez à un instantané précédent sans sauvegarder l'état actuel, les modifications effectuées sur la VM depuis le dernier instantané seront perdues.

Procédure

  • Utilisez l'utilitaire virsh snapshot-revert et indiquez le nom de la VM et le nom de l'instantané sur lequel vous souhaitez revenir. Par exemple, le nom de la VM et le nom de l'instantané vers lequel vous souhaitez revenir :

    # virsh snapshot-revert Testguest2 clean-install
    Domain snapshot clean-install reverted

Vérification

  • Affiche l'instantané actuellement actif pour la VM inversée :

    # virsh snapshot-current Testguest2 --name
    clean-install

13.5. Revenir à un snapshot de machine virtuelle en utilisant la console web

Pour ramener une machine virtuelle (VM) à l'état sauvegardé dans un instantané, vous pouvez utiliser la console web RHEL.

Conditions préalables

Procédure

  1. Dans l'interface Virtual machines de la console Web, cliquez sur la VM dont vous voulez inverser l'état.

    Une vue d'ensemble de la gestion de la VM s'ouvre.

  2. Dans le volet Snapshots de la vue d'ensemble de la gestion, cliquez sur le bouton Revert en regard de l'instantané vers lequel vous souhaitez revenir.
  3. Attendez que l'opération d'inversion se termine. En fonction de la taille de l'instantané et de sa différence avec l'état actuel, cette opération peut prendre plusieurs minutes.

Vérification

  • Dans le volet Snapshots, si un symbole de vérification vert s'affiche à gauche de l'instantané sélectionné, cela signifie que vous avez réussi à revenir à cet instantané.

13.6. Suppression des snapshots de machines virtuelles à l'aide de l'interface de ligne de commande

Lorsqu'un instantané de machine virtuelle (VM) ne vous est plus utile, vous pouvez le supprimer dans l'interface de ligne de commande afin de libérer l'espace disque qu'il utilise.

Conditions préalables

  • Optional: Un cliché enfant existe pour le cliché que vous souhaitez supprimer.

    Un instantané enfant est créé automatiquement lorsque vous avez un instantané actif et que vous créez un nouvel instantané. Si vous supprimez un instantané qui n'a pas d'enfant, vous perdrez toutes les modifications enregistrées dans l'instantané après sa création à partir de l'instantané parent.

    Pour afficher la structure parent-enfant des instantanés dans une VM, utilisez la commande virsh snapshot-list --tree. L'exemple suivant montre que Latest-snapshot est un enfant de Redundant-snapshot.

    # virsh snapshot-list --tree <vm-name>
    
    Clean-install-snapshot
      |
      +- Redundant-snapshot
          |
          +- Latest-snapshot

Procédure

  • Utilisez la commande virsh snapshot-delete pour supprimer l'instantané. Par exemple, la commande suivante supprime Redundant-snapshot de la VM Testguest1:

    # virsh snapshot-delete Testguest1 Redundant-snapshot
    Domain snapshot Redundant-snapshot deleted

Vérification

  • Pour vous assurer que l'instantané que vous avez supprimé n'est plus présent, affichez les instantanés existants de la VM concernée et leur structure parent-enfant :

    # virsh snapshot-list --tree <Testguest1>
    
    Clean-install-snapshot
      |
      +- Latest-snapshot

    Dans cet exemple, Redundant-snapshot a été supprimé et Latest-snapshot est devenu l'enfant de Clean-install-snapshot.

13.7. Suppression des snapshots de machines virtuelles à l'aide de la console web

Lorsqu'un instantané de machine virtuelle (VM) ne vous est plus utile, vous pouvez le supprimer dans la console Web afin de libérer l'espace disque qu'il utilise.

Conditions préalables

  • Le plug-in VM de la console web est installé sur votre système.
  • Optional: Un cliché enfant existe pour le cliché que vous souhaitez supprimer.

    Un instantané enfant est créé automatiquement lorsque vous avez un instantané actif et que vous créez un nouvel instantané. Si vous supprimez un instantané qui n'a pas d'enfant, vous perdrez toutes les modifications enregistrées dans l'instantané après sa création à partir de l'instantané parent.

    Pour vérifier que l'instantané a un enfant, confirmez que l'instantané est répertorié dans la colonne Parent snapshot de Snapshots dans la vue d'ensemble de la console Web de la VM.

Procédure

  1. Dans l'interface Virtual machines de la console Web, cliquez sur la VM dont vous souhaitez supprimer l'instantané.

    Une vue d'ensemble de la gestion de la VM s'ouvre.

  2. Dans le volet Snapshots de la vue d'ensemble de la gestion, cliquez sur le bouton Delete en regard de l'instantané que vous souhaitez supprimer.
  3. Attendez la fin de l'opération de suppression. Selon la taille de l'instantané, cette opération peut prendre plusieurs minutes.

Vérification

  • Si l'instantané n'apparaît plus dans le volet Snapshots, c'est qu'il a été supprimé avec succès.

Chapitre 14. Gestion des dispositifs virtuels

L'un des moyens les plus efficaces de gérer les fonctionnalités, les caractéristiques et les performances d'une machine virtuelle (VM) est d'ajuster son site virtual devices.

Les sections suivantes donnent un aperçu général de ce que sont les dispositifs virtuels et des instructions sur la manière de les gérer à l'aide de la CLI ou de la console web.

14.1. Fonctionnement des dispositifs virtuels

Tout comme les machines physiques, les machines virtuelles (VM) nécessitent des dispositifs spécialisés pour fournir des fonctions au système, telles que la puissance de traitement, la mémoire, le stockage, la mise en réseau ou les graphiques. Les systèmes physiques utilisent généralement des dispositifs matériels à ces fins. Cependant, comme les VM fonctionnent comme des implémentations logicielles, elles doivent utiliser des abstractions logicielles de ces dispositifs, appelées virtual devices.

L'essentiel

Les dispositifs virtuels attachés à une VM peuvent être configurés lors de la création de la VM, et peuvent également être gérés sur une VM existante. En général, les périphériques virtuels ne peuvent être attachés ou détachés d'une VM que lorsque celle-ci est éteinte, mais certains peuvent être ajoutés ou supprimés lorsque la VM est en cours d'exécution. Cette fonctionnalité est désignée par les termes "device hot plug " et " hot unplug".

Lors de la création d'une nouvelle VM, libvirt crée et configure automatiquement un ensemble par défaut de périphériques virtuels essentiels, sauf indication contraire de l'utilisateur. Ceux-ci sont basés sur l'architecture du système hôte et le type de machine, et comprennent généralement :

  • l'unité centrale
  • mémoire
  • un clavier
  • un contrôleur d'interface réseau (NIC)
  • divers contrôleurs d'appareils
  • une carte vidéo
  • une carte son

Pour gérer les périphériques virtuels après la création de la VM, utilisez l'interface de ligne de commande (CLI). Toutefois, pour gérer les périphériques de stockage virtuels et les cartes réseau, vous pouvez également utiliser la console Web de RHEL 9.

Performance ou flexibilité

Pour certains types d'appareils, RHEL 9 prend en charge plusieurs implémentations, souvent avec un compromis entre performance et flexibilité.

Par exemple, le stockage physique utilisé pour les disques virtuels peut être représenté par des fichiers de différents formats, tels que qcow2 ou raw, et présenté à la VM à l'aide de divers contrôleurs :

  • un contrôleur émulé
  • virtio-scsi
  • virtio-blk

Un contrôleur émulé est plus lent qu'un contrôleur virtio, car les périphériques virtio sont conçus spécifiquement à des fins de virtualisation. D'un autre côté, les contrôleurs émulés permettent d'exécuter des systèmes d'exploitation qui n'ont pas de pilotes pour les périphériques virtio. De même, virtio-scsi offre un support plus complet pour les commandes SCSI et permet d'attacher un plus grand nombre de disques à la VM. Enfin, virtio-blk offre de meilleures performances que virtio-scsi et les contrôleurs émulés, mais une gamme plus limitée de cas d'utilisation. Par exemple, l'attachement d'un disque physique en tant que périphérique LUN à une VM n'est pas possible lorsque l'on utilise virtio-blk.

Pour plus d'informations sur les types de dispositifs virtuels, voir Types de dispositifs virtuels.

14.2. Types de dispositifs virtuels

La virtualisation dans RHEL 9 peut présenter plusieurs types distincts de périphériques virtuels que vous pouvez attacher à des machines virtuelles (VM) :

Dispositifs émulés

Les dispositifs émulés sont des implémentations logicielles de dispositifs physiques largement utilisés. Les pilotes conçus pour les dispositifs physiques sont également compatibles avec les dispositifs émulés. Par conséquent, les dispositifs émulés peuvent être utilisés de manière très flexible.

Toutefois, comme ils doivent émuler fidèlement un type particulier de matériel, les dispositifs émulés peuvent subir une perte de performance significative par rapport aux dispositifs physiques correspondants ou à des dispositifs virtuels plus optimisés.

Les types de dispositifs émulés suivants sont pris en charge :

  • Les unités centrales virtuelles (vCPU), avec un large choix de modèles d'unités centrales disponibles. L'impact de l'émulation sur les performances dépend fortement des différences entre le CPU hôte et le vCPU émulé.
  • Composants de systèmes émulés, tels que les contrôleurs de bus PCI.
  • Contrôleurs de stockage émulés, tels que SATA, SCSI ou même IDE.
  • Dispositifs sonores émulés, tels que ICH9, ICH6 ou AC97.
  • Cartes graphiques émulées, telles que les cartes VGA.
  • Périphériques réseau émulés, tels que rtl8139.
Dispositifs paravirtualisés

La paravirtualisation fournit une méthode rapide et efficace pour exposer les appareils virtuels aux machines virtuelles. Les périphériques paravirtualisés exposent des interfaces conçues spécifiquement pour être utilisées dans les machines virtuelles, ce qui augmente considérablement les performances des périphériques. RHEL 9 fournit des périphériques paravirtualisés aux machines virtuelles en utilisant l'API virtio comme couche entre l'hyperviseur et la machine virtuelle. L'inconvénient de cette approche est qu'elle nécessite un pilote de périphérique spécifique dans le système d'exploitation invité.

Il est recommandé d'utiliser des périphériques paravirtualisés plutôt que des périphériques émulés pour les machines virtuelles chaque fois que cela est possible, notamment si elles exécutent des applications à forte intensité d'entrées/sorties. Les périphériques paravirtualisés réduisent la latence des E/S et augmentent le débit des E/S, ce qui les rapproche dans certains cas des performances d'une machine nue. D'autres dispositifs paravirtualisés ajoutent également des fonctionnalités aux machines virtuelles qui ne sont pas disponibles autrement.

Les types de dispositifs paravirtualisés suivants sont pris en charge :

  • Le dispositif de réseau paravirtualisé (virtio-net).
  • Contrôleurs de stockage paravirtualisés :

    • virtio-blk - fournit une émulation de périphérique de bloc.
    • virtio-scsi - fournit une émulation SCSI plus complète.
  • L'horloge paravirtualisée.
  • Le dispositif sériel paravirtualisé (virtio-serial).
  • Le dispositif de ballon (virtio-balloon), utilisé pour distribuer dynamiquement la mémoire entre une VM et son hôte.
  • Le générateur de nombres aléatoires paravirtualisé (virtio-rng).
Dispositifs physiquement partagés

Certaines plates-formes matérielles permettent aux machines virtuelles d'accéder directement à divers dispositifs et composants matériels. Ce processus est connu sous le nom de device assignment ou passthrough.

Lorsqu'ils sont attachés de cette manière, certains aspects de l'appareil physique sont directement accessibles à la VM comme ils le seraient à une machine physique. Cela permet d'obtenir des performances supérieures pour l'appareil lorsqu'il est utilisé dans la VM. Cependant, les périphériques physiquement attachés à une VM deviennent indisponibles pour l'hôte et ne peuvent pas non plus être migrés.

Néanmoins, certains dispositifs peuvent être shared sur plusieurs machines virtuelles. Par exemple, un seul appareil physique peut, dans certains cas, fournir plusieurs mediated devices, qui peuvent ensuite être affectés à des machines virtuelles distinctes.

Les types suivants de dispositifs de passage sont pris en charge :

  • USB, PCI et SCSI passthrough - exposent les bus standard de l'industrie directement aux machines virtuelles afin de mettre leurs fonctions spécifiques à la disposition du logiciel invité.
  • Virtualisation des E/S à racine unique (SR-IOV) - une spécification qui permet une isolation matérielle des ressources PCI Express. Cela permet de partitionner de manière sûre et efficace une ressource PCI physique unique en fonctions PCI virtuelles. Elle est couramment utilisée pour les cartes d'interface réseau (NIC).
  • N_Port ID virtualization (NPIV) - technologie Fibre Channel permettant de partager un seul adaptateur de bus hôte physique (HBA) avec plusieurs ports virtuels.
  • GPU et vGPU - accélérateurs pour des types spécifiques de charges de travail graphiques ou informatiques. Certains GPU peuvent être attachés directement à une VM, tandis que d'autres offrent la possibilité de créer des GPU virtuels (vGPU) qui partagent le matériel physique sous-jacent.
Note

Certains périphériques de ces types peuvent ne pas être pris en charge ou ne pas être compatibles avec RHEL. Si vous avez besoin d'aide pour configurer des périphériques virtuels, consultez l'assistance Red Hat.

14.3. Gérer les périphériques attachés aux machines virtuelles à l'aide de la CLI

Pour modifier les fonctionnalités de votre machine virtuelle (VM), vous pouvez gérer les périphériques connectés à votre VM à l'aide de l'interface de ligne de commande (CLI).

Vous pouvez utiliser le CLI pour

14.3.1. Attacher des périphériques aux machines virtuelles

Vous pouvez ajouter une fonctionnalité spécifique à vos machines virtuelles (VM) en attachant un nouveau dispositif virtuel.

La procédure suivante permet de créer et d'attacher des dispositifs virtuels à vos machines virtuelles (VM) à l'aide de l'interface de ligne de commande (CLI). Certains dispositifs peuvent également être attachés aux machines virtuelles à l'aide de la console Web RHEL.

Par exemple, vous pouvez augmenter la capacité de stockage d'une VM en lui attachant un nouveau disque virtuel. Cette opération est également appelée memory hot plug.

Avertissement

La suppression d'un périphérique de mémoire d'une VM, également connue sous le nom de memory hot unplug, n'est pas prise en charge dans RHEL 9, et Red Hat en déconseille fortement l'utilisation.

Conditions préalables

  • Obtenez les options requises pour le périphérique que vous avez l'intention d'attacher à une VM. Pour connaître les options disponibles pour un périphérique spécifique, utilisez la commande virt-xml --device=? pour afficher les options disponibles pour un périphérique spécifique. Par exemple :

    # virt-xml --network=?
    --network options:
    [...]
    address.unit
    boot_order
    clearxml
    driver_name
    [...]

Procédure

  1. Pour attacher un périphérique à une VM, utilisez la commande virt-xml --add-device, y compris la définition du périphérique et les options requises :

    • Par exemple, la commande suivante crée une image disque newdisk qcow2 de 20 Go dans le répertoire /var/lib/libvirt/images/ et l'attache en tant que disque virtuel à la VM testguest en cours d'exécution lors du prochain démarrage de la VM :

      # virt-xml testguest --add-device --disk /var/lib/libvirt/images/newdisk.qcow2,format=qcow2,size=20
      Domain 'testguest' defined successfully.
      Changes will take effect after the domain is fully powered off.
    • La procédure suivante permet d'attacher une clé USB, attachée en tant que périphérique 004 sur le bus 002 de l'hôte, à la VM testguest2 pendant qu'elle est en cours d'exécution :

      # virt-xml testguest2 --add-device --update --hostdev 002.004
      Device hotplug successful.
      Domain 'testguest2' defined successfully.

      La combinaison bus-dispositif pour définir l'USB peut être obtenue en utilisant la commande lsusb.

Vérification

Pour vérifier que l'appareil a été ajouté, effectuez l'une des opérations suivantes :

  • Utilisez la commande virsh dumpxml et vérifiez si la définition XML de l'appareil a été ajoutée à la section <devices> de la configuration XML de la VM.

    Par exemple, la sortie suivante montre la configuration de la VM testguest et confirme que le périphérique de disque flash USB 002.004 a été ajouté.

    # virsh dumpxml testguest
    [...]
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x4146'/>
        <product id='0x902e'/>
        <address bus='2' device='4'/>
      </source>
      <alias name='hostdev0'/>
      <address type='usb' bus='0' port='3'/>
    </hostdev>
    [...]
  • Exécutez la VM et vérifiez que l'appareil est présent et fonctionne correctement.

Ressources supplémentaires

  • La commande man virt-xml

14.3.2. Modifier les périphériques attachés aux machines virtuelles

Vous pouvez modifier les fonctionnalités de vos machines virtuelles (VM) en modifiant la configuration des périphériques virtuels connectés. Par exemple, si vous souhaitez optimiser les performances de vos machines virtuelles, vous pouvez modifier leurs modèles de CPU virtuels afin qu'ils correspondent mieux aux CPU des hôtes.

La procédure suivante fournit des instructions générales pour la modification des périphériques virtuels à l'aide de l'interface de ligne de commande (CLI). Certains périphériques attachés à votre VM, tels que les disques et les cartes réseau, peuvent également être modifiés à l'aide de la console Web RHEL 9.

Conditions préalables

  • Obtenez les options requises pour le périphérique que vous avez l'intention d'attacher à une VM. Pour connaître les options disponibles pour un périphérique spécifique, utilisez la commande virt-xml --device=? pour afficher les options disponibles pour un périphérique spécifique. Par exemple :
# virt-xml --network=?
--network options:
[...]
address.unit
boot_order
clearxml
driver_name
[...]
  • Optional: Sauvegardez la configuration XML de votre VM en utilisant virsh dumpxml vm-name et en envoyant le résultat dans un fichier. Par exemple, la procédure suivante permet de sauvegarder la configuration de votre VM testguest1 dans le fichier testguest1.xml:
# virsh dumpxml testguest1 > testguest1.xml
# cat testguest1.xml
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>testguest1</name>
  <uuid>ede29304-fe0c-4ca4-abcd-d246481acd18</uuid>
  [...]
</domain>

Procédure

  1. Utilisez la commande virt-xml --edit, y compris la définition de l'appareil et les options requises :

    Par exemple, ce qui suit efface la configuration <cpu> de l'arrêt testguest VM et la met à host-model:

    # virt-xml testguest --edit --cpu host-model,clearxml=yes
    Domain 'testguest' defined successfully.

Vérification

Pour vérifier que l'appareil a été modifié, effectuez l'une des opérations suivantes :

  • Exécutez la VM et vérifiez si le dispositif est présent et reflète les modifications.
  • Utilisez la commande virsh dumpxml et vérifiez si la définition XML de l'appareil a été modifiée dans la configuration XML de la VM.

    Par exemple, la sortie suivante montre la configuration de la VM testguest et confirme que le mode CPU a été configuré comme host-model.

    # virsh dumpxml testguest
    [...]
    <cpu mode='host-model' check='partial'>
      <model fallback='allow'/>
    </cpu>
    [...]

Résolution de problèmes

  • Si la modification d'un périphérique rend votre VM non amorçable, utilisez l'utilitaire virsh define pour restaurer la configuration XML en rechargeant le fichier de configuration XML que vous avez sauvegardé précédemment.

    # virsh define testguest.xml
Note

Pour apporter de petites modifications à la configuration XML de votre VM, vous pouvez utiliser la commande virsh edit - par exemple virsh edit testguest. Cependant, n'utilisez pas cette méthode pour des modifications plus importantes, car elle est plus susceptible de casser la configuration d'une manière qui pourrait empêcher le démarrage de la VM.

Ressources supplémentaires

  • La commande man virt-xml

14.3.3. Suppression des périphériques des machines virtuelles

Vous pouvez modifier la fonctionnalité de vos machines virtuelles (VM) en supprimant un périphérique virtuel. Par exemple, vous pouvez supprimer un disque virtuel de l'une de vos machines virtuelles s'il n'est plus nécessaire.

La procédure suivante explique comment supprimer des périphériques virtuels de vos machines virtuelles (VM) à l'aide de l'interface de ligne de commande (CLI). Certains périphériques, tels que les disques ou les cartes d'interface réseau, peuvent également être supprimés des machines virtuelles à l'aide de la console Web RHEL 9.

Conditions préalables

  • Optional: Sauvegardez la configuration XML de votre VM en utilisant virsh dumpxml vm-name et en envoyant le résultat dans un fichier. Par exemple, la procédure suivante permet de sauvegarder la configuration de votre VM testguest1 dans le fichier testguest1.xml:
# virsh dumpxml testguest1 > testguest1.xml
# cat testguest1.xml
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>testguest1</name>
  <uuid>ede29304-fe0c-4ca4-abcd-d246481acd18</uuid>
  [...]
</domain>

Procédure

  1. Utilisez la commande virt-xml --remove-device, en incluant une définition de l'appareil. Par exemple :

    • La procédure suivante supprime le périphérique de stockage marqué comme vdb de la VM testguest en cours d'exécution après son arrêt :

      # virt-xml testguest --remove-device --disk target=vdb
      Domain 'testguest' defined successfully.
      Changes will take effect after the domain is fully powered off.
    • La procédure suivante supprime immédiatement un lecteur flash USB de la VM testguest2 en cours d'exécution :

      # virt-xml testguest2 --remove-device --update --hostdev type=usb
      Device hotunplug successful.
      Domain 'testguest2' defined successfully.

Résolution de problèmes

  • Si la suppression d'un périphérique rend votre VM non amorçable, utilisez l'utilitaire virsh define pour restaurer la configuration XML en rechargeant le fichier de configuration XML que vous avez sauvegardé précédemment.

    # virsh define testguest.xml

Ressources supplémentaires

  • La commande man virt-xml

14.4. Gestion des périphériques hôtes à l'aide de la console web

Pour modifier la fonctionnalité de votre machine virtuelle (VM), vous pouvez gérer les périphériques hôtes attachés à votre VM en utilisant la console web de Red Hat Enterprise Linux 9.

Les périphériques hôtes sont des périphériques physiques attachés au système hôte. En fonction de vos besoins, vous pouvez permettre à vos machines virtuelles d'accéder directement à ces périphériques et composants matériels.

Vous pouvez utiliser la console web pour :

14.4.1. Visualisation des périphériques attachés aux machines virtuelles à l'aide de la console web

Avant d'ajouter ou de modifier les périphériques attachés à votre machine virtuelle (VM), vous pouvez afficher les périphériques déjà attachés à votre VM. La procédure suivante fournit des instructions pour visualiser ces périphériques à l'aide de la console Web.

Conditions préalables

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur la VM dont vous voulez voir les informations.

    Une nouvelle page s'ouvre avec des informations détaillées sur la VM.

  2. Faites défiler jusqu'à la section Host devices.

    Page displaying the Host devices section of the virtual machine.

Ressources supplémentaires

14.4.2. Attacher des périphériques à des machines virtuelles à l'aide de la console web

Pour ajouter des fonctionnalités spécifiques à votre machine virtuelle (VM), vous pouvez utiliser la console web pour attacher des périphériques hôtes à la VM.

Note

La connexion de plusieurs périphériques hôtes en même temps ne fonctionne pas. Vous ne pouvez attacher qu'un seul périphérique à la fois.

Pour plus d'informations, voir les problèmes connus de RHEL 9.

Conditions préalables

  • Si vous attachez des périphériques PCI, assurez-vous que l'état de l'attribut managed de l'élément hostdev est réglé sur yes.

    Note

    Lorsque vous attachez des périphériques PCI à votre VM, n'omettez pas l'attribut managed de l'élément hostdev ou donnez-lui la valeur no. Si vous le faites, les périphériques PCI ne peuvent pas se détacher automatiquement de l'hôte lorsque vous les passez à la VM. Ils ne peuvent pas non plus se rattacher automatiquement à l'hôte lorsque vous éteignez la VM.

    En conséquence, l'hôte peut ne plus répondre ou s'arrêter de manière inattendue.

    Vous pouvez trouver le statut de l'attribut managed dans la configuration XML de votre VM. L'exemple suivant ouvre la configuration XML de la VM example-VM-1.

    # virsh edit example-VM-1
  • Sauvegarder les données importantes de la VM.
  • Optional: Sauvegardez la configuration XML de votre VM. Par exemple, pour sauvegarder la VM example-VM-1:

    # virsh dumpxml example-VM-1 > example-VM-1.xml
  • Le plug-in VM de la console web est installé sur votre système.

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur la VM à laquelle vous souhaitez attacher un périphérique hôte.

    Une nouvelle page s'ouvre avec une section Overview contenant des informations de base sur la VM sélectionnée et une section Console permettant d'accéder à l'interface graphique de la VM.

  2. Faites défiler jusqu'à Host devices.

    La section Host devices affiche des informations sur les périphériques attachés à la VM ainsi que des options pour Add ou Remove périphériques.

    Image displaying the host devices section of the selected VM.
  3. Cliquez sur Ajouter un périphérique hôte.

    La boîte de dialogue Add host device apparaît.

    Image displaying the Add host device dialog box.
  4. Sélectionnez le périphérique que vous souhaitez attacher à la VM.
  5. Cliquez sur Ajouter

    Le périphérique sélectionné est attaché à la VM.

Vérification

  • Exécutez la VM et vérifiez si l'appareil apparaît dans la section Host devices.

14.4.3. Suppression des périphériques des machines virtuelles à l'aide de la console web

Pour libérer des ressources, modifier les fonctionnalités de votre VM, ou les deux, vous pouvez utiliser la console web pour modifier la VM et supprimer les périphériques hôtes qui ne sont plus nécessaires.

Avertissement

La suppression des périphériques hôtes USB connectés à l'aide de la console web peut échouer en raison d'une corrélation incorrecte entre les numéros de périphérique et de bus du périphérique USB.

Pour plus d'informations, voir les problèmes connus de RHEL 9.

Pour contourner le problème, supprimez la partie <hostdev> du périphérique USB de la configuration XML de la VM à l'aide de l'utilitaire virsh. L'exemple suivant ouvre la configuration XML de la VM example-VM-1:

# virsh edit <example-VM-1>

Conditions préalables

  • Le plug-in VM de la console web est installé sur votre système.
  • Optional: Sauvegardez la configuration XML de votre VM en utilisant virsh dumpxml example-VM-1 et en envoyant le résultat dans un fichier. Par exemple, la procédure suivante permet de sauvegarder la configuration de votre VM testguest1 dans le fichier testguest1.xml:

    # virsh dumpxml testguest1 > testguest1.xml
    # cat testguest1.xml
    <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
      <name>testguest1</name>
      <uuid>ede29304-fe0c-4ca4-abcd-d246481acd18</uuid>
      [...]
    </domain>

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur la VM dont vous souhaitez supprimer un périphérique hôte.

    Une nouvelle page s'ouvre avec une section Overview contenant des informations de base sur la VM sélectionnée et une section Console permettant d'accéder à l'interface graphique de la VM.

  2. Faites défiler jusqu'à Host devices.

    La section Host devices affiche des informations sur les périphériques attachés à la VM ainsi que des options pour Add ou Remove périphériques.

    Image displaying the host dvices section of the selected VM.
  3. Cliquez sur le bouton Supprimer en regard du périphérique que vous souhaitez supprimer de la VM.

    Une boîte de dialogue de confirmation de la suppression du périphérique s'affiche.

    Image displaying the option to remove an attached virtual device.
  4. Cliquez sur Supprimer.

    L'appareil est retiré de la VM.

Résolution de problèmes

  • Si la suppression d'un périphérique hôte rend votre VM non amorçable, utilisez l'utilitaire virsh define pour restaurer la configuration XML en rechargeant le fichier de configuration XML que vous avez sauvegardé précédemment.

    # virsh define testguest1.xml

14.5. Gestion des périphériques USB virtuels

Lorsque vous utilisez une machine virtuelle (VM), vous pouvez accéder à un périphérique USB, tel qu'une clé USB ou une caméra Web, qui est connecté au système hôte, et le contrôler. Dans ce scénario, le système hôte transmet le contrôle du périphérique à la machine virtuelle. C'est ce que l'on appelle un USB-passthrough.

Les sections suivantes fournissent des informations sur l'utilisation de la ligne de commande pour :

14.5.1. Attacher des périphériques USB à des machines virtuelles

Pour attacher un périphérique USB à une machine virtuelle (VM), vous pouvez inclure les informations relatives au périphérique USB dans le fichier de configuration XML de la VM.

Conditions préalables

  • Assurez-vous que le périphérique que vous souhaitez transférer à la VM est connecté à l'hôte.

Procédure

  1. Localisez les valeurs de bus et de périphérique de l'USB que vous souhaitez connecter à la VM.

    Par exemple, la commande suivante affiche la liste des périphériques USB connectés à l'hôte. Le périphérique que nous utiliserons dans cet exemple est connecté au bus 001 en tant que périphérique 005.

    # lsusb
    [...]
    Bus 001 Device 003: ID 2567:0a2b Intel Corp.
    Bus 001 Device 005: ID 0407:6252 Kingston River 2.0
    [...]
  2. Utilisez l'utilitaire virt-xml avec l'argument --add-device.

    Par exemple, la commande suivante permet d'attacher une clé USB à la VM example-VM-1.

    # virt-xml example-VM-1 --add-device --hostdev 001.005
    Domain 'example-VM-1' defined successfully.
Note

Pour attacher un périphérique USB à une VM en cours d'exécution, ajoutez l'argument --update à la commande précédente.

Vérification

  • Exécutez la VM et vérifiez si l'appareil est présent et s'il fonctionne comme prévu.
  • Utilisez la commande virsh dumpxml pour vérifier si la définition XML du dispositif a été ajoutée à la section <devices> du fichier de configuration XML de la VM.

    # virsh dumpxml example-VM-1
    [...]
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x0407'/>
        <product id='0x6252'/>
        <address bus='1' device='5'/>
      </source>
      <alias name='hostdev0'/>
      <address type='usb' bus='0' port='3'/>
    </hostdev>
    [...]

Ressources supplémentaires

14.5.2. Suppression des périphériques USB des machines virtuelles

Pour supprimer un périphérique USB d'une machine virtuelle (VM), vous pouvez supprimer les informations relatives au périphérique USB de la configuration XML de la VM.

Procédure

  1. Localisez les valeurs de bus et de périphérique de l'USB que vous souhaitez supprimer de la VM.

    Par exemple, la commande suivante affiche la liste des périphériques USB connectés à l'hôte. Le périphérique que nous utiliserons dans cet exemple est connecté au bus 001 en tant que périphérique 005.

    # lsusb
    [...]
    Bus 001 Device 003: ID 2567:0a2b Intel Corp.
    Bus 001 Device 005: ID 0407:6252 Kingston River 2.0
    [...]
  2. Utilisez l'utilitaire virt-xml avec l'argument --remove-device.

    Par exemple, la commande suivante supprime une clé USB, attachée à l'hôte en tant que périphérique 005 sur le bus 001, de la VM example-VM-1.

    # virt-xml example-VM-1 --remove-device --hostdev 001.005
    Domain 'example-VM-1' defined successfully.
Note

Pour supprimer un périphérique USB d'une VM en cours d'exécution, ajoutez l'argument --update à la commande précédente.

Vérification

  • Exécutez la VM et vérifiez si l'appareil a été supprimé de la liste des appareils.

Ressources supplémentaires

14.6. Gestion des lecteurs optiques virtuels

Lorsque vous utilisez une machine virtuelle (VM), vous pouvez accéder aux informations stockées dans une image ISO sur l'hôte. Pour ce faire, attachez l'image ISO à la VM en tant que lecteur optique virtuel, tel qu'un lecteur de CD ou de DVD.

Les sections suivantes fournissent des informations sur l'utilisation de la ligne de commande pour :

14.6.1. Attacher des lecteurs optiques aux machines virtuelles

Pour attacher une image ISO en tant que lecteur optique virtuel, modifiez le fichier de configuration XML de la machine virtuelle (VM) et ajoutez le nouveau lecteur.

Conditions préalables

  • Vous devez stocker et copier le chemin d'accès de l'image ISO sur la machine hôte.

Procédure

  • Utilisez l'utilitaire virt-xml avec l'argument --add-device:

    Par exemple, la commande suivante attache l'image ISO example-ISO-name, stockée dans le répertoire /home/username/Downloads, à la VM example-VM-name.

    # virt-xml example-VM-name --add-device --disk /home/username/Downloads/example-ISO-name.iso,device=cdrom
    Domain 'example-VM-name' defined successfully.

Vérification

  • Exécutez la VM et vérifiez si l'appareil est présent et s'il fonctionne comme prévu.

Ressources supplémentaires

14.6.2. Ajouter un CD-ROM à une machine virtuelle en cours d'exécution à l'aide de la console web

Vous pouvez utiliser la console web pour insérer un CD-ROM dans une machine virtuelle (VM) en cours d'exécution sans spécifier le support.

Procédure

  1. Arrêtez la VM.
  2. Attacher un périphérique CD-ROM virtuel sans spécifier d'image source.

    # virt-xml vmname --add-device --disk target.dev=sda,device=cdrom
  3. Exécutez la VM.
  4. Ouvrez la console web et dans l'interface Machines virtuelles, cliquez sur la VM à laquelle vous voulez attacher un CD-ROM.
  5. Faites défiler jusqu'à Disques.

    La section Disques affiche des informations sur les disques affectés à la VM, ainsi que des options permettant d'accéder à Add ou Edit.

  6. Cliquez sur l'option Insérer pour le périphérique cdrom.

    Image displaying the disk row of the cdrom device.
  7. Choisissez une adresse Source pour le fichier que vous souhaitez joindre :

    • Custom Path: Le fichier se trouve dans un répertoire personnalisé sur la machine hôte.
    • Use existing: Le fichier se trouve dans les pools de stockage que vous avez créés.
  8. Cliquez sur Insérer.

Vérification

  • Dans l'interface des machines virtuelles, le fichier apparaîtra dans la section Disks.

14.6.3. Remplacement des images ISO dans les lecteurs optiques virtuels

Pour remplacer une image ISO attachée en tant que lecteur optique virtuel à une machine virtuelle (VM), modifiez le fichier de configuration XML de la VM et spécifiez le remplacement.

Conditions préalables

  • Vous devez stocker l'image ISO sur la machine hôte.
  • Vous devez connaître le chemin d'accès à l'image ISO.

Procédure

  1. Localisez le périphérique cible sur lequel le CD-ROM est attaché à la VM. Vous trouverez cette information dans le fichier de configuration XML de la VM.

    Par exemple, la commande suivante affiche le fichier de configuration XML de la VM example-VM-name Où le périphérique cible pour le CD-ROM est sda.

    # virsh dumpxml example-VM-name
    ...
    <disk>
      ...
      <source file='$(/home/username/Downloads/example-ISO-name.iso)'/>
      <target dev='sda' bus='sata'/>
      ...
    </disk>
    ...
  2. Utilisez l'utilitaire virt-xml avec l'argument --edit.

    Par exemple, la commande suivante remplace l'image ISO example-ISO-name, attachée à la VM example-VM-name à la cible sda, par l'image ISO example-ISO-name-2 stockée dans le répertoire /dev/cdrom.

    # virt-xml example-VM-name --edit target=sda --disk /dev/cdrom/example-ISO-name-2.iso
    Domain 'example-VM-name' defined successfully.

Vérification

  • Exécutez la VM et vérifiez si l'appareil est remplacé et fonctionne comme prévu.

Ressources supplémentaires

  • La commande man virt-xml

14.6.4. Suppression des images ISO des lecteurs optiques virtuels

Pour supprimer une image ISO d'un lecteur optique virtuel attaché à une machine virtuelle (VM), modifiez le fichier de configuration XML de la VM.

Procédure

  1. Localisez le périphérique cible sur lequel le CD-ROM est attaché à la VM. Vous trouverez cette information dans le fichier de configuration XML de la VM.

    Par exemple, la commande suivante affiche le fichier de configuration XML de la VM example-VM-name, où le périphérique cible pour le CD-ROM est sda.

    # virsh dumpxml example-VM-name
    ...
    <disk>
      ...
      <source file='$(/home/username/Downloads/example-ISO-name.iso)'/>
      <target dev='sda' bus='sata'/>
      ...
    </disk>
    ...
  2. Utilisez l'utilitaire virt-xml avec l'argument --edit.

    Par exemple, la commande suivante supprime l'image ISO example-ISO-name du lecteur de CD connecté à la VM example-VM-name.

    # virt-xml example-VM-name --edit target=sda --disk path=
    Domain 'example-VM-name' defined successfully.

Vérification

  • Exécutez la VM et vérifiez que l'image n'est plus disponible.

Ressources supplémentaires

  • La commande man virt-xml

14.6.5. Suppression des lecteurs optiques des machines virtuelles

Pour supprimer un lecteur optique attaché à une machine virtuelle (VM), modifiez le fichier de configuration XML de la VM.

Procédure

  1. Localisez le périphérique cible sur lequel le CD-ROM est attaché à la VM. Vous trouverez cette information dans le fichier de configuration XML de la VM.

    Par exemple, la commande suivante affiche le fichier de configuration XML de la VM example-VM-name, où le périphérique cible pour le CD-ROM est sda.

    # virsh dumpxml example-VM-name
    ...
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='sda' bus='sata'/>
      ...
    </disk>
    ...
  2. Utilisez l'utilitaire virt-xml avec l'argument --remove-device.

    Par exemple, la commande suivante supprime le lecteur optique attaché en tant que cible sda de la VM example-VM-name.

    # virt-xml example-VM-name --remove-device --disk target=sda
    Domain 'example-VM-name' defined successfully.

Vérification

  • Confirmez que le dispositif n'est plus répertorié dans le fichier de configuration XML de la VM.

Ressources supplémentaires

  • La commande man virt-xml

14.6.6. Suppression d'un CD-ROM d'une machine virtuelle en cours d'exécution à l'aide de la console web

Vous pouvez utiliser la console web pour éjecter un périphérique CD-ROM d'une machine virtuelle (VM) en cours d'exécution.

Procédure

  1. Dans l'interface Machines virtuelles, cliquez sur la VM dont vous souhaitez supprimer le CD-ROM.
  2. Faites défiler jusqu'à Disques.

    La section Disques affiche des informations sur les disques affectés à la VM, ainsi que des options permettant d'accéder à Add ou Edit.

    Image displaying the disks section of the VM.
  3. Cliquez sur l'option Ejecter pour le périphérique cdrom.

    La boîte de dialogue Eject media from VM? s'ouvre.

  4. Cliquez sur Ejecter.

Vérification

  • Dans l'interface des machines virtuelles, le fichier joint n'est plus affiché dans la section Disks.

14.7. Gestion des dispositifs SR-IOV

Un périphérique virtuel émulé utilise souvent plus de CPU et de mémoire qu'un périphérique réseau matériel. Cela peut limiter les performances d'une machine virtuelle (VM). Toutefois, si l'un des périphériques de votre hôte de virtualisation prend en charge la virtualisation d'E/S à racine unique (SR-IOV), vous pouvez utiliser cette fonctionnalité pour améliorer les performances du périphérique et, éventuellement, les performances globales de vos machines virtuelles.

14.7.1. Qu'est-ce que le SR-IOV ?

La virtualisation des E/S à racine unique (SR-IOV) est une spécification qui permet à un seul périphérique PCI Express (PCIe) de présenter au système hôte plusieurs périphériques PCI distincts, appelés virtual functions (VF). Chacun de ces périphériques :

  • Est capable de fournir un service identique ou similaire à celui de l'appareil PCIe d'origine.
  • Apparaît à une adresse différente sur le bus PCI de l'hôte.
  • Peut être affecté à une VM différente en utilisant l'affectation VFIO.

Par exemple, un seul périphérique réseau compatible SR-IOV peut présenter des VF à plusieurs VM. Bien que tous les VF utilisent la même carte physique, la même connexion réseau et le même câble réseau, chaque VM contrôle directement son propre périphérique réseau matériel et n'utilise aucune ressource supplémentaire de l'hôte.

Comment fonctionne le SR-IOV

La fonctionnalité SR-IOV est possible grâce à l'introduction des fonctions PCIe suivantes :

  • Physical functions (PFs) - Une fonction PCIe qui fournit la fonctionnalité de son dispositif (par exemple la mise en réseau) à l'hôte, mais qui peut également créer et gérer un ensemble de VF. Chaque périphérique compatible SR-IOV possède un ou plusieurs PF.
  • Virtual functions (VFs) - Fonctions PCIe légères qui se comportent comme des dispositifs indépendants. Chaque VF est dérivé d'un PF. Le nombre maximum de VF qu'un périphérique peut avoir dépend du matériel du périphérique. Chaque VF ne peut être attribué qu'à une seule VM à la fois, mais plusieurs VF peuvent être attribués à une VM.

Les VM reconnaissent les VF comme des périphériques virtuels. Par exemple, un VF créé par un périphérique réseau SR-IOV apparaît comme une carte réseau pour une VM à laquelle il est assigné, de la même manière qu'une carte réseau physique apparaît au système hôte.

Figure 14.1. Architecture SR-IOV

virt SR IOV

Avantages

Les principaux avantages de l'utilisation de VF SR-IOV plutôt que de dispositifs émulés sont les suivants :

  • Amélioration des performances
  • Réduction de l'utilisation des ressources de l'unité centrale et de la mémoire de l'hôte

Par exemple, un VF attaché à une VM en tant que vNIC a des performances presque identiques à celles d'un NIC physique, et bien meilleures que celles des NIC paravirtualisés ou émulés. En particulier, lorsque plusieurs VF sont utilisés simultanément sur un même hôte, les avantages en termes de performances peuvent être significatifs.

Inconvénients

  • Pour modifier la configuration d'un PF, vous devez d'abord changer le nombre de VFs exposés par le PF à zéro. Par conséquent, vous devez également supprimer les périphériques fournis par ces VFs de la VM à laquelle ils sont assignés.
  • Une VM à laquelle sont attachés des périphériques assignés par VFIO, y compris des VF SR-IOV, ne peut pas être migrée vers un autre hôte. Dans certains cas, vous pouvez contourner cette limitation en associant le périphérique attribué à un périphérique émulé. Par exemple, vous pouvez lier un VF de réseau attribué à un vNIC émulé, et retirer le VF avant la migration.
  • En outre, les périphériques attribués par VFIO nécessitent l'épinglage de la mémoire de la VM, ce qui augmente la consommation de mémoire de la VM et empêche l'utilisation du ballooning de la mémoire sur la VM.

14.7.2. Attacher des périphériques de réseau SR-IOV à des machines virtuelles

Pour attacher un périphérique réseau SR-IOV à une machine virtuelle (VM) sur un hôte Intel ou AMD, vous devez créer une fonction virtuelle (VF) à partir d'une interface réseau compatible SR-IOV sur l'hôte et affecter la VF en tant que périphérique à une VM spécifiée. Pour plus de détails, voir les instructions suivantes.

Conditions préalables

  • L'unité centrale et le micrologiciel de votre hôte prennent en charge l'unité de gestion de la mémoire d'E/S (IOMMU).

    • Si vous utilisez un processeur Intel, il doit supporter la technologie de virtualisation Intel pour Directed I/O (VT-d).
    • Si vous utilisez un processeur AMD, il doit prendre en charge la fonction AMD-Vi.
  • Le système hôte utilise le service de contrôle d'accès (ACS) pour assurer l'isolation de l'accès direct à la mémoire (DMA) pour la topologie PCIe. Vérifiez ce point auprès du fournisseur du système.

    Pour plus d'informations, voir Considérations matérielles pour l'implémentation du SR-IOV.

  • Le périphérique réseau physique prend en charge SR-IOV. Pour vérifier si des périphériques réseau de votre système prennent en charge SR-IOV, utilisez la commande lspci -v et recherchez Single Root I/O Virtualization (SR-IOV) dans le résultat.

    # lspci -v
    [...]
    02:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    	Subsystem: Intel Corporation Gigabit ET Dual Port Server Adapter
    	Flags: bus master, fast devsel, latency 0, IRQ 16, NUMA node 0
    	Memory at fcba0000 (32-bit, non-prefetchable) [size=128K]
    [...]
    	Capabilities: [150] Alternative Routing-ID Interpretation (ARI)
    	Capabilities: [160] Single Root I/O Virtualization (SR-IOV)
    	Kernel driver in use: igb
    	Kernel modules: igb
    [...]
  • L'interface réseau de l'hôte que vous voulez utiliser pour créer des VF est en cours d'exécution. Par exemple, pour activer l'interface eth1 et vérifier qu'elle fonctionne :

    # ip link set eth1 up
    # ip link show eth1
    8: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
       link/ether a0:36:9f:8f:3f:b8 brd ff:ff:ff:ff:ff:ff
       vf 0 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 1 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 2 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 3 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
  • Pour que l'attribution de périphériques SR-IOV fonctionne, la fonction IOMMU doit être activée dans le BIOS et le noyau de l'hôte. Pour ce faire, il faut

    • Sur un hôte Intel, activez VT-d :

      1. Régénérer la configuration GRUB avec les paramètres intel_iommu=on et iommu=pt:

        # grubby --args="intel_iommu=on iommu=pt" --update-kernel=ALL
      2. Redémarrer l'hôte.
    • Sur un hôte AMD, activez AMD-Vi :

      1. Régénérer la configuration GRUB avec le paramètre iommu=pt:

        # grubby --args="iommu=pt" --update-kernel=ALL
      2. Redémarrer l'hôte.

Procédure

  1. Optional: Confirmez le nombre maximum de VF que votre périphérique de réseau peut utiliser. Pour ce faire, utilisez la commande suivante et remplacez eth1 par votre périphérique réseau compatible SR-IOV.

    # cat /sys/class/net/eth1/device/sriov_totalvfs
    7
  2. La commande suivante permet de créer une fonction virtuelle (VF) :

    # echo VF-number > /sys/class/net/network-interface/device/sriov_numvfs

    Dans la commande, remplacez :

    • VF-number avec le nombre de FV que vous souhaitez créer sur la CP.
    • network-interface avec le nom de l'interface réseau pour laquelle les VF seront créés.

    L'exemple suivant crée 2 VF à partir de l'interface réseau eth1 :

    # echo 2 > /sys/class/net/eth1/device/sriov_numvfs
  3. Vérifier que les VF ont été ajoutés :

    # lspci | grep Ethernet
    82:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
    82:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
    82:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
    82:10.2 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
  4. Rendez les VF créés persistants en créant une règle udev pour l'interface réseau que vous avez utilisée pour créer les VF. Par exemple, pour l'interface eth1, créez le fichier /etc/udev/rules.d/eth1.rules et ajoutez la ligne suivante :

    ACTION=="add", SUBSYSTEM=="net", ENV{ID_NET_DRIVER}=="ixgbe", ATTR{device/sriov_numvfs}="2"

    Cela garantit que les deux VF qui utilisent le pilote ixgbe seront automatiquement disponibles pour l'interface eth1 au démarrage de l'hôte. Si vous n'avez pas besoin de périphériques SR-IOV persistants, ignorez cette étape.

    Avertissement

    Actuellement, le paramètre décrit ci-dessus ne fonctionne pas correctement lorsque l'on tente de rendre les VF persistants sur les adaptateurs Broadcom NetXtreme II BCM57810. En outre, l'attachement de VF basés sur ces adaptateurs à des machines virtuelles Windows n'est actuellement pas fiable.

  5. Branchez à chaud l'un des périphériques d'interface VF nouvellement ajoutés à une VM en cours d'exécution.

    # virsh attach-interface testguest1 hostdev 0000:82:10.0 --managed --live --config

Vérification

  • Si la procédure réussit, le système d'exploitation invité détecte une nouvelle carte d'interface réseau.

14.7.3. Dispositifs pris en charge pour l'affectation SR-IOV

Tous les périphériques ne peuvent pas être utilisés pour le SR-IOV. Les périphériques suivants ont été testés et vérifiés comme étant compatibles avec SR-IOV dans RHEL 9.

Dispositifs de mise en réseau

  • Intel 82599ES 10 Gigabit Ethernet Controller - utilise le pilote ixgbe
  • Intel Ethernet Controller XL710 Series - utilise le pilote i40e
  • Intel Ethernet Network Adapter XXV710 - utilise le pilote i40e
  • Intel 82576 Gigabit Ethernet Controller - utilise le pilote igb
  • Broadcom NetXtreme II BCM57810 - utilise le pilote bnx2x
  • Contrôleur Ethernet E810-C pour QSFP - utilise le pilote ice
  • SFC9220 10/40G Ethernet Controller - utilise le pilote sfc
  • Contrôleur FastLinQ QL41000 Series 10/25/40/50GbE - utilise le pilote qede
  • Cartes d'adaptateur Ethernet Mellanox ConnectX-5
  • Famille Mellanox MT2892 [ConnectX-6 Dx]

14.8. Attacher des périphériques DASD à des machines virtuelles sur IBM Z

En utilisant la fonction vfio-ccw, vous pouvez attribuer des périphériques de stockage à accès direct (DASD) en tant que périphériques médiatisés à vos machines virtuelles (VM) sur des hôtes IBM Z. Cela permet par exemple à la VM d'accéder à un ensemble de données z/OS ou de fournir des DASD assignés à une machine z/OS. Cela permet par exemple à la VM d'accéder à un ensemble de données z/OS ou de fournir les DASD attribués à une machine z/OS.

Conditions préalables

  • Vous disposez d'un système doté d'une architecture matérielle IBM Z compatible avec le protocole FICON.
  • Vous disposez d'une VM cible d'un système d'exploitation Linux.
  • Le paquetage driverctl est installé.

    # dnf install driverctl
  • Les modules nécessaires du noyau vfio ont été chargés sur l'hôte.

    # lsmod | grep vfio

    La sortie de cette commande doit contenir les modules suivants :

    • vfio_ccw
    • vfio_mdev
    • vfio_iommu_type1
  • Vous disposez d'un périphérique DASD de rechange destiné à l'usage exclusif de la VM et vous connaissez l'identifiant de ce périphérique.

    La procédure suivante utilise 0.0.002c comme exemple. Lors de l'exécution des commandes, remplacez 0.0.002c par l'identifiant de votre périphérique DASD.

Procédure

  1. Obtenir l'identifiant du sous-canal du dispositif DASD.

    # lscss -d 0.0.002c
    Device   Subchan.  DevType CU Type Use  PIM PAM POM  CHPIDs
    ----------------------------------------------------------------------
    0.0.002c 0.0.29a8  3390/0c 3990/e9 yes  f0  f0  ff   02111221 00000000

    Dans cet exemple, l'identifiant du sous-canal est détecté comme étant 0.0.29a8. Dans les commandes suivantes de cette procédure, remplacez 0.0.29a8 par l'identifiant de sous-canal détecté pour votre appareil.

  2. Si la commande lscss de l'étape précédente n'a affiché que l'en-tête et aucune information sur le périphérique, procédez comme suit :

    1. Retirer l'appareil de la liste cio_ignore.

      # cio_ignore -r 0.0.002c
    2. Dans le système d'exploitation invité, modifiez la ligne de commande du noyau de la VM et ajoutez l'identifiant du périphérique avec une marque ! à la ligne qui commence par cio_ignore=, s'il n'est pas déjà présent.

      cio_ignore=all,!condev,!0.0.002c
    3. Répétez l'étape 1 sur l'hôte pour obtenir l'identifiant du sous-canal.
  3. Lier le sous-canal au pilote vfio_ccw passthrough.

    # driverctl -b css set-override 0.0.29a8 vfio_ccw
    Note

    Cela lie le sous-canal 0.0.29a8 à vfio_ccw de manière persistante, ce qui signifie que le DASD ne sera pas utilisable sur l'hôte. Si vous devez utiliser le périphérique sur l'hôte, vous devez d'abord supprimer la liaison automatique à 'vfio_ccw' et lier à nouveau le sous-canal au pilote par défaut :

    # driverctl -b css unset-override 0.0.29a8

  4. Définir et démarrer le dispositif à médiation DASD.

    # cat nodedev.xml
    <device>
        <parent>css_0_0_29a8</parent>
        <capability type="mdev">
            <type id="vfio_ccw-io"/>
        </capability>
    </device>
    
    # virsh nodedev-define nodedev.xml
    Node device 'mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8' defined from 'nodedev.xml'
    
    # virsh nodedev-start mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8
    Device mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 started
  5. Arrêter la VM, si elle est en cours d'exécution.
  6. Affichez l'UUID de l'appareil précédemment défini et enregistrez-le pour l'étape suivante.

    # virsh nodedev-dumpxml mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8
    
    <device>
      <name>mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8</name>
      <parent>css_0_0_29a8</parent>
      <capability type='mdev'>
        <type id='vfio_ccw-io'/>
        <uuid>30820a6f-b1a5-4503-91ca-0c10ba12345a</uuid>
        <iommuGroup number='0'/>
        <attr name='assign_adapter' value='0x02'/>
        <attr name='assign_domain' value='0x002b'/>
      </capability>
    </device>
  7. Attachez le dispositif médiatisé à la VM. Pour ce faire, utilisez l'utilitaire virsh edit pour modifier la configuration XML de la VM, ajoutez la section suivante au XML et remplacez la valeur uuid par l'UUID que vous avez obtenu à l'étape précédente.

    <hostdev mode='subsystem' type='mdev' model='vfio-ccw'>
      <source>
        <address uuid="30820a6f-b1a5-4503-91ca-0c10ba12345a"/>
      </source>
    </hostdev>
  8. Optional: Configurer le périphérique médiatisé pour qu'il démarre automatiquement au démarrage de l'hôte.

    # virsh nodedev-autostart mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8

Vérification

  1. Assurez-vous que le dispositif médiatisé est correctement configuré.

    # virsh nodedev-info mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8
    Name:           mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8
    Parent:         css_0_0_0121
    Active:         yes
    Persistent:     yes
    Autostart:      yes
  2. Obtenez l'identifiant que libvirt a attribué au périphérique DASD médiatisé. Pour ce faire, affichez la configuration XML de la VM et recherchez un périphérique vfio-ccw.

    # virsh dumpxml vm-name
    
    <domain>
    [...]
        <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ccw'>
          <source>
            <address uuid='10620d2f-ed4d-437b-8aff-beda461541f9'/>
          </source>
          <alias name='hostdev0'/>
          <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0009'/>
        </hostdev>
    [...]
    </domain>

    Dans cet exemple, l'identifiant attribué à l'appareil est 0.0.0009.

  3. Démarrez la VM et connectez-vous à son système d'exploitation invité.
  4. Dans le système d'exploitation invité, vérifiez que le périphérique DASD est répertorié. Par exemple, dans le système d'exploitation invité, confirmez que le périphérique DASD est répertorié :

    # lscss | grep 0.0.0009
    0.0.0009 0.0.0007  3390/0c 3990/e9      f0  f0  ff   12212231 00000000
  5. Dans le système d'exploitation invité, mettez le périphérique en ligne. Par exemple :

    # chccwdev -e 0.0009
    Setting device 0.0.0009 online
    Done

14.9. Attacher un dispositif de surveillance à une machine virtuelle en utilisant la console web

Pour forcer la machine virtuelle (VM) à effectuer une action spécifique lorsqu'elle ne répond plus, vous pouvez attacher des périphériques de surveillance virtuels à une VM.

Conditions préalables

Procédure

  1. Dans l'interface de ligne de commande, installez le service watchdog.

    # dnf install watchdog

  2. Arrêtez la VM.
  3. Ajoutez le service watchdog à la VM.

    # virt-xml vmname --add-device --watchdog action=reset --update

  4. Exécutez la VM.
  5. Ouvrez la console web et dans l'interface Machines virtuelles de la console web, cliquez sur la VM à laquelle vous voulez ajouter le dispositif de surveillance.
  6. Cliquez sur ajouter à côté du champ Watchdog dans le volet Vue d'ensemble.

    La boîte de dialogue Add watchdog device type apparaît.

  7. Sélectionnez l'action que vous souhaitez que le dispositif de surveillance effectue si la VM cesse de répondre.

    Image displaying the add watchdog device type dialog box.
  8. Cliquez sur Ajouter.

Vérification

  • L'action que vous avez sélectionnée est visible à côté du champ Watchdog dans le volet Vue d'ensemble.

14.10. Attacher des périphériques PCI à des machines virtuelles sur IBM Z

En utilisant le pilote de périphérique vfio-pci, vous pouvez affecter des périphériques PCI en mode pass-through à vos machines virtuelles (VM) sur les hôtes IBM Z. Cela permet par exemple à la VM d'utiliser des disques flash NVMe pour gérer les bases de données.

Conditions préalables

  • Vous disposez d'un système hôte doté de l'architecture matérielle IBM Z.
  • Vous disposez d'une VM cible du système d'exploitation Linux.
  • Les modules nécessaires du noyau vfio ont été chargés sur l'hôte.

    # lsmod | grep vfio

    La sortie de cette commande doit contenir les modules suivants :

    • vfio_pci
    • vfio_pci_core
    • vfio_iommu_type1

Procédure

  1. Obtenez l'identifiant de l'adresse PCI de l'appareil que vous souhaitez utiliser.

    # lspci -nkD
    
    0000:00:00.0 0000: 1014:04ed
    	Kernel driver in use: ism
    	Kernel modules: ism
    0001:00:00.0 0000: 1014:04ed
    	Kernel driver in use: ism
    	Kernel modules: ism
    0002:00:00.0 0200: 15b3:1016
    	Subsystem: 15b3:0062
    	Kernel driver in use: mlx5_core
    	Kernel modules: mlx5_core
    0003:00:00.0 0200: 15b3:1016
    	Subsystem: 15b3:0062
    	Kernel driver in use: mlx5_core
    	Kernel modules: mlx5_core
  2. Ouvrez la configuration XML de la VM à laquelle vous souhaitez attacher le périphérique PCI.

    # virsh edit vm-name
  3. Ajoutez la configuration suivante <hostdev> à la section <devices> du fichier XML.

    Remplacez les valeurs de la ligne address par l'adresse PCI de votre appareil. Par exemple, si l'adresse de l'appareil est 0003:00:00.0, utilisez la configuration suivante :

    <hostdev mode="subsystem" type="pci" managed="yes">
      <driver name="vfio"/>
       <source>
        <address domain="0x0003" bus="0x00" slot="0x00" function="0x0"/>
       </source>
       <address type="pci"/>
    </hostdev>
  4. Optional: Pour modifier la façon dont le système d'exploitation invité détectera le périphérique PCI, vous pouvez également ajouter un sous-élément <zpci> à l'élément <address>. Dans la ligne <zpci>, vous pouvez ajuster les valeurs uid et fid, ce qui modifie l'adresse PCI et l'ID de fonction du périphérique dans le système d'exploitation invité.

    <hostdev mode="subsystem" type="pci" managed="yes">
      <driver name="vfio"/>
       <source>
        <address domain="0x0003" bus="0x00" slot="0x00" function="0x0"/>
       </source>
       <address type="pci">
         <zpci uid="0x0008" fid="0x001807"/>
       </address>
    </hostdev>

    Dans cet exemple :

    • uid="0x0008" définit l'adresse PCI de domaine du périphérique dans la VM à 0008:00:00.0.
    • fid="0x001807" définit la valeur de l'emplacement de l'appareil à 0x001807. Par conséquent, la configuration du périphérique dans le système de fichiers de la VM est enregistrée à l'adresse /sys/bus/pci/slots/00001087/address.

      Si ces valeurs ne sont pas spécifiées, libvirt les configure automatiquement.

  5. Sauvegarder la configuration XML.
  6. Si la VM est en cours d'exécution, arrêtez-la.

    # virsh shutdown vm-name

Vérification

  1. Démarrez la VM et connectez-vous à son système d'exploitation invité.
  2. Dans le système d'exploitation invité, vérifiez que le périphérique PCI est répertorié.

    Par exemple, si l'adresse de l'appareil est 0003:00:00.0, utilisez la commande suivante :

    # lspci -nkD | grep 0003:00:00.0
    
    0003:00:00.0 8086:9a09 (rev 01)

Chapitre 15. Gestion du stockage pour les machines virtuelles

Une machine virtuelle (VM), tout comme une machine physique, nécessite un espace de stockage pour les données, les programmes et les fichiers système. En tant qu'administrateur de machines virtuelles, vous pouvez attribuer à vos machines virtuelles un espace de stockage physique ou en réseau en tant qu'espace de stockage virtuel. Vous pouvez également modifier la façon dont le stockage est présenté à une VM, quel que soit le matériel sous-jacent.

Les sections suivantes fournissent des informations sur les différents types de stockage de VM, leur fonctionnement et la manière dont vous pouvez les gérer à l'aide de l'interface CLI ou de la console Web.

15.1. Comprendre le stockage des machines virtuelles

Si vous êtes novice en matière de stockage de machines virtuelles (VM) ou si vous n'êtes pas sûr de son fonctionnement, les sections suivantes fournissent une vue d'ensemble des différents composants du stockage de VM, de son fonctionnement, des bases de la gestion et des solutions prises en charge fournies par Red Hat.

Vous pouvez trouver des informations sur :

15.1.1. Introduction aux pools de stockage

Un pool de stockage est un fichier, un répertoire ou un périphérique de stockage, géré par libvirt pour fournir un stockage aux machines virtuelles (VM). Vous pouvez diviser les pools de stockage en volumes de stockage, qui stockent les images des machines virtuelles ou sont attachés aux machines virtuelles en tant que stockage supplémentaire.

En outre, plusieurs machines virtuelles peuvent partager le même pool de stockage, ce qui permet une meilleure allocation des ressources de stockage.

  • Les pools de stockage peuvent être persistants ou transitoires :

    • Un pool de stockage persistant survit à un redémarrage du système de la machine hôte. Vous pouvez utiliser le site virsh pool-define pour créer un pool de stockage persistant.
    • Un pool de stockage transitoire n'existe que jusqu'au redémarrage de l'hôte. Vous pouvez utiliser la commande virsh pool-create pour créer un pool de stockage transitoire.

Types de stockage du pool de stockage

Les pools de stockage peuvent être locaux ou en réseau (partagés) :

  • Local storage pools

    Les pools de stockage locaux sont attachés directement au serveur hôte. Ils comprennent les répertoires locaux, les disques directement attachés, les partitions physiques et les groupes de volumes LVM (Logical Volume Management) sur les périphériques locaux.

    Les pools de stockage locaux sont utiles pour le développement, les tests et les petits déploiements qui ne nécessitent pas de migration ou qui comportent un grand nombre de machines virtuelles.

  • Networked (shared) storage pools

    Les pools de stockage en réseau comprennent des périphériques de stockage partagés sur un réseau à l'aide de protocoles standard.

15.1.2. Introduction aux volumes de stockage

Les pools de stockage sont divisés en storage volumes. Les volumes de stockage sont des abstractions de partitions physiques, de volumes logiques LVM, d'images de disque basées sur des fichiers et d'autres types de stockage gérés par libvirt. Les volumes de stockage sont présentés aux machines virtuelles comme des périphériques de stockage locaux, tels que des disques, quel que soit le matériel sous-jacent.

Sur la machine hôte, un volume de stockage est désigné par son nom et par l'identifiant du pool de stockage dont il provient. Sur la ligne de commande virsh, cela prend la forme suivante --pool storage_pool volume_name.

Par exemple, pour afficher des informations sur un volume nommé firstimage dans le pool guest_images.

# virsh vol-info --pool guest_images firstimage
  Name:             firstimage
  Type:             block
  Capacity:         20.00 GB
  Allocation:       20.00 GB

15.1.3. Gestion du stockage à l'aide de libvirt

En utilisant le protocole à distance libvirt, vous pouvez gérer tous les aspects du stockage des VM. Ces opérations peuvent également être effectuées sur un hôte distant. Par conséquent, une application de gestion qui utilise libvirt, telle que la console web RHEL, peut être utilisée pour effectuer toutes les tâches nécessaires à la configuration du stockage d'une VM.

Vous pouvez utiliser l'API libvirt pour demander la liste des volumes d'un pool de stockage ou pour obtenir des informations sur la capacité, l'allocation et le stockage disponible dans ce pool de stockage. Pour les pools de stockage qui le prennent en charge, vous pouvez également utiliser l'API libvirt pour créer, cloner, redimensionner et supprimer des volumes de stockage. En outre, vous pouvez utiliser l'API libvirt pour télécharger des données vers des volumes de stockage, télécharger des données à partir de volumes de stockage ou effacer des données à partir de volumes de stockage.

15.1.4. Vue d'ensemble de la gestion du stockage

Pour illustrer les options disponibles pour la gestion du stockage, l'exemple suivant présente un exemple de serveur NFS qui utilise mount -t nfs nfs.example.com:/path/to/share /path/to/data.

En tant qu'administrateur de stockage :

  • Vous pouvez définir un pool de stockage NFS sur l'hôte de virtualisation pour décrire le chemin du serveur exporté et le chemin cible du client. Par conséquent, libvirt peut monter le stockage soit automatiquement lorsque libvirt est démarré, soit au besoin lorsque libvirt est en cours d'exécution.
  • Vous pouvez simplement ajouter le pool de stockage et le volume de stockage à une VM par son nom. Il n'est pas nécessaire d'ajouter le chemin cible au volume. Par conséquent, même si le chemin d'accès du client cible change, cela n'affecte pas la VM.
  • Vous pouvez configurer les pools de stockage pour qu'ils démarrent automatiquement. Dans ce cas, libvirt monte automatiquement le disque partagé NFS dans le répertoire spécifié lors du démarrage de libvirt. libvirt monte le partage dans le répertoire spécifié, de la même manière que la commande mount nfs.example.com:/path/to/share /vmdata.
  • Vous pouvez interroger les chemins d'accès aux volumes de stockage à l'aide de l'API libvirt. Ces volumes de stockage sont essentiellement les fichiers présents sur le disque partagé NFS. Vous pouvez ensuite copier ces chemins dans la section de la définition XML d'une VM qui décrit le stockage source pour les périphériques de bloc de la VM.
  • Dans le cas de NFS, vous pouvez utiliser une application qui utilise l'API libvirt pour créer et supprimer des volumes de stockage dans le pool de stockage (fichiers dans le partage NFS) jusqu'à la limite de la taille du pool (capacité de stockage du partage).

    Notez que tous les types de pools de stockage ne prennent pas en charge la création et la suppression de volumes.

  • Vous pouvez arrêter un pool de stockage lorsqu'il n'est plus nécessaire. L'arrêt d'un pool de stockage (pool-destroy) annule l'opération de démarrage, dans ce cas, le démontage du partage NFS. Les données du partage ne sont pas modifiées par l'opération de destruction, malgré ce que le nom de la commande suggère. Pour plus d'informations, voir man virsh.

15.1.5. Types de pools de stockage pris en charge et non pris en charge

Supported storage pool types

Voici une liste des types de pools de stockage pris en charge par RHEL :

  • Pools de stockage basés sur un répertoire
  • Pools de stockage sur disque
  • Pools de stockage basés sur des partitions
  • pools de stockage basés sur iSCSI
  • Pools de stockage basés sur LVM
  • Pools de stockage basés sur NFS
  • Pools de stockage basés sur SCSI avec périphériques vHBA
  • Pools de stockage basés sur des chemins multiples
  • Pools de stockage basés sur les BDR

Unsupported storage pool types

Voici une liste des types de pools de stockage libvirt non pris en charge par RHEL :

  • Pools de stockage basés sur des chiens de berger
  • Pools de stockage basés sur Vstorage
  • Pools de stockage basés sur ZFS
  • pools de stockage iSCSI-direct
  • Pools de stockage GlusterFS

15.2. Gestion des pools de stockage des machines virtuelles à l'aide de la CLI

Vous pouvez utiliser le CLI pour gérer les aspects suivants de vos pools de stockage afin d'affecter du stockage à vos machines virtuelles (VM) :

15.2.1. Visualisation des informations sur les pools de stockage à l'aide de l'interface de ligne de commande

En utilisant l'interface de commande, vous pouvez afficher une liste de tous les pools de stockage avec des détails limités ou complets sur les pools de stockage. Vous pouvez également filtrer les pools de stockage répertoriés.

Procédure

  • Utilisez la commande virsh pool-list pour afficher les informations relatives au pool de stockage.

    # virsh pool-list --all --details
     Name                State    Autostart  Persistent    Capacity  Allocation   Available
     default             running  yes        yes          48.97 GiB   23.93 GiB   25.03 GiB
     Downloads           running  yes        yes         175.62 GiB   62.02 GiB  113.60 GiB
     RHEL-Storage-Pool   running  yes        yes         214.62 GiB   93.02 GiB  168.60 GiB

Ressources supplémentaires

  • La commande virsh pool-list --help

15.2.2. Création de pools de stockage basés sur des répertoires à l'aide de la CLI

Un pool de stockage basé sur un répertoire est basé sur un répertoire dans un système de fichiers monté existant. Ceci est utile, par exemple, lorsque vous souhaitez utiliser l'espace restant sur le système de fichiers à d'autres fins. Vous pouvez utiliser l'utilitaire virsh pour créer des pools de stockage basés sur des répertoires.

Conditions préalables

  • Assurez-vous que votre hyperviseur prend en charge les pools de stockage de répertoires :

    # virsh pool-capabilities | grep "'dir' supported='yes'"

    Si la commande affiche une sortie, les pools de répertoires sont pris en charge.

Procédure

  1. Create a storage pool

    Utilisez la commande virsh pool-define-as pour définir et créer un pool de stockage de type répertoire. Par exemple, pour créer un pool de stockage nommé guest_images_dir qui utilise le répertoire /guest_images:

    # virsh pool-define-as guest_images_dir dir --target "/guest_images"
    Pool guest_images_dir defined

    Si vous disposez déjà d'une configuration XML du pool de stockage que vous souhaitez créer, vous pouvez également définir le pool sur la base du XML. Pour plus d'informations, voir Paramètres des pools de stockage basés sur le répertoire.

  2. Create the storage pool target path

    La commande virsh pool-build permet de créer un chemin cible de pool de stockage pour un pool de stockage de système de fichiers préformaté, d'initialiser le périphérique source de stockage et de définir le format des données.

    # virsh pool-build guest_images_dir
      Pool guest_images_dir built
    
    # ls -la /guest_images
      total 8
      drwx------.  2 root root 4096 May 31 19:38 .
      dr-xr-xr-x. 25 root root 4096 May 31 19:38 ..
  3. Verify that the pool was created

    Utilisez la commande virsh pool-list pour vérifier que le pool a été créé.

    # virsh pool-list --all
    
      Name                 State      Autostart
      -----------------------------------------
      default              active     yes
      guest_images_dir     inactive   no
  4. Start the storage pool

    Utilisez la commande virsh pool-start pour monter le pool de stockage.

    # virsh pool-start guest_images_dir
      Pool guest_images_dir started
    Note

    La commande virsh pool-start n'est nécessaire que pour les pools de stockage permanents. Les pools de stockage transitoires sont automatiquement démarrés lors de leur création.

  5. [Optional] Turn on autostart

    Par défaut, un pool de stockage défini avec la commande virsh n'est pas configuré pour démarrer automatiquement chaque fois que les services de virtualisation démarrent. Utilisez la commande virsh pool-autostart pour configurer le pool de stockage afin qu'il démarre automatiquement.

    # virsh pool-autostart guest_images_dir
      Pool guest_images_dir marked as autostarted

Vérification

  • Utilisez la commande virsh pool-info pour vérifier que le pool de stockage est dans l'état running état. Vérifiez que les tailles signalées sont conformes aux attentes et que le démarrage automatique est configuré correctement.

    # virsh pool-info guest_images_dir
      Name:           guest_images_dir
      UUID:           c7466869-e82a-a66c-2187-dc9d6f0877d0
      State:          running
      Persistent:     yes
      Autostart:      yes
      Capacity:       458.39 GB
      Allocation:     197.91 MB
      Available:      458.20 GB

15.2.3. Création de pools de stockage sur disque à l'aide de la CLI

Dans un pool de stockage sur disque, le pool est basé sur une partition de disque. Cela est utile, par exemple, lorsque vous souhaitez qu'une partition entière du disque soit dédiée au stockage de la machine virtuelle (VM). Vous pouvez utiliser l'utilitaire virsh pour créer des pools de stockage sur disque.

Conditions préalables

  • Assurez-vous que votre hyperviseur prend en charge les pools de stockage sur disque :

    # virsh pool-capabilities | grep "'disk' supported='yes'"

    Si la commande affiche une sortie, les pools sur disque sont pris en charge.

  • Préparez un périphérique sur lequel vous baserez le pool de stockage. Pour ce faire, préférez les partitions (par exemple, /dev/sdb1) ou les volumes LVM. Si vous donnez à une VM un accès en écriture à un disque entier ou à un périphérique bloc (par exemple, /dev/sdb), la VM le partitionnera probablement ou y créera ses propres groupes LVM. Cela peut entraîner des erreurs système sur l'hôte.

    Cependant, si vous avez besoin d'utiliser un périphérique bloc entier pour le pool de stockage, Red Hat recommande de protéger toutes les partitions importantes sur le périphérique de la fonction os-prober de GRUB. Pour ce faire, éditez le fichier /etc/default/grub et appliquez l'une des configurations suivantes :

    • Désactiver os-prober.

      GRUB_DISABLE_OS_PROBER=true
    • Empêcher os-prober de découvrir une partition spécifique. Par exemple :

      GRUB_OS_PROBER_SKIP_LIST="5ef6313a-257c-4d43@/dev/sdb1"
  • Sauvegardez toutes les données sur l'unité de stockage sélectionnée avant de créer un pool de stockage. Selon la version de libvirt utilisée, le fait de dédier un disque à un pool de stockage peut entraîner le reformatage et l'effacement de toutes les données actuellement stockées sur l'unité de disque.

Procédure

  1. Create a storage pool

    Utilisez la commande virsh pool-define-as pour définir et créer un pool de stockage de type disque. L'exemple suivant crée un pool de stockage nommé guest_images_disk qui utilise le périphérique /dev/sdb et est monté sur le répertoire /dev.

    # virsh pool-define-as guest_images_disk disk --source-format=gpt --source-dev=/dev/sdb --target /dev
    Pool guest_images_disk defined

    Si vous disposez déjà d'une configuration XML du pool de stockage que vous souhaitez créer, vous pouvez également définir le pool sur la base du XML. Pour plus d'informations, voir Paramètres des pools de stockage sur disque.

  2. Create the storage pool target path

    La commande virsh pool-build permet de créer un chemin cible de pool de stockage pour un pool de stockage de système de fichiers préformaté, d'initialiser le périphérique source de stockage et de définir le format des données.

    # virsh pool-build guest_images_disk
      Pool guest_images_disk built
    Note

    La construction du chemin d'accès à la cible n'est nécessaire que pour les pools de stockage sur disque, sur système de fichiers et logiques. Si libvirt détecte que le format de données de l'unité de stockage source diffère du type de pool de stockage sélectionné, la construction échoue, sauf si l'option overwrite soit spécifiée.

  3. Verify that the pool was created

    Utilisez la commande virsh pool-list pour vérifier que le pool a été créé.

    # virsh pool-list --all
    
      Name                 State      Autostart
      -----------------------------------------
      default              active     yes
      guest_images_disk    inactive   no
  4. Start the storage pool

    Utilisez la commande virsh pool-start pour monter le pool de stockage.

    # virsh pool-start guest_images_disk
      Pool guest_images_disk started
    Note

    La commande virsh pool-start n'est nécessaire que pour les pools de stockage permanents. Les pools de stockage transitoires sont automatiquement démarrés lors de leur création.

  5. [Optional] Turn on autostart

    Par défaut, un pool de stockage défini avec la commande virsh n'est pas configuré pour démarrer automatiquement chaque fois que les services de virtualisation démarrent. Utilisez la commande virsh pool-autostart pour configurer le pool de stockage afin qu'il démarre automatiquement.

    # virsh pool-autostart guest_images_disk
      Pool guest_images_disk marked as autostarted

Vérification

  • Utilisez la commande virsh pool-info pour vérifier que le pool de stockage est dans l'état running état. Vérifiez que les tailles signalées sont conformes aux attentes et que le démarrage automatique est configuré correctement.

    # virsh pool-info guest_images_disk
      Name:           guest_images_disk
      UUID:           c7466869-e82a-a66c-2187-dc9d6f0877d0
      State:          running
      Persistent:     yes
      Autostart:      yes
      Capacity:       458.39 GB
      Allocation:     197.91 MB
      Available:      458.20 GB

15.2.4. Création de pools de stockage basés sur des systèmes de fichiers à l'aide de la CLI

Lorsque vous souhaitez créer un pool de stockage sur un système de fichiers qui n'est pas monté, utilisez le pool de stockage basé sur le système de fichiers. Ce pool de stockage est basé sur un point de montage de système de fichiers donné. Vous pouvez utiliser l'utilitaire virsh pour créer des pools de stockage basés sur le système de fichiers.

Conditions préalables

  • Assurez-vous que votre hyperviseur prend en charge les pools de stockage basés sur des systèmes de fichiers :

    # virsh pool-capabilities | grep "'fs' supported='yes'"

    Si la commande affiche un résultat, les pools basés sur des fichiers sont pris en charge.

  • Préparez un périphérique sur lequel vous baserez le pool de stockage. Pour ce faire, préférez les partitions (par exemple, /dev/sdb1) ou les volumes LVM. Si vous donnez à une VM un accès en écriture à un disque entier ou à un périphérique bloc (par exemple, /dev/sdb), la VM le partitionnera probablement ou y créera ses propres groupes LVM. Cela peut entraîner des erreurs système sur l'hôte.

    Cependant, si vous avez besoin d'utiliser un périphérique bloc entier pour le pool de stockage, Red Hat recommande de protéger toutes les partitions importantes sur le périphérique de la fonction os-prober de GRUB. Pour ce faire, éditez le fichier /etc/default/grub et appliquez l'une des configurations suivantes :

    • Désactiver os-prober.

      GRUB_DISABLE_OS_PROBER=true
    • Empêcher os-prober de découvrir une partition spécifique. Par exemple :

      GRUB_OS_PROBER_SKIP_LIST="5ef6313a-257c-4d43@/dev/sdb1"

Procédure

  1. Create a storage pool

    Utilisez la commande virsh pool-define-as pour définir et créer un pool de stockage de type système de fichiers. Par exemple, pour créer un pool de stockage nommé guest_images_fs qui utilise la partition /dev/sdc1 et qui est monté sur le répertoire /guest_images :

    # virsh pool-define-as guest_images_fs fs --source-dev /dev/sdc1 --target /guest_images
    Pool guest_images_fs defined

    Si vous disposez déjà d'une configuration XML du pool de stockage que vous souhaitez créer, vous pouvez également définir le pool sur la base du XML. Pour plus d'informations, voir Paramètres des pools de stockage basés sur le système de fichiers.

  2. Define the storage pool target path

    La commande virsh pool-build permet de créer un chemin cible de pool de stockage pour un pool de stockage de système de fichiers préformaté, d'initialiser le périphérique source de stockage et de définir le format des données.

    # virsh pool-build guest_images_fs
      Pool guest_images_fs built
    
    # ls -la /guest_images
      total 8
      drwx------.  2 root root 4096 May 31 19:38 .
      dr-xr-xr-x. 25 root root 4096 May 31 19:38 ..
  3. Verify that the pool was created

    Utilisez la commande virsh pool-list pour vérifier que le pool a été créé.

    # virsh pool-list --all
    
      Name                 State      Autostart
      -----------------------------------------
      default              active     yes
      guest_images_fs      inactive   no
  4. Start the storage pool

    Utilisez la commande virsh pool-start pour monter le pool de stockage.

    # virsh pool-start guest_images_fs
      Pool guest_images_fs started
    Note

    La commande virsh pool-start n'est nécessaire que pour les pools de stockage permanents. Les pools de stockage transitoires sont automatiquement démarrés lors de leur création.

  5. Optional: Activer le démarrage automatique

    Par défaut, un pool de stockage défini avec la commande virsh n'est pas configuré pour démarrer automatiquement chaque fois que les services de virtualisation démarrent. Utilisez la commande virsh pool-autostart pour configurer le pool de stockage afin qu'il démarre automatiquement.

    # virsh pool-autostart guest_images_fs
      Pool guest_images_fs marked as autostarted

Vérification

  1. Utilisez la commande virsh pool-info pour vérifier que le pool de stockage est dans l'état running état. Vérifiez que les tailles signalées sont conformes aux attentes et que le démarrage automatique est configuré correctement.

    # virsh pool-info guest_images_fs
      Name:           guest_images_fs
      UUID:           c7466869-e82a-a66c-2187-dc9d6f0877d0
      State:          running
      Persistent:     yes
      Autostart:      yes
      Capacity:       458.39 GB
      Allocation:     197.91 MB
      Available:      458.20 GB
  2. Vérifiez qu'il existe un répertoire lost found dans le chemin cible sur le système de fichiers, ce qui indique que le périphérique est monté.

    # mount | grep /guest_images
      /dev/sdc1 on /guest_images type ext4 (rw)
    
    # ls -la /guest_images
      total 24
      drwxr-xr-x.  3 root root  4096 May 31 19:47 .
      dr-xr-xr-x. 25 root root  4096 May 31 19:38 ..
      drwx------.  2 root root 16384 May 31 14:18 lost+found

15.2.5. Création de pools de stockage basés sur iSCSI à l'aide de la CLI

Internet Small Computer Systems Interface (iSCSI) est une norme de réseau de stockage basée sur IP permettant de relier des installations de stockage de données. Si vous souhaitez disposer d'un pool de stockage sur un serveur iSCSI, vous pouvez utiliser l'utilitaire virsh pour créer des pools de stockage basés sur iSCSI.

Conditions préalables

  • Assurez-vous que votre hyperviseur prend en charge les pools de stockage basés sur iSCSI :

    # virsh pool-capabilities | grep "'iscsi' supported='yes'"

    Si la commande affiche une sortie, les pools basés sur iSCSI sont pris en charge.

Procédure

  1. Create a storage pool

    Utilisez la commande virsh pool-define-as pour définir et créer un pool de stockage de type iSCSI. Par exemple, pour créer un pool de stockage nommé guest_images_iscsi qui utilise l'IQN iqn.2010-05.com.example.server1:iscsirhel7guest sur server1.example.com, et qui est monté sur le chemin /dev/disk/by-path:

    # virsh pool-define-as --name guest_images_iscsi --type iscsi --source-host server1.example.com --source-dev iqn.2010-05.com.example.server1:iscsirhel7guest --target /dev/disk/by-path
    Pool guest_images_iscsi defined

    Si vous disposez déjà d'une configuration XML du pool de stockage que vous souhaitez créer, vous pouvez également définir le pool sur la base du XML. Pour plus de détails, voir Paramètres des pools de stockage basés sur iSCSI.

  2. Verify that the pool was created

    Utilisez la commande virsh pool-list pour vérifier que le pool a été créé.

    # virsh pool-list --all
    
      Name                 State      Autostart
      -----------------------------------------
      default              active     yes
      guest_images_iscsi   inactive   no
  3. Start the storage pool

    Utilisez la commande virsh pool-start pour monter le pool de stockage.

    # virsh pool-start guest_images_iscsi
      Pool guest_images_iscsi started
    Note

    La commande virsh pool-start n'est nécessaire que pour les pools de stockage permanents. Les pools de stockage transitoires sont automatiquement démarrés lors de leur création.

  4. [Optional] Turn on autostart

    Par défaut, un pool de stockage défini avec la commande virsh n'est pas configuré pour démarrer automatiquement chaque fois que les services de virtualisation démarrent. Utilisez la commande virsh pool-autostart pour configurer le pool de stockage afin qu'il démarre automatiquement.

    # virsh pool-autostart guest_images_iscsi
      Pool guest_images_iscsi marked as autostarted

Vérification

  • Utilisez la commande virsh pool-info pour vérifier que le pool de stockage est dans l'état running état. Vérifiez que les tailles signalées sont conformes aux attentes et que le démarrage automatique est configuré correctement.

    # virsh pool-info guest_images_iscsi
      Name:           guest_images_iscsi
      UUID:           c7466869-e82a-a66c-2187-dc9d6f0877d0
      State:          running
      Persistent:     yes
      Autostart:      yes
      Capacity:       458.39 GB
      Allocation:     197.91 MB
      Available:      458.20 GB

15.2.6. Création de pools de stockage basés sur LVM à l'aide de la CLI

Si vous souhaitez disposer d'un pool de stockage faisant partie d'un groupe de volumes LVM, vous pouvez utiliser l'utilitaire virsh pour créer des pools de stockage basés sur LVM.

Recommandations

Avant de créer un pool de stockage basé sur LVM, il convient de tenir compte des points suivants :

  • Les pools de stockage basés sur LVM n'offrent pas toute la souplesse de LVM.
  • libvirt prend en charge les volumes logiques légers, mais n'offre pas les fonctionnalités des pools de stockage légers.
  • Les pools de stockage basés sur LVM sont des groupes de volumes. Vous pouvez créer des groupes de volumes à l'aide de l'utilitaire virsh, mais de cette façon vous ne pouvez avoir qu'un seul périphérique dans le groupe de volumes créé. Pour créer un groupe de volumes avec plusieurs périphériques, utilisez plutôt l'utilitaire LVM, voir Comment créer un groupe de volumes sous Linux avec LVM.

    Pour plus d'informations sur les groupes de volumes, consultez le site Red Hat Enterprise Linux Logical Volume Manager Administration Guide.

  • Les pools de stockage basés sur LVM nécessitent une partition complète du disque. Si vous activez une nouvelle partition ou un nouveau périphérique à l'aide des commandes virsh, la partition sera formatée et toutes les données seront effacées. Si vous utilisez le groupe de volumes existant d'un hôte, comme dans ces procédures, rien ne sera effacé.

Conditions préalables

  • Assurez-vous que votre hyperviseur prend en charge les pools de stockage basés sur LVM :

    # virsh pool-capabilities | grep "'logical' supported='yes'"

    Si la commande affiche une sortie, les pools basés sur LVM sont pris en charge.

Procédure

  1. Create a storage pool

    Utilisez la commande virsh pool-define-as pour définir et créer un pool de stockage de type LVM. Par exemple, la commande suivante crée un pool de stockage nommé guest_images_lvm qui utilise le groupe de volumes lvm_vg et est monté sur le répertoire /dev/lvm_vg:

    # virsh pool-define-as guest_images_lvm logical --source-name lvm_vg --target /dev/lvm_vg
    Pool guest_images_lvm defined

    Si vous disposez déjà d'une configuration XML du pool de stockage que vous souhaitez créer, vous pouvez également définir le pool sur la base du XML. Pour plus d'informations, voir Paramètres des pools de stockage basés sur LVM.

  2. Verify that the pool was created

    Utilisez la commande virsh pool-list pour vérifier que le pool a été créé.

    # virsh pool-list --all
    
      Name                   State      Autostart
      -------------------------------------------
      default                active     yes
      guest_images_lvm       inactive   no
  3. Start the storage pool

    Utilisez la commande virsh pool-start pour monter le pool de stockage.

    # virsh pool-start guest_images_lvm
      Pool guest_images_lvm started
    Note

    La commande virsh pool-start n'est nécessaire que pour les pools de stockage permanents. Les pools de stockage transitoires sont automatiquement démarrés lors de leur création.

  4. [Optional] Turn on autostart

    Par défaut, un pool de stockage défini avec la commande virsh n'est pas configuré pour démarrer automatiquement chaque fois que les services de virtualisation démarrent. Utilisez la commande virsh pool-autostart pour configurer le pool de stockage afin qu'il démarre automatiquement.

    # virsh pool-autostart guest_images_lvm
      Pool guest_images_lvm marked as autostarted

Vérification

  • Utilisez la commande virsh pool-info pour vérifier que le pool de stockage est dans l'état running état. Vérifiez que les tailles signalées sont conformes aux attentes et que le démarrage automatique est configuré correctement.

    # virsh pool-info guest_images_lvm
      Name:           guest_images_lvm
      UUID:           c7466869-e82a-a66c-2187-dc9d6f0877d0
      State:          running
      Persistent:     yes
      Autostart:      yes
      Capacity:       458.39 GB
      Allocation:     197.91 MB
      Available:      458.20 GB

15.2.7. Création de pools de stockage basés sur NFS à l'aide de la CLI

Si vous souhaitez disposer d'un pool de stockage sur un serveur NFS (Network File System), vous pouvez utiliser l'utilitaire virsh pour créer des pools de stockage basés sur NFS.

Conditions préalables

  • Assurez-vous que votre hyperviseur prend en charge les pools de stockage basés sur NFS :

    # virsh pool-capabilities | grep "<value>nfs</value>"

    Si la commande affiche une sortie, les pools basés sur NFS sont pris en charge.

Procédure

  1. Create a storage pool

    Utilisez la commande virsh pool-define-as pour définir et créer un pool de stockage de type NFS. Par exemple, pour créer un pool de stockage nommé guest_images_netfs qui utilise un serveur NFS avec l'IP 111.222.111.222 monté sur le répertoire serveur /home/net_mount en utilisant le répertoire cible /var/lib/libvirt/images/nfspool:

    # virsh pool-define-as --name guest_images_netfs --type netfs --source-host='111.222.111.222' --source-path='/home/net_mount' --source-format='nfs' --target='/var/lib/libvirt/images/nfspool'

    Si vous disposez déjà d'une configuration XML du pool de stockage que vous souhaitez créer, vous pouvez également définir le pool sur la base du XML. Pour plus d'informations, voir Paramètres des pools de stockage basés sur NFS.

  2. Verify that the pool was created

    Utilisez la commande virsh pool-list pour vérifier que le pool a été créé.

    # virsh pool-list --all
    
      Name                 State      Autostart
      -----------------------------------------
      default              active     yes
      guest_images_netfs   inactive   no
  3. Start the storage pool

    Utilisez la commande virsh pool-start pour monter le pool de stockage.

    # virsh pool-start guest_images_netfs
      Pool guest_images_netfs started
    Note

    La commande virsh pool-start n'est nécessaire que pour les pools de stockage permanents. Les pools de stockage transitoires sont automatiquement démarrés lors de leur création.

  4. [Optional] Turn on autostart

    Par défaut, un pool de stockage défini avec la commande virsh n'est pas configuré pour démarrer automatiquement chaque fois que les services de virtualisation démarrent. Utilisez la commande virsh pool-autostart pour configurer le pool de stockage afin qu'il démarre automatiquement.

    # virsh pool-autostart guest_images_netfs
      Pool guest_images_netfs marked as autostarted

Vérification

  • Utilisez la commande virsh pool-info pour vérifier que le pool de stockage est dans l'état running état. Vérifiez que les tailles signalées sont conformes aux attentes et que le démarrage automatique est configuré correctement.

    # virsh pool-info guest_images_netfs
      Name:           guest_images_netfs
      UUID:           c7466869-e82a-a66c-2187-dc9d6f0877d0
      State:          running
      Persistent:     yes
      Autostart:      yes
      Capacity:       458.39 GB
      Allocation:     197.91 MB
      Available:      458.20 GB

15.2.8. Création de pools de stockage basés sur SCSI avec des périphériques vHBA à l'aide de la CLI

Si vous souhaitez disposer d'un pool de stockage sur un périphérique SCSI (Small Computer System Interface), votre hôte doit pouvoir se connecter au périphérique SCSI à l'aide d'un adaptateur de bus hôte virtuel (vHBA). Vous pouvez ensuite utiliser l'utilitaire virsh pour créer des pools de stockage basés sur SCSI.

Conditions préalables

  • Assurez-vous que votre hyperviseur prend en charge les pools de stockage basés sur SCSI :

    # virsh pool-capabilities | grep "'scsi' supported='yes'"

    Si la commande affiche une sortie, les pools basés sur SCSI sont pris en charge.

  • Avant de créer un pool de stockage basé sur SCSI avec des périphériques vHBA, créez un vHBA. Pour plus d'informations, voir Création de vHBA.

Procédure

  1. Create a storage pool

    Utilisez la commande virsh pool-define-as pour définir et créer un pool de stockage SCSI en utilisant un vHBA. Par exemple, la commande suivante crée un pool de stockage nommé guest_images_vhba qui utilise un vHBA identifié par l'adaptateur parent scsi_host3, le numéro de port mondial 5001a4ace3ee047d et le numéro de nœud mondial 5001a4a93526d0a1. Le pool de stockage est monté sur le répertoire /dev/disk/:

    # virsh pool-define-as guest_images_vhba scsi --adapter-parent scsi_host3 --adapter-wwnn 5001a4a93526d0a1 --adapter-wwpn 5001a4ace3ee047d --target /dev/disk/
    Pool guest_images_vhba defined

    Si vous disposez déjà d'une configuration XML du pool de stockage que vous souhaitez créer, vous pouvez également définir le pool sur la base du XML. Pour plus de détails, voir Paramètres pour les pools de stockage basés sur SCSI avec des périphériques vHBA.

  2. Verify that the pool was created

    Utilisez la commande virsh pool-list pour vérifier que le pool a été créé.

    # virsh pool-list --all
    
      Name                 State      Autostart
      -----------------------------------------
      default              active     yes
      guest_images_vhba    inactive   no
  3. Start the storage pool

    Utilisez la commande virsh pool-start pour monter le pool de stockage.

    # virsh pool-start guest_images_vhba
      Pool guest_images_vhba started
    Note

    La commande virsh pool-start n'est nécessaire que pour les pools de stockage permanents. Les pools de stockage transitoires sont automatiquement démarrés lors de leur création.

  4. [Optional] Turn on autostart

    Par défaut, un pool de stockage défini avec la commande virsh n'est pas configuré pour démarrer automatiquement chaque fois que les services de virtualisation démarrent. Utilisez la commande virsh pool-autostart pour configurer le pool de stockage afin qu'il démarre automatiquement.

    # virsh pool-autostart guest_images_vhba
      Pool guest_images_vhba marked as autostarted

Vérification

  • Utilisez la commande virsh pool-info pour vérifier que le pool de stockage est dans l'état running état. Vérifiez que les tailles signalées sont conformes aux attentes et que le démarrage automatique est configuré correctement.

    # virsh pool-info guest_images_vhba
      Name:           guest_images_vhba
      UUID:           c7466869-e82a-a66c-2187-dc9d6f0877d0
      State:          running
      Persistent:     yes
      Autostart:      yes
      Capacity:       458.39 GB
      Allocation:     197.91 MB
      Available:      458.20 GB

15.2.9. Suppression de pools de stockage à l'aide de la CLI

Pour supprimer un pool de stockage de votre système hôte, vous devez arrêter le pool et supprimer sa définition XML.

Procédure

  1. Dressez la liste des pools de stockage définis à l'aide de la commande virsh pool-list.

    # virsh pool-list --all
    Name                 State      Autostart
    -------------------------------------------
    default              active     yes
    Downloads            active     yes
    RHEL-Storage-Pool   active     yes
  2. Arrêtez le pool de stockage que vous souhaitez supprimer à l'aide de la commande virsh pool-destroy.

    # virsh pool-destroy Downloads
    Pool Downloads destroyed
  3. Optional: Pour certains types de pools de stockage, vous pouvez supprimer le répertoire où réside le pool de stockage à l'aide de la commande virsh pool-delete. Pour ce faire, le répertoire doit être vide.

    # virsh pool-delete Downloads
    Pool Downloads deleted
  4. Supprimez la définition du pool de stockage à l'aide de la commande virsh pool-undefine.

    # virsh pool-undefine Downloads
    Pool Downloads has been undefined

Vérification

  • Confirmez que le pool de stockage a été supprimé.

    # virsh pool-list --all
    Name                 State      Autostart
    -------------------------------------------
    default              active     yes
    rhel-Storage-Pool   active     yes

15.3. Gestion des pools de stockage des machines virtuelles à l'aide de la console web

En utilisant la console web RHEL, vous pouvez gérer les pools de stockage afin d'affecter du stockage à vos machines virtuelles (VM).

Vous pouvez utiliser la console web pour :

15.3.1. Visualisation des informations sur les pools de stockage à l'aide de la console web

En utilisant la console web, vous pouvez afficher des informations détaillées sur les pools de stockage disponibles sur votre système. Les pools de stockage peuvent être utilisés pour créer des images de disque pour vos machines virtuelles.

Conditions préalables

Procédure

  1. Cliquez sur Pools de stockage en haut de l'interface Machines virtuelles.

    La fenêtre Storage pools s'affiche et présente une liste des pools de stockage configurés.

    Image displaying the storage pool tab of the web console with information about existing storage pools.

    Les informations comprennent les éléments suivants :

    • Name - Le nom du pool de stockage.
    • Size - L'allocation actuelle et la capacité totale du pool de stockage.
    • Connection - La connexion utilisée pour accéder au pool de stockage.
    • State - L'état du pool de stockage.
  2. Cliquez sur la flèche située à côté du pool de stockage dont vous souhaitez consulter les informations.

    La ligne se développe pour faire apparaître le volet Vue d'ensemble contenant des informations détaillées sur le pool de stockage sélectionné.

    Image displaying the detailed information about the selected storage pool.

    Les informations comprennent

    • Target path - Emplacement du pool de stockage.
    • Persistent - Indique si le pool de stockage a une configuration persistante ou non.
    • Autostart - Indique si le pool de stockage démarre automatiquement au démarrage du système.
    • Type - Le type de pool de stockage.
  3. Pour afficher la liste des volumes de stockage associés au pool de stockage, cliquez sur Volumes de stockage.

    Le volet Volumes de stockage s'affiche et présente une liste des volumes de stockage configurés.

    Image displaying the list of storage volumes associated with the selected storage pool.

    Les informations comprennent

    • Name - Le nom du volume de stockage.
    • Used by - La VM qui utilise actuellement le volume de stockage.
    • Size - La taille du volume.

15.3.2. Création de pools de stockage basés sur des répertoires à l'aide de la console web

Un pool de stockage basé sur un répertoire est basé sur un répertoire dans un système de fichiers monté existant. Ceci est utile, par exemple, lorsque vous souhaitez utiliser l'espace restant sur le système de fichiers à d'autres fins.

Conditions préalables

Procédure

  1. Dans la console Web RHEL, cliquez sur Storage pools dans l'onglet Virtual Machines.

    La fenêtre Storage pools s'affiche et présente la liste des pools de stockage configurés, le cas échéant.

    Image displaying all the storage pools currently configured on the host
  2. Cliquez sur Créer un pool de stockage.

    La boîte de dialogue Create storage pool apparaît.

  3. Entrez un nom pour le pool de stockage.
  4. Dans le menu déroulant Type, sélectionnez Filesystem directory.

    Image displaying the Create storage pool dialog box.
    Note

    Si l'option Filesystem directory n'apparaît pas dans le menu déroulant, c'est que votre hyperviseur ne prend pas en charge les pools de stockage basés sur des répertoires.

  5. Saisissez les informations suivantes :

    • Target path - Emplacement du pool de stockage.
    • Startup - Démarrage ou non du pool de stockage au démarrage de l'hôte.
  6. Cliquez sur Créer.

    Le pool de stockage est créé, la boîte de dialogue Create Storage Pool se ferme et le nouveau pool de stockage apparaît dans la liste des pools de stockage.

15.3.3. Création de pools de stockage basés sur NFS à l'aide de la console web

Un pool de stockage basé sur NFS repose sur un système de fichiers hébergé sur un serveur.

Conditions préalables

Procédure

  1. Dans la console Web RHEL, cliquez sur Storage pools dans l'onglet Virtual Machines.

    La fenêtre Storage pools s'affiche et présente la liste des pools de stockage configurés, le cas échéant.

    Image displaying all the storage pools currently configured on the host
  2. Cliquez sur Créer un pool de stockage.

    La boîte de dialogue Create storage pool apparaît.

  3. Entrez un nom pour le pool de stockage.
  4. Dans le menu déroulant Type, sélectionnez Network file system.

    Image displaying the Create storage pool dialog box.
    Note

    Si vous ne voyez pas l'option Network file system dans le menu déroulant, c'est que votre hyperviseur ne prend pas en charge les pools de stockage basés sur nfs.

  5. Saisissez le reste des informations :

    • Target path - Le chemin spécifiant la cible. Il s'agit du chemin utilisé pour le pool de stockage.
    • Host - Le nom d'hôte du serveur réseau où se trouve le point de montage. Il peut s'agir d'un nom d'hôte ou d'une adresse IP.
    • Source path - Le répertoire utilisé sur le serveur du réseau.
    • Startup - Démarrage ou non du pool de stockage au démarrage de l'hôte.
  6. Cliquez sur Créer.

    Le pool de stockage est créé. La boîte de dialogue Create storage pool se ferme et le nouveau pool de stockage apparaît dans la liste des pools de stockage.

15.3.4. Création de pools de stockage basés sur iSCSI à l'aide de la console web

Un pool de stockage iSCSI est basé sur l'Internet Small Computer Systems Interface (iSCSI), une norme de réseau de stockage IP permettant de relier des installations de stockage de données.

Conditions préalables

Procédure

  1. Dans la console Web RHEL, cliquez sur Storage pools dans l'onglet Virtual Machines.

    La fenêtre Storage pools s'affiche et présente la liste des pools de stockage configurés, le cas échéant.

    Image displaying all the storage pools currently configured on the host
  2. Cliquez sur Créer un pool de stockage.

    La boîte de dialogue Create storage pool apparaît.

  3. Entrez un nom pour le pool de stockage.
  4. Dans le menu déroulant Type, sélectionnez iSCSI target.

    Image displaying the Create storage pool dialog box.
  5. Saisissez le reste des informations :

    • Target Path - Le chemin spécifiant la cible. Il s'agit du chemin utilisé pour le pool de stockage.
    • Host - Le nom d'hôte ou l'adresse IP du serveur ISCSI.
    • Source path - Le nom unique iSCSI Qualified Name (IQN) de la cible iSCSI.
    • Startup - Démarrage ou non du pool de stockage au démarrage de l'hôte.
  6. Cliquez sur Créer.

    Le pool de stockage est créé. La boîte de dialogue Create storage pool se ferme et le nouveau pool de stockage apparaît dans la liste des pools de stockage.

15.3.5. Création de pools de stockage sur disque à l'aide de la console web

Un pool de stockage sur disque utilise des partitions entières de disque.

Avertissement
  • Selon la version de libvirt utilisée, dédier un disque à un pool de stockage peut reformater et effacer toutes les données actuellement stockées sur le périphérique de disque. Il est fortement recommandé de sauvegarder les données sur le périphérique de stockage avant de créer un pool de stockage.
  • Lorsque des disques entiers ou des périphériques en mode bloc sont transmis à la machine virtuelle, celle-ci les partitionne ou crée ses propres groupes LVM. La machine hôte peut alors détecter ces partitions ou groupes LVM et provoquer des erreurs.

    Ces erreurs peuvent également se produire lorsque vous créez manuellement des partitions ou des groupes LVM et que vous les transmettez à la machine virtuelle.

    Pour éviter ces erreurs, utilisez plutôt des pools de stockage basés sur des fichiers.

Conditions préalables

Procédure

  1. Dans la console Web RHEL, cliquez sur Storage pools dans l'onglet Virtual Machines.

    La fenêtre Storage pools s'affiche et présente la liste des pools de stockage configurés, le cas échéant.

    Image displaying all the storage pools currently configured on the host
  2. Cliquez sur Créer un pool de stockage.

    La boîte de dialogue Create storage pool apparaît.

  3. Entrez un nom pour le pool de stockage.
  4. Dans le menu déroulant Type, sélectionnez Physical disk device.

    Image displaying the Create storage pool dialog box.
    Note

    Si l'option Physical disk device n'apparaît pas dans le menu déroulant, c'est que votre hyperviseur ne prend pas en charge les pools de stockage sur disque.

  5. Saisissez le reste des informations :

    • Target Path - Chemin d'accès spécifiant le périphérique cible. Il s'agit du chemin utilisé pour le pool de stockage.
    • Source path - Le chemin d'accès spécifiant l'unité de stockage. Par exemple, /dev/sdb.
    • Format - Le type de table de partition.
    • Startup - Démarrage ou non du pool de stockage au démarrage de l'hôte.
  6. Cliquez sur Créer.

    Le pool de stockage est créé. La boîte de dialogue Create storage pool se ferme et le nouveau pool de stockage apparaît dans la liste des pools de stockage.

15.3.6. Création de pools de stockage basés sur LVM à l'aide de la console web

Un pool de stockage basé sur LVM est basé sur des groupes de volumes, que vous pouvez gérer à l'aide du Logical Volume Manager (LVM). Un groupe de volumes est une combinaison de plusieurs volumes physiques qui crée une structure de stockage unique.

Note
  • Les pools de stockage basés sur LVM n'offrent pas toute la souplesse de LVM.
  • libvirt prend en charge les volumes logiques légers, mais n'offre pas les fonctionnalités des pools de stockage légers.
  • Les pools de stockage basés sur LVM nécessitent une partition complète du disque. Si vous activez une nouvelle partition ou un nouveau périphérique à l'aide des commandes virsh, la partition sera formatée et toutes les données seront effacées. Si vous utilisez le groupe de volumes existant d'un hôte, comme dans ces procédures, rien ne sera effacé.
  • Pour créer un groupe de volumes avec plusieurs périphériques, utilisez plutôt l'utilitaire LVM, voir Comment créer un groupe de volumes sous Linux avec LVM.

    Pour plus d'informations sur les groupes de volumes, consultez le site Red Hat Enterprise Linux Logical Volume Manager Administration Guide.

Conditions préalables

Procédure

  1. Dans la console Web RHEL, cliquez sur Storage pools dans l'onglet Virtual Machines.

    La fenêtre Storage pools s'affiche et présente la liste des pools de stockage configurés, le cas échéant.

    Image displaying all the storage pools currently configured on the host
  2. Cliquez sur Créer un pool de stockage.

    La boîte de dialogue Create storage pool apparaît.

  3. Entrez un nom pour le pool de stockage.
  4. Dans le menu déroulant Type, sélectionnez LVM volume group.

    Image displaying the Create storage pool dialog box.
    Note

    Si l'option LVM volume group n'apparaît pas dans le menu déroulant, c'est que votre hyperviseur ne prend pas en charge les pools de stockage basés sur LVM.

  5. Saisissez le reste des informations :

    • Source volume group - Le nom du groupe de volumes LVM que vous souhaitez utiliser.
    • Startup - Démarrage ou non du pool de stockage au démarrage de l'hôte.
  6. Cliquez sur Créer.

    Le pool de stockage est créé. La boîte de dialogue Create storage pool se ferme et le nouveau pool de stockage apparaît dans la liste des pools de stockage.

15.3.7. Suppression de pools de stockage à l'aide de la console web

Vous pouvez supprimer des pools de stockage pour libérer des ressources sur l'hôte ou sur le réseau afin d'améliorer les performances du système. La suppression des pools de stockage libère également des ressources qui peuvent alors être utilisées par d'autres machines virtuelles (VM).

Important

Sauf indication contraire, la suppression d'un pool de stockage n'entraîne pas la suppression simultanée des volumes de stockage qu'il contient.

Pour désactiver temporairement un pool de stockage au lieu de le supprimer, voir Désactiver des pools de stockage à l'aide de la console web

Conditions préalables

Procédure

  1. Cliquez sur Storage Pools dans l'onglet Virtual Machines.

    La fenêtre Storage Pools s'affiche et présente une liste des pools de stockage configurés.

    Image displaying all the storage pools currently configured on the host.
  2. Cliquez sur le bouton de menu du pool de stockage que vous souhaitez supprimer et cliquez sur Supprimer.

    Une boîte de dialogue de confirmation apparaît.

    Image displaying the Delete Storage Pool default dialog box.
  3. Optional: Pour supprimer les volumes de stockage à l'intérieur du pool, cochez les cases correspondantes dans la boîte de dialogue.
  4. Cliquez sur Supprimer.

    Le pool de stockage est supprimé. Si vous avez coché la case à l'étape précédente, les volumes de stockage associés sont également supprimés.

15.3.8. Désactivation des pools de stockage à l'aide de la console web

Si vous ne souhaitez pas supprimer définitivement un pool de stockage, vous pouvez le désactiver temporairement.

Lorsque vous désactivez un pool de stockage, aucun nouveau volume ne peut être créé dans ce pool. Cependant, les machines virtuelles (VM) qui ont des volumes dans ce pool continueront à fonctionner. Ceci est utile pour un certain nombre de raisons, par exemple, vous pouvez limiter le nombre de volumes qui peuvent être créés dans un pool afin d'augmenter les performances du système.

Pour désactiver un pool de stockage à l'aide de la console web RHEL, suivez la procédure suivante.

Conditions préalables

Procédure

  1. Cliquez sur Pools de stockage en haut de l'onglet Machines virtuelles. La fenêtre Pools de stockage apparaît, affichant une liste des pools de stockage configurés.

    Image displaying all the storage pools currently configured on the host.
  2. Cliquez sur Désactiver sur la ligne du pool de stockage.

    Le pool de stockage est désactivé.

15.4. Paramètres de création des pools de stockage

En fonction du type de pool de stockage dont vous avez besoin, vous pouvez modifier son fichier de configuration XML et définir un type spécifique de pool de stockage. Cette section fournit des informations sur les paramètres XML nécessaires à la création de différents types de pools de stockage, ainsi que des exemples.

15.4.1. Paramètres du pool de stockage basé sur un répertoire

Lorsque vous souhaitez créer ou modifier un pool de stockage basé sur un répertoire à l'aide d'un fichier de configuration XML, vous devez inclure certains paramètres requis. Voir le tableau suivant pour plus d'informations sur ces paramètres.

Vous pouvez utiliser la commande virsh pool-define pour créer un pool de stockage basé sur la configuration XML d'un fichier spécifié. Par exemple :

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_dir

Parameters

Le tableau suivant fournit une liste des paramètres requis pour le fichier XML d'un pool de stockage basé sur un répertoire.

Tableau 15.1. Paramètres du pool de stockage basé sur un répertoire
DescriptionXML

Le type de pool de stockage

<pool type='dir'>

Le nom du pool de stockage

<name>name</name>

Le chemin spécifiant la cible. Il s'agit du chemin utilisé pour le pool de stockage.

<target>
<path>target_path</path>
</target>

Exemple :

Voici un exemple de fichier XML pour un pool de stockage basé sur le répertoire /guest_images:

<pool type='dir'>
  <name>dirpool</name>
  <target>
    <path>/guest_images</path>
  </target>
</pool>

15.4.2. Paramètres du pool de stockage sur disque

Lorsque vous souhaitez créer ou modifier un pool de stockage sur disque à l'aide d'un fichier de configuration XML, vous devez inclure certains paramètres requis. Voir le tableau suivant pour plus d'informations sur ces paramètres.

Vous pouvez utiliser la commande virsh pool-define pour créer un pool de stockage basé sur la configuration XML d'un fichier spécifié. Par exemple :

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_disk

Parameters

Le tableau suivant fournit une liste des paramètres requis pour le fichier XML d'un pool de stockage sur disque.

Tableau 15.2. Paramètres du pool de stockage sur disque
DescriptionXML

Le type de pool de stockage

<pool type='disk'>

Le nom du pool de stockage

<name>name</name>

Le chemin d'accès spécifiant l'unité de stockage. Par exemple, /dev/sdb.

<source>
<path>source_path</path>
</source>

Le chemin d'accès spécifiant le périphérique cible. Il s'agit du chemin utilisé pour le pool de stockage.

<target>
<path>target_path</path>
</target>

Exemple :

Voici un exemple de fichier XML pour un pool de stockage sur disque :

<pool type='disk'>
  <name>phy_disk</name>
  <source>
    <device path='/dev/sdb'/>
    <format type='gpt'/>
  </source>
  <target>
    <path>/dev</path>
  </target>
</pool>

15.4.3. Paramètres du pool de stockage basé sur un système de fichiers

Lorsque vous souhaitez créer ou modifier un pool de stockage basé sur un système de fichiers à l'aide d'un fichier de configuration XML, vous devez inclure certains paramètres requis. Voir le tableau suivant pour plus d'informations sur ces paramètres.

Vous pouvez utiliser la commande virsh pool-define pour créer un pool de stockage basé sur la configuration XML d'un fichier spécifié. Par exemple :

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_fs

Parameters

Le tableau suivant fournit une liste des paramètres requis pour le fichier XML d'un pool de stockage basé sur un système de fichiers.

Tableau 15.3. Paramètres du pool de stockage basé sur un système de fichiers
DescriptionXML

Le type de pool de stockage

<pool type='fs'>

Le nom du pool de stockage

<name>name</name>

Le chemin d'accès spécifiant la partition. Par exemple, /dev/sdc1

<source>
<device path=device_path />

Le type de système de fichiers, par exemple ext4.

<format type=fs_type />
</source>

Le chemin spécifiant la cible. Il s'agit du chemin utilisé pour le pool de stockage.

<target>
<path>path-to-pool</path>
</target>

Exemple :

Voici un exemple de fichier XML pour un pool de stockage basé sur la partition /dev/sdc1:

<pool type='fs'>
  <name>guest_images_fs</name>
  <source>
    <device path='/dev/sdc1'/>
    <format type='auto'/>
  </source>
  <target>
    <path>/guest_images</path>
  </target>
</pool>

15.4.4. paramètres du pool de stockage basé sur iSCSI

Lorsque vous souhaitez créer ou modifier un pool de stockage basé sur iSCSI à l'aide d'un fichier de configuration XML, vous devez inclure certains paramètres requis. Voir le tableau suivant pour plus d'informations sur ces paramètres.

Vous pouvez utiliser la commande virsh pool-define pour créer un pool de stockage basé sur la configuration XML d'un fichier spécifié. Par exemple :

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_iscsi

Parameters

Le tableau suivant fournit une liste des paramètres requis pour le fichier XML d'un pool de stockage basé sur iSCSI.

Tableau 15.4. paramètres du pool de stockage basé sur iSCSI
DescriptionXML

Le type de pool de stockage

<pool type='iscsi'>

Le nom du pool de stockage

<name>name</name>

Le nom de l'hôte

<source>
<host name=hostname />

L'IQN iSCSI

<device path= iSCSI_IQN />
</source>

Le chemin spécifiant la cible. Il s'agit du chemin utilisé pour le pool de stockage.

<target>
<path>/dev/disk/by-path</path>
</target>

[Facultatif] IQN de l'initiateur iSCSI. Ceci n'est nécessaire que lorsque l'ACL restreint le LUN à un initiateur particulier.

<initiator>
<iqn name='initiator0' />
</initiator>

Note

L'IQN de l'initiateur iSCSI peut être déterminé à l'aide de la commande virsh find-storage-pool-sources-as iscsi.

Exemple :

Voici un exemple de fichier XML pour un pool de stockage basé sur le périphérique iSCSI spécifié :

<pool type='iscsi'>
  <name>iSCSI_pool</name>
  <source>
    <host name='server1.example.com'/>
    <device path='iqn.2010-05.com.example.server1:iscsirhel7guest'/>
  </source>
  <target>
    <path>/dev/disk/by-path</path>
  </target>
</pool>

15.4.5. Paramètres du pool de stockage basé sur LVM

Lorsque vous souhaitez créer ou modifier un pool de stockage basé sur LVM à l'aide d'un fichier de configuration XML, vous devez inclure certains paramètres requis. Voir le tableau suivant pour plus d'informations sur ces paramètres.

Vous pouvez utiliser la commande virsh pool-define pour créer un pool de stockage basé sur la configuration XML d'un fichier spécifié. Par exemple :

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_logical

Parameters

Le tableau suivant fournit une liste des paramètres requis pour le fichier XML d'un pool de stockage basé sur LVM.

Tableau 15.5. Paramètres du pool de stockage basé sur LVM
DescriptionXML

Le type de pool de stockage

<pool type='logical'>

Le nom du pool de stockage

<name>name</name>

Chemin d'accès au périphérique du pool de stockage

<source>
<device path='device_path' />`

Le nom du groupe de volumes

<name>VG-name</name>

Le format du groupe virtuel

<format type='lvm2' />
</source>

Le chemin cible

<target>
<path=target_path />
</target>

Note

Si le groupe de volumes logiques est composé de plusieurs partitions de disque, il peut y avoir plusieurs périphériques sources répertoriés. Par exemple :

<source>
  <device path='/dev/sda1'/>
  <device path='/dev/sdb3'/>
  <device path='/dev/sdc2'/>
  ...
</source>

Exemple :

Voici un exemple de fichier XML pour un pool de stockage basé sur le LVM spécifié :

<pool type='logical'>
  <name>guest_images_lvm</name>
  <source>
    <device path='/dev/sdc'/>
    <name>libvirt_lvm</name>
    <format type='lvm2'/>
  </source>
  <target>
    <path>/dev/libvirt_lvm</path>
  </target>
</pool>

15.4.6. Paramètres du pool de stockage basé sur NFS

Lorsque vous souhaitez créer ou modifier un pool de stockage basé sur NFS à l'aide d'un fichier de configuration XML, vous devez inclure certains paramètres requis. Voir le tableau suivant pour plus d'informations sur ces paramètres.

Vous pouvez utiliser la commande virsh pool-define pour créer un pool de stockage basé sur la configuration XML d'un fichier spécifié. Par exemple :

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_netfs

Parameters

Le tableau suivant fournit une liste des paramètres requis pour le fichier XML d'un pool de stockage basé sur NFS.

Tableau 15.6. Paramètres du pool de stockage basé sur NFS
DescriptionXML

Le type de pool de stockage

<pool type='netfs'>

Le nom du pool de stockage

<name>name</name>

Le nom d'hôte du serveur réseau où se trouve le point de montage. Il peut s'agir d'un nom d'hôte ou d'une adresse IP.

<source>
<host name=hostname
/>

Le format du pool de stockage

L'un des éléments suivants :

<format type='nfs' />

<format type='cifs' />

Le répertoire utilisé sur le serveur du réseau

<dir path=source_path />
</source>

Le chemin spécifiant la cible. Il s'agit du chemin utilisé pour le pool de stockage.

<target>
<path>target_path</path>
</target>

Exemple :

Voici un exemple de fichier XML pour un pool de stockage basé sur le répertoire /home/net_mount du serveur NFS file_server:

<pool type='netfs'>
  <name>nfspool</name>
  <source>
    <host name='file_server'/>
    <format type='nfs'/>
    <dir path='/home/net_mount'/>
  </source>
  <target>
    <path>/var/lib/libvirt/images/nfspool</path>
  </target>
</pool>

15.4.7. Paramètres pour les pools de stockage basés sur SCSI avec des périphériques vHBA

Pour créer ou modifier un fichier de configuration XML pour un pool de stockage basé sur SCSi qui utilise un périphérique vHBA (virtual host adapter bus), vous devez inclure certains paramètres requis dans le fichier de configuration XML. Voir le tableau suivant pour plus d'informations sur les paramètres requis.

Vous pouvez utiliser la commande virsh pool-define pour créer un pool de stockage basé sur la configuration XML d'un fichier spécifié. Par exemple :

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_vhba

Parameters

Le tableau suivant fournit une liste des paramètres requis pour le fichier XML d'un pool de stockage basé sur SCSI avec vHBA.

Tableau 15.7. Paramètres pour les pools de stockage basés sur SCSI avec des périphériques vHBA
DescriptionXML

Le type de pool de stockage

<pool type='scsi'>

Le nom du pool de stockage

<name>name</name>

L'identifiant du vHBA. L'attribut parent est facultatif.

<source>
<adapter type='fc_host'
[parent=parent_scsi_device]
wwnn='WWNN'
wwpn='WWPN' />
</source>

Le chemin d'accès à la cible. Il s'agit du chemin utilisé pour le pool de stockage.

<target>
<path=target_path />
</target>

Important

Lorsque le champ <path> est égal à /dev/libvirt génère un chemin d'accès court et unique pour le chemin d'accès du volume. Par exemple, /dev/sdc. Sinon, le chemin d'accès de l'hôte physique est utilisé. Par exemple, , /dev/disk/by-path/pci-0000:10:00.0-fc-0x5006016044602198-lun-0. Le chemin d'accès court unique permet au même volume d'être répertorié dans plusieurs machines virtuelles (VM) par plusieurs pools de stockage. Si le chemin d'accès de l'hôte physique est utilisé par plusieurs machines virtuelles, des avertissements de duplication de type de périphérique peuvent survenir.

Note

L'attribut parent peut être utilisé dans le champ <adapter> pour identifier le parent HBA physique à partir duquel les LUN NPIV par différents chemins peuvent être utilisés. Ce champ, scsi_hostN, est combiné avec les attributs vports et max_vports pour compléter l'identification du parent. Les attributs parent, parent_wwnn, parent_wwpn ou parent_fabric_wwn garantissent à des degrés divers qu'après le redémarrage de l'hôte, le même HBA est utilisé.

  • Si aucun parent n'est spécifié, libvirt utilise le premier adaptateur scsi_hostN qui prend en charge NPIV.
  • Si seul le site parent est spécifié, des problèmes peuvent survenir si des adaptateurs hôtes SCSI supplémentaires sont ajoutés à la configuration.
  • Si parent_wwnn ou parent_wwpn est spécifié, le même HBA est utilisé après le redémarrage de l'hôte.
  • Si parent_fabric_wwn est utilisé, après le redémarrage de l'hôte, un HBA sur le même tissu est sélectionné, quel que soit le scsi_hostN utilisé.

Examples

Voici des exemples de fichiers XML pour les pools de stockage basés sur SCSI avec vHBA.

  • Un pool de stockage qui est le seul pool de stockage sur le HBA :

    <pool type='scsi'>
      <name>vhbapool_host3</name>
      <source>
        <adapter type='fc_host' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/>
      </source>
      <target>
        <path>/dev/disk/by-path</path>
      </target>
    </pool>
  • Un pool de stockage qui fait partie de plusieurs pools de stockage utilisant un seul vHBA et qui utilise l'attribut parent pour identifier le périphérique hôte SCSI :

    <pool type='scsi'>
      <name>vhbapool_host3</name>
      <source>
        <adapter type='fc_host' parent='scsi_host3' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/>
      </source>
      <target>
        <path>/dev/disk/by-path</path>
      </target>
    </pool>

15.5. Gestion des volumes de stockage des machines virtuelles à l'aide de la CLI

Vous pouvez utiliser la CLI pour gérer les aspects suivants de vos volumes de stockage afin d'affecter du stockage à vos machines virtuelles (VM) :

15.5.1. Visualisation des informations sur les volumes de stockage à l'aide de l'interface de ligne de commande

En utilisant la ligne de commande, vous pouvez afficher une liste de tous les pools de stockage disponibles sur votre hôte, ainsi que des détails sur un pool de stockage spécifique

Procédure

  1. La commande virsh vol-list permet de répertorier les volumes de stockage d'un pool de stockage donné.

    # virsh vol-list --pool RHEL-Storage-Pool --details
     Name                Path                                               Type   Capacity  Allocation
    ---------------------------------------------------------------------------------------------
     .bash_history       /home/VirtualMachines/.bash_history       file  18.70 KiB   20.00 KiB
     .bash_logout        /home/VirtualMachines/.bash_logout        file    18.00 B    4.00 KiB
     .bash_profile       /home/VirtualMachines/.bash_profile       file   193.00 B    4.00 KiB
     .bashrc             /home/VirtualMachines/.bashrc             file   1.29 KiB    4.00 KiB
     .git-prompt.sh      /home/VirtualMachines/.git-prompt.sh      file  15.84 KiB   16.00 KiB
     .gitconfig          /home/VirtualMachines/.gitconfig          file   167.00 B    4.00 KiB
     RHEL_Volume.qcow2   /home/VirtualMachines/RHEL8_Volume.qcow2  file  60.00 GiB   13.93 GiB
  2. La commande virsh vol-info permet de répertorier les volumes de stockage d'un pool de stockage donné.

    # virsh vol-info --pool RHEL-Storage-Pool --vol RHEL_Volume.qcow2
    Name:           RHEL_Volume.qcow2
    Type:           file
    Capacity:       60.00 GiB
    Allocation:     13.93 GiB

15.5.2. Création et affectation de volumes de stockage à l'aide de la CLI

Pour obtenir une image de disque et l'attacher à une machine virtuelle (VM) en tant que disque virtuel, créez un volume de stockage et attribuez sa configuration XML à la VM.

Conditions préalables

  • Un pool de stockage avec de l'espace non alloué est présent sur l'hôte.

    • Pour vérifier, dressez la liste des pools de stockage sur l'hôte :

      # virsh pool-list --details
      
      Name               State     Autostart   Persistent   Capacity     Allocation   Available
      --------------------------------------------------------------------------------------------
      default            running   yes         yes          48.97 GiB    36.34 GiB    12.63 GiB
      Downloads          running   yes         yes          175.92 GiB   121.20 GiB   54.72 GiB
      VM-disks           running   yes         yes          175.92 GiB   121.20 GiB   54.72 GiB
    • Si vous n'avez pas de pool de stockage existant, créez-en un. Pour plus d'informations, voir Gestion du stockage pour les machines virtuelles.

Procédure

  1. Créez un volume de stockage à l'aide de la commande virsh vol-create-as. Par exemple, pour créer un volume qcow2 de 20 Go basé sur le pool de stockage guest-images-fs:

    # virsh vol-create-as --pool guest-images-fs --name vm-disk1 --capacity 20 --format qcow2

    Important: Certains types de pools de stockage ne prennent pas en charge la commande virsh vol-create-as et nécessitent des processus spécifiques pour créer des volumes de stockage :

    • iSCSI-based - Préparez les LUN iSCSI à l'avance sur le serveur iSCSI.
    • Multipath-based - Utilisez la commande multipathd pour préparer ou gérer le chemin multiple.
    • vHBA-based - Préparez la carte fibre channel à l'avance.
  2. Créez un fichier XML et ajoutez-y les lignes suivantes. Ce fichier sera utilisé pour ajouter le volume de stockage en tant que disque à une VM.

    <disk type='volume' device='disk'>
        <driver name='qemu' type='qcow2'/>
        <source pool='guest-images-fs' volume='vm-disk1'/>
        <target dev='hdk' bus='ide'/>
    </disk>

    Cet exemple spécifie un disque virtuel qui utilise le volume vm-disk1, créé à l'étape précédente, et configure le volume en tant que disque hdk sur un bus ide. Modifiez les paramètres respectifs en fonction de votre environnement.

    Important: Avec certains types de pools de stockage, vous devez utiliser différents formats XML pour décrire un disque de volume de stockage.

    • Pour les piscines multipath-based:

      <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/mapper/mpatha' />
      <target dev='sda' bus='scsi'/>
      </disk>
    • Pour les piscines RBD-based storage:

        <disk type='network' device='disk'>
          <driver name='qemu' type='raw'/>
          <source protocol='rbd' name='pool/image'>
            <host name='mon1.example.org' port='6321'/>
          </source>
          <target dev='vdc' bus='virtio'/>
        </disk>
  3. Utilisez le fichier XML pour affecter le volume de stockage en tant que disque à une VM. Par exemple, pour affecter un disque défini dans ~/vm-disk1.xml à la VM testguest1, utilisez la commande suivante :

    # virsh attach-device --config testguest1 ~/vm-disk1.xml

Vérification

  • Dans le système d'exploitation invité de la VM, confirmez que l'image disque est devenue disponible en tant que disque non formaté et non alloué.

15.5.3. Suppression de volumes de stockage à l'aide de l'interface de programmation

Pour supprimer un volume de stockage de votre système hôte, vous devez arrêter le pool et supprimer sa définition XML.

Conditions préalables

  • Toute machine virtuelle utilisant le volume de stockage à supprimer est arrêtée.

Procédure

  1. La commande virsh vol-list permet de répertorier les volumes de stockage d'un pool de stockage donné.

    # virsh vol-list --pool RHEL-SP
     Name                 Path
    ---------------------------------------------------------------
     .bash_history        /home/VirtualMachines/.bash_history
     .bash_logout         /home/VirtualMachines/.bash_logout
     .bash_profile        /home/VirtualMachines/.bash_profile
     .bashrc              /home/VirtualMachines/.bashrc
     .git-prompt.sh       /home/VirtualMachines/.git-prompt.sh
     .gitconfig           /home/VirtualMachines/.gitconfig
     vm-disk1             /home/VirtualMachines/vm-disk1
  2. Optional: Utilisez la commande virsh vol-wipe pour effacer un volume de stockage. Par exemple, pour effacer un volume de stockage nommé vm-disk1 associé au pool de stockage RHEL-SP:

    # virsh vol-wipe --pool RHEL-SP vm-disk1
    Vol vm-disk1 wiped
  3. Utilisez la commande virsh vol-delete pour supprimer un volume de stockage. Par exemple, pour supprimer un volume de stockage nommé vm-disk1 associé au pool de stockage RHEL-SP:

    # virsh vol-delete --pool RHEL-SP vm-disk1
    Vol vm-disk1 deleted

Vérification

  • Utilisez à nouveau la commande virsh vol-list pour vérifier que le volume de stockage a été supprimé.

    # virsh vol-list --pool RHEL-SP
     Name                 Path
    ---------------------------------------------------------------
     .bash_history        /home/VirtualMachines/.bash_history
     .bash_logout         /home/VirtualMachines/.bash_logout
     .bash_profile        /home/VirtualMachines/.bash_profile
     .bashrc              /home/VirtualMachines/.bashrc
     .git-prompt.sh       /home/VirtualMachines/.git-prompt.sh
     .gitconfig           /home/VirtualMachines/.gitconfig

15.6. Gestion des images de disques virtuels à l'aide de la CLI

Les images de disques virtuels sont un type de volumes de stockage virtuels et fournissent un espace de stockage aux machines virtuelles (VM) de la même manière que les disques durs fournissent un espace de stockage aux machines physiques.

Lors de la création d'une nouvelle VM, libvirt crée automatiquement une nouvelle image disque, sauf indication contraire de votre part. Toutefois, en fonction de votre cas d'utilisation, vous pouvez souhaiter créer et gérer une image de disque séparément de la VM.

15.6.1. Création d'une image de disque virtuel à l'aide de qemu-img

Si vous avez besoin de créer une nouvelle image de disque virtuel séparément d'une nouvelle machine virtuelle (VM) et que la création d'un volume de stockage n'est pas viable pour vous, vous pouvez utiliser l'utilitaire de ligne de commande qemu-img.

Procédure

  • Créez une image de disque virtuel à l'aide de l'utilitaire qemu-img:

    # qemu-img create -f <format> <image-name> <size>

    Par exemple, la commande suivante crée une image disque qcow2 nommée test-image d'une taille de 30 gigaoctets.

    # qemu-img create -f qcow2 test-image 30G
    
    Formatting 'test-img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=32212254720 lazy_refcounts=off refcount_bits=16

Vérification

  • Affichez les informations relatives à l'image que vous avez créée et vérifiez qu'elle a la taille requise et qu'elle n'est pas corrompue :

    # qemu-img info <test-img>
    image: test-img
    file format: qcow2
    virtual size: 30 GiB (32212254720 bytes)
    disk size: 196 KiB
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        compression type: zlib
        lazy refcounts: false
        refcount bits: 16
        corrupt: false
        extended l2: false

15.6.2. Vérification de la cohérence d'une image de disque virtuel

Avant d'attacher une image de disque à une machine virtuelle (VM), assurez-vous que l'image de disque ne présente pas de problèmes, tels qu'une corruption ou une fragmentation importante. Pour ce faire, vous pouvez utiliser la commande qemu-img check.

Si nécessaire, vous pouvez également utiliser cette commande pour tenter de réparer l'image disque.

Conditions préalables

  • Toutes les machines virtuelles (VM) qui utilisent l'image disque doivent être arrêtées.

Procédure

  1. Utilisez la commande qemu-img check sur l'image que vous souhaitez tester. Par exemple :

    # qemu-img check <test-name.qcow2>
    
    No errors were found on the image.
    327434/327680 = 99.92% allocated, 0.00% fragmented, 0.00% compressed clusters
    Image end offset: 21478375424

    Si la vérification trouve des problèmes sur l'image de disque, la sortie de la commande ressemble à ce qui suit :

    167 errors were found on the image.
    Data may be corrupted, or further writes to the image may corrupt it.
    
    453368 leaked clusters were found on the image.
    This means waste of disk space, but no harm to data.
    
    259 internal errors have occurred during the check.
    Image end offset: 21478375424
  2. Réparez-les en utilisant la commande qemu-img check avec l'option -r all. Notez cependant que cela peut ne résoudre qu'une partie des problèmes.

    Avertissement

    La réparation de l'image disque peut entraîner une corruption des données ou d'autres problèmes. Sauvegardez l'image disque avant de procéder à la réparation.

    # qemu-img check -r all <test-name.qcow2>
    
    [...]
    122 errors were found on the image.
    Data may be corrupted, or further writes to the image may corrupt it.
    
    250 internal errors have occurred during the check.
    Image end offset: 27071414272

    Cette sortie indique le nombre de problèmes trouvés sur l'image disque après la réparation.

  3. Si d'autres réparations d'images de disque sont nécessaires, vous pouvez utiliser divers outils libguestfs dans le shellguestfish .

Ressources supplémentaires

  • La page de manuel qemu-img
  • La page de manuel guestfish

15.6.3. Redimensionnement d'une image de disque virtuel

Si une image de disque existante nécessite de l'espace supplémentaire, vous pouvez utiliser l'utilitaire qemu-img resize pour modifier la taille de l'image afin de l'adapter à votre cas d'utilisation.