백업과 마이그레이션
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
🛠 연동 과정
- 외부 Ceph에서
external cluster
정보 생성
ceph orch export cluster > cluster.yaml
- 외부 cluster info를 Rook에 전달
ROOK_EXTERNAL=true
kubectl create secret generic rook-ceph-external-cluster-details --from-file=cluster.yaml -n rook-ceph
- 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 연동) |
마지막 수정일자