Skip to main content
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Utilisez les instantanés de groupes de volumes avec Trident Protect

Contributeurs netapp-shwetav

Utilisez des instantanés de groupes de volumes pour capturer les persistent volume claims (PVCs) associés à un même point dans le temps. Cela est utile pour les applications qui écrivent sur plusieurs volumes, notamment les machines virtuelles (VMs) dotées de plusieurs disques.

Description de la tâche

Vous définissez les groupes de volumes dans le champ spec.volumeGroups`de la ressource personnalisée `Application(CR). Lorsque vous créez un instantané de l'application, Trident Protect utilise un groupe de cohérence ONTAP pour créer simultanément un instantané de tous les PVC d'un groupe de volumes. Il crée un groupe de cohérence pour chaque namespace du groupe de volumes. Chaque volume du groupe bénéficie également de son propre instantané, ce qui vous permet de restaurer les volumes individuellement.

Trident Protect crée des instantanés individuels des PVC qui ne font pas partie d'un groupe de volumes. Ces instantanés sont pris successivement, il n'est donc pas garanti qu'ils reflètent le même instant.

Les instantanés de groupe de volumes s’appliquent aux instantanés à la demande, aux instantanés planifiés et à l’instantané que Trident Protect prend dans le cadre d’une sauvegarde. Si vous sauvegardez un instantané existant, Trident Protect l’utilise et ne crée pas de nouvel instantané de groupe. La réplication ne crée pas non plus d’autre instantané de groupe. Elle utilise les instantanés par volume que l’instantané de groupe a déjà créés.

Trident Protect capture les volumes au même moment uniquement s'ils remplissent toutes les conditions suivantes :

  • Ils appartiennent au même groupe de volumes.

  • Ils se trouvent dans le même namespace.

  • Ils se trouvent sur la même machine virtuelle de stockage (SVM).

  • Le groupe de volumes ne contient pas plus de 80 volumes dans ce namespace.

Si Trident Protect ne peut pas créer d'instantané de groupe, par exemple parce qu'une condition préalable n'est pas remplie, il ajoute un avertissement à status.warnings et crée des instantanés individuels des PVC de ce groupe. Ces instantanés sont pris successivement, de sorte qu'ils peuvent ne pas refléter le même moment dans le temps. L'instantané de l'application s'effectue quand même.

Le tableau suivant décrit ce qui se passe dans les situations courantes.

Situation Résultat

Le groupe de volumes sélectionne les PVC dans plusieurs namespace

Un instantané de groupe appartient à un namespace, donc Trident Protect crée un instantané de groupe distinct dans chaque namespace. Ces instantanés de groupe ne sont pas créés au même moment. L’un peut réussir tandis qu’un autre est encore en cours d’exécution, échoue ou se rabat sur des instantanés individuels. Par exemple, des PVC étiquetés app: payments-db dans payments-a et payments-b deviennent deux instantanés de groupe distincts. Ne traitez pas les instantanés de groupe de différents namespaces comme un seul point de restauration.

Les PVC d'un namespace se trouvent sur plusieurs SVM

Trident Protect ne segmente pas les volumes par SVM ni par backend Trident. Un groupe de cohérence ONTAP ne peut pas inclure des volumes de plusieurs SVM. Le snapshot de groupe échoue donc pour l'ensemble du namespace, y compris pour les volumes qui partagent une SVM. Trident Protect ajoute un avertissement, supprime le snapshot de groupe et crée un snapshot individuel pour chaque volume. Pour capturer les volumes ensemble, placez-les sur la même SVM.

Un namespace possède plus de 80 PVC correspondants

Trident Protect ignore uniquement ce namespace et crée des instantanés individuels de ses PVC. Les autres namespaces du même groupe de volumes bénéficient toujours d'un instantané de groupe.

Un PVC correspond à plusieurs volumeGroups entrées

Trident Protect ajoute le PVC aux deux groupes de volumes, et l'un des instantanés de groupe peut échouer. L'instantané de groupe qui échoue revient à des instantanés individuels. Assurez-vous que chaque PVC corresponde à une seule entrée.

Un groupe de volumes comprend des PVC qui utilisent un pilote ou un protocole ne prenant pas en charge les instantanés de groupe de volumes

La capture instantanée du groupe échoue, et Trident Protect crée des captures instantanées individuelles de ces PVC.

Avant de commencer
  • Vos PVC doivent utiliser un pilote et un protocole de stockage prenant en charge les instantanés de groupes de volumes. Pour connaître les pilotes et protocoles pris en charge, consultez "Utilisation des instantanés de groupes de volumes Trident".

  • Votre cluster doit exécuter Kubernetes 1.36 ou une version ultérieure.

  • Le contrôleur de snapshots Kubernetes doit être en version 8.5.0 ou ultérieure, avec le CSIVolumeGroupSnapshot feature gate activé.

  • Les v1 CRD pour VolumeGroupSnapshot, VolumeGroupSnapshotClass et VolumeGroupSnapshotContent doivent être installées.

  • Vous devez utiliser Trident 26.10 ou une version ultérieure avec un backend en ligne. Le CSIVolumeGroupSnapshot feature gate doit également être activé sur le conteneur Trident csi-snapshotter.

  • Une VolumeGroupSnapshotClass classe qui utilise le csi.trident.netapp.io pilote doit être définie. Si une seule classe est définie, Trident Protect l’utilise. Si plusieurs classes sont définies, annotez la classe que Trident Protect doit utiliser avec snapshot.storage.kubernetes.io/is-default-class: "true". Sinon, Trident Protect utilise la première classe par ordre alphabétique. Vous ne pouvez pas choisir la classe dans la Application ou Snapshot CR. Pour plus d’informations, reportez-vous à "Classe d'instantanés de groupe de volumes".

  • Le compte ONTAP dans le backend Trident doit être autorisé à créer, obtenir et supprimer des groupes de cohérence, ainsi qu'à en créer des instantanés. Reportez-vous à "Gérer les groupes de cohérence des applications" et à "Gérer les instantanés de groupe de cohérence des applications". Le rôle d'administrateur SVM par défaut (vsadmin) n'inclut pas ces autorisations.

Définir un groupe de volumes

Trident Protect crée des instantanés de groupe uniquement pour les volumes qui appartiennent à un groupe de volumes. Ajoutez spec.volumeGroups au Application CR pour définir les groupes. Chaque entrée constitue un groupe distinct. Sélectionnez les volumes par étiquette, par VM, ou les deux.

Description de la tâche
  • Vous pouvez définir des groupes de volumes uniquement dans la Application CR. La tridentctl-protect CLI ne propose pas d'option de groupe de volumes.

  • Trident Protect inclut uniquement les PVC liés dans un groupe de volumes et crée des instantanés individuels des PVC non liés. Si une entrée ne contient aucun PVC lié, Trident Protect ne crée pas d'instantané de groupe pour cette entrée.

  • Assurez-vous que chaque PVC ne corresponde qu'à une seule entrée.

Avant de commencer

Définissez l'application que vous souhaitez protéger. Consultez "Définissez une application de gestion avec Trident Protect".

Étapes
  1. Si vous sélectionnez des volumes par étiquette, étiquetez les PVCs que vous souhaitez regrouper. Vous pouvez utiliser n'importe quelle clé et valeur d'étiquette. Les exemples de cette page utilisent volume-group=my-volume-group.

    kubectl label pvc <pvc_name_1> <pvc_name_2> volume-group=my-volume-group -n <application_namespace>
  2. Ajoutez spec.volumeGroups à votre Application fichier CR existant. Chaque entrée doit inclure labelSelector, vmSelector, ou les deux. Si une entrée inclut les deux champs, le groupe de volumes comprend tous les volumes sélectionnés par l’un ou l’autre de ces champs.

    • spec.volumeGroups[].labelSelector: Un sélecteur d’étiquettes Kubernetes (matchLabels ou matchExpressions) qui sélectionne les PVC dans l’application. Un sélecteur vide n’est pas valide.

    • spec.volumeGroups[].vmSelector: Une liste de VM KubeVirt, chacune avec un namespace et name. Trident Protect inclut les PVC que chaque VM monte.

      L'exemple suivant définit deux groupes de volumes. Le premier groupe comprend les PVC étiquetés volume-group: my-volume-group. Le deuxième groupe comprend les PVC qui my-vm-1 et my-vm-2 sont montés.

    apiVersion: protect.trident.netapp.io/v1
    kind: Application
    metadata:
      name: my-app-name
      namespace: my-namespace
    spec:
      includedNamespaces:
        - namespace: my-namespace
      volumeGroups:
        - labelSelector:
            matchLabels:
              volume-group: my-volume-group
        - vmSelector:
            - namespace: my-namespace
              name: my-vm-1
            - namespace: my-namespace
              name: my-vm-2

    +

    Remarque Conservez les autres champs que votre Application CR contient déjà, par exemple spec.resourceFilter. Si vous omettez un champ du fichier que vous appliquez, kubectl apply le supprime de la CR.
  3. Appliquez la CR mise à jour :

    kubectl apply -f <application_cr_file>.yaml
Résultat

Le Application CR inclut les groupes de volumes. Le prochain instantané de l'application les utilise.

Créer un snapshot

Créez un snapshot à la demande, une sauvegarde à la demande ou une planification de protection des données pour l'application. Vous n'avez pas besoin d'ajouter de champs. Trident Protect utilise les groupes de volumes que vous avez définis dans le Application CR. Pour obtenir des instructions, reportez-vous à "Protégez les applications à l'aide de Trident Protect".

Remarque Par défaut, Trident Protect crée l'instantané de groupe avant de figer les systèmes de fichiers des machines virtuelles. Les volumes d'un groupe de volumes sont capturés sans gel, de sorte que les données qu'une machine virtuelle n'a pas encore écrites sur le disque ne sont pas incluses. Les disques qui ne se trouvent pas dans le groupe de volumes sont capturés plus tard, lorsque Trident Protect crée des instantanés individuels après avoir figé la machine virtuelle. Pour capturer tous les disques d'une machine virtuelle au même moment, incluez chaque disque dans le groupe de volumes. Pour plus d'informations sur le gel des systèmes de fichiers des machines virtuelles, consultez "Protéger les données avec les machines virtuelles KubeVirt".

Examinez le résultat

Une fois la capture instantanée terminée, vérifiez son statut pour confirmer que Trident Protect a bien créé les captures instantanées de groupe.

Remarque Le fait qu’un instantané d’application soit terminé ne signifie pas que ses instantanés de groupe ont réussi. La VolumeGroupSnapshotsCreated condition devient true même si tous les instantanés de groupe sont ignorés ou échouent, et Trident Protect ne crée ni événement ni métrique Kubernetes. Pour détecter cela, surveillez status.warnings ainsi que les champs skipped et failed.
Étapes
  1. Récupérez le nom de l'instantané. Pour lister les instantanés de l'application, exécutez la commande suivante :

    kubectl get snapshots -n <application_namespace>
  2. Vérifiez l'état de l'instantané :

    kubectl get snapshots <snapshot_name> -n <application_namespace> -o yaml
Résultat

Le status.volumeGroupSnapshots champ comporte une entrée pour chaque instantané de groupe. Trident Protect crée un instantané de groupe distinct pour chaque namespace d'un groupe de volumes. L'exemple suivant est abrégé :

status:
  volumeGroupSnapshots:
    - name: vgs-<snapshot_uid_prefix>-<group_index>-<namespace>
      namespace: <namespace>
      ready: true
      memberPVCs:
        - pvcName: <pvc_name_1>
          pvcNamespace: <namespace>
        - pvcName: <pvc_name_2>
          pvcNamespace: <namespace>

Le nom de l'instantané de groupe comprend les huit premiers caractères de l' Snapshot`UID, l'index de l' `spec.volumeGroups`entrée (commençant à `0), et le namespace, tronqué à 12 caractères.

  • ready: true signifie que le snapshot de groupe a réussi. Les snapshots qui composent le groupe sont également répertoriés sous status.volumeSnapshots. Il s'agit des snapshots membres du groupe, et non de snapshots supplémentaires des mêmes volumes.

  • skipped: true`Cela signifie que Trident Protect n'a pas tenté de créer l'instantané de groupe, car le groupe de volumes contient plus de 80 PVC dans ce namespace. Trident Protect crée alors des instantanés individuels des volumes du groupe et ajoute le `skipReason texte à status.warnings.

  • failed: true`Cela signifie que Trident Protect a tenté de créer l'instantané de groupe, mais a échoué. Trident Protect crée alors des instantanés individuels des volumes du groupe et ajoute le `error texte à status.warnings.

Étiquettes PVC temporaires et nettoyage

Trident Protect ajoute une étiquette à chaque PVC d'un snapshot de groupe, par exemple protect.trident.netapp.io/vgs-group-673c0189-0=true. Vos propres étiquettes ne sont pas modifiées. L'étiquette reste sur le PVC jusqu'à ce que vous supprimiez le snapshot d'application. Lorsque vous supprimez le snapshot d'application, Trident Protect supprime également ses snapshots de groupe de volumes et ses snapshots membres, et retire les étiquettes des PVC. Cela se produit que le reclaimPolicy du snapshot soit Delete ou Retain.

Et la suite ?

Restaurez l'application à partir de l'instantané de la même manière que pour tout autre instantané. Les instantanés de groupe de volumes ne disposent pas d'une restauration distincte. Trident Protect restaure à partir des instantanés membres, ce qui vous permet de restaurer des PVC ou des VM individuels sans restaurer tous les PVC du groupe. Reportez-vous à "Restauration d'un snapshot vers un autre espace de noms" ou "Restaurer à partir d'un snapshot vers l'espace de noms d'origine".