고성능 블록 스토리지 사용 설정

Google Distributed Cloud (GDC) 에어 갭 적용형은 까다로운 워크로드를 위해 설계된 고성능 스토리지 티어를 제공합니다. 이 등급은 GB당 최대 30IOPS의 성능을 제공하며, 이는 GB당 최대 3IOPS를 제공하는 표준 블록 스토리지 등급에 비해 증가한 수치입니다. 이 문서에서는 고성능 블록 스토리지를 사용 설정하는 방법과 관련 측정항목, 알림, 결제 세부정보를 모니터링하는 방법을 설명합니다. 이 가이드는 플랫폼 관리자 그룹 (예: IT 관리자) 또는 애플리케이션 운영자 그룹 (예: 애플리케이션 개발자)의 사용자를 대상으로 합니다.

Kubernetes 클러스터에서 performance-rwo 고성능 스토리지 클래스를 사용할 수 있습니다.

고성능 SKU가 추가됨에 따라 performance-* 스토리지 클래스를 사용하는 볼륨의 경우 볼륨 스냅샷 및 복원 프로세스가 standard-* 스토리지 클래스의 경우와 유사합니다. 스토리지 클래스나 기본 표준 품질 (QoS) 값을 변경하지 않고 볼륨 스냅샷을 만들어 유사한 PVC를 복원할 수 있습니다. performance volumesnapshotclass는 볼륨 유형을 캡처하며 이 volumesnapshot를 사용하여 동일한 스토리지 클래스로 볼륨을 복원할 수 있습니다.

시작하기 전에

시작하기 전에 다음 기본 요건을 충족하는지 확인하세요.

  • GDC 환경 및 버전

    • 버전 1.15.1 이상으로 업그레이드된 실행 중인 GDC 인스턴스
  • 프로젝트

    • 고성능 볼륨을 프로비저닝하려는 조직 내의 GDC 프로젝트입니다.
  • 액세스 및 권한

    • 대상 프로젝트 네임스페이스 내 컨테이너 워크로드용 PersistentVolumeClaim (PVC) 리소스 또는 가상 머신용 VirtualMachineDisk 리소스를 만들고 관리하고 사용할 수 있는 충분한 Kubernetes 권한 필요한 일반적인 역할은 다음과 같습니다.
      • project-vm-admin를 사용하여 VM 및 VM 디스크를 관리합니다.
      • PVC 관리를 허용하는 역할로, 편집 또는 맞춤 역할에 포함되는 경우가 많습니다.
      • 엔드 사용자가 프로젝트의 클러스터에서 고성능 스토리지 클래스를 이미 사용할 수 있는 경우 일반적으로 스토리지를 사용하기 위해 특별한 조직 수준 역할이 필요하지 않습니다. 이러한 클래스의 설정 및 노출은 인프라 운영자 (IO) 또는 PA의 책임입니다.
  • 스토리지 클래스 이해

    • Kubernetes StorageClass 객체 개념에 대한 이해 고성능 티어는 특정 스토리지 클래스를 통해 노출됩니다.
    • PVC 또는 가상 머신 디스크를 만들 때 고성능 스토리지 클래스를 지정해야 합니다.
  • 용량 및 할당량

    • 조직과 프로젝트에 고성능 계층에 할당된 스토리지 할당량이 충분한지 확인합니다.
    • 특정 GDC 환경 및 하드웨어의 용량 제한 또는 성능 가드레일을 파악합니다.

필요한 클러스터에 subcomponentOverride 적용

기본적으로 고성능 SKU의 FeatureGateState: TEST로 설정됩니다. performance-* 스토리지 클래스를 사용 설정하려면 플랫폼 관리자 (PA) 또는 애플리케이션 운영자 (AO)가 기본 value보다 높은 FileHighPerformanceStorageClassStage 값을 사용하여 필수 클러스터에 subcomponentOverride를 적용해야 합니다. 다음 예시에서는 production의 더 높은 값을 사용합니다.

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

SubcomponentOverride의 네임스페이스는 플래그가 설정될 클러스터 네임스페이스 (예: cluster-1)를 지정합니다. NAMESPACE을 클러스터의 해당 네임스페이스로 바꾸고 SubcomponentOverride 파일을 만듭니다. 다음 명령어를 사용하여 이 변경사항을 적용합니다.

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG_PATH apply -f SUBOVERRIDE_USER_FILE

다음을 바꿉니다.

  • MANAGEMENT_API_SERVER_KUBECONFIG_PATH: 관리 API 서버 클러스터 kubeconfig 파일의 경로입니다.
  • SUBOVERRIDE_USER_FILE: Kubernetes 클러스터의 SubcomponentOverride YAML 파일 경로

Kubernetes 클러스터에 고성능 SKU를 사용 설정하려면 관리 API 서버 클러스터에 subcomponentOverride를 적용합니다.

고성능 측정항목 및 알림 모니터링

고성능 스토리지에는 QOSPolicy 세부정보와 같은 추가 측정항목도 포함됩니다. 이 기능을 사용하면 ONTAP의 QOSPolicy에 따라 측정항목을 필터링하고 집계할 수 있으므로 고성능 볼륨과 표준 볼륨을 구분할 수 있습니다.

측정항목 관찰

파일 모니터링 가능성 스택에는 다음 고성능 측정항목이 제공됩니다.

  • metering_storage_allocated_capacity_bytes
  • metering_storage_used_capacity_bytes

이 두 측정항목은 모두 ONTAP의 qos_policy 정보로 보강되었습니다.

대시보드 관찰

이전 측정항목 개선사항을 기반으로 표준 스토리지와 고성능 스토리지 모두에서 알림을 사용할 수 있으므로 성능 클래스를 기반으로 타겟팅된 모니터링과 더 빠른 문제 감지가 가능합니다. 이 데이터를 시각화하기 위해 고성능 볼륨의 성능과 사용량에 대한 통계를 제공하는 강화된 측정항목을 사용하는 고성능 대시보드를 사용할 수 있습니다.

이러한 대시보드를 보려면 Grafana에 액세스하여 대시보드> 파일 및 대시보드> 파일/ONTAP으로 이동합니다.

다음과 같은 고성능 대시보드를 사용할 수 있습니다.

  • 조직 파일 블록 스토리지 성능 균형 대시보드
  • FILE/ONTAP 대시보드는 Harvest 데이터를 스크랩하는 대시보드입니다. 이를 통해 Grafana에서 직접 ONTAP 성능을 모니터링할 수 있습니다.

알림 관찰

측정항목 및 대시보드와 함께 실적과 관련된 알림도 제공됩니다. 이러한 알림은 스토리지의 문제를 감지하고 알림을 해결하는 데 도움이 되는 안내가 포함된 런북으로 사용자를 안내합니다. 알림이 발생하면 서비스 매뉴얼에서 볼 수 있는 런북 코드가 알림에 제공됩니다. PA는 다음 런북을 따라 알림을 해결해야 합니다. 이러한 알림은 Grafana의 infra-obs > file-block-storage-perf-monitoring-rules로 이동하여 Alert Rules 섹션에서 확인할 수 있습니다.

다음과 같은 고성능 알림을 사용할 수 있습니다.

  • fb_high_org_volume_latencyfb_high_org_avg_volume_latency를 사용하여 조직 및 개인의 평균 볼륨 지연 시간을 각각 추적합니다.
  • fb_storage_node_too_busy를 사용하여 노드의 CPU 사용량을 추적하고 CPU 사용량이 너무 높으면 알림을 보냅니다.
  • fb_current_ops_higher_than_expected: 현재 노드의 작업 수가 예상보다 많은 경우 알림을 표시합니다.

고성능 결제 쿼리

고성능 블록 스토리지의 SKU는 C008-4FF2-45E7입니다. 이 SKU의 청구는 다음 Prometheus 쿼리를 사용하여 이루어집니다.


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

metering_storage_allocated_capacity_bytes를 사용하면 실제 사용 바이트가 아닌 할당된 바이트에 따라 요금이 청구됩니다.

볼륨의 스토리지 클래스와 QoS 정책은 처음 프로비저닝될 때 설정됩니다. QoS 정책은 ONTAP에서 직접 변경할 수 있는 변수이므로 qos_policy을 기반으로 측정항목에서 sku_id을 설정한 다음 sku_id별로 청구합니다.

워크플로 예시

다양한 유형의 볼륨 선언을 통해 워크플로에서 고성능 SKU를 사용할 수 있습니다. 궁극적으로 기본 메커니즘은 performance-* 지원 PVC와 같이 동일하게 유지됩니다. 다음 예에서는 새 볼륨 계층을 만드는 다양한 방법을 보여줍니다.

정확한 performance-* 스토리지 클래스 이름을 참조하여 다음 YAML 구성을 적절한 클러스터에 적용합니다.

고성능 PVC 및 포드 마운트:

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 디스크 및 VM:

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

고성능 볼륨 스냅샷 및 복원:

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

다음을 바꿉니다.

  • BOOT_DISK_NAME: 가상 머신 부팅 디스크의 이름입니다.
  • CONTAINER_NAME: 컨테이너의 이름.
  • DATA_DISK_NAME: 가상 머신 데이터 디스크의 이름입니다.
  • NAMESPACE: 리소스의 Kubernetes 네임스페이스입니다.
  • POD_NAME: 포드의 이름입니다.
  • PVC_NAME: PersistentVolumeClaim 리소스 이름입니다.
  • RESTORED_PVC_NAME: 복원된 PersistentVolumeClaim 리소스의 이름입니다.
  • SOURCE_PVC_NAME: 스냅샷의 소스 PersistentVolumeClaim 리소스 이름입니다.
  • VM_NAME: 가상 머신 인스턴스의 이름입니다.
  • VOLUME_NAME: 볼륨 이름입니다.
  • VOLUME_SNAPSHOT_NAME: VolumeSnapshot 리소스 이름입니다.
  • GKE_RELEASE: GKE 출시 버전입니다.