Abilitare l'archiviazione a blocchi ad alte prestazioni

Google Distributed Cloud (GDC) con air gap offre un livello di archiviazione ad alte prestazioni progettato per carichi di lavoro impegnativi. Questo livello offre un aumento delle prestazioni fino a 30 IOPS per GB, un aumento rispetto al livello di archiviazione a blocchi standard, che offre fino a 3 IOPS per GB. Questo documento descrive come attivare l'archiviazione a blocchi ad alte prestazioni e come monitorare le metriche, gli avvisi e i dettagli di fatturazione associati. È destinato ai segmenti di pubblico all'interno del gruppo di amministratori della piattaforma (ad esempio gli amministratori IT) o del gruppo di operatori dell'applicazione (ad esempio gli sviluppatori di applicazioni).

La classe di archiviazione ad alte prestazioni performance-rwo è disponibile per il cluster Kubernetes.

Con l'aggiunta dello SKU ad alte prestazioni, per i volumi che utilizzano classi di archiviazione performance-*, il processo di snapshot e ripristino del volume è simile a quello delle classi di archiviazione standard-*. Puoi creare uno snapshot del volume e ripristinare un PVC simile senza modificare la classe di archiviazione o i valori di qualità del servizio (QoS) sottostanti. performance volumesnapshotclass acquisisce il tipo di volume e, utilizzando questo volumesnapshot, puoi ripristinare il volume con la stessa classe di archiviazione.

Prima di iniziare

Prima di iniziare, assicurati di disporre dei seguenti prerequisiti:

  • Ambiente e versione GDC

    • Un'istanza GDC in esecuzione di cui è stato eseguito l'upgrade alla versione 1.15.1 o successive.
  • Progetto

    • Un progetto GDC all'interno di un'organizzazione in cui intendi eseguire il provisioning di volumi ad alte prestazioni.
  • Accesso e autorizzazioni

    • Autorizzazioni Kubernetes sufficienti per creare, gestire e utilizzare le risorse PersistentVolumeClaim (PVC) per i carichi di lavoro dei container o le risorse VirtualMachineDisk per le macchine virtuali all'interno dello spazio dei nomi del progetto di destinazione. I ruoli comuni necessari includono:
      • project-vm-admin per gestire le VM e i dischi VM.
      • Ruoli che consentono la gestione dei PVC, spesso inclusi nei ruoli di modifica o personalizzati.
      • In genere, per un utente finale non sono necessari ruoli speciali a livello di organizzazione per utilizzare lo spazio di archiviazione se le classi di archiviazione ad alte prestazioni sono già disponibili nel cluster del progetto. La configurazione e l'esposizione di queste classi sono responsabilità di un operatore dell'infrastruttura (IO) o di un PA.
  • Conoscenza delle classi di archiviazione

    • Familiarità con il concetto di oggetti StorageClass di Kubernetes. I livelli ad alte prestazioni vengono esposti tramite classi di archiviazione specifiche.
    • Devi specificare una classe di archiviazione ad alte prestazioni quando crei un PVC o un disco della macchina virtuale.
  • Capacità e quote

    • Assicurati che l'organizzazione e il progetto dispongano di una quota di spazio di archiviazione sufficiente allocata per il livello ad alte prestazioni.
    • Tieni presente eventuali limitazioni di capacità o salvaguardie delle prestazioni sull'hardware e sull'ambiente GDC specifici.

Applica subcomponentOverride ai cluster richiesti

Per impostazione predefinita, il valore FeatureGate per lo SKU ad alte prestazioni è impostato su State: TEST. Per attivare le classi di archiviazione performance-*, l'amministratore della piattaforma o l'operatore dell'applicazione deve applicare un subcomponentOverride ai cluster richiesti con un valore FileHighPerformanceStorageClassStage superiore rispetto al valore value predefinito. L'esempio seguente utilizza il valore più alto di production.

apiVersion: lcm.private.gdc.goog/v1
kind: SubcomponentOverride
metadata:
  name: file-common
  namespace: NAMESPACE
spec:
  features:
    operableParameters:
      FileHighPerformanceStorageClassStage: production
  subComponentRef: file-common

Lo spazio dei nomi in SubcomponentOverride specifica lo spazio dei nomi del cluster (ad esempio cluster-1) in cui verrà impostato il flag. Sostituisci NAMESPACE con gli spazi dei nomi corrispondenti dei cluster e crea i file SubcomponentOverride. Applica questa modifica utilizzando il comando seguente:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG_PATH apply -f SUBOVERRIDE_USER_FILE

Sostituisci quanto segue:

  • MANAGEMENT_API_SERVER_KUBECONFIG_PATH: il percorso del file kubeconfig del cluster del server API di gestione.
  • SUBOVERRIDE_USER_FILE: il percorso del file YAML SubcomponentOverride per il cluster Kubernetes.

Per abilitare lo SKU ad alte prestazioni per i cluster Kubernetes, applica subcomponentOverride al cluster del server API di gestione.

Monitorare metriche e avvisi ad alte prestazioni

L'archiviazione ad alte prestazioni include anche metriche aggiuntive, come i dettagli QOSPolicy. Questa funzionalità consente di filtrare e aggregare le metriche in base a QOSPolicy in ONTAP, consentendo di distinguere i volumi ad alte prestazioni da quelli standard.

Osservare le metriche

Per lo stack di osservabilità dei file sono disponibili le seguenti metriche ad alte prestazioni:

  • metering_storage_allocated_capacity_bytes
  • metering_storage_used_capacity_bytes

Entrambe queste metriche sono state arricchite con le informazioni qos_policy di ONTAP.

Osservare le dashboard

Sulla base dei miglioramenti precedenti delle metriche, gli avvisi sono disponibili sia per l'archiviazione standard sia per quella ad alte prestazioni, consentendo un monitoraggio mirato e un rilevamento più rapido dei problemi in base alla classe di prestazioni. Per visualizzare questi dati, sono disponibili dashboard ad alte prestazioni che utilizzano le metriche arricchite per fornire approfondimenti sul rendimento e sull'utilizzo dei volumi ad alte prestazioni.

Per visualizzare queste dashboard, accedi a Grafana e vai a Dashboard> FILE and Dashboards> FILE/ONTAP.

Sono disponibili le seguenti dashboard ad alto rendimento:

  • Dashboard relativa al bilanciamento delle prestazioni dell'archiviazione a blocchi dei file dell'organizzazione.
  • Le dashboard FILE/ONTAP sono dashboard che eseguono lo scraping dei dati di Harvest. In questo modo puoi monitorare direttamente il rendimento di ONTAP da Grafana.

Osservare gli avvisi

Oltre alle metriche e alle dashboard, sono disponibili anche avvisi relativi alle prestazioni elevate. Questi avvisi aiutano a rilevare i problemi di archiviazione e guidano gli utenti ai runbook che contengono istruzioni per risolvere gli avvisi. Se viene attivato un avviso, questo fornirà un codice runbook che può essere visualizzato nel manuale di servizio. I PA devono seguire questi runbook per risolvere l'avviso. Questi avvisi possono essere visualizzati nella sezione Regole di avviso in Grafana andando a infra-obs > file-block-storage-perf-monitoring-rules.

Sono disponibili i seguenti avvisi di rendimento elevato:

  • fb_high_org_volume_latency e fb_high_org_avg_volume_latency per monitorare rispettivamente la latenza media del volume in un'organizzazione e individualmente.
  • fb_storage_node_too_busy per monitorare l'utilizzo della CPU di un nodo e invia avvisi se l'utilizzo della CPU è troppo elevato.
  • fb_current_ops_higher_than_expected per avvisare se la quantità di operazioni su un nodo corrente è superiore al previsto.

Eseguire query sulla fatturazione ad alte prestazioni

Lo SKU per l'archiviazione a blocchi ad alte prestazioni è C008-4FF2-45E7. La fatturazione per questo SKU viene eseguita con la seguente query Prometheus:


sum_over_time(metering_storage_allocated_capacity_bytes{sku_id='c008-4ff2-45e7'}[{{.RangeHalfOpen}}:1m]) / 2^30 / 60 / {{.Hours}}

L'utilizzo di metering_storage_allocated_capacity_bytes comporta la fatturazione in base ai byte allocati anziché ai byte effettivamente utilizzati.

La classe di archiviazione e il criterio QoS per i volumi vengono impostati al momento del primo provisioning. Poiché la norma QoS è una variabile che può essere modificata direttamente in ONTAP, impostiamo sku_id nelle metriche in base a qos_policy e poi fatturiamo in base a sku_id.

Flussi di lavoro di esempio

Puoi utilizzare gli SKU ad alte prestazioni nei tuoi flussi di lavoro tramite diversi tipi di dichiarazioni di volume. In definitiva, il meccanismo sottostante rimane lo stesso, ad esempio un PVC supportato da performance-*. Gli esempi seguenti mostrano i diversi modi in cui puoi creare un nuovo livello di volumi.

Applica le seguenti configurazioni YAML al cluster appropriato facendo riferimento al nome della classe di archiviazione performance-* accurato.

Montaggi di pod e PVC ad alte prestazioni:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: PVC_NAME
spec:
  storageClassName: performance-rwo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

---

apiVersion: v1
kind: Pod
metadata:
  name: POD_NAME
spec:
  volumes:
    - name: VOLUME_NAME
      persistentVolumeClaim:
        claimName: PVC_NAME
  containers:
    - name: CONTAINER_NAME
      image: gcr.io/GKE_RELEASE/asm/proxyv2:1.23.6-asm.14
      ports:
        - containerPort: 80
      volumeMounts:
        - name: VOLUME_NAME
          mountPath: "/data"

VM e dischi VM ad alte prestazioni:

apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: BOOT_DISK_NAME
  namespace: NAMESPACE
spec:
  source:
    image:
      name: ubuntu-24.04-v20250809-gdch
      namespace: vm-system
  size: 25Gi
  type: Performance

---
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: DATA_DISK_NAME
  namespace: NAMESPACE
spec:
  size: 2Gi
  type: Performance
---

apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
  name: VM_NAME
  namespace: NAMESPACE
spec:
  compute:
    virtualMachineType: n3-standard-2-gdc
  disks:
  - virtualMachineDiskRef:
      name: BOOT_DISK_NAME
    boot: true
    autoDelete: true
  - virtualMachineDiskRef:
      name: DATA_DISK_NAME
    autoDelete: true

Snapshot e ripristini di volumi ad alte prestazioni:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: SOURCE_PVC_NAME
spec:
  storageClassName: performance-rwo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
---

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: VOLUME_SNAPSHOT_NAME
  namespace: NAMESPACE
spec:
  volumeSnapshotClassName: performance
  source:
    persistentVolumeClaimName: SOURCE_PVC_NAME

---


apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: RESTORED_PVC_NAME
  namespace: NAMESPACE
spec:
  dataSource:
    name: VOLUME_SNAPSHOT_NAME
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
  storageClassName: performance-rwo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5i

Sostituisci quanto segue:

  • BOOT_DISK_NAME: il nome del disco di avvio della macchina virtuale.
  • CONTAINER_NAME: il nome del contenitore.
  • DATA_DISK_NAME: il nome del disco dati della macchina virtuale.
  • NAMESPACE: lo spazio dei nomi Kubernetes per le risorse.
  • POD_NAME: il nome del pod.
  • PVC_NAME: il nome della risorsa PersistentVolumeClaim.
  • RESTORED_PVC_NAME: il nome della risorsa PersistentVolumeClaim ripristinata.
  • SOURCE_PVC_NAME: il nome della risorsa PersistentVolumeClaim di origine per lo snapshot.
  • VM_NAME: il nome della macchina virtuale.
  • VOLUME_NAME: il nome del volume.
  • VOLUME_SNAPSHOT_NAME: il nome della risorsa VolumeSnapshot.
  • GKE_RELEASE: la versione di rilascio di GKE.