Utilizza gli snapshot dei gruppi di volumi con Trident Protect
Utilizza gli snapshot dei gruppi di volumi per acquisire le richieste di volumi persistenti (PVC) correlate nello stesso momento. Questa funzionalità è utile per le applicazioni che scrivono su più volumi, incluse le macchine virtuali (VM) con più dischi.
Definisci i gruppi di volumi nel spec.volumeGroups campo della Application risorsa personalizzata (CR). Quando crei uno snapshot dell'applicazione, Trident Protect utilizza un gruppo di coerenza ONTAP per creare uno snapshot di tutti i PVC in un gruppo di volumi nello stesso momento. Crea un gruppo di coerenza per ogni namespace nel gruppo di volumi. Ogni volume nel gruppo ottiene anche un proprio snapshot, così puoi ripristinare i volumi singolarmente.
Trident Protect crea istantanee individuali delle PVC che non appartengono a un gruppo di volumi. Queste istantanee vengono acquisite una dopo l'altra, quindi non è garantito che riflettano lo stesso preciso istante.
Gli snapshot di gruppo di volumi si applicano agli snapshot su richiesta, agli snapshot pianificati e allo snapshot che Trident Protect acquisisce come parte di un backup. Se esegui il backup di uno snapshot esistente, Trident Protect utilizza tale snapshot e non crea un nuovo snapshot di gruppo. Anche la replica non crea un altro snapshot di gruppo. Utilizza gli snapshot per volume già creati dallo snapshot di gruppo.
Trident Protect acquisisce i volumi nello stesso momento solo se soddisfano tutte le seguenti condizioni:
-
Appartengono allo stesso gruppo di volumi.
-
Si trovano nello stesso namespace.
-
Si trovano sulla stessa macchina virtuale di storage (SVM).
-
Il gruppo di volumi non contiene più di 80 volumi in quel namespace.
Se Trident Protect non riesce a creare uno snapshot di gruppo, ad esempio perché un requisito non è soddisfatto, aggiunge un avviso a status.warnings e crea snapshot individuali dei PVC di quel gruppo. Questi snapshot vengono acquisiti uno dopo l'altro, quindi potrebbero non riflettere lo stesso momento nel tempo. Lo snapshot dell'applicazione si completa comunque.
La tabella seguente descrive cosa accade nelle situazioni più comuni.
| Situazione | Risultato |
|---|---|
Il gruppo di volumi seleziona i PVC in più di un namespace |
Un'istantanea di gruppo appartiene a un solo namespace, quindi Trident Protect crea un'istantanea di gruppo separata in ogni namespace. Queste istantanee di gruppo non vengono acquisite contemporaneamente. Una può avere successo mentre un'altra è ancora in esecuzione, fallisce o ricorre a istantanee individuali. Ad esempio, i PVC etichettati |
I PVC in un namespace sono su più di una SVM |
Trident Protect non suddivide i volumi per SVM o per Trident backend. Un gruppo di coerenza ONTAP non può includere volumi di più di una SVM, quindi lo snapshot di gruppo non riesce per l'intero namespace, inclusi i volumi che condividono una SVM. Trident Protect aggiunge un avviso, rimuove lo snapshot di gruppo e crea uno snapshot individuale di ciascun volume. Per acquisire i volumi insieme, mettili sulla stessa SVM. |
Un namespace ha più di 80 PVC corrispondenti |
Trident Protect ignora solo quel namespace e crea snapshot individuali dei relativi PVC. Gli altri namespace nello stesso gruppo di volumi ottengono comunque uno snapshot di gruppo. |
Un PVC corrisponde a più di una |
Trident Protect aggiunge il PVC a entrambi i gruppi di volumi e uno degli snapshot di gruppo può non riuscire. Lo snapshot di gruppo che non riesce ripiega su snapshot individuali. Assicurati che ogni PVC corrisponda a una sola voce. |
Un gruppo di volumi include PVC che utilizzano un driver o un protocollo che non supporta gli snapshot dei gruppi di volumi |
Lo snapshot di gruppo non riesce e Trident Protect crea snapshot individuali di tali PVC. |
-
I tuoi PVC devono utilizzare un driver di storage e un protocollo che supportino gli snapshot dei gruppi di volumi. Per i driver e i protocolli supportati, consulta "Lavora con gli snapshot dei gruppi di volumi di Trident".
-
Il cluster deve eseguire Kubernetes 1.36 o versioni successive.
-
Il controller snapshot di Kubernetes deve essere alla versione 8.5.0 o successiva, con `CSIVolumeGroupSnapshot`feature gate abilitato.
-
I
v1CRD perVolumeGroupSnapshot,VolumeGroupSnapshotClasseVolumeGroupSnapshotContentdevono essere installati. -
Devi usare Trident 26.10 o versione successiva con un backend online. Il
CSIVolumeGroupSnapshotfeature gate deve inoltre essere abilitato sul container Tridentcsi-snapshotter. -
È necessario definire una
VolumeGroupSnapshotClassche utilizzi il drivercsi.trident.netapp.io. Se viene definita una sola classe, Trident Protect la utilizza. Se vengono definite più classi, annota la classe che Trident Protect deve utilizzare consnapshot.storage.kubernetes.io/is-default-class: "true". Altrimenti, Trident Protect utilizza la prima classe in ordine alfabetico. Non puoi scegliere la classe nelApplicationoSnapshotCR. Per ulteriori informazioni, consulta "Classe VolumeGroupSnapshot". -
L'account ONTAP nel backend Trident deve essere autorizzato a creare, ottenere ed eliminare gruppi di coerenza e a crearne snapshot. Fai riferimento a "Gestire i gruppi di coerenza delle applicazioni" e "Gestire gli snapshot dei gruppi di coerenza delle applicazioni". Il ruolo predefinito di amministratore SVM (
vsadmin) non include queste autorizzazioni.
Definisci un gruppo di volumi
Trident Protect crea snapshot di gruppo solo per i volumi che appartengono a un gruppo di volumi. Aggiungi spec.volumeGroups al Application CR per definire i gruppi. Ogni voce rappresenta un gruppo separato. Seleziona i volumi per etichetta, per VM o per entrambi.
-
È possibile definire gruppi di volumi solo nel
ApplicationCR. Latridentctl-protectCLI non dispone di un'opzione per i gruppi di volumi. -
Trident Protect include in un gruppo di volumi solo i PVC vincolati e crea snapshot individuali dei PVC non vincolati. Se una voce non seleziona alcun PVC vincolato, Trident Protect non crea uno snapshot di gruppo per tale voce.
-
Assicurati che ogni PVC corrisponda a una sola voce.
Definisci l'applicazione che desideri proteggere. Fai riferimento a "Definisci un'applicazione per la gestione con Trident Protect".
-
Se selezioni i volumi tramite etichetta, etichetta i PVC che desideri raggruppare. Puoi utilizzare qualsiasi chiave e valore di etichetta. Gli esempi in questa pagina utilizzano
volume-group=my-volume-group.kubectl label pvc <pvc_name_1> <pvc_name_2> volume-group=my-volume-group -n <application_namespace> -
Aggiungi
spec.volumeGroupsal tuo file CRApplicationesistente. Ogni voce deve includerelabelSelector,vmSelectoro entrambi. Se una voce include entrambi i campi, il gruppo di volumi include ogni volume selezionato da uno dei due campi.-
spec.volumeGroups[].labelSelector: Un selettore di etichette Kubernetes (
matchLabelsomatchExpressions) che seleziona i PVC nell'applicazione. Un selettore vuoto non è valido. -
spec.volumeGroups[].vmSelector: Un elenco di VM KubeVirt, ciascuna con un
namespaceename. Trident Protect include i PVC che ogni VM monta.L'esempio seguente definisce due gruppi di volumi. Il primo gruppo comprende i PVC etichettati
volume-group: my-volume-group. Il secondo gruppo comprende i PVC chemy-vm-1emy-vm-2montano.
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+
Mantieni gli altri campi che il tuo ApplicationCR contiene già, comespec.resourceFilter. Se ometti un campo dal file che applichi,kubectl applylo elimina dal CR. -
-
Applica il CR aggiornato:
kubectl apply -f <application_cr_file>.yaml
Il Application CR include i gruppi di volumi. La successiva istantanea dell'applicazione li utilizza.
Creare un'istantanea
Crea uno snapshot su richiesta, un backup su richiesta o una pianificazione della protezione dei dati per l'applicazione. Non è necessario aggiungere alcun campo. Trident Protect utilizza i gruppi di volumi che hai definito nel Application CR. Per istruzioni, consulta "Proteggi le applicazioni utilizzando Trident Protect".
|
|
Per impostazione predefinita, Trident Protect crea lo snapshot di gruppo prima di congelare i filesystem delle VM. I volumi in un gruppo di volumi vengono acquisiti senza congelamento, quindi i dati che una VM non ha ancora scritto su disco non sono inclusi. I dischi che non sono nel gruppo di volumi vengono acquisiti in seguito, quando Trident Protect crea snapshot individuali dopo aver congelato la VM. Per acquisire tutti i dischi di una VM nello stesso momento, includi tutti i dischi nel gruppo di volumi. Per ulteriori informazioni sul congelamento dei filesystem delle VM, consulta "Protezione dei dati con le macchine virtuali KubeVirt". |
Rivedi il risultato
Al termine dell'acquisizione dello snapshot, controlla il relativo stato per confermare che Trident Protect abbia creato gli snapshot di gruppo.
|
|
Il completamento di uno snapshot di un'applicazione non significa che gli snapshot di gruppo siano andati a buon fine. La VolumeGroupSnapshotsCreated condizione diventa true anche se ogni snapshot di gruppo viene saltato o non riesce, e Trident Protect non crea un evento o una metrica di Kubernetes. Per rilevarlo, monitora status.warnings e i skipped campi e failed.
|
-
Ottieni il nome dello snapshot. Per elencare gli snapshot dell'applicazione, esegui il seguente comando:
kubectl get snapshots -n <application_namespace> -
Verifica lo stato dell'istantanea:
kubectl get snapshots <snapshot_name> -n <application_namespace> -o yaml
Il status.volumeGroupSnapshots campo contiene una voce per ogni snapshot di gruppo. Trident Protect crea uno snapshot di gruppo separato per ogni namespace in un gruppo di volumi. L'esempio seguente è abbreviato:
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>
Il nome dello snapshot di gruppo include i primi otto caratteri dell' Snapshot`UID, l'indice della `spec.volumeGroups voce (a partire da 0), e il namespace, troncato a 12 caratteri.
-
ready: truesignifica che lo snapshot del gruppo è stato creato correttamente. Gli snapshot che compongono il gruppo sono elencati anche sottostatus.volumeSnapshots. Si tratta degli snapshot membri del gruppo, non di snapshot aggiuntivi degli stessi volumi. -
skipped: truesignifica che Trident Protect non ha tentato di creare lo snapshot del gruppo, perché il gruppo di volumi ha più di 80 PVC in quel namespace. Trident Protect crea invece snapshot individuali dei volumi del gruppo e aggiunge ilskipReasontesto astatus.warnings. -
failed: truesignifica che Trident Protect ha tentato di creare lo snapshot di gruppo, ma l'operazione non è riuscita. Trident Protect crea invece snapshot individuali dei volumi del gruppo e aggiunge ilerrortesto astatus.warnings.
Trident Protect aggiunge un'etichetta a ogni PVC in uno snapshot di gruppo, ad esempio protect.trident.netapp.io/vgs-group-673c0189-0=true. Le tue etichette non vengono modificate. L'etichetta rimane sul PVC finché non elimini lo snapshot dell'applicazione. Quando elimini lo snapshot dell'applicazione, Trident Protect elimina anche i relativi snapshot di gruppo di volumi e gli snapshot dei membri e rimuove le etichette dai PVC. Questo avviene indipendentemente dal reclaimPolicy dello snapshot sia Delete o Retain.
Ripristina l'applicazione dallo snapshot nello stesso modo in cui faresti per qualsiasi altro snapshot. Gli snapshot dei gruppi di volumi non hanno un ripristino separato. Trident Protect esegue il ripristino dagli snapshot membri, quindi puoi ripristinare singoli PVC o VM senza ripristinare ogni PVC del gruppo. Fai riferimento a "Ripristino da uno snapshot a uno spazio dei nomi diverso" o "Ripristinare da uno snapshot allo spazio dei nomi originale".