Ceph

배병진·2023년 5월 3일
0

Openstack

목록 보기
5/6

Cinder Service에서 잠깐 언급을 하였고, 실제 많이 이용하고 있는 Ceph에 대해 설명하고자 한다.

Ceph 정의

  • 오픈소스 기반의 스토리지 소프트웨어

  • 분산 컴퓨팅 클러스터 환경에서 Openstack을 비롯한 다양한 클라이언트에게 데이터를 저장하기 위한 Object Storage, Blcok Storage제공

  • File System에 접근 가능하게 해주는 Interface를 제공한다.

Ceph 목적

  • 대규모 Storage환경에서 Client에게 장애 없이 지속적ㅇ로 제공

Ceph Storage 구성

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)

  • Object Storage가 RADOS를 사용하기 위해 필요한 데몬
    ex ) RADOS가 데이터를 Object로 저장하기 위해서 REST API를 통해 RADOSGW를 사용해야 한다.

RADOS 와 RADOSGW의 흐름

  • APP >> RESTful API >> RADOSGW >> LIBRADOS >> NATIVE SOCKET

Ceph Blcok Device(RBD, RADOS Block Device)

  • Ceph Sotrage Cluster에서 Block 기반의 Data Storage를 구현하는 소프트웨어

  • 즉, RADOS에서 Block형식으로 데이터를 저장하는 경우에 RBD가 해당 역할을 한다

  • RBD가 RADOS 와 통신하기 위해서 KRBD와 librbd가 필요하다
    - KRBD : 리눅스 서버나 호스트에 Block Device 제공
    - librbd : QEMU/KVM 기반의 가상 머신에 Block Storage 제공

CephFS(Ceph File System)

  • 리눅스 커널에서 호환되는 분산 파일 시스템, 사용자에게 File System을 제공한다

  • 즉, 데이터를 Object로서 File 또는 Directory에 저장가능하게 해준다.

CephFS와 RADOS 프로토콜의 차이

  • RADOS 프로토콜과, 위에 설명한 Daemon 은 OSD와 Monitor를 사용하지만 CephFS는MDS(Metadata Server)를 사용한다.

CephFS 동작 과정

  • Client >> File System >> MDS >> OSD

  • 사용자가 File System 사용 시 MDS는 권한, 소유권, 타임 스탬프, 구조에 대한 정보를 가지고 오면 OSD가 데이터를 제공한다.

Ceph Storage Cluster Daemon 구성 요소

  • 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 장점

  • Storage의 낮은 비용과, 일관된 Storage 시스템 구축
  • Cinder, Glance, Nova, KeyStone 등 Openstack의 Service와 쉽게 통합 가능

Libvirt 데몬 이란?

  • Openstack에서의 Ceph를 사용하기 위한 데몬

  • QEMU/KVM과 같은 하이퍼바이저와 통신하고 이들 하이퍼바이저는 Librbd Library를 통해 OSD 와 Monitor로 구성된 Ceph Block Device와 통신한다.

  • Libvirt Process를 실행 중인 Openstack Node는 Ceph Cluster의 Client이어야 한다.

profile
history and study

0개의 댓글