Ceph 가볍게 살펴보기

1. Ceph은 무엇인가?

분산 object store이자 file system으로 분산 클러스터 위에서 object storage를 구현해 object, block, file level의 storage 인터페이스를 제공한다. 하나로 object / block storage, file system 모두를 제공한다는게 장점. SPOF 없는 완전한 분산처리와 exabyte 단위까지 확장 가능하다고 한다.

 

2. Ceph architecture

20160801_ceph-stack

<출처 : http://docs.ceph.com/docs/master/architecture/>

실제 data 저장을 담당하는 것은 RADOS이고, CephFS (File System)는 FUSE 지원으로 RADOS에 직접 access가 가능하다. RBD는 일반적인 block device로 붙일 수 있도록 구성된 것으로 LIBRADOS를 통해 RADOS에 access 하도록 되어있고 RADOSGW 역시 LIBRADOS를 통해 object store에 접근할 수 있다. Application이 data를 block device로 ceph에 저장할 경우 ceph은 data를 잘라서 cluster에 replicate 한다.

 

3. 구성요소

(1) ceph-mon

Cluster monitor로 active / failed node 확인하는 역할을 수행하며 ceph storage cluster map의 master copy를 유지하고 각 cluster client들은 ceph monitor로부터 cluster map 정보를 가져가도록 되어있다.

(2) ceph-mds

Metadata server로 inode와 디렉토리들의 메타데이터(filesystem의 디렉토리 및 파일이름, RADOS cluster에 저장된 object로의 매핑정보) 를 저장하며 역시 cluster 구성이 가능하기 때문에 확장 및 cluster host 사이에서의 동적인 data 분산이 가능하다.

(3) ceph-osd

Object storage devices. 실제 파일 내용을 저장하고 OSD의 상태를 확인해서 monitor에 알려주는 역할도 수행한다. 일반적인 cluster system들은 중앙에서 lookup 테이블을 관리하거나 특정 component를 두고 각 client 들이 그 component에 접근하도록 되어있지만 이런 방식이 갖는 performance, scalability, SPOF 관점에서의 제한사항들 때문에 각 client 끼리 상호작용할 수 있도록 CRUSH 알고리즘이란 것을 사용해 OSD daemon에 직접 접근하도록 되어있다.

(4) ceph-rgw : RESTful gateways. Object storage layer를 외부에 노출시키기 위한 인터페이스

 

4. 참고

(1) http://ceph.com/

(2) https://en.wikipedia.org/wiki/Ceph_(software)

(3) http://docs.ceph.com/docs/master/architecture/