Ativar o armazenamento em blocos de alta performance

O Google Distributed Cloud (GDC) com isolamento físico oferece um nível de armazenamento de alta performance projetado para cargas de trabalho exigentes. Essa camada oferece escalonamento de performance de até 30 IOPS por GB, um aumento em comparação com a camada de armazenamento em blocos padrão, que oferece até 3 IOPS por GB. Neste documento, descrevemos como ativar o armazenamento em blocos de alta performance e monitorar as métricas, os alertas e os detalhes de faturamento associados. Ela é destinada a públicos-alvo do grupo de administradores de plataforma (como administradores de TI) ou do grupo de operadores de aplicativos (como desenvolvedores de aplicativos).

A classe de armazenamento de alta performance performance-rwo está disponível para o cluster do Kubernetes.

Com a adição da SKU de alto desempenho, para volumes que usam classes de armazenamento performance-*, o processo de snapshots e restauração de volume é semelhante ao das classes de armazenamento standard-*. Você pode fazer um snapshot de volume e restaurar um PVC semelhante sem mudar a classe de armazenamento ou os valores de Qualidade de Serviço (QoS) subjacentes. O performance volumesnapshotclass captura o tipo de volume e, usando esse volumesnapshot, é possível restaurar o volume com a mesma classe de armazenamento.

Antes de começar

Antes de começar, verifique se você atende aos seguintes pré-requisitos:

  • Ambiente e versão do GDC

    • Uma instância do GDC em execução que foi atualizada para a versão 1.15.1 ou mais recente.
  • Projeto

    • Um projeto do GDC em uma organização em que você pretende provisionar volumes de alta performance.
  • Acesso e permissões

    • Permissões suficientes do Kubernetes para criar, gerenciar e usar recursos PersistentVolumeClaim (PVC) para cargas de trabalho de contêiner ou recursos VirtualMachineDisk para máquinas virtuais no namespace do projeto de destino. Alguns papéis comuns necessários:
      • project-vm-admin para gerenciar VMs e discos de VM.
      • Funções que permitem o gerenciamento de PVCs, que geralmente estão incluídas em funções de edição ou personalizadas.
      • Normalmente, não são necessárias funções especiais no nível da organização para que um usuário final consuma o armazenamento se as classes de armazenamento de alta performance já estiverem disponíveis no cluster do projeto. A configuração e a exposição dessas classes são responsabilidade de um operador de infraestrutura (IO) ou de um PA.
  • Noções básicas sobre classes de armazenamento

    • Familiaridade com o conceito de objetos StorageClass do Kubernetes. Os níveis de alto desempenho são expostos por classes de armazenamento específicas.
    • É preciso especificar uma classe de armazenamento de alta performance ao criar uma PVC ou um disco de máquina virtual.
  • Capacidade e cotas

    • Verifique se a organização e o projeto têm cota de armazenamento suficiente alocada para o nível de alto desempenho.
    • Esteja ciente de limitações de capacidade ou restrições de desempenho no ambiente e hardware específicos do GDC.

Aplique subcomponentOverride aos clusters necessários

Por padrão, o FeatureGate para o SKU de alta performance é definido como State: TEST. Para ativar as classes de armazenamento performance-*, o administrador da plataforma (PA) ou o operador de aplicativos (AO) precisa aplicar um subcomponentOverride aos clusters necessários com um valor FileHighPerformanceStorageClassStage maior em comparação com o value padrão. O exemplo a seguir usa o valor mais alto de production.

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

O namespace em SubcomponentOverride especifica o namespace do cluster (por exemplo, cluster-1) em que a flag será definida. Substitua NAMESPACE pelos namespaces correspondentes dos clusters e crie os arquivos SubcomponentOverride. Aplique essa mudança usando o seguinte comando:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG_PATH apply -f SUBOVERRIDE_USER_FILE

Substitua:

  • MANAGEMENT_API_SERVER_KUBECONFIG_PATH: o caminho para o arquivo kubeconfig do cluster do servidor da API de gerenciamento.
  • SUBOVERRIDE_USER_FILE: o caminho para o arquivo YAML SubcomponentOverride do cluster do Kubernetes.

Para ativar a SKU de alta performance para clusters do Kubernetes, aplique o subcomponentOverride ao cluster do servidor da API de gerenciamento.

Monitorar métricas e alertas de alta performance

O armazenamento de alta performance também inclui outras métricas, como detalhes de QOSPolicy. Com esse recurso, é possível filtrar e agregar métricas com base no QOSPolicy no ONTAP, o que permite distinguir volumes de alto desempenho dos padrões.

Observar métricas

As seguintes métricas de alta performance estão disponíveis para a pilha de observabilidade de arquivos:

  • metering_storage_allocated_capacity_bytes
  • metering_storage_used_capacity_bytes

Ambas as métricas foram enriquecidas com informações de qos_policy do ONTAP.

Painéis de observação

Com base nas melhorias de métricas anteriores, os alertas estão disponíveis para armazenamento padrão e de alto desempenho, permitindo o monitoramento direcionado e a detecção mais rápida de problemas com base na classe de desempenho. Para visualizar esses dados, há painéis de alto desempenho disponíveis, que usam as métricas enriquecidas para fornecer insights sobre o desempenho e o uso de volumes de alto desempenho.

Para acessar esses painéis, abra o Grafana e navegue até Painéis>FILE e Painéis>FILE/ONTAP.

Os seguintes painéis de alta performance estão disponíveis:

  • Painel de desempenho do armazenamento em blocos de arquivos da organização.
  • Os painéis FILE/ONTAP extraem dados do Harvest. Isso permite monitorar diretamente a performance do ONTAP no Grafana.

Observar alertas

Além das métricas e dos painéis, também estão disponíveis alertas relacionados ao alto desempenho. Esses alertas ajudam a detectar problemas no armazenamento e orientam os usuários aos runbooks com instruções para resolver os alertas. Se um alerta for acionado, ele vai fornecer um código de runbook que pode ser visto no manual de serviço. Os PAs precisam seguir estes runbooks para resolver o alerta. Para ver esses alertas, acesse infra-obs > file-block-storage-perf-monitoring-rules na seção Regras de alerta do Grafana.

Os seguintes alertas de alta performance estão disponíveis:

  • fb_high_org_volume_latency e fb_high_org_avg_volume_latency para acompanhar a latência média de volume em uma organização e individualmente, respectivamente.
  • fb_storage_node_too_busy para rastrear o uso da CPU de um nó e gerar alertas se o uso da CPU for muito alto.
  • fb_current_ops_higher_than_expected para alertar se a quantidade de operações em um nó atual for maior do que o esperado.

Consultar faturamento de alta performance

A SKU para armazenamento em blocos de alta performance é C008-4FF2-45E7. O faturamento dessa SKU é feito com a seguinte consulta do Prometheus:


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

Usar metering_storage_allocated_capacity_bytes significa que o faturamento é baseado em bytes alocados, e não em bytes realmente usados.

A classe de armazenamento e a política de QoS para volumes são definidas quando eles são provisionados pela primeira vez. Como a política de QoS é uma variável que pode ser alterada diretamente no ONTAP, definimos sku_id em métricas com base em qos_policy e, em seguida, faturamos por sku_id.

Exemplos de fluxos de trabalho

É possível usar SKUs de alta performance nos seus fluxos de trabalho com diferentes tipos de declarações de volume. Em última análise, o mecanismo subjacente permanece o mesmo, por exemplo, um PVC com suporte de performance-*. Os exemplos a seguir mostram as diferentes maneiras de criar um novo nível de volumes.

Aplique as seguintes configurações YAML ao cluster adequado referenciando o nome correto da classe de armazenamento performance-*.

PVCs e montagens de pods de alto desempenho:

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"

Discos e VMs de alto desempenho:

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

Snapshots e restaurações de volume de alta performance:

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

Substitua:

  • BOOT_DISK_NAME: o nome do disco de inicialização da máquina virtual.
  • CONTAINER_NAME: o nome do contêiner.
  • DATA_DISK_NAME: o nome do disco de dados da máquina virtual.
  • NAMESPACE: o namespace do Kubernetes para os recursos.
  • POD_NAME: o nome do pod.
  • PVC_NAME: o nome do recurso ;PersistentVolumeClaim
  • RESTORED_PVC_NAME: o nome do recurso PersistentVolumeClaim restaurado.
  • SOURCE_PVC_NAME: o nome do recurso PersistentVolumeClaim de origem para o snapshot.
  • VM_NAME: o nome da instância da máquina virtual
  • VOLUME_NAME: o nome do volume.
  • VOLUME_SNAPSHOT_NAME: o nome do recurso ;VolumeSnapshot
  • GKE_RELEASE: a versão de lançamento do GKE.