백업과 마이그레이션

백업과 마이그레이션

9️⃣ 백업과 마이그레이션

Rook-Ceph은 단순한 스토리지 오케스트레이션을 넘어, 강력한 데이터 보호 및 마이그레이션 기능을 제공합니다. 이 섹션에서는 RBD 및 CephFS의 백업/복구 실습과 클러스터 마이그레이션, 외부 연동 전략을 소개합니다.


1. RBD Snapshot & Restore

📷 Snapshot 아키텍처

sequenceDiagram
    participant User
    participant RBD
    participant Ceph OSDs

    User->>RBD: Create Snapshot (my-vol@snap1)
    RBD->>Ceph OSDs: Mark snapshot metadata
    Note right of RBD: No data duplication

    User->>RBD: Clone from snapshot
    RBD->>Ceph OSDs: Create new RBD volume

💡 Snapshot 생성 및 복구 예제

# 1. RBD 볼륨 확인
rbd ls -p replicapool

# 2. 스냅샷 생성
rbd snap create replicapool/my-vol@snap1

# 3. 스냅샷 복사하여 새 볼륨 생성
rbd clone replicapool/my-vol@snap1 replicapool/my-vol-clone

# 4. 클론 매핑
rbd map replicapool/my-vol-clone

💡 RBD 스냅샷은 공간을 거의 차지하지 않고 빠르게 생성 가능


2. CephFS Snapshot 사용법

📁 Snapshot 구성

graph TB
  CephFS[/cephfs/]
  Subvol1[/mydir/]
  Snap[.snap/]

  CephFS --> Subvol1 --> Snap

🧪 실습 예제

# 1. Subvolume 및 Path 생성
ceph fs subvolume create cephfs mysubvol
ceph fs subvolume snapshot create cephfs mysubvol snap1

# 2. 스냅샷 마운트
# 일반 경로: /volumes/_nogroup/mysubvol
# 스냅샷 경로: /volumes/_nogroup/mysubvol/.snap/snap1

mount -t ceph <mon>:6789:/ /mnt -o name=admin,secret=<key>
ls /mnt/volumes/_nogroup/mysubvol/.snap/snap1

⚠️ .snap 디렉토리는 read-only입니다. 데이터 보호용 스냅샷으로 적합합니다.


3. Rook-Ceph 클러스터 마이그레이션 전략

🔄 마이그레이션 흐름

graph LR
  A[기존 Rook-Ceph Cluster] --> B[RBD Export]
  B --> C[중간 백업 저장소 (S3, PVC)]
  C --> D[RBD Import]
  D --> E[새 Rook-Ceph Cluster]

☁️ 전략 요약

단계 도구 설명
1 rbd export 기존 볼륨을 RAW 이미지로 백업
2 Object Storage / PVC 중간 전송 저장소
3 rbd import 새 클러스터에 볼륨 복구
4 PV/PVC 재생성 새 클러스터에 PVC 바인딩

💡 명령어 예시

# Export RBD
rbd export replicapool/my-vol my-vol.img

# Import RBD to new cluster
rbd import my-vol.img replicapool/my-vol-restored

🧠 데이터를 RBD 이미지 형태로 안전하게 이관 가능. (압축 & 암호화 가능)


4. 외부 Ceph 클러스터 연동 (external: true)

🔗 연동 아키텍처

flowchart LR
  ExternalCeph[(외부 Ceph Cluster)]
  RookOperator[rook-ceph-operator]
  CSI[Ceph CSI Plugin]
  K8sApps[사용자 PVC]

  RookOperator -->|Cluster Info (secret)| ExternalCeph
  CSI --> ExternalCeph
  K8sApps --> CSI

🛠 연동 과정

  1. 외부 Ceph에서 external cluster 정보 생성
ceph orch export cluster > cluster.yaml
  1. 외부 cluster info를 Rook에 전달
ROOK_EXTERNAL=true
kubectl create secret generic rook-ceph-external-cluster-details --from-file=cluster.yaml -n rook-ceph
  1. Rook External Cluster CR 구성
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: rook-ceph-external
spec:
  external:
    enable: true

📌 실제 MON, OSD, MGR 등의 데몬은 외부에 존재하며, K8s 클러스터에서는 CSI 드라이버만 동작합니다.


✅ 마무리 요약

항목 핵심 요약
RBD Snapshot 빠르고 공간 절약 가능, 복제도 쉬움
CephFS Snapshot .snap 디렉토리 사용, 안전한 정적 백업
마이그레이션 export/import 방식 or 복제 스냅샷
외부 연동 외부 Ceph와 통합 운영 가능 (CSI 연동)

RSS Feed
마지막 수정일자