목록으로

Programming Notes

Announcing Changed Block Tracking API support (alpha)

저희는 변경 블록 추적 메커니즘의 알파 지원을 발표하게 되어 기쁩니다. 이는 CSI 스토리지 드라이버가 PersistentVolume 스냅샷에서 변경된 블록을 효율적으로 식별할 수 있는 방법을 제공하여 쿠버네티스 스토리지 생태계를 강화합니다. 이 기능을 활용할 수 있는...

저희는 변경 블록 추적 메커니즘의 알파 지원을 발표하게 되어 기쁩니다. 이는 CSI 스토리지 드라이버가 PersistentVolume 스냅샷에서 변경된 블록을 효율적으로 식별할 수 있는 방법을 제공하여 쿠버네티스 스토리지 생태계를 강화합니다. 이 기능을 활용할 수 있는 드라이버를 사용하면 더 빠르고 리소스 효율적인 백업 작업의 이점을 누릴 수 있습니다.

이 기능을 서둘러 사용해보고 싶다면, 시작하기 섹션으로 건너뛸 수 있습니다.

변경 블록 추적이란 무엇인가요?

변경 블록 추적은 스토리지 시스템이 스냅샷 간의 블록 수준 변경 사항을 식별하고 추적할 수 있도록 하여 백업 작업 중에 전체 볼륨을 스캔할 필요를 없앱니다. 이 개선 사항은 CSI(Container Storage Interface)와 쿠버네티스 자체의 스토리지 지원에 대한 변경입니다. 알파 기능을 활성화하면 클러스터는 다음을 수행할 수 있습니다.
  • CSI 볼륨 스냅샷 내 할당된 블록 식별
  • 동일 볼륨의 두 스냅샷 간 변경된 블록 결정
  • 변경 데이터 블록에만 집중하여 백업 작업 간소화

대규모 데이터셋을 관리하는 쿠버네티스 사용자에게 이 API는 훨씬 더 효율적인 백업 프로세스를 가능하게 합니다. 백업 애플리케이션은 이제 전체 볼륨을 처리하는 대신 변경된 블록에만 집중할 수 있습니다.

쿠버네티스에서 변경 블록 추적 지원의 이점

중요 데이터를 관리하는 스테이트풀 워크로드에 대한 쿠버네티스 채택이 증가함에 따라 효율적인 백업 솔루션의 필요성이 점점 더 중요해지고 있습니다. 기존의 전체 백업 방식은 다음과 같은 문제에 직면합니다.
  • 긴 백업 시간: 대규모 데이터셋의 경우 전체 볼륨 백업에 몇 시간이 걸릴 수 있어 유지보수 시간 내에 완료하기 어렵습니다.
  • 높은 리소스 활용: 특히 대용량 데이터 볼륨 및 데이터 집약적인 애플리케이션의 경우 백업 작업은 상당한 네트워크 대역폭과 I/O 리소스를 소비합니다.
  • 증가된 스토리지 비용: 반복적인 전체 백업은 중복 데이터를 저장하여, 실제로 변경되는 데이터가 소량일지라도 스토리지 요구사항이 선형적으로 증가하게 합니다.

변경 블록 추적 API는 CSI 인터페이스를 통해 증분 백업 기능에 대한 네이티브 쿠버네티스 지원을 제공함으로써 이러한 문제를 해결합니다.

주요 구성 요소

구현은 세 가지 주요 구성 요소로 구성됩니다.
  1. CSI SnapshotMetadata Service API: 볼륨 스냅샷 및 변경된 블록 데이터를 제공하는 gRPC 기반 API입니다.
  2. SnapshotMetadataService API: CSI 드라이버 메타데이터 서비스 가용성 및 클러스터 클라이언트에 대한 연결 세부 정보를 알리는 쿠버네티스 CustomResourceDefinition (CRD)입니다.
  3. External Snapshot Metadata Sidecar: CSI 드라이버를 표준화된 gRPC 인터페이스를 통해 백업 애플리케이션에 연결하는 중개 구성 요소입니다.

구현 요구 사항

스토리지 제공업체 책임

쿠버네티스 스토리지 통합의 저자이며 변경 블록 추적 기능을 지원하려는 경우, 다음 특정 요구 사항을 구현해야 합니다.
  1. CSI RPC 구현: 스토리지 제공업체는 CSI 사양 protobuf에 정의된 SnapshotMetadata 서비스를 구현해야 합니다. 이 서비스는 다음 RPC에 대한 서버 측 스트리밍 구현을 요구합니다.
    • GetMetadataAllocated: 스냅샷에서 할당된 블록을 식별하기 위함
    • GetMetadataDelta: 두 스냅샷 간 변경된 블록을 결정하기 위함
  2. 스토리지 백엔드 기능: 스토리지 백엔드가 블록 수준 변경 사항을 추적하고 보고할 수 있는 기능을 가지고 있는지 확인하십시오.
  3. 외부 구성 요소 배포: snapshot 메타데이터 서비스를 노출하기 위해 external-snapshot-metadata 사이드카와 통합하십시오.
  4. 사용자 정의 리소스 등록: CustomResourceDefinition을 사용하여 SnapshotMetadataService 리소스를 등록하고, 메타데이터 서비스의 가용성을 알리고 연결 세부 정보를 제공하는 SnapshotMetadataService 사용자 정의 리소스를 생성하십시오.
  5. 오류 처리 지원: CSI 사양 요구 사항에 따라 이러한 RPC에 대한 적절한 오류 처리를 구현하십시오.

백업 솔루션 책임

이 기능을 활용하려는 백업 솔루션은 다음을 수행해야 합니다.
  1. 인증 설정: 백업 애플리케이션은 쿠버네티스 SnapshotMetadataService API를 사용할 때 쿠버네티스 ServiceAccount 토큰을 제공해야 합니다. 백업 애플리케이션 ServiceAccount가 이러한 토큰을 얻을 수 있도록 RBAC RoleBindings와 같은 적절한 접근 권한이 설정되어야 합니다.
  2. 스트리밍 클라이언트 측 코드 구현: schema.proto 파일에 정의된 스트리밍 gRPC API를 구현하는 클라이언트를 개발하십시오. 구체적으로:
    • GetMetadataAllocatedGetMetadataDelta 메서드를 위한 스트리밍 클라이언트 코드 구현
    • 메타데이터가 청크 단위로 들어올 때 서버 측 스트리밍 응답을 효율적으로 처리
    • 적절한 오류 처리와 함께 SnapshotMetadataResponse 메시지 형식 처리 external-snapshot-metadata GitHub 리포지토리는 클라이언트 구현을 단순화하기 위한 편리한 이터레이터 지원 패키지를 제공합니다.
  3. 대규모 데이터셋 스트리밍 처리: 상당한 변경이 있는 볼륨에 대해 반환될 수 있는 대규모 블록 메타데이터 스트림을 효율적으로 처리하도록 클라이언트를 설계하십시오.
  4. 백업 프로세스 최적화: 백업 워크플로우를 수정하여 변경 블록 메타데이터를 사용하여 변경된 블록만 식별하고 전송함으로써 백업을 더 효율적으로 만들고, 백업 기간과 리소스 소비를 모두 줄이십시오.

시작하기

클러스터에서 변경 블록 추적을 사용하려면 다음을 수행하십시오.
  1. CSI 드라이버가 볼륨 스냅샷을 지원하고 필요한 external-snapshot-metadata 사이드카와 함께 스냅샷 메타데이터 기능을 구현하는지 확인하십시오.
  2. SnapshotMetadataService 사용자 정의 리소스가 CRD를 사용하여 등록되었는지 확인하십시오.
  3. CSI 드라이버에 대한 SnapshotMetadataService 사용자 정의 리소스의 존재를 확인하십시오.
  4. 적절한 인증(쿠버네티스 ServiceAccount 토큰을 통해)을 사용하여 API에 접근할 수 있는 클라이언트를 생성하십시오.

API는 두 가지 주요 기능을 제공합니다.

  • GetMetadataAllocated: 단일 스냅샷에 할당된 블록 나열
  • GetMetadataDelta: 두 스냅샷 간 변경된 블록 나열

다음 단계는 무엇인가요?

피드백과 채택 여부에 따라 쿠버네티스 개발자들은 향후 릴리스에서 CSI Snapshot Metadata 구현을 베타로 전환하기를 희망합니다.

더 자세히 알아보고 싶으신가요?

이 새로운 기능에 관심이 있는 분들을 위해:

참여 방법

이 프로젝트는 모든 쿠버네티스 프로젝트와 마찬가지로 다양한 배경을 가진 수많은 기여자들이 함께 노력한 결과입니다. SIG Storage를 대표하여, 프로젝트 설계 및 구현 검토에 도움을 주신 다음 기여자분들께 진심으로 감사드립니다 (이 목록에 국한되지 않음):

또한 KEPCSI 사양 PR 검토를 도운 다른 분들을 포함하여 프로젝트에 기여해주신 모든 분들께도 감사드립니다.

CSI 또는 쿠버네티스 스토리지 시스템의 설계 및 개발에 참여하는 데 관심이 있는 분들은 쿠버네티스 스토리지 특별 관심 그룹 (SIG)에 참여하십시오. 저희는 언제나 새로운 기여자분들을 환영합니다.

SIG는 또한 정기적으로 데이터 보호 워킹 그룹 회의를 개최합니다. 새로운 참석자들도 저희 토론에 참여하시는 것을 환영합니다.