Why does Placement Group of CEPH need?

Placement Group은 CEPH에서 반드시 필요한 시스템 Component이기도 하지만, 다른 스토리지에서는 찾아볼 수 없는 특이한 구조를 가지고 있다. Ceph 내에서는 Placement 라는 단어를 여러 곳에서 찾아볼 수 있기 때문에 처음 공부하는 사람 입장에서는 많이 헤깔려 하기도 한다. 
여기서는 주로 Placement Group는 무엇이고 왜 이러한 시스템이 필요했는지에 대한 주관적인 의견을 다루고자 한다.
Placement Group(PG)는 일련의 Object(obj)를 하나의 그룹으로 모으고 해당 그룹을 일련의 OSD에 매핑하는 역할을 하는 기본 단위를 의미한다. 
출처: Ceph Docs

위 그림에서 보면 3개의 obj 가 Placement Group(PG) #1에 매핑이 되어 있고 그 PG는 여러 OSD에 분산 되어 있다. 여기에서 궁금한 점은 obj가 OSD에 바로 매핑이 되면 될 꺼 같은데, 왜 중간에 PG가 있어야 하는 걸까?
"obj별로 object placement 및 obj metadata를 추적하는 것은 계산 비용이 많이 듭니다. 즉, 수 백만 개의 obj가 있는 시스템은 obj별로 배치를 현실적으로 추적할 수 없습니다. PG은 성능 및 확장성에 대한 이러한 한계를 해결합니다. 또한 PG은 데이터를 저장하고 검색할 때 Ceph가 추적해야 하는 프로세스 수와 obj별 metadata의 양을 줄입니다."
obj별로 metadata를 추적 관리하는 것은 metadata가 너무 많이 필요하고 그에 따라 metadata를 추적 계산하는데, 많은 계산 비용이 필요하다는 것이 핵심이다. 그럼 보다 상식적인 방식으로 저장하고 있는 Glusterfs의 예를 한번 분석 해 보자.
출처: Glusterfs Docs
Glusterfs에서 File이 위 그림의 Brick으로 데이터가 분산되기 위해서는 기준이 되는 Key값이 필요한데, 이는 File의 Filepath+Filename의 hash값을 사용한다. 즉 데이터를 분산 처리하기 위한 기준 Metadata가 Filepath+filename이 되는 것이다.
이렇게 결정된 분산 위치는 xttr에 저장이 되고 파일 별로 어떤 위치에 저장하고 있는지 관리가 되어야 한다. 

이렇게 했을 때, 어떤 문제가 있을 수 있을까? 기본적으로 데이터는 3 Copy 또는 그 이상의 DISK에 분산 저장이 필요한데, File 하나가 3개 이상 Brick을 매핑해야 한다는 뜻이다. Ceph 처럼 하나의 File이 하나의 PG와 매핑하는 것과 다르게 3배 이상의 Metadata 정보가 필요하다는 것인데, 용량으로 따지자면 매우 작은 용량이기 때문에 크게 영향 받지는 않을 것이다.
하지만, 일반적인 상황이 아닌 장애 상황에서 정합성을 맞추기 위해서 모든 데이터의 Metadata를 뒤져서 이상 유무를 판단하고 필요 시 복원을 해야 하는 과정에서 3배 이상의 Metadata를 조회하고 계산하는 것은 Ceph에서 하나의 File에 하나의 PG만 조회하면 되는 구조 대비 부담이 되는 것은 사실이다.
그렇다고 해서 Glusterfs 가 나쁜 구조를 가지고 있다고 볼 순 없다. 왜냐면, 1대 다 매핑을 가지고 있기 때문에 데이터를 찾는 과정이 단순 해 지고 이로 인해 경우에 따라 보다 빠른 Access를 가능하게 만들기 때문이다. 그에 비해 Ceph는 PG 라는 단계를 거쳐야 함으로 성능 상에 단점이 발생할 수 있는 것이다.
뭐가 더 낫다라는 관점보다는 각 Software Defined Storage가 가진 특수성이 있다고 이해하는 것이 더 나아 보인다.

Ceph PG로 인한 장점 중 하나는 안정성이라고 생각한다. 구조적으로 복잡하긴 하지만, 관리 하기 위한 단위를 PG로 놓고 PG 단위로 데이터 정합성을 체크하고 데이터를 복원함으로써 관리를 단순하게 만들 수 있게 되고 수십 억개 파일의 여러 번 진행되는 안정성 체크를 보다 쉽게 할 수 있게 된다. 
Ceph docs에서 설명하고 있는 계산을 줄여준다는 것이 장점이라고 설명하고 있지만, 경험적으로 Ceph는 다른 스토리지 대비 성능이 떨어진다는 점을 감안 해 본다면 계산을 줄여준다는 점이 장점인지는 잘 모르겠다.

수많은 스토리지 중에서 Ceph 스토리지는 널리 사용되며, 점점 더 사용자는 증가하고 있다. 이는 성능보다는 데이터를 안전하게 보관하고자 하는 사용자의 니즈에 Ceph PG가 중요한 역할을 하고 있는 것이 아닐까 생각 해 본다.



댓글

가장 많이 본 글