Cinder Service에서 잠깐 언급을 하였고, 실제 많이 이용하고 있는 Ceph에 대해 설명하고자 한다.
오픈소스 기반의 스토리지 소프트웨어
분산 컴퓨팅 클러스터 환경에서 Openstack을 비롯한 다양한 클라이언트에게 데이터를 저장하기 위한 Object Storage, Blcok Storage제공
File System에 접근 가능하게 해주는 Interface를 제공한다.
RADOS(Reliable Autonomous Distributed Object Store)
복구 및 관리 가능한 스토리지 노드
Ceph Storage Cluster 구성
Object Storage, Block Storage, File Storage 제공
RADOS는 하드웨어(Disk), File System, OSD(Object Storage Daemon)로 구성
- OSD : File System, Disk를 관리해주는 소프트웨어
LIBRADOS(Library for RADOS)
RADOS 접근에 필요한 Library, API
Socket과 같은 프로토콜 이용하여 RADOS와 LIBRADOS가 통신
통신을 위한 Socket에는 PHP, HTTP, JAVA, C++ 등의 언어 지원
RADOSGW(RADOS GateWay)
Ceph Sotrage Cluster에서 Block 기반의 Data Storage를 구현하는 소프트웨어
즉, RADOS에서 Block형식으로 데이터를 저장하는 경우에 RBD가 해당 역할을 한다
RBD가 RADOS 와 통신하기 위해서 KRBD와 librbd가 필요하다
- KRBD : 리눅스 서버나 호스트에 Block Device 제공
- librbd : QEMU/KVM 기반의 가상 머신에 Block Storage 제공
리눅스 커널에서 호환되는 분산 파일 시스템, 사용자에게 File System을 제공한다
즉, 데이터를 Object로서 File 또는 Directory에 저장가능하게 해준다.
Client >> File System >> MDS >> OSD
사용자가 File System 사용 시 MDS는 권한, 소유권, 타임 스탬프, 구조에 대한 정보를 가지고 오면 OSD가 데이터를 제공한다.
Monitor(ceph-mon)
Monitor MAP
- 전체 구성 상태 정보
Manager MAP
OSD MAP
CRUSH MAP(Controlled Replication Under Scalable Hashing MAP)
- 데이터를 스토리지에 저장하고 검색하기 위해 사용 되는 알고리즘
- MAP을 포함해서 Cluster의 상태 정보 관리하는 데몬
- 이러한 MAP들은 Ceph Daemon들이 서비스를 제공하기 위해 필요로 하고, Monitor는 이러한 Daemon들과 Client 사이에 필요한 인증 관리도 담당한다.
- 추가적으로 Redundancy(시스템 이중화)와 고가용성(HA)를 고려한다면 적어도 세 개의 Monitor가 필요하며 데몬은 항상 홀수 단위로 구성돼야 한다.
Manager(ceph-mgr)
- Ceph의 Runtime 메트릭스와 현재 상태, 스토리지 사용량, 메트릭스의 현재 성능, 부하량에 대한 데이터를 찾아내는 Daemon
- 웹 기반의 Dashboard와 REST API를 포함해서 Ceph Cluster의 정보를 관리하고 이를 외부로 전달하기 위해 Plug-in을 사용한다.
- HA를 고려하여 두 개의 Manager Daemon이 필요하다
Ceph OSD(Ceph Object Sotrage Daemon)
- 데이터를 저장하고 데이터 복제, 복구, Rebalancing의 작업을 제공하는 Daemon
- OSD는 Heartbeat를 사용하여 다른 OSD 상태를 점검하고 그 결과를 Manager, Monitor에게 제공한다.
- HA를 고려하여 세 개 이상의 OSD가 있어야 한다.
- OSD는 HDD나 SSD와 같은 디스크에 파일 시스템을 설치하고 이들 각 디스크 내에 존재하게 된다.
MDS(Metadata Server, Ceph-mds)
- File System에 대한 Metadata를 저장하기 위해 사용되는 데몬이다.
- 위에서 잠깐 언급한 내용이지만 Metadata에는 권한, 소유권,Time Stamp와 Directory 구조 등을 포함한 데이터이다
- Ceph Block Device, Ceph Object Storage는 MDS를 사용하지 않는다.
Openstack에서의 Ceph를 사용하기 위한 데몬
QEMU/KVM과 같은 하이퍼바이저와 통신하고 이들 하이퍼바이저는 Librbd Library를 통해 OSD 와 Monitor로 구성된 Ceph Block Device와 통신한다.
Libvirt Process를 실행 중인 Openstack Node는 Ceph Cluster의 Client이어야 한다.