Open Source Software

Ceph 란?

Somaz 2022. 7. 29. 14:37
728x90
반응형

Overview

오늘은 Ceph에 대한 기본 개념과 아키텍처, 주요 기능, 그리고 운영 시 고려해야 할 사항들에 대해 살펴보려고 한다.

 

Ceph는 오픈소스 기반의 분산 스토리지 시스템으로, 오브젝트(Object), 블록(Block), 파일(File) 스토리지를 단일 시스템에서 지원하는 것이 특징이다. 무중단 운영(High Availability), 수평적 확장성(Scalability), 자동 복구(Self-Healing) 등의 강력한 기능을 제공하며, 클라우드 및 대규모 데이터 센터에서 많이 활용된다.

 

이번 글에서는 Ceph의 주요 아키텍처 구성 요소(MON, MGR, OSD, MDS, RGW 등)와, 데이터를 효과적으로 배치하는 CRUSH 알고리즘, 성능 최적화 및 운영 베스트 프랙티스까지 다룰 예정이다.

 

다음 글에서는 Ceph와 Kubernetes 통합 (Rook-Ceph) 및 운영 자동화에 대해 더 깊이 알아보겠다.

 

출처 : ChatGPT

 

 

📅 관련 글

2024.02.20 - [Open Source Software] - Rook-Ceph란?

2024.02.20 - [Open Source Software] - Cephadm-ansible이란?

2022.09.21 - [Open Source Software] - Ceph 노드 제거 및 추가 방법(mon/mgr/osd)

 

 

 

 


 

 

Ceph 란?

Ceph 분산형 스토리지로 여러 스토리지들을 클러스터로 묶어 하나로 보이게하는 스토리지이다.

 

분산 클러스터 위에서 object storage를 구현해 object, block, file level의 storage 인터페이스를 제공한다.

하나로 object, block storage, file system 모두를 제공한다는 것이 장점이다.

 

SPOF(Single Point Of Failure) 없는 완전한 분산처리와 exabyte 단위까지 확장 가능하다.

Ceph Storage Cluster를 구성하기 위해서는 Ceph Monitor, Ceph Manager, Ceph OSD(Object Storage Daemon)이 하나이상 있어야 하고 Ceph File System Client를 사용하려면 Ceph Metadate Server가 있어야 한다.

 

 

 

 

 

Ceph의 주요 장점

  • 고가용성 & 무중단 운영: SPOF(Single Point of Failure) 없이 장애 발생 시 자동 복구.
  • 수평적 확장성(Scalability): Exabyte 수준까지 확장 가능.
  • 다양한 스토리지 인터페이스 지원: 블록, 파일, 오브젝트 스토리지를 단일 시스템에서 지원.
  • 오픈소스 기반: 비용 효율적이며 커뮤니티 지원이 활발함.

 

 

 

Ceph의 주요 단점

  • 높은 하드웨어 요구사항: 많은 메모리와 디스크 IOPS 성능이 필요함.
  • 설정이 복잡함: 초기에 튜닝과 클러스터 설정이 까다로움.
  • 복구 속도: Erasure Coding 기반의 데이터 복구는 속도가 느릴 수 있음.

 

 

 

 

 

 


 

 

 

 

Ceph 아키텍처 및 데몬

 

 

각각의 데몬들은 다음과 같은 역할을 한다.

 

  • Monitors
    • Ceph Monitor (ceph-mon)는 monitor map, manager map, OSD map, MDS map, CRUSH map과 같은 cluster의 상태정보를 구성한다.  HA를 위해서는 3개 이상 구성하는 것을 추천한다.

 

  • Managers
    • Ceph Manager daemon (ceph-mgr)는 storage utilization이나 performance, system load와 같은 Ceph cluster의 상태 정보를 추적한다. HA를 위해서는 2개 이상 구성하는 것을 추천한다.

 

  • Ceph OSDs
    • Ceph OSD (object storage daemon, ceph-osd)는 데이터를 저장하고, replication이나 recovery, rebalancing을 수행한다.
    • 또한 Ceph OSD 데몬들의 heartbeat를 Ceph Monitors and Managers에 제공하기도 합니다. HA를 위해서 3개 이상 구성하는 것을 추천한다.

 

  • MDSs
    • Ceph Metadata Server (MDS, ceph-mds)는 Ceph File System의 메타데이터를 저장한다.(Ceph Block Devices나 Ceph Object Storage는 MDS를 사용하지 않는다.)
    • Ceph Metadata Server를 통해 POSIX File System 사용자는 Ceph Storage Cluster에 큰 부담을 주지 않으면서 기본 명령을 실행할 수 있다.

 

  • Ceph Object Gateway
    • Rados Gateway(ceph-rgw)는 Amazon S3와 Openstack Swift Api용 인터페이스로 사용되는 Object Storage layer이다.

 

 

출처 : https://docs.ceph.com/en/latest/architecture/

 

위 그림과 같이 RADOS를 기반으로 데이터를 Read/Write 하고, librados라는 라이브러리를 제공하여 RADOS에 직접 접근할 수 있도록 제공한다.

 

또한 RadosGW, RBD, CephFS와 같은 ceph clients를 제공하여 Ceph Storage에 접근할 수 있는 인터페이스를 제공한다.

 

 

 


 

 

 

 

 

 

Ceph Clients

Ceph Client는 다양한 서비스 인터페이스를 제공하여 외부에서 데이터를 관리할 수 있도록 제공한다

 

 

 

 

 


 

 

 

 

 

 

RADOS (Ceph Storage Cluster)

Scalable, Reliable Storage Service for Petabyte-scale Storge Clusters로 Ceph의 데이터 접근에 대해 근간을 이루는 서비스이다. 즉 Ceph에서 object를 읽고 쓸때 RADOS를 사용한다.

 

 

 

RADOS Block Device

Ceph Block Device(RADOS block device, RBD)는 RBD 이미지를 통해 Ceph 클러스터 내에 블록 스토리지를 제공한다.
RBD 이미지는 클러스터의 서로 다른 OSD에 흩어져 있는 개별 object로부터 구성됩니다. 클러스터 내의 object 간에 데이터를 스트라이핑 할 수 있다.

 

RBD를 구성하는 object는 클러스터 주변의 서로 다른 OSD에 분산되기 때문에 블록 디바이스에 대한 액세스는 자동으로 병렬화된다.

RBD는 다음과 같은 기능을 제공한다.

  • Storage for virtual disks in the Ceph cluster
  • Mount support in the Linux kernel
  • Boot support in QEMU, KVM, and OpenStack Cinder

 

 

 

Ceph Object Gateway (RADOS Gateway)

Ceph Object Gateway(RADOS Gateway, RADOSGW 또는 RGW)는 라이브러리(librados)를 사용하여 구축된 object 스토리지 인터페이스이다.

 

라이브러리를 사용하여 Ceph 클러스터와 통신하고 OSD 프로세스에 직접 데이터를 쓴다. 응용 프로그램에 RESTful API가 포함된 게이트웨이를 제공하고 다음 두 인터페이스를 지원한다. (Amazon S3 및 OpenStack Swift)

 

Ceph Object Gateway는 배포할 수 있는 게이트웨이 수를 제한하지 않고 표준 HTTP 로드 밸런서를 지원하여 확장성 지원을 제공한다.

RGW 의 몇 가지 사용 사례는 다음과 같다.

  • Image storage (for example, SmugMug, Tumblr)
  • Backup services
  • File storage and sharing (for example, Dropbox)

 

 

 

 

 


 

 

 

 

 

 

Ceph File System (CephFS)

Ceph 파일 시스템(CephFS)은 확장 가능한 단일 계층 공유 디스크를 제공하는 병렬 파일 시스템이다.
CephFS에 저장된 파일과 관련된 메타데이터는 Ceph Metadata Server(MDS)에서 관리한다.

 

 

 

 

Placement Groups

클러스터에 수백만 개의 object 를 저장하고 개별적으로 관리하는 것은 리소스를 많이 사용한다.
따라서 Ceph는 placement group (PG)을 사용하여 수많은 object 를 보다 효율적으로 관리한다.

PG는 object 모음을 포함하는 역할을 하는 Pool 의 하위 집합이다.

 

Ceph는 Pool 을 일련의 PG로 분할하고 CRUSH 알고리즘은 클러스터 맵과 클러스터 상태를 고려하여 PG를 클러스터의 OSD에 무작위로 고르게 배포한다.

 

 

 

 

 

 

 


 

 

 

 

 

Pool Type

 

기본적으로 Ceph 는 Replicated pool 방식과 Erasure coded pool 방식을 통해 데이터 복원을 지원한다.
주로 일반 스토리지의 RAID 1 (mirror) 와 RAID 6 or RAID 5 (parity) 와 비교한다면 이해가 편할 것이다.

 

각 방식에는 아래와 같은 장단점이 있다.

  • Replicated pool
    • 높은 내구성
    • 3 replica 로 인한 200% overhead
    • 빠른 복구
  • Erasure coded pool
    • 비용 효율적인 내구성
    • 50% overhead
    • expensive recovery

 

 

 

 

 

 


 

 

 

 

 

Ceph Operation

Data가 들어오면 Data의 종류의 따라 아래의 설명 대로 변경이 된다.

변경된 결과 값은 결국 Object로 변환되고 변환된 Object는 Libados에 따라 이후과정은 룰에 따라 OSD에 저장 된다.

 

 

 

 

 

CRUSH (Controlled Replication Under Scalable Hashing)

  • Ceph에서 데이터를 분산 저장하는 핵심 알고리즘.
  • 중앙 컨트롤러 없이 OSD 간에 데이터를 균등하게 배포.
  • CRUSH Map을 사용하여 데이터 위치를 결정.
  • 스토리지 계층(데이터센터, 랙, 노드 등)에 따라 데이터 복제 정책 적용 가능.

 

 

 

CRUSH 동작 방식

 

  1. 객체(Object)를 해시(hash) 값으로 변환.
  2. Placement Group(PG)에 매핑.
  3. PG가 CRUSH 알고리즘을 사용하여 적절한 OSD에 배치.
  4. 장애 발생 시 CRUSH Map을 업데이트하고 자동 복구.

 

CRUSH는 전통적인 중앙화된 메타데이터 서버 없이 분산 스토리지의 효율성을 극대화하는 핵심 기술

 

 

 

 

 


 

 

 

 

 

 

 

Ceph Performance Tuning 및 Best Practices

 

성능 최적화 핵심 요소

 

  1. OSD 수 증가: OSD가 많을수록 병렬 처리 성능이 향상됨.
  2. SSD 기반의 WAL/DB 설정: bluestore 환경에서 RocksDB를 별도 SSD에 배치하면 성능 향상.
  3. 네트워크 최적화: 10Gbps 이상의 네트워크 환경에서 운영 권장.
  4. CRUSH Map 최적화: 장애 도메인(Availability Zone, Rack, Host) 설정을 통해 데이터 균형을 맞춤.
  5. Erasure Coding 최적화: 성능이 중요한 경우 EC 대신 Replication Pool 사용.

 

 

 

Ceph 사용 사례

  • OpenStack과 통합 → OpenStack Cinder(Block Storage) 및 Swift(Object Storage) 백엔드로 활용.
  • Kubernetes 기반 퍼시스턴트 스토리지 → Rook-Ceph를 통해 클라우드 네이티브 환경에서 사용.
  • Facebook & CERN 사용 → Facebook은 페타바이트(PB) 단위의 데이터를 저장하기 위해 Ceph을 활용, CERN은 과학 데이터 분석에 사용.

 

 

 


 

 

 

 

 

 

Cephadm vs ceph-ansible 비교

항목 Cephadm ceph-ansible
설치 방식 컨테이너 기반 패키지 기반
배포 난이도 쉬움 상대적으로 어려움
업그레이드 Rolling Upgrade 지원 수동 업그레이드 필요
모니터링 Dashboard 기본 제공 Grafana 등 직접 구성
추천 환경 신규 구축 기존 환경 유지/운영

 

 

 

실제 운영 시 장애 대응 사례

장애 유형 원인 대응 방법
OSD Flapping 디스크 성능 저하, 네트워크 지연 OSD 로그 분석 후 교체 또는 튜닝
MON Quorum 불안정 MON 수 부족, 네트워크 단절 MON 수 3개 이상 유지, 네트워크 체크
클러스터 Full 상태 사용량 관리 미흡 Pool Quota 설정, 데이터 정책 재조정
Scrub 오류 데이터 불일치, 디스크 오류 manual repair 수행, 디스크 교체

 

 

 

 

 


 

 

 

 

 

마무리

  • 지금까지 Ceph의 기본 개념, 아키텍처 구성, 주요 데몬 역할, 장단점, 그리고 실전 운영에서 꼭 알아야 할 핵심 정보까지 함께 살펴보았다.
  • Ceph는 단순한 스토리지 시스템이 아니라, 오브젝트, 블록, 파일 스토리지를 하나의 플랫폼에서 제공하는 강력한 분산 스토리지 솔루션이다.
  • 특히 OpenStack, Kubernetes, 대규모 데이터 저장소 등에서 유연성과 확장성, 그리고 고가용성을 갖춘 강력한 스토리지 백엔드로 자리 잡았다.
  • 하지만, Ceph는 단순히 설치만 하면 끝이 아니라, 초기 설계부터 성능 튜닝, 지속적인 모니터링, 장애 대응 체계까지 운영 노하우가 매우 중요한 시스템이다.
  • 오늘 정리한 내용은 Ceph를 처음 접하는 분들부터, 운영 경험을 쌓아가는 엔지니어분들까지 두루 참고할 수 있는 실전 가이드가 될 것이다.

 

 

 

 

 


 

Reference

https://ko.wikipedia.org/wiki/Ceph

 

https://docs.ceph.com/en/reef/

 

https://ceph.io/en/community/

728x90
반응형

'Open Source Software' 카테고리의 다른 글

Cephadm-ansible이란?  (3) 2024.02.29
Rook-Ceph란?  (0) 2024.02.20
Redis(Remote Dictionary Server)란?  (0) 2022.09.26
Ceph 노드 제거 및 추가 방법(mon/mgr/osd)  (0) 2022.09.21
RabbitMQ란?  (0) 2022.08.01