Computing

[Ceph] 개요 및 특징 (2) (Interface - libRADOS, RADOSGW, RBD, CephFS) 본문

Cloud/Storage

[Ceph] 개요 및 특징 (2) (Interface - libRADOS, RADOSGW, RBD, CephFS)

jhson989 2023. 2. 2. 22:33

이전 글

- [Ceph] 개요 및 특징 (1) (Object storage 특징, File 저장 예시)

 

이전 글에서 간단히 Ceph라는 Storage cluster에 대해서 정리하였다. 이번 포스터에서는 Ceph의 interface에 대해서 정리해보고자 한다. 공부하는 단계에서 정리하는 자료이기에 틀린 내용이 있을 수도 있다.

 

 

 

Ceph Interface

Fig 1.은 Ceph를 high-level interface 레벨에서 설명하는 그림으로, Ceph architecture를 검색하면 가장 먼저 나오는 그림 중 하나이다. 이 그림은 사용자(client, app 등)가 Ceph를 어떻게 사용할 수 있는 지 방법을 잘 보여준다.

 

Fig 1. Ceph Interface [1]

 

이전 글에서도 정리하였지만, Ceph는 object-based software-defined storage cluster이다. Ceph 자체가 데이터를 저장하는 cluster of storage 역할을 담당하는데, 특별한 hardware로 만들어진 것이 아닌 코딩으로 작성된 software이다(Object가 저장될 때는 기존의 commodity 디스크, SSD, HDD에 저장됨). 특히 storage 역할을 수행하는 Ceph의 핵심 시스템은 object storage 기반으로 설계되었는데, 이 Ceph의 핵심 시스템을 RADOS(Reliable Autonomic Distributed Object Store)라고 한다.

 

RADOS는 Fig 1.의 가장 아래쪽에 표현되어 있는데, 모든 interface들이 최종적으로 RADOS를 호출한다. Fig 1.에서 보듯 이 RADOS는 총 4가지 Interface로 사용자에게 제공된다. 각각 libRADOS, RADOSGW (RADOS Gateway), RBD (RADOS Block Device), CephFS (Ceph File System)이다. 

 

Ceph의 장점은 File-level, Object-level, Block-level의, 모든 레벨의 interface를 자체적으로 제공한다는 것이다. 사용자는 Ceph를 libRADOS, RADOSGW를 통해 Object storage처럼, RBD를 통해 Block storage처럼, CephFS를 통해 File storage처럼 사용할 수 있다. 

 

libRADOS는 RADOS 시스템에 개발자가 직접 접근할 수 있도록 library로 C, C++, JAVA, PHP, Python 등 다양한 언어로 제공된다. RADOS의 가장 기본적인 interface로 RBD, RADOSGW의 기반이 된다. libRADOS는 Ceph의 object storage interface로서, 사용자는 이 interface를 통해 Ceph에 RADOS object를 저장하고 혹은 Ceph에서 읽어올 수 있다. 

 

RADOSGW는 RADOS에 접근할 수 있는 RESTfull HTTP API를 제공하는 서비스(HTTP 서버)이다. 이것 또한 libRADOS와 마찬가지로 object storage interface로서, 사용자가 RADOS object를 저장할 혹은 읽어올 수 있다(Object는 Ceph의 OSD에 저장된다.). aws의 S3, OpenStack의 Swift와 호환되는 API도 제공해준다. 

 

RBD는 RADOS 상에 block device image를 만들 수 있도록 제공하는 서비스이다. 이 인터페이스는 block device storage interface로서, 특히 클라우드(openstack 등) 상 가상머신의 image로 활용된다(Thin-provisioning, Snapshot도 지원). 특히 용량이 큰 이미지를 다수의 objects로 Ceph내 분산 저장함으로서, 병렬적으로 빠르게 읽고 쓰기가 가능하다고 한다. Object는 Ceph의 OSD에 저장된다.

 

CephFS는 Object Storage인 RADOS 상에 File system을 사용할 수 있도록 제공하는 서비스이다. 이 인터페이스는 File storage interface로서, POSIX와 호환되는 API를 제공한다. 일반 사용자는 CephFS를 통해 파일을 폴더 단위로 계층적으로 관리할 수 있게 된다. 다만 File system을 사용하기 위해서는 폴더 계층 정보를 저장해야 하기에 추가적으로 MDS(Metadata server)가 Ceph 클러스터에 포함되어야 한다. 이 MDS가 파일시스템의 메타데이터(directories, file ownership, access modes, etc)를 관리한다(실제 데이터는 여전히 Ceph의 OSD에 저장된다). 

 

 

 

Reference

[1] https://docs.ceph.com/en/latest/architecture/