Ceph RBD 스냅샷 삭제 전 점검: clone 의존성·flatten·snaptrim과 용량 회수
VM 템플릿이나 오래된 RBD 스냅샷을 정리하다가 삭제가 거부되거나 예상보다 용량이 줄지 않을 수 있습니다. 이때 보호 설정만 해제하기 전에 부모 스냅샷과 자식 clone의 연결, flatten에 필요한 공간, 비동기 snaptrim을 확인해야 합니다. 이 글의 예시는 Ceph Reef 문서를 기준으로 하며 실제 버전과 clone 형식의 차이를 먼저 확인합니다.
1. 이미지와 스냅샷 목록부터 확인하기
아래 vm-pool/base-image와 snap-01은 예시입니다. 관리 플랫폼에서 사용하는 이미지라면 VM·템플릿과 RBD 이름을 먼저 연결합니다. Proxmox나 OpenStack 같은 상위 플랫폼이 관리하는 스냅샷은 해당 플랫폼의 관리 절차를 우선합니다.
ceph version
ceph -s
rbd info vm-pool/base-image
rbd snap ls vm-pool/base-image
rbd du vm-pool/base-image
이미지의 provisioned 크기는 실제 사용량과 다릅니다. rbd du가 표시하는 값도 복제 계수와 OSD의 전체 물리 사용량을 그대로 나타내는 값은 아닙니다. fast-diff 등 기능 상태에 따라 조회 비용이 커질 수 있으므로 대규모 pool에서는 범위를 좁혀 확인합니다.
2. 부모와 자식 의존성 조회하기
clone은 변경된 데이터를 자신의 이미지에 기록하면서 미변경 데이터를 부모 스냅샷에서 참조할 수 있습니다. 따라서 부모 스냅샷을 독립적인 오래된 복사본으로 보고 바로 제거하면 안 됩니다.
rbd children vm-pool/base-image@snap-01
rbd info vm-pool/child-image
rbd snap ls vm-pool/child-image
자식이 다른 pool이나 namespace에 있을 수 있으므로 출력된 전체 위치를 기록합니다. 조회 권한이 제한되어 있다면 빈 목록을 모든 의존성이 없다는 증거로 바로 사용하지 않습니다. 현재 설치 버전의 rbd help와 관리 시스템 정보를 대조합니다.
3. 정리 방법에 따른 영향 비교하기
| 방법 | 효과 | 검토 항목 |
| 부모 보존 | clone의 기존 참조 유지 | 보존 비용과 템플릿 관리 |
| 자식 flatten | 공유 블록을 자식에 복사해 부모 의존성 제거 | 추가 사용량·I/O·작업 시간 |
| 사용하지 않는 자식 정리 | 해당 clone 자체 제거 | VM 연결·백업·소유자 확인 |
| 부모 스냅샷 정리 | 더 이상 필요 없는 복구 시점 제거 | 다른 자식과 보존 정책 |
flatten은 용량을 줄이는 압축 작업이 아닙니다. 자식에 공유 블록을 복사하므로 진행 중 또는 완료 후 공간이 증가할 수 있습니다. 자식 스냅샷과 deep-flatten 기능 등의 동작도 확인하고, 작업 후 의존성을 다시 조회합니다.
4. flatten을 계획할 때 확인할 것
다음은 변경 명령의 형식 예시입니다. 실제로는 상위 플랫폼의 지원 절차, 백업, 클러스터 여유, 복구 부하를 확인한 뒤 유지보수 작업으로 수행합니다. nearfull 상태에서 의존성을 없애겠다며 대량 flatten을 시작하지 않습니다.
# 변경 작업 예시: 사용 중인 이미지·플랫폼 절차 확인 후 실행
rbd flatten vm-pool/child-image
# 작업 후 의존성 재확인
rbd info vm-pool/child-image
rbd children vm-pool/base-image@snap-01
ceph -s
보호 해제·삭제·rollback은 이 조회 절차와 별도로 결정합니다. 특히 rollback은 현재 데이터를 과거 시점으로 덮어쓰는 작업이므로 정리용 명령으로 취급하지 않습니다.
5. 삭제 후 용량이 즉시 돌아오지 않는 이유
스냅샷 삭제 후 OSD는 snaptrim을 통해 데이터를 비동기로 정리합니다. 다른 스냅샷이나 clone이 참조하는 데이터가 남을 수도 있습니다. 단순히 삭제 명령이 성공했는지보다 ceph 상태와 용량 변화, 잔여 의존성을 시간을 두고 비교합니다.
점검 완료 기준
- 이미지·스냅샷·VM 또는 템플릿 매핑을 확보했다.
- 부모와 자식의 전체 의존성을 확인했다.
- flatten에 필요한 공간과 부하를 검토했다.
- 정리 후 snaptrim·용량·VM 정상 동작을 확인했다.
참고자료
'인프라 > 스토리지·백업' 카테고리의 다른 글
| restic check 사용법: 백업 저장소 구조 검사와 --read-data 무결성 검사 차이 (0) | 2026.10.17 |
|---|---|
| 백업 설계 실무: RPO·RTO와 오프사이트·불변 보관을 복구 시나리오로 검증하기 (0) | 2026.10.13 |
| NFS 응답 지연 분석: hard·timeo·retrans와 클라이언트 RPC 통계 읽기 (0) | 2026.10.13 |
| OpenZFS scrub·resilver 운영 점검: zpool status 오류와 복구 진행률 읽기 (0) | 2026.10.13 |
| Proxmox local-lvm 용량 관리: LVM-thin Data%·Meta%·VG 여유 공간 구분하기 (0) | 2026.10.13 |