Utilisez les instantanés de groupes de volumes avec Trident Protect
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.
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 |
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 |
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. |
-
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
CSIVolumeGroupSnapshotfeature gate activé. -
Les
v1CRD pourVolumeGroupSnapshot,VolumeGroupSnapshotClassetVolumeGroupSnapshotContentdoivent être installées. -
Vous devez utiliser Trident 26.10 ou une version ultérieure avec un backend en ligne. Le
CSIVolumeGroupSnapshotfeature gate doit également être activé sur le conteneur Tridentcsi-snapshotter. -
Une
VolumeGroupSnapshotClassclasse qui utilise lecsi.trident.netapp.iopilote 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 avecsnapshot.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 laApplicationouSnapshotCR. 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.
-
Vous pouvez définir des groupes de volumes uniquement dans la
ApplicationCR. Latridentctl-protectCLI 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.
Définissez l'application que vous souhaitez protéger. Consultez "Définissez une application de gestion avec Trident Protect".
-
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> -
Ajoutez
spec.volumeGroupsà votreApplicationfichier CR existant. Chaque entrée doit inclurelabelSelector,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 (
matchLabelsoumatchExpressions) 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
namespaceetname. 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 quimy-vm-1etmy-vm-2sont 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+
Conservez les autres champs que votre ApplicationCR contient déjà, par exemplespec.resourceFilter. Si vous omettez un champ du fichier que vous appliquez,kubectl applyle supprime de la CR. -
-
Appliquez la CR mise à jour :
kubectl apply -f <application_cr_file>.yaml
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".
|
|
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.
|
|
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.
|
-
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> -
Vérifiez l'état de l'instantané :
kubectl get snapshots <snapshot_name> -n <application_namespace> -o yaml
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: truesignifie que le snapshot de groupe a réussi. Les snapshots qui composent le groupe sont également répertoriés sousstatus.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 `skipReasontexte à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 `errortexte àstatus.warnings.
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.
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".