CRUSH(Controlled Replication Under Scalable Hashing)
pseudo-random data distribution function
CRUSH를 통해 각 PG를 정렬된 OSD 리스트(Primary & Replicas)에 매핑
기존 파일 시스템이나 다른 오브젝트 기반 파일 시스템처럼 블록이나 오브젝트 목록(metadata)에 의존하지 않음
오브젝트를 찾기 위해 CRUSH는 Placement Group(PG)과 OSD 클러스터 맵만 필요합니다.
CRUSH는 데이터 분배 문제("데이터를 어디에 저장해야 하는가")와 데이터 위치 문제("데이터를 어디에 저장했는가")를 동시에 해결
설계상, 스토리지 클러스터에 작은 변경(장치 장애나 클러스터 확장 등)이 발생하더라도 기존 PG 매핑에 미치는 영향을 최소화하여 데이터 마이그레이션을 줄임.
cluster map hierarchy
이러한 계층은 장애 구역(failure domain)을 정의하여, 장애가 발생했을 때 영향을 최소화할 수 있도록 설계.
각 OSD는 가중치 값(weight)을 가지고 있어, OSD에 할당되는 데이터 양을 제어.
CRUSH는 Placement Rule에 따라 PG를 OSD에 매핑하며, 이 규칙은 Replication 수준과 배치 제한(constraints on placement)을 정의.
cluster map 동기화