[Retry, k8s] 06-1. 온프레미스 환경에서 SDS에 의한 동적 볼륨 프로비저닝(CephFS) - (1)
카테고리: KUBERNETES
태그: kubernetes
[Retry, k8s] 06-1. 온프레미스 환경에서 SDS에 의한 동적 볼륨 프로비저닝(CephFS) - (1)
🔔 Ceph란?
Ceph는 분산 컴퓨터 스토리지 상에 오브젝트 스토리지를 구현한 오픈소스 스토리지 플랫폼(Software Defined Storage)
- Ceph의 장점은 SPOF(Single Point of Failure)가 없는 완전한 분산처리와 EB(엑사바이트) 수준의 스케일 아웃(Scale-out)이 가능하다.
🔔 RADOS(Reliable Autonomic Distributed Object Store)
Ceph의 기반이 되는 분산 스토리지 시스템으로 RADOS는 분산 환경에서 개체를 저장하고 검색하기 위한 안정적이고 확장 가능한 플랫폼을 제공하도록 설계되었다.
-
모든 데이터는 RADOS를 거쳐 Object로 저장되며, CRUSH(Controlled Replication Under Scalable Hashing)라는 알고리즘을 사용해서 데이터를 저장할 OSD를 빠르고 정확하게 찾아준다.
-
CRUSH는 Ceph 클러스터에서 오브젝트의 위치를 결정하는 알고리즘으로 클러스터의 구조와 규칙을 반영하여 오브젝트의 ID를 OSD의 ID로 매핑한다.
🔔 Ceph 아키텍처

(a) OSD(Object Storage Daemon, ceph-osd)
-
Ceph 클러스터의 각 노드에서 실행되고 데이터를 저장/검색/복제/부하분산하는 역할을 한다.
-
OSD는 하나의 디스크에 하나씩 할당되며, OSD마다 고유한 ID를 가진다.
(b) Monitor(Ceph Monitor, ceph-mon)
-
클러스터의 현재 상태에 대한 map(Ceph 클러스터의 상태 정보를 저장하는 데이터 구조)을 관리하는 역할과 클러스터에 액세스하는 클라이언트 및 OSD에 대한 인증 및 권한 부여를 담당한다.
-
Monitor에는 높은 일관성이 필요하며, Ceph 스토리지 클러스터의 상태에 대한 합의를 보장하기 위해 Paxos 알고리즘을 사용한다.
(c) Manager(Ceph Manager, ceph-mgr)
-
Manager는 구성 관리, 성능 조정 및 유지 관리 작업을 포함하여 Ceph 클러스터의 전체 작업 관리를 담당하며, 모니터 및 OSD와 같은 다른 구성 요소와 조정하여 클러스터가 최고 효율로 작동하도록 한다.
-
Manager는 클러스터 및 해당 구성 요소를 관리하기 위한 RESTful API를 제공한다.
(d) MDS(Ceph Metadata Server, Ceph-mds)
- Ceph FileSystem 서비스에서 파일의 메타데이터를 저장하고 관리하는 역할을 한다.
🔔 Ceph 클라이언트
Ceph는 오브젝트(Ceph Object Storage), 블록(Ceph Object Storage), 파일(Ceph FileSystem) 레벨의 스토리지 인터페이스를 제공한다.

(a) Ceph Object Gateway
-
Ceph Object Gateway(RADOS Gateway, RADOSGW 또는 RGW)는 라이브러리(librados)를 사용하여 구축된 Object 스토리지 인터페이스으로, 라이브러리를 사용하여 Ceph 클러스터와 통신하고 OSD 프로세스에 직접 데이터를 쓴다.
-
RESTful API가 포함된 게이트웨이를 제공하고 Amazon S3나 OpenStack Swift와 호환되는 인터페이스를 가지고 있다.
-
radosgw 라는 데몬을 사용해서 Ceph 클러스터와 통신하고, 사용자 관리나 데이터 복제, 마이그레이션 등의 기능도 제공한다.
(b) RADOS Block Device
-
Ceph Block Device(RADOS block device, RBD)는 RBD 이미지(가상 디스크)를 통해 Ceph 클러스터 내에 블록 스토리지를 제공, RBD 이미지는 클러스터의 서로 다른 OSD에 흩어져 있는 개별 object로부터 구성되고 클러스터 내의 object 간에 데이터를 스트라이핑 할 수 있다.
-
rbd 라는 유틸리티를 사용해서 Ceph 클러스터에 있는 오브젝트들을 RBD 이미지(가상 디스크)로 생성하고 관리할 수 있고, 스냅샷이나 복제, 미러링 등의 기능도 제공한다.
(c) Ceph File System
-
Ceph File System(CephFS)은 Ceph 클러스터에 있는 오브젝트들을 POSIX 호환 파일 시스템으로 만들어 이를 다른 컴퓨터에서 마운트해서 사용할 수 있게 해주고, MDS(Ceph Metadata Server)를 통해 파일의 정보나 권한을 관리한다.
-
mount.ceph 라는 유틸리티를 사용해서 파일 시스템을 마운트하고 관리할 수 있고, 메타데이터 서버를 통해 파일의 정보나 권한을 관리한다.
(d) Placement Groups(PG)

-
Ceph 클러스터에서 오브젝트들을 논리적으로 묶은 단위로 Pool의 하위 집합이다.
-
Ceph는 Pool을 일련의 PG로 분할하고 CRUSH 알고리즘은 클러스터 맵과 클러스터 상태를 고려하여 PG를 클러스터의 OSD에 고르게 배포한다.
(e) Pool

-
PG 의 집합(Object 의 집합)이며 Pool 단위로 PG 를 관리하고 데이터를 저장한다.
-
Pool은 Ceph 클라이언트가 데이터를 저장하거나 접근할 수 있는 인터페이스를 제공하고, 복제 수나 인코딩 방식 등의 속성을 설정할 수 있다.
(f) Pool Type
Pool Type은 복제(Replicated)와 부호화(Erasure-coded)로 구분된다.

-
【복제(Replicated)】 : 오브젝트를 여러 OSD에 복사해서 저장하는 방식으로 데이터 내구성과 가용성이 높지만 저장 공간 효율이 낮다.
-
【부호화(Erasure-coded)】 : 오브젝트를 데이터 조각과 패리티 조각으로 나누어서 저장하는 방식으로, 저장 공간 효율이 높지만 성능과 복잡도가 낮다.
댓글 남기기