Action disabled: source

Ceph

Software Defined Storage(SDS) 기술이다. Ceph는 분산된 스토리지 시스템을 제공해 SPOF(Single Point Of Failure) 없이 high performance와 scalibility를 제공한다. SDS이기 때문에 하드웨어와 밀접한 관계가 없어 상용 하드웨어 상에서 동작 가능하고 exabyte까지 충분히 확장할 수 있다.

: Ceph는 기본적으로 Object Storage다. Object Storage에 대해 간단히 설명하면 파일-디렉토리와 같은 계층 구조가 없는 flat한 구조를 가지고 있고 키 값을 통해 object를 접근한다. object는 파일 시스템의 파일과 같다고 할 수 있다. 키 값은 파일 이름과 비슷하다. 계층 구조가 없어 물리적인 경로가 전혀 존재하지 않기 때문에 오랜 시간동안 Ceph를 관리할 때 디렉토리 관리를 일일이 하지 않아도 된다. 또한 여러 layer을 쌓아서 Block, File 스토리지로도 제공 가능하다. 그래서 Ceph를 Unified Software Defined Solution이라고 부르기도 한다.

: SDS는 storage infra를 구축하는 비용을 획기적으로 감소시킨다. 기존 Storage Solution은 하드웨어와 밀접하게 결합되어 하드웨어를 자유롭게 선정하기 어려웠고 하드웨어 성능 또한 중요했다. 하지만 SDS는 하드웨어 위에 소프트웨어 계층을 추가함으로써 어떠한 상용 하드웨어 위에서 Software infra를 구축할 수 있다. 또한 클라이언트의 요청을 scale-out을 통해 분산해 처리함으로써 성능도 좋다. 이렇게 SDS를 통해 GB당 사용되는 비용이 확 줄어들 수 있다.

: 기존에는 Storage Architecture로 SAN이나 NAS 시스템을 사용했지만 여러 측면에서 한계가 있었다. SAN, NAS는 storage controller를 HA로 구성하기 위해 보통 두 대의 storage controller을 뒀다. 만약 두 대의 storage controller가 고장난다면 해당 storage system은 동작하지 않는다. 또한 클라이언트가 데이터를 접근할 때 데이터의 경로를 파악하기 위해 메타 데이터를 추적하는 lookup table을 사용하는 데 여러 클라이언트가 데이터를 요청하면 lookup table에 병목이 발생해 performance의 한계가 발생한다.

Ceph는 위 단점을 CRUSH 알고리즘을 활용해 해결한다. CRUSH를 사용하면 metadata 없이 데이터를 찾을 수 있다. 위에서 봤던 lookup table이 필요없다. CRUSH를 사용한 데이터 위치 계산은 storage가 아닌 client에서 실행되기 때문에 storage system의 부담이 줄어든다. CRUSH는 Storage가 어떻게 구성되어 있는 지 알고 있어서 데이터를 적절한 곳에 분산 저장할 수 있다. 이를 통해 SPOF를 없앤다.(Ex. 다른 rack이나 region에 데이터를 저장한다.) 그리고 self-managing, self-healing 기능을 갖추고 있어 어느 곳이든 디스크 Fail과 같은 실패가 발생하면 다른 곳에 자동으로 데이터를 copy한다.

: 우리는 흔히 storage 시스템을 구축하는 데 RAID 기술을 사용했지만 한계가 많다. 현재 RAID의 디스크 하나 용량이 TB단위이다. 이 용량은 계속 증가하고 있다. 만약 TB 단위 디스크가 고장난다면 복구하는 데 몇 시간에서 몇 일이 소요된다. 하지만 Ceph는 용량이 1TB가 안 되는 상용 하드웨어도 사용 가능하고 HA를 구성하는 데 data replication이나 erasure coding을 사용하여 데이터가 여러 디스크에 골고루 저장되기 때문에 디스크를 복구하는 데 많은 디스크가 참여해 복구 시간이 빠르다.

소개