10.22. Disques de la machine virtuelle


10.22.1. Caractéristiques de stockage

Utilisez le tableau suivant pour déterminer la disponibilité des fonctionnalités pour le stockage persistant local et partagé dans OpenShift Virtualization.

10.22.1.1. Matrice des fonctionnalités de stockage d'OpenShift Virtualization

Tableau 10.5. Matrice des fonctionnalités de stockage d'OpenShift Virtualization
 Migration en direct de la machine virtuelleClonage de disques de machines virtuelles assisté par l'hôteClonage de disques de machines virtuelles assisté par le stockageInstantanés de machines virtuelles

OpenShift Data Foundation : Volumes en mode bloc RBD

Oui

Oui

Oui

Oui

OpenShift Virtualization hostpath provisioner

Non

Oui

Non

Non

Autre système de stockage inscriptible à plusieurs nœuds

Oui [1]

Oui

Oui [2]

Oui [2]

Autre système de stockage inscriptible à nœud unique

Non

Oui

Oui [2]

Oui [2]

  1. Les PVC doivent demander un mode d'accès ReadWriteMany.
  2. Le fournisseur de stockage doit prendre en charge les API d'instantanés Kubernetes et CSI
Note

Vous ne pouvez pas migrer en direct les machines virtuelles qui utilisent :

  • Une classe de stockage avec un mode d'accès ReadWriteOnce (RWO)
  • Fonctionnalités passthrough telles que les GPU

Ne définissez pas le champ evictionStrategy sur LiveMigrate pour ces machines virtuelles.

10.22.2. Configuration du stockage local pour les machines virtuelles

Vous pouvez configurer le stockage local pour les machines virtuelles en utilisant le Hostpath Provisioner (HPP).

Lorsque vous installez l'opérateur de virtualisation OpenShift, l'opérateur Hostpath Provisioner (HPP) est automatiquement installé. Le HPP est un provisionneur de stockage local conçu pour OpenShift Virtualization et créé par l'opérateur Hostpath Provisioner. Pour utiliser le HPP, vous devez créer une ressource personnalisée (CR) HPP.

10.22.2.1. Création d'un provisionneur de chemins d'accès avec un pool de stockage de base

Vous configurez un hostpath provisioner (HPP) avec un pool de stockage de base en créant une ressource personnalisée HPP (CR) avec une strophe storagePools. Le pool de stockage spécifie le nom et le chemin d'accès utilisés par le pilote CSI.

Conditions préalables

  • Les répertoires spécifiés dans spec.storagePools.path doivent être accessibles en lecture/écriture.
  • Les pools de stockage ne doivent pas se trouver dans la même partition que le système d'exploitation. Sinon, la partition du système d'exploitation risque d'être saturée, ce qui aura un impact sur les performances ou rendra le nœud instable ou inutilisable.

Procédure

  1. Créez un fichier hpp_cr.yaml avec une strophe storagePools comme dans l'exemple suivant :

    apiVersion: hostpathprovisioner.kubevirt.io/v1beta1
    kind: HostPathProvisioner
    metadata:
      name: hostpath-provisioner
    spec:
      imagePullPolicy: IfNotPresent
      storagePools: 1
      - name: any_name
        path: "/var/myvolumes" 2
    workload:
      nodeSelector:
        kubernetes.io/os: linux
    1
    La strophe storagePools est un tableau auquel vous pouvez ajouter plusieurs entrées.
    2
    Spécifiez les répertoires du pool de stockage sous le chemin de ce nœud.
  2. Enregistrez le fichier et quittez.
  3. Créez le HPP en exécutant la commande suivante :

    $ oc create -f hpp_cr.yaml
10.22.2.1.1. Création de classes de stockage

Lorsque vous créez une classe de stockage, vous définissez des paramètres qui affectent le provisionnement dynamique des volumes persistants (PV) appartenant à cette classe de stockage. Vous ne pouvez pas mettre à jour les paramètres d'un objet StorageClass après l'avoir créé.

Pour utiliser le hostpath provisioner (HPP), vous devez créer une classe de stockage associée pour le pilote CSI avec la strophe storagePools.

Note

Les machines virtuelles utilisent des volumes de données basés sur des PV locaux. Les PV locaux sont liés à des nœuds spécifiques. Lorsque l'image de disque est préparée pour être consommée par la machine virtuelle, il est possible que la machine virtuelle ne puisse pas être planifiée sur le nœud où la PV de stockage local a été précédemment épinglée.

Pour résoudre ce problème, utilisez le planificateur de pods Kubernetes pour lier la réclamation de volume persistant (PVC) à un PV sur le bon nœud. En utilisant la valeur StorageClass avec le paramètre volumeBindingMode défini sur WaitForFirstConsumer, la liaison et le provisionnement de la PV sont retardés jusqu'à ce qu'un pod soit créé à l'aide du PVC.

10.22.2.1.2. Création d'une classe de stockage pour le pilote CSI avec la strophe storagePools

Vous créez une ressource personnalisée (CR) de classe de stockage pour le pilote CSI de Hostpath Provisioner (HPP).

Procédure

  1. Créez un fichier storageclass_csi.yaml pour définir la classe de stockage :

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: hostpath-csi
    provisioner: kubevirt.io.hostpath-provisioner
    reclaimPolicy: Delete 1
    volumeBindingMode: WaitForFirstConsumer 2
    parameters:
      storagePool: my-storage-pool 3
1
Les deux valeurs possibles de reclaimPolicy sont Delete et Retain. Si vous ne spécifiez pas de valeur, la valeur par défaut est Delete.
2
Le paramètre volumeBindingMode détermine le moment où le provisionnement dynamique et la liaison de volume se produisent. Spécifiez WaitForFirstConsumer pour retarder la liaison et le provisionnement d'un volume persistant (PV) jusqu'à ce qu'un pod utilisant la réclamation de volume persistant (PVC) soit créé. Cela permet de s'assurer que le PV répond aux exigences d'ordonnancement du pod.
3
Indiquez le nom du pool de stockage défini dans le CR HPP.
  1. Enregistrez le fichier et quittez.
  2. Créez l'objet StorageClass en exécutant la commande suivante :

    $ oc create -f storageclass_csi.yaml

10.22.2.2. À propos des pools de stockage créés avec des modèles PVC

Si vous disposez d'un seul volume persistant (PV) de grande taille, vous pouvez créer un pool de stockage en définissant un modèle PVC dans la ressource personnalisée (CR) du Hostpath Provisioner (HPP).

Un pool de stockage créé avec un modèle PVC peut contenir plusieurs volumes HPP. La division d'un PV en volumes plus petits offre une plus grande flexibilité pour l'allocation des données.

Le modèle PVC est basé sur la strophe spec de l'objet PersistentVolumeClaim:

Exemple d'objet PersistentVolumeClaim

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: iso-pvc
spec:
  volumeMode: Block 1
  storageClassName: my-storage-class
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

1
Cette valeur n'est requise que pour les PV en mode volume par bloc.

Vous définissez un pool de stockage à l'aide d'une spécification pvcTemplate dans le CR HPP. L'opérateur crée un PVC à partir de la spécification pvcTemplate pour chaque nœud contenant le pilote HPP CSI. Le PVC créé à partir du modèle de PVC consomme le grand PV unique, ce qui permet au HPP de créer des volumes dynamiques plus petits.

Vous pouvez combiner des pools de stockage de base avec des pools de stockage créés à partir de modèles PVC.

10.22.2.2.1. Création d'un pool de stockage avec un modèle PVC

Vous pouvez créer un pool de stockage pour plusieurs volumes HPP (Hostpath Provisioner) en spécifiant un modèle PVC dans la ressource personnalisée HPP (CR).

Conditions préalables

  • Les répertoires spécifiés dans spec.storagePools.path doivent être accessibles en lecture/écriture.
  • Les pools de stockage ne doivent pas se trouver dans la même partition que le système d'exploitation. Sinon, la partition du système d'exploitation risque d'être saturée, ce qui aura un impact sur les performances ou rendra le nœud instable ou inutilisable.

Procédure

  1. Créez un fichier hpp_pvc_template_pool.yaml pour le CR HPP qui spécifie un modèle de volume persistant (PVC) dans la strophe storagePools selon l'exemple suivant :

    apiVersion: hostpathprovisioner.kubevirt.io/v1beta1
    kind: HostPathProvisioner
    metadata:
      name: hostpath-provisioner
    spec:
      imagePullPolicy: IfNotPresent
      storagePools: 1
      - name: my-storage-pool
        path: "/var/myvolumes" 2
        pvcTemplate:
          volumeMode: Block 3
          storageClassName: my-storage-class 4
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 5Gi 5
      workload:
        nodeSelector:
          kubernetes.io/os: linux
    1
    Le stanza storagePools est un tableau qui peut contenir des pools de stockage de base et des pools de stockage de modèles PVC.
    2
    Spécifiez les répertoires du pool de stockage sous le chemin de ce nœud.
    3
    Facultatif : Le paramètre volumeMode peut être Block ou Filesystem tant qu'il correspond au format du volume provisionné. Si aucune valeur n'est spécifiée, la valeur par défaut est Filesystem. Si volumeMode est Block, le pod de montage crée un système de fichiers XFS sur le volume bloc avant de le monter.
    4
    Si le paramètre storageClassName est omis, la classe de stockage par défaut est utilisée pour créer des PVC. Si vous omettez storageClassName, assurez-vous que la classe de stockage HPP n'est pas la classe de stockage par défaut.
    5
    Vous pouvez spécifier un stockage provisionné statiquement ou dynamiquement. Dans les deux cas, assurez-vous que la taille de stockage demandée est appropriée pour le volume que vous souhaitez diviser virtuellement ou que le PVC ne peut pas être lié au grand PV. Si la classe de stockage que vous utilisez utilise un stockage à provisionnement dynamique, choisissez une taille d'allocation qui correspond à la taille d'une demande typique.
  2. Enregistrez le fichier et quittez.
  3. Créez le HPP avec un pool de stockage en exécutant la commande suivante :

    $ oc create -f hpp_pvc_template_pool.yaml

Ressources supplémentaires

10.22.3. Création de volumes de données

Vous pouvez créer un volume de données à l'aide de l'API PVC ou de l'API de stockage.

Important

Lors de l'utilisation d'OpenShift Virtualization avec OpenShift Container Platform Container Storage, spécifiez des réclamations de volumes persistants (PVC) en mode bloc RBD lors de la création de disques de machines virtuelles. Avec les disques de machines virtuelles, les volumes en mode bloc RBD sont plus efficaces et offrent de meilleures performances que les PVC Ceph FS ou RBD en mode système de fichiers.

Pour spécifier les PVC en mode bloc RBD, utilisez la classe de stockage 'ocs-storagecluster-ceph-rbd' et VolumeMode: Block.

Astuce

Dans la mesure du possible, utilisez l'API de stockage pour optimiser l'allocation d'espace et maximiser les performances.

Un site storage profile est une ressource personnalisée gérée par le CDI. Il fournit des paramètres de stockage recommandés en fonction de la classe de stockage associée. Un profil de stockage est attribué à chaque classe de stockage.

Les profils de stockage vous permettent de créer rapidement des volumes de données tout en réduisant le codage et en minimisant les erreurs potentielles.

Pour les types de stockage reconnus, le CDI fournit des valeurs qui optimisent la création de PVC. Cependant, vous pouvez configurer des paramètres automatiques pour une classe de stockage si vous personnalisez le profil de stockage.

10.22.3.1. A propos des volumes de données

DataVolume sont des ressources personnalisées fournies par le projet Containerized Data Importer (CDI). Les volumes de données orchestrent les opérations d'importation, de clonage et de téléchargement qui sont associées à une revendication de volume persistant (PVC) sous-jacente. Vous pouvez créer un volume de données en tant que ressource autonome ou en utilisant le champ dataVolumeTemplate dans la spécification de la machine virtuelle (VM).

Note
  • Les PVC de disques VM préparés à l'aide de volumes de données autonomes ont un cycle de vie indépendant de celui de la VM. Si vous utilisez le champ dataVolumeTemplate dans la spécification de la VM pour préparer le PVC, le PVC partage le même cycle de vie que la VM.

Une fois qu'un PVC est rempli, le volume de données que vous avez utilisé pour créer le PVC n'est plus nécessaire. OpenShift Virtualization active par défaut le ramassage automatique des volumes de données terminés. Les volumes de données autonomes et les volumes de données créés à l'aide de la ressource dataVolumeTemplate sont automatiquement mis au rebut une fois terminés.

10.22.3.2. Création de volumes de données à l'aide de l'API de stockage

Lorsque vous créez un volume de données à l'aide de l'API de stockage, l'interface de données conteneurisées (CDI) optimise l'allocation de votre revendication de volume persistant (PVC) en fonction du type de stockage pris en charge par la classe de stockage sélectionnée. Il vous suffit de spécifier le nom du volume de données, l'espace de noms et la quantité de stockage que vous souhaitez allouer.

Par exemple :

  • Lors de l'utilisation de Ceph RBD, accessModes est automatiquement défini sur ReadWriteMany, ce qui permet une migration en direct. volumeMode est défini sur Block pour maximiser les performances.
  • Lorsque vous utilisez volumeMode: Filesystem, le CDI demandera automatiquement plus d'espace, si nécessaire, pour tenir compte de l'encombrement du système de fichiers.

Dans le fichier YAML suivant, l'utilisation de l'API de stockage demande un volume de données avec deux gigaoctets d'espace utilisable. L'utilisateur n'a pas besoin de connaître le site volumeMode pour estimer correctement la taille de la demande de volume persistant (PVC) requise. Le CDI choisit automatiquement la combinaison optimale des attributs accessModes et volumeMode. Ces valeurs optimales sont basées sur le type de stockage ou sur les valeurs par défaut que vous définissez dans votre profil de stockage. Si vous souhaitez fournir des valeurs personnalisées, elles remplacent les valeurs calculées par le système.

Exemple de définition d'un volume de données

apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
  name: <datavolume> 1
spec:
  source:
    pvc: 2
      namespace: "<source_namespace>" 3
      name: "<my_vm_disk>" 4
  storage: 5
    resources:
      requests:
        storage: 2Gi 6
    storageClassName: <storage_class> 7

1
Le nom du nouveau volume de données.
2
Indiquer que la source de l'importation est une revendication de volume persistant (PVC) existante.
3
L'espace de noms dans lequel le PVC source existe.
4
Le nom du PVC source.
5
Indique l'allocation à l'aide de l'API de stockage.
6
Spécifie la quantité d'espace disponible que vous demandez pour le PVC.
7
Facultatif : Le nom de la classe de stockage. Si la classe de stockage n'est pas spécifiée, la classe de stockage par défaut du système est utilisée.

10.22.3.3. Création de volumes de données à l'aide de l'API PVC

Lorsque vous créez un volume de données à l'aide de l'API PVC, l'interface de données conteneurisées (CDI) crée le volume de données en fonction de ce que vous spécifiez pour les champs suivants :

  • accessModes (ReadWriteOnce, ReadWriteMany, ou ReadOnlyMany)
  • volumeMode (Filesystem ou Block)
  • capacity de storage (5Gi, par exemple)

Dans le fichier YAML suivant, l'utilisation de l'API PVC alloue un volume de données d'une capacité de stockage de deux gigaoctets. Vous spécifiez un mode d'accès de ReadWriteMany pour permettre la migration en direct. Comme vous connaissez les valeurs que votre système peut prendre en charge, vous spécifiez le stockage Block au lieu de la valeur par défaut, Filesystem.

Exemple de définition d'un volume de données

apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
  name: <datavolume> 1
spec:
  source:
    pvc: 2
      namespace: "<source_namespace>" 3
      name: "<my_vm_disk>" 4
  pvc: 5
    accessModes: 6
      - ReadWriteMany
    resources:
      requests:
        storage: 2Gi 7
    volumeMode: Block 8
    storageClassName: <storage_class> 9

1
Le nom du nouveau volume de données.
2
Dans la section source, pvc indique que la source de l'importation est une revendication de volume persistante (PVC) existante.
3
L'espace de noms dans lequel le PVC source existe.
4
Le nom du PVC source.
5
Indique l'allocation à l'aide de l'API PVC.
6
accessModes est nécessaire lors de l'utilisation de l'API PVC.
7
Spécifie la quantité d'espace que vous demandez pour votre volume de données.
8
Spécifie que la destination est un PVC de bloc.
9
En option, spécifiez la classe de stockage. Si la classe de stockage n'est pas spécifiée, la classe de stockage par défaut du système est utilisée.
Important

Lorsque vous allouez explicitement un volume de données à l'aide de l'API PVC et que vous n'utilisez pas volumeMode: Block, tenez compte de la surcharge du système de fichiers.

L'overhead du système de fichiers est la quantité d'espace requise par le système de fichiers pour maintenir ses métadonnées. La quantité d'espace requise pour les métadonnées du système de fichiers dépend du système de fichiers. Si vous ne tenez pas compte des frais généraux du système de fichiers dans votre demande de capacité de stockage, vous risquez d'obtenir une revendication de volume persistant (PVC) sous-jacente qui n'est pas assez grande pour accueillir le disque de votre machine virtuelle.

Si vous utilisez l'API de stockage, le CDI tiendra compte des frais généraux du système de fichiers et demandera une demande de volume persistant (PVC) plus importante pour s'assurer que votre demande d'allocation aboutisse.

10.22.3.4. Personnalisation du profil de stockage

Vous pouvez spécifier des paramètres par défaut en modifiant l'objet StorageProfile pour la classe de stockage du provisionneur. Ces paramètres par défaut s'appliquent uniquement à la revendication de volume persistant (PVC) s'ils ne sont pas configurés dans l'objet DataVolume.

Conditions préalables

  • Assurez-vous que la configuration prévue est prise en charge par la classe de stockage et son fournisseur. La spécification d'une configuration incompatible dans un profil de stockage entraîne l'échec du provisionnement de volume.
Note

Une section status vide dans un profil de stockage indique qu'un stockeur n'est pas reconnu par l'interface de données conteneurisées (CDI). La personnalisation d'un profil de stockage est nécessaire si vous avez un fournisseur de stockage qui n'est pas reconnu par l'interface de données conteneurisées. Dans ce cas, l'administrateur définit les valeurs appropriées dans le profil de stockage pour garantir la réussite des attributions.

Avertissement

Si vous créez un volume de données et omettez les attributs YAML et que ces attributs ne sont pas définis dans le profil de stockage, le stockage demandé ne sera pas alloué et la revendication de volume persistant (PVC) sous-jacente ne sera pas créée.

Procédure

  1. Modifiez le profil de stockage. Dans cet exemple, le provisionneur n'est pas reconnu par CDI :

    oc edit -n openshift-cnv storageprofile <storage_class>

    Exemple de profil de stockage

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: StorageProfile
    metadata:
      name: <unknown_provisioner_class>
    #   ...
    spec: {}
    status:
      provisioner: <unknown_provisioner>
      storageClass: <unknown_provisioner_class>

  2. Fournir les valeurs d'attribut nécessaires dans le profil de stockage :

    Exemple de profil de stockage

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: StorageProfile
    metadata:
      name: <unknown_provisioner_class>
    #   ...
    spec:
      claimPropertySets:
      - accessModes:
        - ReadWriteOnce 1
        volumeMode:
          Filesystem 2
    status:
      provisioner: <unknown_provisioner>
      storageClass: <unknown_provisioner_class>

    1
    Le site accessModes que vous avez sélectionné.
    2
    Le site volumeMode que vous avez sélectionné.

    Après avoir enregistré vos modifications, les valeurs sélectionnées apparaissent dans l'élément du profil de stockage status.

10.22.3.4.1. Définition d'une stratégie de clonage par défaut à l'aide d'un profil de stockage

Vous pouvez utiliser les profils de stockage pour définir une méthode de clonage par défaut pour une classe de stockage, en créant un site cloning strategy. La définition de stratégies de clonage peut s'avérer utile, par exemple, si votre fournisseur de stockage ne prend en charge que certaines méthodes de clonage. Cela vous permet également de sélectionner une méthode qui limite l'utilisation des ressources ou maximise les performances.

Les stratégies de clonage peuvent être spécifiées en définissant l'attribut cloneStrategy d'un profil de stockage sur l'une de ces valeurs :

  • snapshot - Cette méthode est utilisée par défaut lorsque des instantanés sont configurés. Cette stratégie de clonage utilise un instantané de volume temporaire pour cloner le volume. Le provisionneur de stockage doit prendre en charge les instantanés CSI.
  • copy - Cette méthode utilise un pod source et un pod cible pour copier les données du volume source vers le volume cible. Le clonage assisté par l'hôte est la méthode de clonage la moins efficace.
  • csi-clone - Cette méthode utilise l'API de clonage CSI pour cloner efficacement un volume existant sans utiliser d'instantané de volume intermédiaire. Contrairement à snapshot ou copy, qui sont utilisés par défaut si aucun profil de stockage n'est défini, le clonage de volume CSI n'est utilisé que si vous le spécifiez dans l'objet StorageProfile pour la classe de stockage du provisionneur.
Note

Vous pouvez également définir des stratégies de clonage à l'aide de l'interface de gestion sans modifier la valeur par défaut de claimPropertySets dans votre section YAML spec.

Exemple de profil de stockage

apiVersion: cdi.kubevirt.io/v1beta1
kind: StorageProfile
metadata:
  name: <provisioner_class>
#   ...
spec:
  claimPropertySets:
  - accessModes:
    - ReadWriteOnce 1
    volumeMode:
      Filesystem 2
  cloneStrategy:
  csi-clone 3
status:
  provisioner: <provisioner>
  storageClass: <provisioner_class>

1
Le site accessModes que vous avez sélectionné.
2
Le site volumeMode que vous avez sélectionné.
3
La méthode de clonage par défaut de votre choix. Dans cet exemple, le clonage du volume CSI est spécifié.

10.22.3.5. Ressources supplémentaires

10.22.4. Réservation d'espace PVC pour les frais généraux du système de fichiers

Par défaut, OpenShift Virtualization réserve de l'espace pour les données de surcharge du système de fichiers dans les réclamations de volume persistant (PVC) qui utilisent le mode de volume Filesystem. Vous pouvez définir le pourcentage pour réserver de l'espace à cette fin globalement et pour des classes de stockage spécifiques.

10.22.4.1. Comment la surcharge du système de fichiers affecte l'espace pour les disques des machines virtuelles

Lorsque vous ajoutez un disque de machine virtuelle à une revendication de volume persistant (PVC) qui utilise le mode de volume Filesystem, vous devez vous assurer qu'il y a suffisamment d'espace sur le PVC pour :

  • Le disque de la machine virtuelle.
  • L'espace réservé aux frais généraux du système de fichiers, tels que les métadonnées

Par défaut, OpenShift Virtualization réserve 5,5 % de l'espace PVC pour l'overhead, ce qui réduit d'autant l'espace disponible pour les disques des machines virtuelles.

Vous pouvez configurer une autre valeur de frais généraux en modifiant l'objet HCO. Vous pouvez modifier la valeur globalement et vous pouvez spécifier des valeurs pour des classes de stockage spécifiques.

10.22.4.2. Remplacer la valeur par défaut de la surcharge du système de fichiers

Modifiez la quantité d'espace PVC (persistent volume claim) que OpenShift Virtualization réserve à l'overhead du système de fichiers en modifiant l'attribut spec.config.filesystemOverhead de l'objet HCO.

Conditions préalables

  • Installez le CLI OpenShift (oc).

Procédure

  1. Ouvrez l'objet HCO pour le modifier en exécutant la commande suivante :

    $ oc edit hco -n openshift-cnv kubevirt-hyperconverged
  2. Modifiez les champs spec.config.filesystemOverhead en y ajoutant les valeurs que vous avez choisies :

    ...
    spec:
      config:
        filesystemOverhead:
          global: "<new_global_value>" 1
          storageClass:
            <storage_class_name>: "<new_value_for_this_storage_class>" 2
    1
    Le pourcentage de frais généraux du système de fichiers par défaut utilisé pour toutes les classes de stockage qui n'ont pas encore de valeur définie. Par exemple, global: "0.07" réserve 7 % du PVC à l'overhead du système de fichiers.
    2
    Le pourcentage de frais généraux du système de fichiers pour la classe de stockage spécifiée. Par exemple, mystorageclass: "0.04" modifie la valeur de surcharge par défaut pour les PVC dans la classe de stockage mystorageclass à 4 %.
  3. Enregistrez et quittez l'éditeur pour mettre à jour l'objet HCO.

Vérification

  • Affichez l'état de CDIConfig et vérifiez vos modifications en exécutant l'une des commandes suivantes :

    Pour vérifier de manière générale les modifications apportées à CDIConfig:

    $ oc get cdiconfig -o yaml

    Pour consulter les modifications apportées à CDIConfig:

    $ oc get cdiconfig -o jsonpath='{.items..status.filesystemOverhead}'

10.22.5. Configurer CDI pour travailler avec des espaces de noms ayant un quota de ressources de calcul

Vous pouvez utiliser l'importateur de données conteneurisées (CDI) pour importer, télécharger et cloner des disques de machines virtuelles dans des espaces de noms soumis à des restrictions de ressources de CPU et de mémoire.

10.22.5.1. A propos des quotas de CPU et de mémoire dans un espace de noms

Un resource quota, défini par l'objet ResourceQuota, impose des restrictions à un espace de noms qui limitent la quantité totale de ressources de calcul pouvant être consommées par les ressources de cet espace de noms.

La ressource personnalisée (CR) HyperConverged définit la configuration de l'utilisateur pour l'importateur de données conteneurisées (CDI). Les valeurs de demande et de limite de CPU et de mémoire sont fixées à la valeur par défaut de 0, ce qui garantit que les pods créés par CDI qui ne spécifient pas de besoins en ressources de calcul reçoivent les valeurs par défaut et sont autorisés à fonctionner dans un espace de noms restreint par un quota.

10.22.5.2. Dépassement des valeurs par défaut de l'unité centrale et de la mémoire

Modifiez les paramètres par défaut pour les demandes et les limites de CPU et de mémoire pour votre cas d'utilisation en ajoutant la strophe spec.resourceRequirements.storageWorkloads à la ressource personnalisée (CR) HyperConverged.

Conditions préalables

  • Installez le CLI OpenShift (oc).

Procédure

  1. Modifiez le CR HyperConverged en exécutant la commande suivante :

    $ oc edit hco -n openshift-cnv kubevirt-hyperconverged
  2. Ajoutez la strophe spec.resourceRequirements.storageWorkloads à la CR, en définissant les valeurs en fonction de votre cas d'utilisation. Par exemple :

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
    spec:
      resourceRequirements:
        storageWorkloads:
          limits:
            cpu: "500m"
            memory: "2Gi"
          requests:
            cpu: "250m"
            memory: "1Gi"
  3. Sauvegardez et quittez l'éditeur pour mettre à jour le CR HyperConverged.

10.22.5.3. Ressources supplémentaires

10.22.6. Gestion des annotations sur les volumes de données

Les annotations sur les volumes de données (DV) permettent de gérer le comportement des pods. Vous pouvez ajouter une ou plusieurs annotations à un volume de données, qui se propage ensuite aux pods d'importation créés.

10.22.6.1. Exemple : Annotations sur les volumes de données

Cet exemple montre comment vous pouvez configurer les annotations de volume de données (DV) pour contrôler le réseau utilisé par le module d'importation. L'annotation v1.multus-cni.io/default-network: bridge-network fait en sorte que le module utilise le réseau multus nommé bridge-network comme réseau par défaut. Si vous souhaitez que le module importateur utilise à la fois le réseau par défaut du cluster et le réseau multus secondaire, utilisez l'annotation k8s.v1.cni.cncf.io/networks: <network_name>.

Exemple d'annotation du réseau Multus

apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
  name: dv-ann
  annotations:
      v1.multus-cni.io/default-network: bridge-network 1
spec:
  source:
      http:
         url: "example.exampleurl.com"
  pvc:
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 1Gi

1
Annotation du réseau Multus

10.22.7. Utilisation de la pré-allocation pour les volumes de données

L'importateur de données conteneurisées peut pré-allouer de l'espace disque pour améliorer les performances d'écriture lors de la création de volumes de données.

Vous pouvez activer la pré-allocation pour des volumes de données spécifiques.

10.22.7.1. À propos de la pré-allocation

L'importateur de données conteneurisées (CDI) peut utiliser le mode de pré-allocation QEMU pour les volumes de données afin d'améliorer les performances d'écriture. Vous pouvez utiliser le mode de pré-allocation pour les opérations d'importation et de téléchargement et lors de la création de volumes de données vierges.

Si la pré-allocation est activée, CDI utilise la meilleure méthode de pré-allocation en fonction du système de fichiers sous-jacent et du type de périphérique :

fallocate
Si le système de fichiers le prend en charge, CDI utilise l'appel fallocate du système d'exploitation pour préallouer l'espace en utilisant la fonction posix_fallocate, qui alloue des blocs et les marque comme non initialisés.
full
Si le mode fallocate ne peut pas être utilisé, le mode full alloue de l'espace pour l'image en écrivant des données dans la mémoire sous-jacente. En fonction de l'emplacement de stockage, tout l'espace vide alloué peut être mis à zéro.

10.22.7.2. Activation de la pré-allocation pour un volume de données

Vous pouvez activer la pré-allocation pour des volumes de données spécifiques en incluant le champ spec.preallocation dans le manifeste du volume de données. Vous pouvez activer le mode de pré-allocation dans la console web ou en utilisant le CLI OpenShift (oc).

Le mode de pré-affectation est pris en charge pour tous les types de sources CDI.

Procédure

  • Spécifiez le champ spec.preallocation dans le manifeste du volume de données :

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: DataVolume
    metadata:
      name: preallocated-datavolume
    spec:
      source: 1
        ...
      pvc:
        ...
      preallocation: true 2
    1
    Tous les types de sources CDI prennent en charge la pré-allocation, mais celle-ci est ignorée pour les opérations de clonage.
    2
    Le champ preallocation est un booléen dont la valeur par défaut est false.

10.22.8. Téléchargement d'images de disques locaux à l'aide de la console web

Vous pouvez télécharger un fichier image disque stocké localement à l'aide de la console web.

10.22.8.1. Conditions préalables

10.22.8.2. Matrice des opérations soutenues par le CDI

Cette matrice montre les opérations CDI prises en charge pour les types de contenu par rapport aux points de terminaison, et lesquelles de ces opérations nécessitent de l'espace pour les rayures.

Types de contenuHTTPHTTPSAuthentification de base HTTPRegistreTélécharger

KubeVirt (QCOW2)

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2**
✓ GZ*
✓ XZ*

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2*
□ GZ
□ XZ

✓ QCOW2*
✓ GZ*
✓ XZ*

KubeVirt (RAW)

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW*
□ GZ
□ XZ

✓ RAW*
✓ GZ*
✓ XZ*

✓ Opération supportée

□ Opération non supportée

* Nécessite de l'espace pour les rayures

** Nécessite de l'espace disque si une autorité de certification personnalisée est requise

10.22.8.3. Téléchargement d'un fichier image à l'aide de la console web

Utilisez la console Web pour télécharger un fichier image vers une nouvelle revendication de volume persistant (PVC). Vous pourrez ensuite utiliser ce PVC pour attacher l'image à de nouvelles machines virtuelles.

Conditions préalables

  • Vous devez posséder l'un des éléments suivants

    • Un fichier image brut de machine virtuelle au format ISO ou IMG.
    • Un fichier image de machine virtuelle au format QCOW2.
  • Pour de meilleurs résultats, comprimez votre fichier image selon les directives suivantes avant de le télécharger :

    • Compresser un fichier image brut en utilisant xz ou gzip.

      Note

      L'utilisation d'un fichier d'image brute compressé permet le téléchargement le plus efficace.

    • Compresser un fichier image QCOW2 en utilisant la méthode recommandée pour votre client :

      • Si vous utilisez un client Linux, sparsify le fichier QCOW2 en utilisant l'outil virt-sparsify.
      • Si vous utilisez un client Windows, comprimez le fichier QCOW2 en utilisant xz ou gzip.

Procédure

  1. Dans le menu latéral de la console web, cliquez sur Storage Persistent Volume Claims.
  2. Cliquez sur la liste déroulante Create Persistent Volume Claim pour la développer.
  3. Cliquez sur With Data Upload Form pour ouvrir la page Upload Data to Persistent Volume Claim.
  4. Cliquez sur Browse pour ouvrir le gestionnaire de fichiers et sélectionnez l'image que vous souhaitez télécharger, ou faites glisser le fichier dans le champ Drag a file here or browse to upload.
  5. Facultatif : Définir cette image comme image par défaut pour un système d'exploitation spécifique.

    1. Cochez la case Attach this data to a virtual machine operating system.
    2. Sélectionnez un système d'exploitation dans la liste.
  6. Le champ Persistent Volume Claim Name est automatiquement rempli avec un nom unique et ne peut pas être modifié. Notez le nom attribué au PVC afin de pouvoir l'identifier ultérieurement, si nécessaire.
  7. Sélectionnez une classe de stockage dans la liste Storage Class.
  8. Dans le champ Size, entrez la valeur de la taille du PVC. Sélectionnez l'unité de mesure correspondante dans la liste déroulante.

    Avertissement

    La taille du PVC doit être supérieure à la taille du disque virtuel non compressé.

  9. Sélectionnez une adresse Access Mode correspondant à la classe de stockage que vous avez sélectionnée.
  10. Cliquez sur Upload.

10.22.8.4. Ressources supplémentaires

10.22.9. Téléchargement d'images de disques locaux à l'aide de l'outil virtctl

Vous pouvez télécharger une image disque stockée localement vers un volume de données nouveau ou existant à l'aide de l'utilitaire de ligne de commande virtctl.

10.22.9.1. Conditions préalables

10.22.9.2. A propos des volumes de données

DataVolume sont des ressources personnalisées fournies par le projet Containerized Data Importer (CDI). Les volumes de données orchestrent les opérations d'importation, de clonage et de téléchargement qui sont associées à une revendication de volume persistant (PVC) sous-jacente. Vous pouvez créer un volume de données en tant que ressource autonome ou en utilisant le champ dataVolumeTemplate dans la spécification de la machine virtuelle (VM).

Note
  • Les PVC de disques VM préparés à l'aide de volumes de données autonomes ont un cycle de vie indépendant de celui de la VM. Si vous utilisez le champ dataVolumeTemplate dans la spécification de la VM pour préparer le PVC, le PVC partage le même cycle de vie que la VM.

Une fois qu'un PVC est rempli, le volume de données que vous avez utilisé pour créer le PVC n'est plus nécessaire. OpenShift Virtualization active par défaut le ramassage automatique des volumes de données terminés. Les volumes de données autonomes et les volumes de données créés à l'aide de la ressource dataVolumeTemplate sont automatiquement mis au rebut une fois terminés.

10.22.9.3. Création d'un volume de données à télécharger

Vous pouvez créer manuellement un volume de données avec une source de données upload à utiliser pour télécharger des images de disque locales.

Procédure

  1. Créez une configuration de volume de données qui spécifie spec: source: upload{}:

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: DataVolume
    metadata:
      name: <upload-datavolume> 1
    spec:
      source:
          upload: {}
      pvc:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: <2Gi> 2
    1
    Le nom du volume de données.
    2
    La taille du volume de données. Assurez-vous que cette valeur est supérieure ou égale à la taille du disque que vous téléchargez.
  2. Créez le volume de données en exécutant la commande suivante :

    oc create -f <upload-datavolume>.yaml

10.22.9.4. Téléchargement d'une image de disque local vers un volume de données

Vous pouvez utiliser l'utilitaire CLI virtctl pour télécharger une image de disque locale d'une machine cliente vers un volume de données (DV) dans votre cluster. Vous pouvez utiliser un DV qui existe déjà dans votre cluster ou créer un nouveau DV au cours de cette procédure.

Note

Après avoir téléchargé une image de disque local, vous pouvez l'ajouter à une machine virtuelle.

Conditions préalables

  • Vous devez posséder l'un des éléments suivants

    • Un fichier image brut de machine virtuelle au format ISO ou IMG.
    • Un fichier image de machine virtuelle au format QCOW2.
  • Pour de meilleurs résultats, comprimez votre fichier image selon les directives suivantes avant de le télécharger :

    • Compresser un fichier image brut en utilisant xz ou gzip.

      Note

      L'utilisation d'un fichier d'image brute compressé permet le téléchargement le plus efficace.

    • Compresser un fichier image QCOW2 en utilisant la méthode recommandée pour votre client :

      • Si vous utilisez un client Linux, sparsify le fichier QCOW2 en utilisant l'outil virt-sparsify.
      • Si vous utilisez un client Windows, comprimez le fichier QCOW2 en utilisant xz ou gzip.
  • Le paquet kubevirt-virtctl doit être installé sur la machine cliente.
  • La machine cliente doit être configurée pour faire confiance au certificat du routeur OpenShift Container Platform.

Procédure

  1. Identifiez les éléments suivants :

    • Le nom du volume de données de téléchargement que vous souhaitez utiliser. Si ce volume de données n'existe pas, il est créé automatiquement.
    • La taille du volume de données, si vous souhaitez qu'il soit créé pendant la procédure de téléchargement. La taille doit être supérieure ou égale à la taille de l'image disque.
    • L'emplacement du fichier de l'image du disque de la machine virtuelle que vous souhaitez télécharger.
  2. Téléchargez l'image disque en exécutant la commande virtctl image-upload. Spécifiez les paramètres que vous avez identifiés à l'étape précédente. Par exemple :

    $ virtctl image-upload dv <datavolume_name> \ 1
    --size=<datavolume_size> \ 2
    --image-path=</path/to/image> \ 3
    1
    Le nom du volume de données.
    2
    La taille du volume de données. Par exemple : --size=500Mi, --size=1G
    3
    Le chemin d'accès au fichier de l'image du disque de la machine virtuelle.
    Note
    • Si vous ne souhaitez pas créer un nouveau volume de données, omettez le paramètre --size et incluez l'indicateur --no-create.
    • Lors du téléchargement d'une image de disque vers un PVC, la taille du PVC doit être supérieure à la taille du disque virtuel non compressé.
    • Pour autoriser les connexions de serveur non sécurisées lors de l'utilisation de HTTPS, utilisez le paramètre --insecure. Sachez que lorsque vous utilisez le paramètre --insecure, l'authenticité du point de terminaison du téléchargement est vérifiée par not.
  3. Facultatif. Pour vérifier qu'un volume de données a été créé, affichez tous les volumes de données en exécutant la commande suivante :

    $ oc get dvs

10.22.9.5. Matrice des opérations soutenues par le CDI

Cette matrice montre les opérations CDI prises en charge pour les types de contenu par rapport aux points de terminaison, et lesquelles de ces opérations nécessitent de l'espace pour les rayures.

Types de contenuHTTPHTTPSAuthentification de base HTTPRegistreTélécharger

KubeVirt (QCOW2)

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2**
✓ GZ*
✓ XZ*

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2*
□ GZ
□ XZ

✓ QCOW2*
✓ GZ*
✓ XZ*

KubeVirt (RAW)

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW*
□ GZ
□ XZ

✓ RAW*
✓ GZ*
✓ XZ*

✓ Opération supportée

□ Opération non supportée

* Nécessite de l'espace pour les rayures

** Nécessite de l'espace disque si une autorité de certification personnalisée est requise

10.22.9.6. Ressources supplémentaires

10.22.10. Téléchargement d'une image de disque local vers un volume de données de stockage par blocs

Vous pouvez télécharger une image de disque local dans un volume de données en bloc à l'aide de l'utilitaire de ligne de commande virtctl.

Dans ce flux de travail, vous créez un périphérique bloc local à utiliser comme volume persistant, vous associez ce volume bloc à un volume de données upload et vous utilisez virtctl pour télécharger l'image du disque local dans le volume de données.

10.22.10.1. Conditions préalables

10.22.10.2. A propos des volumes de données

DataVolume sont des ressources personnalisées fournies par le projet Containerized Data Importer (CDI). Les volumes de données orchestrent les opérations d'importation, de clonage et de téléchargement qui sont associées à une revendication de volume persistant (PVC) sous-jacente. Vous pouvez créer un volume de données en tant que ressource autonome ou en utilisant le champ dataVolumeTemplate dans la spécification de la machine virtuelle (VM).

Note
  • Les PVC de disques VM préparés à l'aide de volumes de données autonomes ont un cycle de vie indépendant de celui de la VM. Si vous utilisez le champ dataVolumeTemplate dans la spécification de la VM pour préparer le PVC, le PVC partage le même cycle de vie que la VM.

Une fois qu'un PVC est rempli, le volume de données que vous avez utilisé pour créer le PVC n'est plus nécessaire. OpenShift Virtualization active par défaut le ramassage automatique des volumes de données terminés. Les volumes de données autonomes et les volumes de données créés à l'aide de la ressource dataVolumeTemplate sont automatiquement mis au rebut une fois terminés.

10.22.10.3. À propos des volumes persistants en bloc

Un volume persistant (PV) en mode bloc est un PV soutenu par un périphérique en mode bloc brut. Ces volumes n'ont pas de système de fichiers et peuvent offrir des avantages en termes de performances pour les machines virtuelles en réduisant les frais généraux.

Les volumes de blocs bruts sont approvisionnés en spécifiant volumeMode: Block dans les spécifications PV et PVC (persistent volume claim).

10.22.10.4. Création d'un volume persistant en bloc local

Créez un volume persistant (PV) local en bloc sur un nœud en remplissant un fichier et en le montant en tant que périphérique en boucle. Vous pouvez ensuite référencer ce périphérique en boucle dans un manifeste PV en tant que volume Block et l'utiliser comme périphérique de bloc pour une image de machine virtuelle.

Procédure

  1. Connectez-vous en tant que root au nœud sur lequel vous souhaitez créer le PV local. Cette procédure utilise node01 pour ses exemples.
  2. Créez un fichier et remplissez-le de caractères nuls afin qu'il puisse être utilisé comme périphérique de bloc. L'exemple suivant crée un fichier loop10 d'une taille de 2 Go (20 blocs de 100 Mo) :

    $ dd if=/dev/zero of=<loop10> bs=100M count=20
  3. Monter le fichier loop10 en tant que périphérique en boucle.

    $ losetup </dev/loop10>d3 <loop10> 1 2
    1
    Chemin d'accès au fichier où le périphérique loop est monté.
    2
    Le fichier créé à l'étape précédente doit être monté en tant que périphérique de boucle.
  4. Créez un manifeste PersistentVolume qui fait référence au périphérique en boucle monté.

    kind: PersistentVolume
    apiVersion: v1
    metadata:
      name: <local-block-pv10>
      annotations:
    spec:
      local:
        path: </dev/loop10> 1
      capacity:
        storage: <2Gi>
      volumeMode: Block 2
      storageClassName: local 3
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - <node01> 4
    1
    Chemin d'accès du dispositif de boucle sur le nœud.
    2
    Indique qu'il s'agit d'un PV en bloc.
    3
    Facultatif : Définissez une classe de stockage pour le PV. Si vous ne le faites pas, la valeur par défaut du cluster est utilisée.
    4
    Le nœud sur lequel le périphérique de bloc a été monté.
  5. Créer le bloc PV.

    # oc create -f <local-block-pv10.yaml>1
    1
    Le nom de fichier du volume persistant créé à l'étape précédente.

10.22.10.5. Création d'un volume de données à télécharger

Vous pouvez créer manuellement un volume de données avec une source de données upload à utiliser pour télécharger des images de disque locales.

Procédure

  1. Créez une configuration de volume de données qui spécifie spec: source: upload{}:

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: DataVolume
    metadata:
      name: <upload-datavolume> 1
    spec:
      source:
          upload: {}
      pvc:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: <2Gi> 2
    1
    Le nom du volume de données.
    2
    La taille du volume de données. Assurez-vous que cette valeur est supérieure ou égale à la taille du disque que vous téléchargez.
  2. Créez le volume de données en exécutant la commande suivante :

    oc create -f <upload-datavolume>.yaml

10.22.10.6. Téléchargement d'une image de disque local vers un volume de données

Vous pouvez utiliser l'utilitaire CLI virtctl pour télécharger une image de disque locale d'une machine cliente vers un volume de données (DV) dans votre cluster. Vous pouvez utiliser un DV qui existe déjà dans votre cluster ou créer un nouveau DV au cours de cette procédure.

Note

Après avoir téléchargé une image de disque local, vous pouvez l'ajouter à une machine virtuelle.

Conditions préalables

  • Vous devez posséder l'un des éléments suivants

    • Un fichier image brut de machine virtuelle au format ISO ou IMG.
    • Un fichier image de machine virtuelle au format QCOW2.
  • Pour de meilleurs résultats, comprimez votre fichier image selon les directives suivantes avant de le télécharger :

    • Compresser un fichier image brut en utilisant xz ou gzip.

      Note

      L'utilisation d'un fichier d'image brute compressé permet le téléchargement le plus efficace.

    • Compresser un fichier image QCOW2 en utilisant la méthode recommandée pour votre client :

      • Si vous utilisez un client Linux, sparsify le fichier QCOW2 en utilisant l'outil virt-sparsify.
      • Si vous utilisez un client Windows, comprimez le fichier QCOW2 en utilisant xz ou gzip.
  • Le paquet kubevirt-virtctl doit être installé sur la machine cliente.
  • La machine cliente doit être configurée pour faire confiance au certificat du routeur OpenShift Container Platform.

Procédure

  1. Identifiez les éléments suivants :

    • Le nom du volume de données de téléchargement que vous souhaitez utiliser. Si ce volume de données n'existe pas, il est créé automatiquement.
    • La taille du volume de données, si vous souhaitez qu'il soit créé pendant la procédure de téléchargement. La taille doit être supérieure ou égale à la taille de l'image disque.
    • L'emplacement du fichier de l'image du disque de la machine virtuelle que vous souhaitez télécharger.
  2. Téléchargez l'image disque en exécutant la commande virtctl image-upload. Spécifiez les paramètres que vous avez identifiés à l'étape précédente. Par exemple :

    $ virtctl image-upload dv <datavolume_name> \ 1
    --size=<datavolume_size> \ 2
    --image-path=</path/to/image> \ 3
    1
    Le nom du volume de données.
    2
    La taille du volume de données. Par exemple : --size=500Mi, --size=1G
    3
    Le chemin d'accès au fichier de l'image du disque de la machine virtuelle.
    Note
    • Si vous ne souhaitez pas créer un nouveau volume de données, omettez le paramètre --size et incluez l'indicateur --no-create.
    • Lors du téléchargement d'une image de disque vers un PVC, la taille du PVC doit être supérieure à la taille du disque virtuel non compressé.
    • Pour autoriser les connexions de serveur non sécurisées lors de l'utilisation de HTTPS, utilisez le paramètre --insecure. Sachez que lorsque vous utilisez le paramètre --insecure, l'authenticité du point de terminaison du téléchargement est vérifiée par not.
  3. Facultatif. Pour vérifier qu'un volume de données a été créé, affichez tous les volumes de données en exécutant la commande suivante :

    $ oc get dvs

10.22.10.7. Matrice des opérations soutenues par le CDI

Cette matrice montre les opérations CDI prises en charge pour les types de contenu par rapport aux points de terminaison, et lesquelles de ces opérations nécessitent de l'espace pour les rayures.

Types de contenuHTTPHTTPSAuthentification de base HTTPRegistreTélécharger

KubeVirt (QCOW2)

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2**
✓ GZ*
✓ XZ*

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2*
□ GZ
□ XZ

✓ QCOW2*
✓ GZ*
✓ XZ*

KubeVirt (RAW)

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW*
□ GZ
□ XZ

✓ RAW*
✓ GZ*
✓ XZ*

✓ Opération supportée

□ Opération non supportée

* Nécessite de l'espace pour les rayures

** Nécessite de l'espace disque si une autorité de certification personnalisée est requise

10.22.10.8. Ressources supplémentaires

10.22.11. Gestion des instantanés de machines virtuelles

Vous pouvez créer et supprimer des instantanés de machines virtuelles (VM) pour les VM, qu'elles soient hors tension (offline) ou sous tension (online). Vous ne pouvez restaurer qu'une VM hors tension (hors ligne). OpenShift Virtualization prend en charge les instantanés de VM sur les éléments suivants :

  • Red Hat OpenShift Data Foundation
  • Tout autre fournisseur de stockage dans le cloud avec le pilote Container Storage Interface (CSI) qui prend en charge l'API Kubernetes Volume Snapshot

Les instantanés en ligne ont un délai par défaut de cinq minutes (5m) qui peut être modifié si nécessaire.

Important

Les instantanés en ligne sont pris en charge pour les machines virtuelles dotées de disques virtuels branchés à chaud. Toutefois, les disques branchés à chaud qui ne figurent pas dans les spécifications de la machine virtuelle ne sont pas inclus dans l'instantané.

Note

Pour créer des instantanés d'une VM en ligne (en cours d'exécution) avec la plus grande intégrité, installez l'agent invité QEMU.

L'agent invité QEMU prend un instantané cohérent en essayant de mettre le système de fichiers de la VM en veille autant que possible, en fonction de la charge de travail du système. Cela garantit que les E/S en vol sont écrites sur le disque avant que l'instantané ne soit pris. Si l'agent invité n'est pas présent, la mise en veille n'est pas possible et un instantané de meilleure qualité est pris. Les conditions dans lesquelles l'instantané a été pris sont reflétées dans les indications d'instantané qui sont affichées dans la console Web ou dans l'interface de ligne de commande.

10.22.11.1. À propos des instantanés de machines virtuelles

Un site snapshot représente l'état et les données d'une machine virtuelle (VM) à un moment précis. Vous pouvez utiliser un instantané pour restaurer une VM existante à un état antérieur (représenté par l'instantané) à des fins de sauvegarde et de reprise après sinistre ou pour revenir rapidement à une version de développement antérieure.

Un instantané de VM est créé à partir d'une VM hors tension (état arrêté) ou sous tension (état en cours d'exécution).

Lorsqu'il prend un instantané d'une VM en cours d'exécution, le contrôleur vérifie que l'agent invité QEMU est installé et en cours d'exécution. Si c'est le cas, il gèle le système de fichiers de la VM avant de prendre l'instantané et dégèle le système de fichiers une fois l'instantané pris.

L'instantané stocke une copie de chaque volume de l'interface de stockage de conteneurs (CSI) attaché à la VM, ainsi qu'une copie de la spécification et des métadonnées de la VM. Les instantanés ne peuvent pas être modifiés après leur création.

Grâce à la fonction d'instantanés de VM, les administrateurs de clusters et les développeurs d'applications peuvent :

  • Créer un nouvel instantané
  • Liste de tous les instantanés attachés à une VM spécifique
  • Restaurer une VM à partir d'un instantané
  • Supprimer un instantané de VM existant
10.22.11.1.1. Contrôleur d'instantanés de machines virtuelles et définitions de ressources personnalisées (CRD)

La fonction d'instantané de VM introduit trois nouveaux objets API définis comme CRD pour la gestion des instantanés :

  • VirtualMachineSnapshot: Représente une demande de l'utilisateur pour créer un instantané. Il contient des informations sur l'état actuel de la VM.
  • VirtualMachineSnapshotContent: Représente une ressource provisionnée sur le cluster (un snapshot). Il est créé par le contrôleur d'instantanés de VM et contient des références à toutes les ressources nécessaires pour restaurer la VM.
  • VirtualMachineRestore: Représente une demande de l'utilisateur pour restaurer une VM à partir d'un instantané.

Le contrôleur d'instantanés VM lie un objet VirtualMachineSnapshotContent à l'objet VirtualMachineSnapshot pour lequel il a été créé, avec une correspondance univoque.

10.22.11.2. Installation de l'agent invité QEMU sur une machine virtuelle Linux

Le site qemu-guest-agent est largement disponible et disponible par défaut dans les machines virtuelles Red Hat. Installez l'agent et démarrez le service.

Pour vérifier si l'agent invité QEMU est installé et fonctionne sur votre machine virtuelle (VM), vérifiez que AgentConnected figure dans les spécifications de la VM.

Note

Pour créer des instantanés d'une VM en ligne (en cours d'exécution) avec la plus grande intégrité, installez l'agent invité QEMU.

L'agent invité QEMU prend un instantané cohérent en essayant de mettre le système de fichiers de la VM en veille autant que possible, en fonction de la charge de travail du système. Cela permet de s'assurer que les E/S en vol sont écrites sur le disque avant que l'instantané ne soit pris. Si l'agent invité n'est pas présent, la mise en veille n'est pas possible et un instantané est pris au mieux. Les conditions dans lesquelles l'instantané a été pris sont reflétées dans les indications d'instantané qui sont affichées dans la console Web ou dans l'interface de ligne de commande.

Procédure

  1. Accédez à la ligne de commande de la machine virtuelle via l'une des consoles ou via SSH.
  2. Installer l'agent invité QEMU sur la machine virtuelle :

    $ yum install -y qemu-guest-agent
  3. Assurez-vous que le service est persistant et démarrez-le :

    $ systemctl enable --now qemu-guest-agent

10.22.11.3. Installation de l'agent invité QEMU sur une machine virtuelle Windows

Pour les machines virtuelles Windows, l'agent invité QEMU est inclus dans les pilotes VirtIO. Installer les pilotes sur une installation Windows existante ou nouvelle.

Pour vérifier si l'agent invité QEMU est installé et fonctionne sur votre machine virtuelle (VM), vérifiez que AgentConnected figure dans les spécifications de la VM.

Note

Pour créer des instantanés d'une VM en ligne (en cours d'exécution) avec la plus grande intégrité, installez l'agent invité QEMU.

L'agent invité QEMU prend un instantané cohérent en essayant de mettre le système de fichiers de la VM en veille autant que possible, en fonction de la charge de travail du système. Cela permet de s'assurer que les E/S en vol sont écrites sur le disque avant que l'instantané ne soit pris. Si l'agent invité n'est pas présent, la mise en veille n'est pas possible et un instantané est pris au mieux. Les conditions dans lesquelles l'instantané a été pris sont reflétées dans les indications d'instantané qui sont affichées dans la console Web ou dans l'interface de ligne de commande.

10.22.11.3.1. Installation des pilotes VirtIO sur une machine virtuelle Windows existante

Installer les pilotes VirtIO à partir du lecteur CD SATA connecté à une machine virtuelle Windows existante.

Note

Cette procédure utilise une approche générique pour ajouter des pilotes à Windows. La procédure peut différer légèrement d'une version de Windows à l'autre. Consultez la documentation d'installation de votre version de Windows pour connaître les étapes spécifiques de l'installation.

Procédure

  1. Démarrez la machine virtuelle et connectez-vous à une console graphique.
  2. Se connecter à une session utilisateur Windows.
  3. Ouvrez Device Manager et développez Other devices pour répertorier tous les Unknown device.

    1. Ouvrez le site Device Properties pour identifier l'appareil inconnu. Cliquez avec le bouton droit de la souris sur l'appareil et sélectionnez Properties.
    2. Cliquez sur l'onglet Details et sélectionnez Hardware Ids dans la liste Property.
    3. Comparez le site Value pour le site Hardware Ids avec les pilotes VirtIO pris en charge.
  4. Cliquez avec le bouton droit de la souris sur l'appareil et sélectionnez Update Driver Software.
  5. Cliquer sur Browse my computer for driver software et naviguer jusqu'au lecteur de CD SATA connecté, où se trouvent les pilotes VirtIO. Les pilotes sont classés hiérarchiquement en fonction de leur type, du système d'exploitation et de l'architecture du processeur.
  6. Cliquez sur Next pour installer le pilote.
  7. Répéter ce processus pour tous les pilotes VirtIO nécessaires.
  8. Après l'installation du pilote, cliquez sur Close pour fermer la fenêtre.
  9. Redémarrez la machine virtuelle pour terminer l'installation du pilote.
10.22.11.3.2. Installation des pilotes VirtIO pendant l'installation de Windows

Installer les pilotes VirtIO à partir du pilote du CD SATA pendant l'installation de Windows.

Note

Cette procédure utilise une approche générique de l'installation de Windows et la méthode d'installation peut différer d'une version à l'autre de Windows. Consultez la documentation de la version de Windows que vous installez.

Procédure

  1. Démarrez la machine virtuelle et connectez-vous à une console graphique.
  2. Commencez le processus d'installation de Windows.
  3. Sélectionnez l'installation Advanced.
  4. La destination de stockage ne sera pas reconnue tant que le pilote n'aura pas été chargé. Cliquez sur Load driver.
  5. Les pilotes sont attachés à un lecteur de CD SATA. Cliquez sur OK et recherchez dans le lecteur de CD le pilote de stockage à charger. Les pilotes sont classés hiérarchiquement en fonction de leur type, du système d'exploitation et de l'architecture du processeur.
  6. Répétez les deux étapes précédentes pour tous les pilotes nécessaires.
  7. Terminer l'installation de Windows.

10.22.11.4. Créer un instantané de machine virtuelle dans la console web

Vous pouvez créer un instantané de machine virtuelle (VM) à l'aide de la console web.

Note

Pour créer des instantanés d'une VM en ligne (en cours d'exécution) avec la plus grande intégrité, installez l'agent invité QEMU.

L'agent invité QEMU prend un instantané cohérent en essayant de mettre le système de fichiers de la VM en veille autant que possible, en fonction de la charge de travail du système. Cela permet de s'assurer que les E/S en vol sont écrites sur le disque avant que l'instantané ne soit pris. Si l'agent invité n'est pas présent, la mise en veille n'est pas possible et un instantané est pris au mieux. Les conditions dans lesquelles l'instantané a été pris sont reflétées dans les indications d'instantané qui sont affichées dans la console Web ou dans l'interface de ligne de commande.

L'instantané de la VM ne comprend que les disques qui répondent aux exigences suivantes :

  • Il doit s'agir d'un volume de données ou d'une revendication de volume persistant
  • Appartenir à une classe de stockage qui prend en charge les instantanés de volume de l'interface de stockage de conteneurs (CSI)

Procédure

  1. Cliquez sur Virtualization VirtualMachines dans le menu latéral.
  2. Sélectionnez une machine virtuelle pour ouvrir la page VirtualMachine details.
  3. Si la machine virtuelle est en cours d'exécution, cliquez sur Actions Stop pour l'éteindre.
  4. Cliquez sur l'onglet Snapshots puis sur Take Snapshot.
  5. Remplir les champs Snapshot Name et Description (facultatif).
  6. Développez Disks included in this Snapshot pour voir les volumes de stockage à inclure dans l'instantané.
  7. Si votre VM possède des disques qui ne peuvent pas être inclus dans l'instantané et que vous souhaitez quand même continuer, cochez la case I am aware of this warning and wish to proceed.
  8. Cliquez sur Save.

10.22.11.5. Créer un instantané de machine virtuelle dans le CLI

Vous pouvez créer un instantané de machine virtuelle (VM) pour une VM hors ligne ou en ligne en créant un objet VirtualMachineSnapshot. Kubevirt se coordonnera avec l'agent invité QEMU pour créer un instantané de la VM en ligne.

Note

Pour créer des instantanés d'une VM en ligne (en cours d'exécution) avec la plus grande intégrité, installez l'agent invité QEMU.

L'agent invité QEMU prend un instantané cohérent en essayant de mettre le système de fichiers de la VM en veille autant que possible, en fonction de la charge de travail du système. Cela permet de s'assurer que les E/S en vol sont écrites sur le disque avant que l'instantané ne soit pris. Si l'agent invité n'est pas présent, la mise en veille n'est pas possible et un instantané est pris au mieux. Les conditions dans lesquelles l'instantané a été pris sont reflétées dans les indications d'instantané qui sont affichées dans la console Web ou dans l'interface de ligne de commande.

Conditions préalables

  • Assurez-vous que les réclamations de volumes persistants (PVC) se trouvent dans une classe de stockage qui prend en charge les instantanés de volumes de l'interface de stockage de conteneurs (CSI).
  • Installez le CLI OpenShift (oc).
  • Facultatif : Mettez hors tension la machine virtuelle pour laquelle vous souhaitez créer un instantané.

Procédure

  1. Créer un fichier YAML pour définir un objet VirtualMachineSnapshot qui spécifie le nom du nouveau VirtualMachineSnapshot et le nom de la VM source.

    Par exemple :

    apiVersion: snapshot.kubevirt.io/v1alpha1
    kind: VirtualMachineSnapshot
    metadata:
      name: my-vmsnapshot 1
    spec:
      source:
        apiGroup: kubevirt.io
        kind: VirtualMachine
        name: my-vm 2
    1
    Le nom du nouvel objet VirtualMachineSnapshot.
    2
    Le nom de la VM source.
  2. Créer la ressource VirtualMachineSnapshot. Le contrôleur d'instantanés crée un objet VirtualMachineSnapshotContent, le lie à VirtualMachineSnapshot et met à jour les champs status et readyToUse de l'objet VirtualMachineSnapshot.

    oc create -f <my-vmsnapshot>.yaml
  3. Facultatif : si vous prenez un instantané en ligne, vous pouvez utiliser la commande wait et surveiller l'état de l'instantané :

    1. Entrez la commande suivante :

      $ oc wait my-vm my-vmsnapshot --for condition=Ready
    2. Vérifier l'état de l'instantané :

      • InProgress - L'opération d'instantané en ligne est toujours en cours.
      • Succeeded - L'opération d'instantané en ligne s'est terminée avec succès.
      • Failed - L'opération d'instantané en ligne a échoué.

        Note

        Les instantanés en ligne ont un délai par défaut de cinq minutes (5m). Si l'instantané ne se termine pas avec succès dans les cinq minutes, l'état est défini sur failed. Par la suite, le système de fichiers sera décongelé et la VM dégelée, mais l'état restera failed jusqu'à ce que vous supprimiez l'image de l'instantané qui a échoué.

        Pour modifier le délai par défaut, ajoutez l'attribut FailureDeadline à la spécification d'instantané VM avec le délai en minutes (m) ou en secondes (s) que vous souhaitez spécifier avant que l'opération d'instantané ne se termine.

        Pour ne pas fixer de délai, vous pouvez spécifier 0, bien que cela ne soit généralement pas recommandé, car cela peut entraîner une absence de réponse de la part de la VM.

        Si vous ne spécifiez pas d'unité de temps telle que m ou s, la valeur par défaut est la seconde (s).

Vérification

  1. Vérifiez que l'objet VirtualMachineSnapshot est créé et lié à VirtualMachineSnapshotContent. L'indicateur readyToUse doit être défini sur true.

    $ oc describe vmsnapshot <my-vmsnapshot>

    Exemple de sortie

    apiVersion: snapshot.kubevirt.io/v1alpha1
    kind: VirtualMachineSnapshot
    metadata:
      creationTimestamp: "2020-09-30T14:41:51Z"
      finalizers:
      - snapshot.kubevirt.io/vmsnapshot-protection
      generation: 5
      name: mysnap
      namespace: default
      resourceVersion: "3897"
      selfLink: /apis/snapshot.kubevirt.io/v1alpha1/namespaces/default/virtualmachinesnapshots/my-vmsnapshot
      uid: 28eedf08-5d6a-42c1-969c-2eda58e2a78d
    spec:
      source:
        apiGroup: kubevirt.io
        kind: VirtualMachine
        name: my-vm
    status:
      conditions:
      - lastProbeTime: null
        lastTransitionTime: "2020-09-30T14:42:03Z"
        reason: Operation complete
        status: "False" 1
        type: Progressing
      - lastProbeTime: null
        lastTransitionTime: "2020-09-30T14:42:03Z"
        reason: Operation complete
        status: "True" 2
        type: Ready
      creationTime: "2020-09-30T14:42:03Z"
      readyToUse: true 3
      sourceUID: 355897f3-73a0-4ec4-83d3-3c2df9486f4f
      virtualMachineSnapshotContentName: vmsnapshot-content-28eedf08-5d6a-42c1-969c-2eda58e2a78d 4

    1
    Le champ status de la condition Progressing indique si l'instantané est toujours en cours de création.
    2
    Le champ status de la condition Ready indique si le processus de création de l'instantané est terminé.
    3
    Indique si l'instantané est prêt à être utilisé.
    4
    Spécifie que l'instantané est lié à un objet VirtualMachineSnapshotContent créé par le contrôleur d'instantanés.
  2. Vérifiez la propriété spec:volumeBackups de la ressource VirtualMachineSnapshotContent pour vérifier que les PVC prévus sont inclus dans l'instantané.

10.22.11.6. Vérification de la création d'un cliché en ligne à l'aide d'indications de cliché

Les indications de snapshot sont des informations contextuelles sur les opérations de snapshot de machine virtuelle (VM) en ligne. Les indications ne sont pas disponibles pour les opérations de snapshot de machine virtuelle (VM) hors ligne. Les indications sont utiles pour décrire les détails de la création d'un instantané en ligne.

Conditions préalables

  • Pour afficher les indications, vous devez avoir tenté de créer un instantané de VM en ligne à l'aide de l'interface CLI ou de la console Web.

Procédure

  1. Affichez la sortie des indications de l'instantané en effectuant l'une des opérations suivantes :

    • Pour les instantanés créés à l'aide de l'interface de programmation, affichez l'indicateur dans l'objet YAML VirtualMachineSnapshot, dans le champ status.
    • Pour les instantanés créés à l'aide de la console Web, cliquez sur VirtualMachineSnapshot > Status dans l'écran Snapshot details.
  2. Vérifiez l'état de l'instantané de votre VM en ligne :

    • Online indique que la machine virtuelle était en cours d'exécution lors de la création de l'instantané en ligne.
    • NoGuestAgent indique que l'agent invité QEMU n'était pas en cours d'exécution lors de la création d'un instantané en ligne. L'agent invité QEMU n'a pas pu être utilisé pour geler et dégeler le système de fichiers, soit parce que l'agent invité QEMU n'était pas installé ou en cours d'exécution, soit en raison d'une autre erreur.

10.22.11.7. Restauration d'une machine virtuelle à partir d'un instantané dans la console web

Vous pouvez restaurer une machine virtuelle (VM) à une configuration antérieure représentée par un instantané dans la console web.

Procédure

  1. Cliquez sur Virtualization VirtualMachines dans le menu latéral.
  2. Sélectionnez une machine virtuelle pour ouvrir la page VirtualMachine details.
  3. Si la machine virtuelle est en cours d'exécution, cliquez sur Actions Stop pour l'éteindre.
  4. Cliquez sur l'onglet Snapshots. La page affiche une liste des instantanés associés à la machine virtuelle.
  5. Choisissez l'une des méthodes suivantes pour restaurer un instantané de VM :

    1. Pour l'instantané que vous souhaitez utiliser comme source pour restaurer la VM, cliquez sur Restore.
    2. Sélectionnez un instantané pour ouvrir l'écran Snapshot Details et cliquez sur Actions Restore VirtualMachineSnapshot.
  6. Dans la fenêtre de confirmation, cliquez sur Restore pour restaurer la configuration précédente de la VM, représentée par l'instantané.

10.22.11.8. Restauration d'une machine virtuelle à partir d'un instantané dans le CLI

Vous pouvez restaurer une machine virtuelle (VM) existante dans une configuration antérieure à l'aide d'un instantané de VM. Vous ne pouvez restaurer qu'à partir d'un instantané de VM hors ligne.

Conditions préalables

  • Installez le CLI OpenShift (oc).
  • Mettez hors tension la VM que vous souhaitez restaurer dans un état antérieur.

Procédure

  1. Créez un fichier YAML pour définir un objet VirtualMachineRestore qui spécifie le nom de la VM à restaurer et le nom de l'instantané à utiliser comme source.

    Par exemple :

    apiVersion: snapshot.kubevirt.io/v1alpha1
    kind: VirtualMachineRestore
    metadata:
      name: my-vmrestore 1
    spec:
      target:
        apiGroup: kubevirt.io
        kind: VirtualMachine
        name: my-vm 2
      virtualMachineSnapshotName: my-vmsnapshot 3
    1
    Le nom du nouvel objet VirtualMachineRestore.
    2
    Le nom de la VM cible que vous souhaitez restaurer.
    3
    Le nom de l'objet VirtualMachineSnapshot à utiliser comme source.
  2. Créez la ressource VirtualMachineRestore. Le contrôleur d'instantanés met à jour les champs d'état de l'objet VirtualMachineRestore et remplace la configuration existante de la VM par le contenu de l'instantané.

    $ oc create -f <my-vmrestore>.yaml

Vérification

  • Vérifiez que la VM est restaurée dans l'état précédent représenté par l'instantané. L'indicateur complete doit être défini sur true.

    oc get vmrestore <my-vmrestore>

    Exemple de sortie

    apiVersion: snapshot.kubevirt.io/v1alpha1
    kind: VirtualMachineRestore
    metadata:
    creationTimestamp: "2020-09-30T14:46:27Z"
    generation: 5
    name: my-vmrestore
    namespace: default
    ownerReferences:
    - apiVersion: kubevirt.io/v1
      blockOwnerDeletion: true
      controller: true
      kind: VirtualMachine
      name: my-vm
      uid: 355897f3-73a0-4ec4-83d3-3c2df9486f4f
      resourceVersion: "5512"
      selfLink: /apis/snapshot.kubevirt.io/v1alpha1/namespaces/default/virtualmachinerestores/my-vmrestore
      uid: 71c679a8-136e-46b0-b9b5-f57175a6a041
      spec:
        target:
          apiGroup: kubevirt.io
          kind: VirtualMachine
          name: my-vm
      virtualMachineSnapshotName: my-vmsnapshot
      status:
      complete: true 1
      conditions:
      - lastProbeTime: null
      lastTransitionTime: "2020-09-30T14:46:28Z"
      reason: Operation complete
      status: "False" 2
      type: Progressing
      - lastProbeTime: null
      lastTransitionTime: "2020-09-30T14:46:28Z"
      reason: Operation complete
      status: "True" 3
      type: Ready
      deletedDataVolumes:
      - test-dv1
      restoreTime: "2020-09-30T14:46:28Z"
      restores:
      - dataVolumeName: restore-71c679a8-136e-46b0-b9b5-f57175a6a041-datavolumedisk1
      persistentVolumeClaim: restore-71c679a8-136e-46b0-b9b5-f57175a6a041-datavolumedisk1
      volumeName: datavolumedisk1
      volumeSnapshotName: vmsnapshot-28eedf08-5d6a-42c1-969c-2eda58e2a78d-volume-datavolumedisk1

    1
    Indique si le processus de restauration de la VM dans l'état représenté par l'instantané est terminé.
    2
    Le champ status de la condition Progressing précise si la VM est toujours en cours de restauration.
    3
    Le champ status de la condition Ready indique si le processus de restauration de la VM est terminé.

10.22.11.9. Suppression d'un snapshot de machine virtuelle dans la console web

Vous pouvez supprimer un snapshot de machine virtuelle existant en utilisant la console web.

Procédure

  1. Cliquez sur Virtualization VirtualMachines dans le menu latéral.
  2. Sélectionnez une machine virtuelle pour ouvrir la page VirtualMachine details.
  3. Cliquez sur l'onglet Snapshots. La page affiche une liste des instantanés associés à la machine virtuelle.
  4. Cliquez sur le menu Options kebab de l'instantané de la machine virtuelle que vous souhaitez supprimer et sélectionnez Delete VirtualMachineSnapshot.
  5. Dans la fenêtre de confirmation, cliquez sur Delete pour supprimer l'instantané.

10.22.11.10. Suppression d'un snapshot de machine virtuelle dans le CLI

Vous pouvez supprimer un instantané de machine virtuelle (VM) existant en supprimant l'objet VirtualMachineSnapshot approprié.

Conditions préalables

  • Installez le CLI OpenShift (oc).

Procédure

  • Supprimer l'objet VirtualMachineSnapshot. Le contrôleur d'instantanés supprime l'objet VirtualMachineSnapshot ainsi que l'objet VirtualMachineSnapshotContent qui lui est associé.

    oc delete vmsnapshot <my-vmsnapshot>

Vérification

  • Vérifiez que l'instantané est supprimé et qu'il n'est plus attaché à cette VM :

    $ oc get vmsnapshot

10.22.11.11. Ressources supplémentaires

10.22.12. Déplacement d'un disque de machine virtuelle locale vers un autre nœud

Les machines virtuelles qui utilisent un volume de stockage local peuvent être déplacées de manière à s'exécuter sur un nœud spécifique.

Il se peut que vous souhaitiez déplacer la machine virtuelle vers un nœud spécifique pour les raisons suivantes :

  • Le nœud actuel a des limites à la configuration du stockage local.
  • Le nouveau nœud est mieux optimisé pour la charge de travail de cette machine virtuelle.

Pour déplacer une machine virtuelle qui utilise le stockage local, vous devez cloner le volume sous-jacent en utilisant un volume de données. Une fois l'opération de clonage terminée, vous pouvez modifier la configuration de la machine virtuelle afin qu'elle utilise le nouveau volume de données ou ajouter le nouveau volume de données à une autre machine virtuelle.

Astuce

Lorsque vous activez la pré-allocation globalement ou pour un seul volume de données, l'importateur de données conteneurisées (CDI) pré-allocation l'espace disque pendant le clonage. La pré-allocation améliore les performances d'écriture. Pour plus d'informations, voir Utilisation de la pré-allocation pour les volumes de données.

Note

Les utilisateurs qui n'ont pas le rôle cluster-admin ont besoin d'autorisations supplémentaires pour cloner des volumes dans des espaces de noms.

10.22.12.1. Clonage d'un volume local vers un autre nœud

Vous pouvez déplacer un disque de machine virtuelle pour qu'il s'exécute sur un nœud spécifique en clonant la revendication de volume persistant (PVC) sous-jacente.

Pour vous assurer que le disque de la machine virtuelle est cloné sur le nœud correct, vous devez créer un nouveau volume persistant (PV) ou en identifier un sur le nœud correct. Appliquez une étiquette unique au volume persistant afin qu'il puisse être référencé par le volume de données.

Note

Le PV de destination doit être de la même taille ou plus grand que le PVC source. Si le PV de destination est plus petit que le PVC source, l'opération de clonage échoue.

Conditions préalables

  • La machine virtuelle ne doit pas être en cours d'exécution. Mettez la machine virtuelle hors tension avant de cloner le disque de la machine virtuelle.

Procédure

  1. Créer un nouveau PV local sur le nœud ou identifier un PV local déjà présent sur le nœud :

    • Créer un PV local qui inclut les paramètres nodeAffinity.nodeSelectorTerms. Le manifeste suivant crée un PV local 10Gi sur node01.

      kind: PersistentVolume
      apiVersion: v1
      metadata:
        name: <destination-pv> 1
        annotations:
      spec:
        accessModes:
        - ReadWriteOnce
        capacity:
          storage: 10Gi 2
        local:
          path: /mnt/local-storage/local/disk1 3
        nodeAffinity:
          required:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                - node01 4
        persistentVolumeReclaimPolicy: Delete
        storageClassName: local
        volumeMode: Filesystem
      1
      Le nom du PV.
      2
      La taille du PV. Vous devez allouer suffisamment d'espace, sinon l'opération de clonage échoue. La taille doit être égale ou supérieure à celle du PVC source.
      3
      Le chemin de montage sur le nœud.
      4
      Le nom du nœud où vous voulez créer le PV.
    • Identifier un PV qui existe déjà sur le nœud cible. Vous pouvez identifier le nœud où un PV est provisionné en consultant le champ nodeAffinity dans sa configuration :

      $ oc get pv <destination-pv> -o yaml

      L'extrait suivant montre que le PV est sur node01:

      Exemple de sortie

      ...
      spec:
        nodeAffinity:
          required:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname 1
                operator: In
                values:
                - node01 2
      ...

      1
      La clé kubernetes.io/hostname utilise le nom d'hôte du nœud pour sélectionner un nœud.
      2
      Le nom d'hôte du nœud.
  2. Ajouter une étiquette unique au PV :

    oc label pv <destination-pv> node=node01
  3. Créez un manifeste de volume de données qui fait référence aux éléments suivants :

    • Le nom PVC et l'espace de noms de la machine virtuelle.
    • L'étiquette que vous avez appliquée au PV à l'étape précédente.
    • Taille du PV de destination.

      apiVersion: cdi.kubevirt.io/v1beta1
      kind: DataVolume
      metadata:
        name: <clone-datavolume> 1
      spec:
        source:
          pvc:
            name: "<source-vm-disk>" 2
            namespace: "<source-namespace>" 3
        pvc:
          accessModes:
            - ReadWriteOnce
          selector:
            matchLabels:
              node: node01 4
          resources:
            requests:
              storage: <10Gi> 5
      1
      Le nom du nouveau volume de données.
      2
      Le nom du PVC source. Si vous ne connaissez pas le nom du PVC, vous pouvez le trouver dans la configuration de la machine virtuelle : spec.volumes.persistentVolumeClaim.claimName.
      3
      L'espace de noms dans lequel le PVC source existe.
      4
      L'étiquette que vous avez appliquée au PV à l'étape précédente.
      5
      Taille du PV de destination.
  4. Commencez l'opération de clonage en appliquant le manifeste du volume de données à votre cluster :

    oc apply -f <clone-datavolume.yaml>

Le volume de données clone le PVC de la machine virtuelle dans le PV sur le nœud spécifique.

10.22.13. Extension du stockage virtuel par l'ajout d'images de disques vierges

Vous pouvez augmenter votre capacité de stockage ou créer de nouvelles partitions de données en ajoutant des images de disques vierges à OpenShift Virtualization.

10.22.13.1. A propos des volumes de données

DataVolume sont des ressources personnalisées fournies par le projet Containerized Data Importer (CDI). Les volumes de données orchestrent les opérations d'importation, de clonage et de téléchargement qui sont associées à une revendication de volume persistant (PVC) sous-jacente. Vous pouvez créer un volume de données en tant que ressource autonome ou en utilisant le champ dataVolumeTemplate dans la spécification de la machine virtuelle (VM).

Note
  • Les PVC de disques VM préparés à l'aide de volumes de données autonomes ont un cycle de vie indépendant de celui de la VM. Si vous utilisez le champ dataVolumeTemplate dans la spécification de la VM pour préparer le PVC, le PVC partage le même cycle de vie que la VM.

Une fois qu'un PVC est rempli, le volume de données que vous avez utilisé pour créer le PVC n'est plus nécessaire. OpenShift Virtualization active par défaut le ramassage automatique des volumes de données terminés. Les volumes de données autonomes et les volumes de données créés à l'aide de la ressource dataVolumeTemplate sont automatiquement mis au rebut une fois terminés.

10.22.13.2. Création d'une image de disque vierge avec des volumes de données

Vous pouvez créer une nouvelle image de disque vierge dans une revendication de volume persistant en personnalisant et en déployant un fichier de configuration de volume de données.

Conditions préalables

  • Au moins un volume persistant disponible.
  • Installez le CLI OpenShift (oc).

Procédure

  1. Modifiez le manifeste DataVolume:

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: DataVolume
    metadata:
      name: blank-image-datavolume
    spec:
      source:
          blank: {}
      pvc:
        # Optional: Set the storage class or omit to accept the default
        # storageClassName: "hostpath"
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 500Mi
  2. Créez l'image de disque vierge en exécutant la commande suivante :

    oc create -f <blank-image-datavolume>.yaml

10.22.13.3. Ressources supplémentaires

10.22.14. Clonage d'un volume de données à l'aide de smart-cloning

Le clonage intelligent est une fonctionnalité intégrée de Red Hat OpenShift Data Foundation. Le clonage intelligent est plus rapide et plus efficace que le clonage assisté par l'hôte.

Vous n'avez aucune action à effectuer pour activer le clonage intelligent, mais vous devez vous assurer que votre environnement de stockage est compatible avec le clonage intelligent pour utiliser cette fonctionnalité.

Lorsque vous créez un volume de données avec une source de revendication de volume persistant (PVC), vous lancez automatiquement le processus de clonage. Vous recevez toujours un clone du volume de données, que votre environnement prenne ou non en charge le clonage intelligent. Cependant, vous ne bénéficierez des avantages en termes de performances du clonage intelligent que si votre fournisseur de stockage prend en charge le clonage intelligent.

10.22.14.1. A propos des volumes de données

DataVolume sont des ressources personnalisées fournies par le projet Containerized Data Importer (CDI). Les volumes de données orchestrent les opérations d'importation, de clonage et de téléchargement qui sont associées à une revendication de volume persistant (PVC) sous-jacente. Vous pouvez créer un volume de données en tant que ressource autonome ou en utilisant le champ dataVolumeTemplate dans la spécification de la machine virtuelle (VM).

Note
  • Les PVC de disques VM préparés à l'aide de volumes de données autonomes ont un cycle de vie indépendant de celui de la VM. Si vous utilisez le champ dataVolumeTemplate dans la spécification de la VM pour préparer le PVC, le PVC partage le même cycle de vie que la VM.

Une fois qu'un PVC est rempli, le volume de données que vous avez utilisé pour créer le PVC n'est plus nécessaire. OpenShift Virtualization active par défaut le ramassage automatique des volumes de données terminés. Les volumes de données autonomes et les volumes de données créés à l'aide de la ressource dataVolumeTemplate sont automatiquement mis au rebut une fois terminés.

10.22.14.2. À propos du clonage intelligent

Lorsqu'un volume de données est cloné de manière intelligente, il se produit ce qui suit :

  1. Un instantané de la revendication de volume persistant (PVC) source est créé.
  2. Un PVC est créé à partir de l'instantané.
  3. L'instantané est supprimé.

10.22.14.3. Clonage d'un volume de données

Conditions préalables

Pour que le clonage intelligent se produise, les conditions suivantes doivent être remplies :

  • Votre fournisseur de stockage doit prendre en charge les instantanés.
  • Les PVC source et cible doivent être définis pour la même classe de stockage.
  • Les PVC source et cible partagent le même volumeMode.
  • L'objet VolumeSnapshotClass doit faire référence à la classe de stockage définie pour les PVC source et cible.

Procédure

Pour lancer le clonage d'un volume de données :

  1. Créez un fichier YAML pour un objet DataVolume qui spécifie le nom du nouveau volume de données ainsi que le nom et l'espace de noms du PVC source. Dans cet exemple, comme vous spécifiez l'API storage, il n'est pas nécessaire de spécifier accessModes ou volumeMode. Les valeurs optimales seront calculées automatiquement pour vous.

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: DataVolume
    metadata:
      name: <cloner-datavolume> 1
    spec:
      source:
        pvc:
          namespace: "<source-namespace>" 2
          name: "<my-favorite-vm-disk>" 3
      storage: 4
        resources:
          requests:
            storage: <2Gi> 5
    1
    Le nom du nouveau volume de données.
    2
    L'espace de noms dans lequel le PVC source existe.
    3
    Le nom du PVC source.
    4
    Spécifie l'allocation avec l'API storage
    5
    Taille du nouveau volume de données.
  2. Commencez à cloner le PVC en créant le volume de données :

    oc create -f <cloner-datavolume>.yaml
    Note

    Les volumes de données empêchent le démarrage d'une machine virtuelle avant que le PVC ne soit préparé. Vous pouvez donc créer une machine virtuelle qui fait référence au nouveau volume de données pendant que le PVC se clone.

10.22.14.4. Ressources supplémentaires

10.22.15. Création et utilisation des sources de démarrage

Une source d'amorçage contient un système d'exploitation (OS) amorçable et tous les paramètres de configuration de l'OS, tels que les pilotes.

Vous utilisez une source de démarrage pour créer des modèles de machines virtuelles avec des configurations spécifiques. Ces modèles peuvent être utilisés pour créer un nombre quelconque de machines virtuelles disponibles.

Des visites de démarrage rapide sont disponibles dans la console web d'OpenShift Container Platform pour vous aider à créer une source de démarrage personnalisée, à télécharger une source de démarrage et à effectuer d'autres tâches. Sélectionnez Quick Starts dans le menu Help pour afficher les visites guidées de démarrage rapide.

10.22.15.1. À propos des machines virtuelles et des sources de démarrage

Les machines virtuelles se composent d'une définition de machine virtuelle et d'un ou plusieurs disques qui sont sauvegardés par des volumes de données. Les modèles de machines virtuelles vous permettent de créer des machines virtuelles à l'aide de spécifications prédéfinies.

Chaque modèle de machine virtuelle nécessite une source de démarrage, qui est une image de disque de machine virtuelle entièrement configurée, y compris les pilotes configurés. Chaque modèle de machine virtuelle contient une définition de machine virtuelle avec un pointeur vers la source de démarrage. Chaque source de démarrage a un nom et un espace de noms prédéfinis. Pour certains systèmes d'exploitation, une source de démarrage est automatiquement fournie. Si elle n'est pas fournie, l'administrateur doit préparer une source d'amorçage personnalisée.

Les sources d'amorçage fournies sont automatiquement mises à jour avec la dernière version du système d'exploitation. Pour les sources d'amorçage mises à jour automatiquement, les réclamations de volumes persistants (PVC) sont créées avec la classe de stockage par défaut de la grappe. Si vous sélectionnez une autre classe de stockage par défaut après la configuration, vous devez supprimer les volumes de données existants dans l'espace de noms du cluster qui sont configurés avec la classe de stockage par défaut précédente.

Pour utiliser la fonctionnalité des sources de démarrage, installez la dernière version d'OpenShift Virtualization. L'espace de noms openshift-virtualization-os-images active la fonctionnalité et est installé avec l'opérateur OpenShift Virtualization. Une fois la fonctionnalité de source de démarrage installée, vous pouvez créer des sources de démarrage, les attacher à des modèles et créer des machines virtuelles à partir des modèles.

Définir une source de démarrage à l'aide d'une revendication de volume persistant (PVC) qui est remplie en téléchargeant un fichier local, en clonant un PVC existant, en l'important à partir d'un registre ou par URL. Attachez une source de démarrage à un modèle de machine virtuelle à l'aide de la console Web. Une fois que la source de démarrage est attachée à un modèle de machine virtuelle, vous créez un nombre quelconque de machines virtuelles prêtes à l'emploi et entièrement configurées à partir du modèle.

10.22.15.2. Importation d'une image RHEL comme source de démarrage

Vous pouvez importer une image Red Hat Enterprise Linux (RHEL) comme source de démarrage en spécifiant une URL pour l'image.

Conditions préalables

  • Vous devez avoir accès à une page web contenant l'image du système d'exploitation. Par exemple : Télécharger la page web de Red Hat Enterprise Linux avec les images.

Procédure

  1. Dans la console OpenShift Container Platform, cliquez sur Virtualization Templates dans le menu latéral.
  2. Identifiez le modèle RHEL pour lequel vous souhaitez configurer une source de démarrage et cliquez sur Add source.
  3. Dans la fenêtre Add boot source to template, sélectionnez URL (creates PVC) dans la liste Boot source type.
  4. Cliquez sur RHEL download page pour accéder au portail client de Red Hat. Une liste des installateurs et des images disponibles est affichée sur la page Télécharger Red Hat Enterprise Linux.
  5. Identifiez l'image de l'invité Red Hat Enterprise Linux KVM que vous souhaitez télécharger. Cliquez avec le bouton droit de la souris sur Download Now et copiez l'URL de l'image.
  6. Dans la fenêtre Add boot source to template, collez l'URL dans le champ Import URL et cliquez sur Save and import.

Vérification

  1. Vérifiez que le modèle affiche une coche verte dans la colonne Boot source de la page Templates.

Vous pouvez maintenant utiliser ce modèle pour créer des machines virtuelles RHEL.

10.22.15.3. Ajout d'une source de démarrage pour un modèle de machine virtuelle

Une source de démarrage peut être configurée pour tout modèle de machine virtuelle que vous souhaitez utiliser pour créer des machines virtuelles ou des modèles personnalisés. Lorsque les modèles de machines virtuelles sont configurés avec une source de démarrage, ils sont étiquetés Source available sur la page Templates. Après avoir ajouté une source de démarrage à un modèle, vous pouvez créer une nouvelle machine virtuelle à partir du modèle.

Il existe quatre méthodes pour sélectionner et ajouter une source de démarrage dans la console web :

  • Upload local file (creates PVC)
  • URL (creates PVC)
  • Clone (creates PVC)
  • Registry (creates PVC)

Conditions préalables

  • Pour ajouter une source de démarrage, vous devez être connecté en tant qu'utilisateur avec le rôle RBAC os-images.kubevirt.io:edit ou en tant qu'administrateur. Vous n'avez pas besoin de privilèges spéciaux pour créer une machine virtuelle à partir d'un modèle auquel une source de démarrage a été ajoutée.
  • Pour télécharger un fichier local, le fichier image du système d'exploitation doit exister sur votre machine locale.
  • Pour importer via une URL, il faut avoir accès au serveur web contenant l'image du système d'exploitation. Par exemple : la page web de Red Hat Enterprise Linux avec les images.
  • Pour cloner un PVC existant, l'accès au projet avec un PVC est nécessaire.
  • Pour importer via le registre, il faut avoir accès au registre des conteneurs.

Procédure

  1. Dans la console OpenShift Container Platform, cliquez sur Virtualization Templates dans le menu latéral.
  2. Cliquez sur le menu d'options à côté d'un modèle et sélectionnez Edit boot source.
  3. Cliquez sur Add disk.
  4. Dans la fenêtre Add disk, sélectionnez Use this disk as a boot source.
  5. Saisissez le nom du disque et sélectionnez une adresse Source, par exemple, Blank (creates PVC) ou Use an existing PVC.
  6. Entrez une valeur pour Persistent Volume Claim size afin de spécifier la taille du PVC adéquate pour l'image non compressée et tout espace supplémentaire requis.
  7. Sélectionnez une adresse Type, par exemple Disk ou CD-ROM.
  8. Facultatif : Cliquez sur Storage class et sélectionnez la classe de stockage utilisée pour créer le disque. En général, cette classe de stockage est la classe de stockage par défaut qui est créée pour être utilisée par tous les PVC.

    Note

    Les sources d'amorçage fournies sont automatiquement mises à jour avec la dernière version du système d'exploitation. Pour les sources d'amorçage mises à jour automatiquement, les réclamations de volumes persistants (PVC) sont créées avec la classe de stockage par défaut de la grappe. Si vous sélectionnez une autre classe de stockage par défaut après la configuration, vous devez supprimer les volumes de données existants dans l'espace de noms du cluster qui sont configurés avec la classe de stockage par défaut précédente.

  9. Facultatif : Clear Apply optimized StorageProfile settings pour modifier le mode d'accès ou le mode de volume.
  10. Sélectionnez la méthode appropriée pour enregistrer votre source de démarrage :

    1. Cliquez sur Save and upload si vous avez téléchargé un fichier local.
    2. Cliquez sur Save and import si vous avez importé du contenu à partir d'une URL ou du registre.
    3. Cliquez sur Save and clone si vous avez cloné un PVC existant.

Votre modèle de machine virtuelle personnalisé avec une source de démarrage est répertorié sur la page Catalog. Vous pouvez utiliser ce modèle pour créer une machine virtuelle.

10.22.15.4. Création d'une machine virtuelle à partir d'un modèle avec une source de démarrage attachée

Après avoir ajouté une source de démarrage à un modèle, vous pouvez créer une machine virtuelle à partir du modèle.

Procédure

  1. Dans la console web d'OpenShift Container Platform, cliquez sur Virtualization Catalog dans le menu latéral.
  2. Sélectionnez le modèle mis à jour et cliquez sur Quick create VirtualMachine.

Le site VirtualMachine details s'affiche avec le statut Starting.

10.22.15.5. Ressources supplémentaires

10.22.16. Branchement à chaud de disques virtuels

Vous pouvez ajouter ou supprimer des disques virtuels sans arrêter votre machine virtuelle (VM) ou votre instance de machine virtuelle (VMI).

10.22.16.1. À propos de l'enfichage à chaud de disques virtuels

Lorsque vous hot plug un disque virtuel, vous attachez un disque virtuel à une instance de machine virtuelle pendant que la machine virtuelle est en cours d'exécution.

Lorsque vous hot unplug un disque virtuel, vous détachez un disque virtuel d'une instance de machine virtuelle pendant que la machine virtuelle est en cours d'exécution.

Seuls les volumes de données et les réclamations de volumes persistants (PVC) peuvent être branchés et débranchés à chaud. Il n'est pas possible de brancher ou de débrancher à chaud des disques conteneurs.

Lorsque vous branchez un disque virtuel à chaud, il reste attaché jusqu'à ce que vous le détachiez, même si vous redémarrez la machine virtuelle.

10.22.16.2. À propos de virtio-scsi

Dans OpenShift Virtualization, chaque machine virtuelle (VM) dispose d'un contrôleur virtio-scsi afin que les disques branchés à chaud puissent utiliser un bus scsi. Le contrôleur virtio-scsi surmonte les limites de virtio tout en conservant ses avantages en termes de performances. Il est très évolutif et prend en charge le branchement à chaud de plus de 4 millions de disques.

Le site virtio n'est pas disponible pour les disques enfichés à chaud car il n'est pas évolutif : chaque disque virtio utilise l'un des emplacements PCI Express (PCIe) limités de la VM. Les emplacements PCIe sont également utilisés par d'autres périphériques et doivent être réservés à l'avance ; il se peut donc que les emplacements ne soient pas disponibles à la demande.

10.22.16.3. Branchement à chaud d'un disque virtuel à l'aide de la CLI

Branchez à chaud les disques virtuels que vous souhaitez attacher à une instance de machine virtuelle (VMI) lorsqu'une machine virtuelle est en cours d'exécution.

Conditions préalables

  • Vous devez avoir une machine virtuelle en cours d'exécution pour brancher à chaud un disque virtuel.
  • Vous devez disposer d'au moins un volume de données ou d'une revendication de volume persistant (PVC) pour le branchement à chaud.

Procédure

  • Branchez à chaud un disque virtuel en exécutant la commande suivante :

    $ virtctl addvolume <virtual-machine|virtual-machine-instance> --volume-name=<datavolume|PVC> \
    [--persist] [--serial=<label-name>]
    • Utilisez l'option --persist pour ajouter le disque branché à chaud à la spécification de la machine virtuelle en tant que disque virtuel monté de façon permanente. Arrêtez, redémarrez ou réinitialisez la machine virtuelle pour monter le disque virtuel de manière permanente. Après avoir spécifié l'indicateur --persist, vous ne pouvez plus brancher ou débrancher à chaud le disque virtuel. L'indicateur --persist s'applique aux machines virtuelles et non aux instances de machines virtuelles.
    • L'option --serial vous permet d'ajouter une étiquette alphanumérique de votre choix. Cela vous aide à identifier le disque branché à chaud dans une machine virtuelle invitée. Si vous ne spécifiez pas cette option, l'étiquette prend par défaut le nom du volume de données ou du PVC branché à chaud.

10.22.16.4. Débranchement à chaud d'un disque virtuel à l'aide de la CLI

Débranchez à chaud les disques virtuels que vous souhaitez détacher d'une instance de machine virtuelle (VMI) pendant qu'une machine virtuelle est en cours d'exécution.

Conditions préalables

  • Votre machine virtuelle doit être en cours d'exécution.
  • Vous devez avoir au moins un volume de données ou une revendication de volume persistant (PVC) disponible et branché à chaud.

Procédure

  • Débranchez à chaud un disque virtuel en exécutant la commande suivante :

    virtctl removevolume <virtual-machine|virtual-machine-instance> --volume-name=<datavolume|PVC>

10.22.16.5. Branchement à chaud d'un disque virtuel à l'aide de la console web

Branchez à chaud les disques virtuels que vous souhaitez attacher à une instance de machine virtuelle (VMI) lorsqu'une machine virtuelle est en cours d'exécution. Lorsque vous branchez un disque virtuel à chaud, il reste attaché à la VMI jusqu'à ce que vous le débranchiez.

Conditions préalables

  • Vous devez avoir une machine virtuelle en cours d'exécution pour brancher à chaud un disque virtuel.

Procédure

  1. Cliquez sur Virtualization VirtualMachines dans le menu latéral.
  2. Sélectionnez la machine virtuelle en cours d'exécution sur laquelle vous souhaitez connecter à chaud un disque virtuel.
  3. Sur la page VirtualMachine details, cliquez sur l'onglet Disks.
  4. Cliquez sur Add disk.
  5. Dans la fenêtre Add disk (hot plugged), remplissez les informations relatives au disque virtuel que vous souhaitez connecter à chaud.
  6. Cliquez sur Save.

10.22.16.6. Débrancher à chaud un disque virtuel à l'aide de la console web

Débranchez à chaud les disques virtuels que vous souhaitez détacher d'une instance de machine virtuelle (VMI) pendant qu'une machine virtuelle est en cours d'exécution.

Conditions préalables

  • Votre machine virtuelle doit fonctionner avec un disque connecté à chaud.

Procédure

  1. Cliquez sur Virtualization VirtualMachines dans le menu latéral.
  2. Sélectionnez la machine virtuelle en cours d'exécution avec le disque que vous voulez débrancher à chaud pour ouvrir la page VirtualMachine details.
  3. Dans l'onglet Disks, cliquez sur le menu Options kebab du disque virtuel que vous souhaitez débrancher à chaud.
  4. Cliquez sur Detach.

10.22.17. Utilisation de disques de conteneurs avec des machines virtuelles

Vous pouvez créer une image de machine virtuelle dans un disque de conteneur et la stocker dans votre registre de conteneurs. Vous pouvez ensuite importer le disque conteneur dans le stockage persistant d'une machine virtuelle ou l'attacher directement à la machine virtuelle pour un stockage éphémère.

Important

Si vous utilisez des disques de conteneur de grande taille, le trafic d'E/S risque d'augmenter, ce qui aura un impact sur les nœuds de travail. Cela peut entraîner l'indisponibilité des nœuds. Vous pouvez résoudre ce problème en procédant comme suit

10.22.17.1. À propos des disques conteneurs

Un disque de conteneur est une image de machine virtuelle stockée en tant qu'image de conteneur dans un registre d'images de conteneur. Vous pouvez utiliser les disques conteneurs pour fournir les mêmes images de disque à plusieurs machines virtuelles et pour créer un grand nombre de clones de machines virtuelles.

Un disque conteneur peut être importé dans une revendication de volume persistant (PVC) en utilisant un volume de données attaché à une machine virtuelle, ou attaché directement à une machine virtuelle en tant que volume éphémère containerDisk.

10.22.17.1.1. Importation d'un disque conteneur dans un PVC à l'aide d'un volume de données

Utilisez l'importateur de données conteneurisées (CDI) pour importer le disque conteneur dans un PVC à l'aide d'un volume de données. Vous pouvez ensuite attacher le volume de données à une machine virtuelle pour un stockage persistant.

10.22.17.1.2. Attacher un disque conteneur à une machine virtuelle en tant que volume containerDisk

Un volume containerDisk est éphémère. Il est supprimé lorsque la machine virtuelle est arrêtée, redémarrée ou supprimée. Lorsqu'une machine virtuelle avec un volume containerDisk démarre, l'image du conteneur est extraite du registre et hébergée sur le nœud qui héberge la machine virtuelle.

Utilisez les volumes containerDisk pour les systèmes de fichiers en lecture seule tels que les CD-ROM ou pour les machines virtuelles jetables.

Important

L'utilisation des volumes containerDisk pour les systèmes de fichiers en lecture-écriture n'est pas recommandée car les données sont temporairement écrites sur le stockage local du nœud d'hébergement. Cela ralentit la migration en direct de la machine virtuelle, par exemple en cas de maintenance du nœud, car les données doivent être migrées vers le nœud de destination. En outre, toutes les données sont perdues en cas de panne de courant ou d'arrêt inattendu du nœud.

10.22.17.2. Préparation d'un disque de conteneur pour les machines virtuelles

Vous devez construire un disque de conteneur avec une image de machine virtuelle et le pousser vers un registre de conteneur avant de pouvoir l'utiliser avec une machine virtuelle. Vous pouvez ensuite importer le disque de conteneur dans un PVC à l'aide d'un volume de données et l'attacher à une machine virtuelle, ou vous pouvez attacher le disque de conteneur directement à une machine virtuelle en tant que volume éphémère containerDisk.

La taille d'une image de disque à l'intérieur d'un disque conteneur est limitée par la taille maximale de la couche du registre dans lequel le disque conteneur est hébergé.

Note

Pour Red Hat Quay, vous pouvez modifier la taille maximale des couches en éditant le fichier de configuration YAML qui est créé lors du premier déploiement de Red Hat Quay.

Conditions préalables

  • Installez podman s'il n'est pas déjà installé.
  • L'image de la machine virtuelle doit être au format QCOW2 ou RAW.

Procédure

  1. Créer un fichier Docker pour construire l'image de la machine virtuelle dans une image de conteneur. L'image de la machine virtuelle doit appartenir à QEMU, qui a un UID de 107, et être placée dans le répertoire /disk/ à l'intérieur du conteneur. Les autorisations pour le répertoire /disk/ doivent ensuite être définies sur 0440.

    L'exemple suivant utilise l'image de base universelle (UBI) de Red Hat pour gérer ces changements de configuration dans la première étape, et utilise l'image minimale scratch dans la deuxième étape pour stocker le résultat :

    $ cat > Dockerfile << EOF
    FROM registry.access.redhat.com/ubi8/ubi:latest AS builder
    ADD --chown=107:107 <vm_image>.qcow2 /disk/ 1
    RUN chmod 0440 /disk/*
    
    FROM scratch
    COPY --from=builder /disk/* /disk/
    EOF
    1
    Où <vm_image> est l'image de la machine virtuelle au format QCOW2 ou RAW.
    Pour utiliser une image de machine virtuelle distante, remplacez <vm_image>.qcow2 par l'url complète de l'image distante.
  2. Construire et étiqueter le conteneur :

    $ podman build -t <registry>/<container_disk_name>:latest .
  3. Insérer l'image du conteneur dans le registre :

    $ podman push <registry>/<container_disk_name>:latest

Si votre registre de conteneurs ne dispose pas de TLS, vous devez l'ajouter en tant que registre non sécurisé avant de pouvoir importer des disques de conteneurs dans le stockage persistant.

10.22.17.3. Désactivation de TLS pour un registre de conteneur à utiliser comme registre non sécurisé

Vous pouvez désactiver TLS (transport layer security) pour un ou plusieurs registres de conteneurs en modifiant le champ insecureRegistries de la ressource personnalisée HyperConverged.

Conditions préalables

  • Connectez-vous au cluster en tant qu'utilisateur ayant le rôle cluster-admin.

Procédure

  • Modifiez la ressource personnalisée HyperConverged et ajoutez une liste de registres non sécurisés dans le champ spec.storageImport.insecureRegistries.

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
      namespace: openshift-cnv
    spec:
      storageImport:
        insecureRegistries: 1
          - "private-registry-example-1:5000"
          - "private-registry-example-2:5000"
    1
    Remplacez les exemples de cette liste par des noms d'hôtes de registre valides.

10.22.17.4. Prochaines étapes

10.22.18. Préparation de l'espace mémoire du CDI

10.22.18.1. A propos des volumes de données

DataVolume sont des ressources personnalisées fournies par le projet Containerized Data Importer (CDI). Les volumes de données orchestrent les opérations d'importation, de clonage et de téléchargement qui sont associées à une revendication de volume persistant (PVC) sous-jacente. Vous pouvez créer un volume de données en tant que ressource autonome ou en utilisant le champ dataVolumeTemplate dans la spécification de la machine virtuelle (VM).

Note
  • Les PVC de disques VM préparés à l'aide de volumes de données autonomes ont un cycle de vie indépendant de celui de la VM. Si vous utilisez le champ dataVolumeTemplate dans la spécification de la VM pour préparer le PVC, le PVC partage le même cycle de vie que la VM.

Une fois qu'un PVC est rempli, le volume de données que vous avez utilisé pour créer le PVC n'est plus nécessaire. OpenShift Virtualization active par défaut le ramassage automatique des volumes de données terminés. Les volumes de données autonomes et les volumes de données créés à l'aide de la ressource dataVolumeTemplate sont automatiquement mis au rebut une fois terminés.

10.22.18.2. À propos de l'espace réservé aux griffes

L'importateur de données conteneurisées (CDI) a besoin d'un espace d'effacement (stockage temporaire) pour effectuer certaines opérations, telles que l'importation et le téléchargement d'images de machines virtuelles. Au cours de ce processus, CDI fournit un PVC d'espace d'effacement égal à la taille du PVC sauvegardant le volume de données de destination (DV). Le PVC d'espace d'effacement est supprimé une fois l'opération terminée ou interrompue.

Vous pouvez définir la classe de stockage utilisée pour lier l'espace de stockage PVC dans le champ spec.scratchSpaceStorageClass de la ressource personnalisée HyperConverged.

Si la classe de stockage définie ne correspond pas à une classe de stockage dans le cluster, la classe de stockage par défaut définie pour le cluster est utilisée. Si aucune classe de stockage par défaut n'est définie dans le cluster, la classe de stockage utilisée pour provisionner le DV ou le PVC d'origine est utilisée.

Note

CDI exige de demander un espace scratch avec un mode de volume file, quel que soit le PVC soutenant le volume de données d'origine. Si le PVC d'origine est soutenu par le mode de volume block, vous devez définir une classe de stockage capable de provisionner des PVC en mode de volume file.

Approvisionnement manuel

S'il n'y a pas de classes de stockage, CDI utilise tous les PVC du projet qui correspondent aux exigences de taille de l'image. Si aucun PVC ne correspond à ces exigences, le module d'importation CDI reste dans l'état Pending jusqu'à ce qu'un PVC approprié soit disponible ou jusqu'à ce qu'une fonction d'expiration du délai d'attente mette fin au module.

10.22.18.3. Les opérations du CDI qui nécessitent un espace de rayures

TypeRaison

Importations du registre

CDI doit télécharger l'image dans un espace de stockage et extraire les couches pour trouver le fichier image. Le fichier image est ensuite transmis à QEMU-IMG pour être converti en disque brut.

Télécharger l'image

QEMU-IMG n'accepte pas d'entrée depuis STDIN. Au lieu de cela, l'image à télécharger est sauvegardée dans l'espace scratch avant d'être transmise à QEMU-IMG pour la conversion.

Importation HTTP d'images archivées

QEMU-IMG ne sait pas comment gérer les formats d'archive pris en charge par CDI. Au lieu de cela, l'image est désarchivée et sauvegardée dans l'espace de stockage avant d'être transmise à QEMU-IMG.

Importations HTTP d'images authentifiées

QEMU-IMG ne gère pas correctement l'authentification. Au lieu de cela, l'image est sauvegardée dans l'espace de stockage et authentifiée avant d'être transmise à QEMU-IMG.

Importation de certificats personnalisés par HTTP

QEMU-IMG ne gère pas correctement les certificats personnalisés des points de terminaison HTTPS. Au lieu de cela, CDI télécharge l'image dans l'espace de stockage avant de transmettre le fichier à QEMU-IMG.

10.22.18.4. Définition d'une classe de stockage

Vous pouvez définir la classe de stockage que l'importateur de données conteneurisées (CDI) utilise lors de l'allocation de l'espace de stockage en ajoutant le champ spec.scratchSpaceStorageClass à la ressource personnalisée (CR) HyperConverged.

Conditions préalables

  • Installez le CLI OpenShift (oc).

Procédure

  1. Modifiez le CR HyperConverged en exécutant la commande suivante :

    $ oc edit hco -n openshift-cnv kubevirt-hyperconverged
  2. Ajoutez le champ spec.scratchSpaceStorageClass à la CR, en définissant la valeur sur le nom d'une classe de stockage qui existe dans le cluster :

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
    spec:
      scratchSpaceStorageClass: "<storage_class>" 1
    1
    Si vous ne spécifiez pas de classe de stockage, CDI utilise la classe de stockage de la revendication de volume persistant qui est en train d'être remplie.
  3. Sauvegardez et quittez votre éditeur par défaut pour mettre à jour le CR HyperConverged.

10.22.18.5. Matrice des opérations soutenues par le CDI

Cette matrice montre les opérations CDI prises en charge pour les types de contenu par rapport aux points de terminaison, et lesquelles de ces opérations nécessitent de l'espace pour les rayures.

Types de contenuHTTPHTTPSAuthentification de base HTTPRegistreTélécharger

KubeVirt (QCOW2)

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2**
✓ GZ*
✓ XZ*

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2*
□ GZ
□ XZ

✓ QCOW2*
✓ GZ*
✓ XZ*

KubeVirt (RAW)

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW*
□ GZ
□ XZ

✓ RAW*
✓ GZ*
✓ XZ*

✓ Opération supportée

□ Opération non supportée

* Nécessite de l'espace pour les rayures

** Nécessite de l'espace disque si une autorité de certification personnalisée est requise

10.22.18.6. Ressources supplémentaires

10.22.19. Réutilisation des volumes persistants

Pour réutiliser un volume persistant (PV) provisionné statiquement, vous devez d'abord récupérer le volume. Cela implique la suppression du PV afin que la configuration de stockage puisse être réutilisée.

10.22.19.1. À propos de la récupération des volumes persistants provisionnés statiquement

Lorsque vous récupérez un volume persistant (PV), vous le dissociez d'une revendication de volume persistant (PVC) et vous le supprimez. En fonction du stockage sous-jacent, il se peut que vous deviez supprimer manuellement le stockage partagé.

Vous pouvez ensuite réutiliser la configuration du PV pour créer un PV portant un nom différent.

Les PV provisionnés statiquement doivent avoir une politique de récupération de Retain pour être récupérés. Si ce n'est pas le cas, le PV entre dans un état d'échec lorsque le PVC est délié du PV.

Important

La politique de récupération de Recycle est obsolète dans OpenShift Container Platform 4.

10.22.19.2. Récupération des volumes persistants provisionnés statiquement

Récupérez un volume persistant (PV) provisionné statiquement en déliant la réclamation de volume persistant (PVC) et en supprimant le PV. Il se peut que vous deviez également supprimer manuellement le stockage partagé.

La récupération d'un PV provisionné statiquement dépend du stockage sous-jacent. Cette procédure propose une approche générale qu'il peut être nécessaire de personnaliser en fonction de votre système de stockage.

Procédure

  1. Assurez-vous que la politique de récupération du PV est réglée sur Retain:

    1. Vérifier la politique de récupération du PV :

      oc get pv <pv_name> -o yaml | grep 'persistentVolumeReclaimPolicy' $ oc get pv <pv_name> -o yaml
    2. Si persistentVolumeReclaimPolicy n'est pas défini sur Retain, modifiez la politique de récupération à l'aide de la commande suivante :

      $ oc patch pv <pv_name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}''
  2. S'assurer qu'aucune ressource n'utilise le PV :

    oc describe pvc <pvc_name> | grep 'Mounted By:' (Monté par :)

    Supprimez toutes les ressources qui utilisent le PVC avant de continuer.

  3. Supprimer le PVC pour libérer le PV :

    oc delete pvc <pvc_name> $ oc delete pvc <pvc_name>
  4. Facultatif : Exporter la configuration PV dans un fichier YAML. Si vous supprimez manuellement le stockage partagé plus tard dans cette procédure, vous pourrez vous référer à cette configuration. Vous pouvez également utiliser les paramètres spec de ce fichier comme base pour créer un nouveau PV avec la même configuration de stockage après avoir récupéré le PV :

    $ oc get pv <nom_du_v> -o yaml > <nom_du_fichier>.yaml
  5. Supprimer le PV :

    oc delete pv <pv_name> $ oc delete pv <pv_name>
  6. Facultatif : Selon le type de stockage, il peut être nécessaire de supprimer le contenu du dossier de stockage partagé :

    $ rm -rf <path_to_share_storage>
  7. Facultatif : Créez un PV qui utilise la même configuration de stockage que le PV supprimé. Si vous avez exporté la configuration du PV récupéré précédemment, vous pouvez utiliser les paramètres spec de ce fichier comme base d'un nouveau manifeste PV :

    Note

    Pour éviter tout conflit, il est conseillé de donner au nouvel objet PV un nom différent de celui que vous avez supprimé.

    oc create -f <nouveau_nom_pv>.yaml

Ressources supplémentaires

10.22.20. Extension du disque d'une machine virtuelle

Vous pouvez augmenter la taille du disque d'une machine virtuelle (VM) pour fournir une plus grande capacité de stockage en redimensionnant la revendication de volume persistant (PVC) du disque.

Cependant, vous ne pouvez pas réduire la taille d'un disque VM.

10.22.20.1. Agrandir le disque d'une machine virtuelle

L'agrandissement du disque de la VM met de l'espace supplémentaire à la disposition de la machine virtuelle. Toutefois, il incombe au propriétaire de la machine virtuelle de décider comment utiliser l'espace de stockage.

Si le disque est un PVC Filesystem, le fichier correspondant s'étend à la taille restante tout en réservant de l'espace pour les frais généraux du système de fichiers.

Procédure

  1. Modifiez le manifeste PersistentVolumeClaim du disque VM que vous souhaitez développer :

    $ oc edit pvc <nom_du_pvc>
  2. Modifier la valeur de l'attribut spec.resource.requests.storage pour obtenir une taille plus grande.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
       name: vm-disk-expand
    spec:
      accessModes:
         - ReadWriteMany
      resources:
        requests:
           storage: 3Gi 1
    ...
    1
    Taille du disque de la VM pouvant être augmentée

10.22.20.2. Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.