Ceph는 오픈소스 분산 스토리지 시스템으로, 단일 플랫폼에서 객체, 블록, 파일 스토리지 기능을 모두 제공합니다. 대규모 데이터 센터와 클라우드 환경에서 높은 확장성, 안정성, 성능을 갖춘 스토리지 솔루션이 필요할 때 Ceph는 탁월한 선택입니다.

English: Ceph is an open-source distributed storage system that provides object, block, and file storage capabilities within a single unified platform. It's an excellent choice for large-scale data centers and cloud environments requiring a storage solution with high scalability, reliability, and performance.

Ceph 스토리지의 핵심 개념

Ceph의 아키텍처는 여러 핵심 개념을 기반으로 설계되었으며, 이러한 개념들이 Ceph의 강력한 성능과 안정성을 가능하게 합니다.

RADOS (Reliable Autonomic Distributed Object Store)

RADOS는 Ceph의 기반이 되는 객체 스토리지 시스템입니다. 모든 데이터를 객체 형태로 저장하며, 이러한 객체들은 클러스터 전체에 분산됩니다.

+-------------------+
|     Applications  |
+-------------------+
          |
+-------------------+
|  LIBRADOS (API)   |
+-------------------+
          |
+-------------------+
|   RADOS Cluster   |
| (OSD + Monitor)   |
+-------------------+

주요 특징:

  • 자동화된 데이터 분산 및 복제
  • 자가 치유 기능으로 노드 장애 시 자동 복구
  • 클러스터 상태 모니터링 및 관리

CRUSH 알고리즘

CRUSH(Controlled Replication Under Scalable Hashing)는 Ceph가 데이터를 분산 저장하는 방식을 결정하는 알고리즘입니다.

# CRUSH 맵 확인 명령어
ceph osd crush dump

CRUSH 알고리즘의 장점:

  • 중앙 조회 테이블 없이 데이터 위치 계산
  • 클러스터 구성 변경 시 최소한의 데이터 이동
  • 스토리지 계층과 장애 도메인 정의 가능

OSD (Object Storage Daemon)

OSD는 실제 데이터를 저장하고 관리하는 데몬 프로세스입니다. 일반적으로 하나의 물리적 디스크당 하나의 OSD를 실행합니다.

# OSD 상태 확인
ceph osd status
ceph osd tree

OSD의 역할:

  • 데이터 저장 및 검색
  • 데이터 복제 및 복구 조정
  • 다른 OSD와의 하트비트 교환으로 클러스터 상태 모니터링

Monitor

모니터 노드는 클러스터의 상태 맵을 유지하고 클라이언트에게 클러스터 정보를 제공합니다.

# 모니터 상태 확인
ceph mon stat

모니터의 역할:

  • 클러스터 맵 관리 (Monitor Map, OSD Map, PG Map 등)
  • 클라이언트 인증 및 권한 관리
  • 쿼럼 기반 분산 의사 결정

Placement Group (PG)

PG는 객체 집합을 관리하는 논리적 단위로, Ceph의 확장성을 보장합니다.

# PG 상태 확인
ceph pg stat

PG의 중요성:

  • 수백만 개의 객체를 효율적으로 관리
  • OSD 간 데이터 복제 및 분산 관리
  • 복구 작업의 병렬화 지원

Ceph의 주요 스토리지 인터페이스

Ceph는 세 가지 주요 스토리지 인터페이스를 제공하여 다양한 사용 사례를 지원합니다.

1. RADOS Gateway (RGW) - 객체 스토리지

RGW는 Amazon S3 및 OpenStack Swift와 호환되는 RESTful API를 제공하는 객체 스토리지 인터페이스입니다.

사용 사례:

  • 클라우드 네이티브 애플리케이션
  • 정적 웹 콘텐츠 호스팅
  • 백업 및 아카이브 솔루션
  • 대규모 데이터 저장소
# RGW 서비스 시작
systemctl start ceph-radosgw@rgw.`hostname -s`

2. RADOS Block Device (RBD) - 블록 스토리지

RBD는 Ceph의 블록 스토리지 인터페이스로, 가상 머신 및 컨테이너를 위한 블록 장치를 제공합니다.

사용 사례:

  • 가상 머신 디스크(OpenStack, VMware)
  • 데이터베이스 스토리지
  • 컨테이너 영구 볼륨(Kubernetes)
# RBD 이미지 생성 예시
rbd create --size 10G --pool rbd my_disk

특징:

  • 씬 프로비저닝
  • 스냅샷 및 클론 지원
  • 자동 데이터 분산 및 복제

3. CephFS - 파일 스토리지

CephFS는 POSIX 호환 파일 시스템 인터페이스를 제공합니다.

사용 사례:

  • 공유 파일 시스템
  • 데이터 분석 워크로드
  • 대규모 홈 디렉토리
# CephFS 마운트 예시
mount -t ceph mon1:6789:/ /mnt/cephfs -o name=admin,secret=AQAdwMpd6RI4HxAA0eIteNYiVXW0chtG25UZ1Q==

특징:

  • 메타데이터 서버(MDS)를 통한 고성능 파일 작업
  • 동적 디렉토리 분할로 확장성 개선
  • POSIX ACL 지원

Ceph 설치 및 구성 개요

Ceph 클러스터를 설치하고 구성하는 기본 단계는 다음과 같습니다:

1. 사전 요구 사항

# 모든 노드에 필수 패키지 설치
apt-get update
apt-get install -y ceph-common python3 ntp

필요한 하드웨어:

  • 최소 3개의 OSD 노드 (프로덕션 환경)
  • 최소 3개의 모니터 노드 (고가용성 클러스터)
  • 각 노드 간 네트워크 연결

2. Cephadm을 사용한 설치 (최신 권장 방식)

# Cephadm 부트스트랩
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod +x cephadm
./cephadm bootstrap --mon-ip <mon-ip>

3. 스토리지 풀 구성

# 기본 복제 풀 생성
ceph osd pool create mypool 128 128
ceph osd pool set mypool size 3

# 삭제 코딩 풀 생성
ceph osd pool create ecpool 128 erasure
ceph osd pool set ecpool allow_ec_overwrites true

4. 클라이언트 설정

# 클라이언트 구성 파일 배포
ceph config generate-minimal-conf > /etc/ceph/ceph.conf
ceph auth get client.admin > /etc/ceph/ceph.client.admin.keyring

Ceph의 성능 최적화

Ceph 클러스터의 성능을 최대화하기 위한 몇 가지 중요한 고려 사항:

네트워크 최적화

# 네트워크 튜닝 매개변수
net.core.rmem_max = 56623104
net.core.wmem_max = 56623104
net.core.rmem_default = 56623104
net.core.wmem_default = 56623104
net.core.optmem_max = 40960

네트워크 권장 사항:

  • 퍼블릭 및 클러스터 네트워크 분리
  • 최소 10GbE 네트워크 인터페이스
  • 점보 프레임 활성화

OSD 최적화

# OSD 튜닝 매개변수
osd_memory_target = 4294967296  # 4GB
bluestore_cache_size_ssd = 3221225472  # 3GB for SSD

OSD 권장 사항:

  • 고성능 디스크(SSD 또는 NVMe)
  • 전용 저널 디바이스
  • 메타데이터와 데이터 분리

모니터링 및 문제 해결

# 클러스터 상태 모니터링
ceph health detail
ceph -s

# 성능 카운터 확인
ceph daemon osd.0 perf dump

주요 모니터링 지표:

  • IOPS 및 처리량
  • 지연 시간
  • 복구 작업 상태
  • 클러스터 사용량

Ceph vs 다른 스토리지 솔루션

Ceph vs GlusterFS

기능 Ceph GlusterFS
아키텍처 객체 기반 파일 기반
스토리지 타입 객체, 블록, 파일 주로 파일
확장성 엑사바이트 규모 페타바이트 규모
복잡성 상대적으로 높음 상대적으로 낮음
사용 사례 대규모 클라우드 파일 공유/NAS

Ceph vs Swift

기능 Ceph Swift
범위 통합 스토리지 객체 스토리지만
일관성 강한 일관성 최종 일관성
블록 스토리지 네이티브 지원 미지원
파일 시스템 CephFS 지원 미지원

Ceph vs HDFS

기능 Ceph HDFS
주요 목적 범용 스토리지 빅데이터 분석
데이터 모델 객체 기반 블록 기반
액세스 패턴 다양한 워크로드 순차적 액세스 최적화
API S3/Swift/POSIX HDFS API

Ceph의 미래 전망

Ceph는 지속적으로 발전하고 있으며, 다음과 같은 주요 영역에서 혁신을 이끌고 있습니다:

성능 개선

  • BlueStore 스토리지 엔진 개선
  • NVMe 및 영구 메모리 최적화
  • 네트워크 프로토콜 최적화

클라우드 네이티브 통합

  • Kubernetes와의 긴밀한 통합
  • 컨테이너화된 배포 단순화
  • 마이크로서비스 아키텍처 지원

관리 단순화

  • 새로운 Cephadm 및 Rook 관리 도구
  • 자동화된 클러스터 관리
  • 선언적 구성 방식 도입

결론

Ceph는 확장성, 안정성, 유연성을 제공하는 강력한 분산 스토리지 솔루션입니다. 단일 시스템에서 객체, 블록, 파일 스토리지를 모두 제공하는 능력은 현대 데이터 센터와 클라우드 환경에서 큰 이점을 제공합니다.

클러스터 확장, 노드 추가 또는 교체와 같은 작업을 운영 중단 없이 수행할 수 있는 기능과 함께, 하드웨어 장애에 대응하는 자가 치유 메커니즘은 Ceph를 엔터프라이즈급 스토리지 시스템으로 만듭니다.

오픈소스 본질과 활발한 커뮤니티 지원을 통해 Ceph는 계속해서 혁신하고 발전할 것이며, 클라우드 네이티브 환경과 현대적인 데이터 센터의 핵심 구성 요소로 자리매김할 것입니다.