Activer le stockage de blocs hautes performances

Google Distributed Cloud (GDC) sous air gap propose un niveau de stockage hautes performances conçu pour les charges de travail exigeantes. Ce niveau offre des performances évolutives jusqu'à 30 IOPS par Go, ce qui représente une augmentation par rapport au niveau de stockage de blocs standard, qui offre jusqu'à 3 IOPS par Go. Ce document explique comment activer le stockage par blocs hautes performances et comment surveiller les métriques, les alertes et les informations de facturation associées. Il est destiné aux audiences du groupe d'administrateurs de plate-forme (comme les administrateurs informatiques) ou du groupe d'opérateurs d'applications (comme les développeurs d'applications).

La classe de stockage hautes performances performance-rwo est disponible pour le cluster Kubernetes.

Avec l'ajout du SKU hautes performances, pour les volumes utilisant des classes de stockage performance-*, le processus d'instantané et de restauration de volume est similaire à celui des classes de stockage standard-*. Vous pouvez prendre un instantané de volume et restaurer un PVC similaire sans modifier la classe de stockage ni les valeurs de qualité de service (QoS) sous-jacentes. performance volumesnapshotclass capture le type de volume. À l'aide de volumesnapshot, vous pouvez restaurer le volume avec la même classe de stockage.

Avant de commencer

Avant de commencer, assurez-vous de remplir les conditions préalables suivantes :

  • Environnement et version GDC

    • Une instance GDC en cours d'exécution mise à niveau vers la version 1.15.1 ou ultérieure.
  • Projet

    • Projet GDC au sein d'une organisation dans lequel vous prévoyez de provisionner des volumes hautes performances.
  • Accès et autorisations

    • Autorisations Kubernetes suffisantes pour créer, gérer et utiliser des ressources PersistentVolumeClaim (PVC) pour les charges de travail de conteneurs, ou des ressources VirtualMachineDisk pour les machines virtuelles dans l'espace de noms du projet cible. Voici quelques rôles courants dont vous aurez besoin :
      • project-vm-admin pour gérer les VM et les disques de VM.
      • Rôles permettant la gestion des PVC, qui sont souvent inclus dans les rôles de modification ou personnalisés.
      • En général, aucun rôle spécial au niveau de l'organisation n'est requis pour qu'un utilisateur final puisse consommer du stockage si les classes de stockage hautes performances sont déjà disponibles dans le cluster de son projet. La configuration et l'exposition de ces classes relèvent de la responsabilité de l'opérateur d'infrastructure (IO) ou de l'administrateur de plate-forme (PA).
  • Comprendre les classes de stockage

    • Connaissance du concept d'objets StorageClass Kubernetes. Les niveaux de performances élevées sont exposés par le biais de classes de stockage spécifiques.
    • Vous devez spécifier une classe de stockage à hautes performances lorsque vous créez un disque de machine virtuelle ou un PVC.
  • Capacité et quotas

    • Assurez-vous que l'organisation et le projet disposent d'un quota de stockage suffisant pour le niveau hautes performances.
    • Tenez compte des éventuelles limites de capacité ou des consignes de performances de l'environnement et du matériel GDC spécifiques.

Appliquez subcomponentOverride aux clusters requis.

Par défaut, la valeur FeatureGate pour le SKU hautes performances est définie sur State: TEST. Pour activer les classes de stockage performance-*, l'administrateur de plate-forme (PA) ou l'opérateur d'application (AO) doivent appliquer un subcomponentOverride aux clusters requis avec une valeur FileHighPerformanceStorageClassStage supérieure à la valeur par défaut value. L'exemple suivant utilise la valeur la plus élevée, à savoir production.

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

L'espace de noms dans SubcomponentOverride spécifie l'espace de noms du cluster (par exemple, cluster-1) où l'indicateur sera défini. Remplacez NAMESPACE par les espaces de noms correspondants des clusters et créez les fichiers SubcomponentOverride. Appliquez cette modification à l'aide de la commande suivante :

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG_PATH apply -f SUBOVERRIDE_USER_FILE

Remplacez les éléments suivants :

  • MANAGEMENT_API_SERVER_KUBECONFIG_PATH : chemin d'accès au fichier kubeconfig du cluster du serveur de l'API Management.
  • SUBOVERRIDE_USER_FILE : chemin d'accès au fichier YAML SubcomponentOverride pour le cluster Kubernetes.

Pour activer le SKU hautes performances pour les clusters Kubernetes, appliquez subcomponentOverride au cluster du serveur d'API de gestion.

Surveiller les métriques et les alertes de hautes performances

Le stockage hautes performances inclut également des métriques supplémentaires, telles que les détails QOSPolicy. Cette fonctionnalité permet de filtrer et d'agréger les métriques en fonction de QOSPolicy dans ONTAP, ce qui permet de distinguer les volumes hautes performances de ceux standards.

Observer les métriques

Les métriques de performances élevées suivantes sont disponibles pour la pile d'observabilité des fichiers :

  • metering_storage_allocated_capacity_bytes
  • metering_storage_used_capacity_bytes

Ces deux métriques ont été enrichies avec des informations qos_policy provenant d'ONTAP.

Observer les tableaux de bord

En complément des améliorations apportées aux métriques, des alertes sont disponibles pour le stockage standard et hautes performances. Elles permettent une surveillance ciblée et une détection plus rapide des problèmes en fonction de la classe de performances. Pour visualiser ces données, des tableaux de bord hautes performances sont disponibles. Ils utilisent les métriques enrichies pour fournir des insights sur les performances et l'utilisation des volumes hautes performances.

Pour afficher ces tableaux de bord, accédez à Grafana, puis accédez à Dashboards> FILE and Dashboards> FILE/ONTAP.

Les tableaux de bord à hautes performances suivants sont disponibles :

  • Tableau de bord "Équilibre des performances de stockage de blocs de fichiers de l'organisation"
  • Les tableaux de bord FILE/ONTAP sont des tableaux de bord qui récupèrent les données Harvest. Cela vous permet de surveiller directement les performances ONTAP depuis Grafana.

Observer les alertes

En plus des métriques et des tableaux de bord, des alertes liées aux performances élevées sont également disponibles. Ces alertes permettent de détecter les problèmes de stockage et d'orienter les utilisateurs vers les runbooks contenant des instructions pour les résoudre. Si une alerte est déclenchée, elle fournit un code de runbook qui peut être consulté dans le manuel d'entretien. Les AP doivent suivre ces runbooks pour résoudre l'alerte. Vous pouvez afficher ces alertes dans la section Alert Rules (Règles d'alerte) de Grafana en accédant à infra-obs > file-block-storage-perf-monitoring-rules.

Voici les alertes de performances élevées disponibles :

  • fb_high_org_volume_latency et fb_high_org_avg_volume_latency pour suivre respectivement la latence moyenne du volume dans une organisation et individuellement.
  • fb_storage_node_too_busy pour suivre l'utilisation du processeur d'un nœud et recevoir des alertes si elle est trop élevée.
  • fb_current_ops_higher_than_expected pour alerter si le nombre d'opérations sur un nœud actuel est plus élevé que prévu.

Interroger la facturation hautes performances

Le SKU pour le stockage de blocs hautes performances est C008-4FF2-45E7. La facturation de ce SKU est effectuée avec la requête Prometheus suivante :


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

Si vous utilisez metering_storage_allocated_capacity_bytes, la facturation se base sur les octets alloués plutôt que sur les octets réellement utilisés.

La classe de stockage et la stratégie de qualité de service (QoS) des volumes sont définies lors de leur premier provisionnement. Étant donné que la règle QoS est une variable qui peut être modifiée directement dans ONTAP, nous définissons sku_id dans les métriques en fonction de qos_policy, puis nous facturons par sku_id.

Exemples de workflows

Vous pouvez utiliser le SKU à hautes performances dans vos workflows grâce à différents types de déclarations de volume. En fin de compte, le mécanisme sous-jacent reste le même, par exemple une PVC soutenue par performance-*. Les exemples suivants montrent différentes façons de créer un niveau de volumes.

Appliquez les configurations YAML suivantes au cluster approprié en référençant le nom de classe de stockage performance-* exact.

PVC et montages de pods hautes performances :

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"

Disques et VM hautes performances :

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

Instantanés et restaurations de volumes hautes performances :

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

Remplacez les éléments suivants :

  • BOOT_DISK_NAME : nom du disque de démarrage de la machine virtuelle.
  • CONTAINER_NAME : nom du conteneur.
  • DATA_DISK_NAME : nom du disque de données de la machine virtuelle.
  • NAMESPACE : espace de noms Kubernetes pour les ressources.
  • POD_NAME : nom du pod.
  • PVC_NAME : le nom de la ressource PersistentVolumeClaim.
  • RESTORED_PVC_NAME : nom de la ressource PersistentVolumeClaim restaurée.
  • SOURCE_PVC_NAME : nom de la ressource PersistentVolumeClaim source pour l'instantané.
  • VM_NAME : nom de la machine virtuelle
  • VOLUME_NAME : nom du volume.
  • VOLUME_SNAPSHOT_NAME : le nom de la ressource VolumeSnapshot.
  • GKE_RELEASE : version de GKE.