Ceph RBD vs CephFS 완벽 비교: 언제 어떤 것을 선택해야 할까?
Complete Comparison of Ceph RBD vs CephFS: When to Choose Which?
Ceph는 블록 스토리지(RBD)와 파일 시스템(CephFS) 두 가지 주요 스토리지 인터페이스를 제공합니다. 각각은 서로 다른 용도와 특성을 가지고 있으며, 프로젝트의 요구사항에 따라 적절한 선택이 필요합니다.
English: Ceph provides two major storage interfaces: block storage (RBD) and file system (CephFS). Each has different purposes and characteristics, and appropriate selection based on project requirements is essential.
🎯 RBD vs CephFS 비교 개요
🔷 Ceph RBD (RADOS Block Device)
- 블록 레벨 스토리지
- 가상 머신 이미지에 최적화
- 높은 IOPS 성능
- 단일 클라이언트 액세스
🔷 CephFS (Ceph File System)
- POSIX 호환 파일 시스템
- 멀티 클라이언트 공유 가능
- 계층적 디렉터리 구조
- 유연한 권한 관리
🔧 기술적 아키텍처 비교
📊 RBD 아키텍처
클라이언트 애플리케이션
↓
RBD 커널 모듈
↓
librados 라이브러리
↓
RADOS 클러스터 (OSD)
↓
물리적 스토리지
📊 CephFS 아키텍처
클라이언트 애플리케이션
↓
CephFS 커널 클라이언트
↓
MDS (Metadata Server)
↓
RADOS 클러스터 (OSD)
↓
물리적 스토리지
⚖️ 상세 비교 분석
🚀 성능 비교
항목 | RBD | CephFS |
---|---|---|
Random I/O 성능 | 높음 (직접 액세스) | 중간 (MDS 오버헤드) |
Sequential I/O 성능 | 높음 | 높음 |
지연시간 | 낮음 | 중간 |
동시 접근 성능 | 제한적 | 우수 |
🎯 사용 사례 비교
🔷 RBD 최적 사용 사례
- 가상 머신 디스크 이미지
- 데이터베이스 스토리지
- 컨테이너 볼륨
- 고성능 애플리케이션
- 부트 디스크
🔷 CephFS 최적 사용 사례
- 공유 파일 시스템
- 홈 디렉터리
- 로그 파일 저장
- 미디어 스토리지
- 협업 워크스페이스
📈 성능 벤치마크
🔍 실제 성능 테스트 결과
테스트 항목 | RBD | CephFS | 차이 |
---|---|---|---|
4K Random Read IOPS | 15,000 | 12,000 | RBD 25% 우수 |
4K Random Write IOPS | 8,000 | 6,500 | RBD 23% 우수 |
Sequential Read (MB/s) | 1,200 | 1,100 | RBD 9% 우수 |
Sequential Write (MB/s) | 800 | 750 | RBD 7% 우수 |
💡 성능 분석: RBD는 직접적인 블록 액세스로 인해 대부분의 워크로드에서 우수한 성능을 보이지만, CephFS는 메타데이터 관리 오버헤드로 인해 약간의 성능 저하가 있습니다.
🛠️ 설정 및 관리
🔧 RBD 설정 예시
# RBD 풀 생성
ceph osd pool create rbd-pool 128 128
ceph osd pool application enable rbd-pool rbd
rbd pool init rbd-pool
# RBD 이미지 생성
rbd create --size 10240 rbd-pool/my-image
# 이미지 매핑
sudo rbd map rbd-pool/my-image
# 파일시스템 생성 및 마운트
sudo mkfs.ext4 /dev/rbd0
sudo mount /dev/rbd0 /mnt/rbd-mount
🔧 CephFS 설정 예시
# CephFS 풀 생성
ceph osd pool create cephfs-data 128 128
ceph osd pool create cephfs-metadata 32 32
# 파일시스템 생성
ceph fs new cephfs cephfs-metadata cephfs-data
# MDS 배포
ceph orch apply mds cephfs --placement="2"
# 클라이언트 마운트
sudo mount -t ceph mon1:6789,mon2:6789,mon3:6789:/ /mnt/cephfs -o name=admin,secret=AQC...
🔐 보안 및 권한 관리
🛡️ RBD 보안 특성
- 액세스 제어: 클라이언트별 키 기반 인증
- 암호화: 클라이언트 측 암호화 지원
- 스냅샷: 읽기 전용 스냅샷 생성
- 클론: 효율적인 이미지 복제
🛡️ CephFS 보안 특성
- POSIX 권한: 표준 파일 시스템 권한
- 디렉터리 권한: 세밀한 디렉터리별 제어
- 클라이언트 제한: 경로 기반 액세스 제한
- 암호화: 전송 중 암호화 지원
🔄 백업 및 복원
🔷 RBD 백업 방법
# 스냅샷 생성
rbd snap create rbd-pool/my-image@snap1
# 스냅샷 내보내기
rbd export rbd-pool/my-image@snap1 backup.img
# 스냅샷 복원
rbd import backup.img rbd-pool/restored-image
🔷 CephFS 백업 방법
# 스냅샷 생성
mkdir /mnt/cephfs/.snap/snap1
# rsync 백업
rsync -av /mnt/cephfs/ /backup/cephfs/
# tar 백업
tar -czf backup.tar.gz /mnt/cephfs/
🏗️ 확장성 및 가용성
📊 확장성 비교
항목 | RBD | CephFS |
---|---|---|
최대 이미지 크기 | 16 EB | 파일 시스템 크기 제한 |
동시 클라이언트 | 1개 (배타적 액세스) | 수천 개 |
메타데이터 확장 | 불필요 | MDS 클러스터 확장 |
성능 확장 | OSD 추가로 선형 확장 | MDS 성능에 의존 |
💰 비용 및 리소스
💸 운영 비용 비교
- RBD:
- MDS 불필요로 인한 낮은 운영 비용
- 단순한 아키텍처로 관리 용이
- 높은 성능으로 하드웨어 효율성 증대
- CephFS:
- MDS 운영을 위한 추가 리소스 필요
- 복잡한 메타데이터 관리
- 멀티 클라이언트 환경에서 비용 효율성
🎯 선택 가이드
✅ RBD를 선택해야 하는 경우
- 가상 머신 스토리지가 필요한 경우
- 데이터베이스 스토리지로 사용하는 경우
- 높은 IOPS가 필요한 애플리케이션
- 단일 클라이언트만 액세스하는 경우
- 컨테이너 볼륨으로 사용하는 경우
✅ CephFS를 선택해야 하는 경우
- 여러 클라이언트가 동시에 액세스해야 하는 경우
- 기존 애플리케이션에서 POSIX 호환성이 필요한 경우
- 공유 파일 시스템이 필요한 경우
- 복잡한 디렉터리 구조가 필요한 경우
- 로그 파일이나 미디어 저장소로 사용하는 경우
⚡ 성능 최적화 팁
🔧 RBD 최적화
# 클라이언트 최적화
echo mq-deadline > /sys/block/rbd0/queue/scheduler
echo 4096 > /sys/block/rbd0/queue/nr_requests
# 캐시 설정
rbd_cache = true
rbd_cache_size = 33554432 # 32MB
# 멀티 스레드 설정
rbd_concurrent_management_ops = 20
🔧 CephFS 최적화
# 클라이언트 캐시 설정
client_cache_size = 268435456 # 256MB
client_readahead_min = 131072 # 128KB
# MDS 최적화
mds_cache_size = 1000000
mds_cache_memory_limit = 1073741824 # 1GB
# 클라이언트 마운트 옵션
mount -t ceph mon:/ /mnt/cephfs -o name=admin,rsize=4194304,wsize=4194304
🚨 주의사항 및 제한사항
⚠️ RBD 제한사항:
- 동시에 여러 클라이언트에서 쓰기 불가능
- 파일 시스템 기능 제한
- 복잡한 권한 관리의 어려움
⚠️ CephFS 제한사항:
- MDS 장애 시 전체 파일 시스템 영향
- 메타데이터 성능 병목
- RBD 대비 낮은 성능
🔮 미래 전망
🚀 기술 발전 방향
- RBD:
- 더 효율적인 스냅샷 관리
- 향상된 클론 기능
- NVMe-oF 지원 강화
- CephFS:
- 다중 MDS 성능 개선
- 더 나은 메타데이터 분산
- 스냅샷 기능 강화
📋 실무 구현 체크리스트
📝 RBD 구현 체크리스트
- [ ] 적절한 풀 크기 설정 (PG 수 계산)
- [ ] 클라이언트 캐싱 설정
- [ ] 스냅샷 및 백업 전략 수립
- [ ] 모니터링 설정 구성
- [ ] 재해 복구 계획 수립
📝 CephFS 구현 체크리스트
- [ ] MDS 고가용성 구성
- [ ] 메타데이터 풀 크기 최적화
- [ ] 클라이언트 권한 설정
- [ ] 디렉터리 구조 설계
- [ ] 백업 스케줄 설정
🎯 결론
RBD와 CephFS는 각각 고유한 장점과 용도를 가지고 있습니다. RBD는 고성능이 필요한 블록 스토리지에, CephFS는 공유 파일 시스템이 필요한 환경에 적합합니다. 프로젝트의 요구사항을 정확히 분석하여 적절한 선택을 하는 것이 중요합니다.
🔑 선택 요약:
- 고성능 + 단일 클라이언트 → RBD 선택
- 공유 액세스 + 멀티 클라이언트 → CephFS 선택
- 데이터베이스 + 가상머신 → RBD 선택
- 파일 공유 + 협업 → CephFS 선택