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 선택