[Ceph] Placement Groups

gyunn35·2023년 4월 26일
0

ceph

목록 보기
1/1

Reference

Placement Groups(PGs)는 OSDs에 Object들을 저장할 때, OSD 지정을 위한 연산 횟수를 줄이기 위해 존재한다. 이름 그대로 배치 처리 장치라고 보면 된다.

Client로부터 넘어온 데이터는 최종적으로 여러 개의 Object들로 나뉘어 OSDs에 저장되는데, Ceph은 이렇게 생성된 Object들을 여러 개의 OSDs에 적절하게 분산하여 저장한다.

이때, Object 하나를 대상으로 저장될 OSD를 정한 후 저장 연산을 수행하는 것보다, 일단 어디에 저장될 지 지정한 후에 일련의 Object들을 한 번에 OSD에 저장하는 것이 더 효율적이기 때문에 PGs가 존재하는 것이다. 이렇게 Object들을 모아서 저장하는 이유는, CPU 연산에 비해 I/O 작업이 훨씬 시간을 많이 소모하기 때문이다.

요약하면, 데이터를 여러 OSD에 분산하여 저장하는 과정은 다음과 같다.

  1. 데이터를 여러 개의 Object들로 변환한다.
  2. 여러 개의 Object들을 PGs에 골고루 분산하여 배치한다.
  3. 하나의 PG에 배치된 일련의 Object들을 한 번에 지정된 OSD에 저장한다.

이렇게 OSD로 넘어간 일련의 Object들은 CRUSH 알고리즘에 의해 서브 OSD들로 복제된다. 물론, replicated pool을 사용할 때는 복제되고, erasure coding pool을 사용할 때는 여러 개의 조각(+coding chunk)으로 나뉘어 저장된다.

profile
전부 기록

0개의 댓글