Traditional distributed file system
Object based storage based architecture
( https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1222722)


모든 메타 작업은 MDS가 직접 동기적으로 처리 (업데이트 직렬화)
대신 common metadata access를 최적화
메타데이터를 더 오래 캐싱하여 성능을 향상시킬 수 있지만, 현실적으로 이는 파일 상태(stat) 정보의 일관성(coherency) 손실을 초래.
Ceph는 일관성은 유지하면서 성능을 개선하기 위해 아래와 같은 방식으로 인터페이스를 확장.
primary-copy caching strategy
dynamic subtree partitioning strategy
MDS 간 부하를 비교해 특정 MDS가 과부하 상태인 경우, 작업량이 많은 서브트리를 다른 MDS 로 이전
Long-Term Storage(OSD Cluster)와 Namespace Lock을 통해 안전한 마이그레이션 지원
기존 MDS(MDS1)의 메모리 캐시에 저장된 메타데이터를 새로운 MDS(MDS2)로 전송
마이그레이션은 Two-Phase Commit 방식으로 진행

The resulting subtree-based partition is kept coarse to preserve locality
minimize prefix replication overhead
Data Distribution

CRUSH(Controlled Replication Under Scalable Hashing)
cluster map hierarchy
CRUSH는 Placement Rule에 따라 PG를 OSD에 매핑하며, 이 규칙은 Replication 수준과 배치 제한(constraints on placement)을 정의.
cluster map 동기화
cluster map은 down 또는 inactive device 리스트와 함께 맵이 업데이트 될 때마다 증가하는 epoch number를 포함
클라이언트는 OSD에 요청을 보낼 때, 자신이 현재 알고 있는 클러스터 맵의 에포크(epoch) 번호를 함께 전달해 OSD가 해당 맵이 최신 상태인지 확인.
맵이 변경되면, 협업하는 OSD 간(cooperating OSDs)에 맵 증분 업데이트(Incremental map updates)가 공유.

ext3와 같은 로컬 파일 시스템을 기반으로 설계된 분산 파일 시스템은 Object Workload에 부적합
Ceph OSD는 EBOFS를 통해 Local Object Storage를 관리
EBOFS는 적극적으로 디스크 쓰기를 스케줄링함
EBOFS는 B-tree 서비스로서 디스크에서 오브젝트를 검색하고, 블록 할당을 관리하며, 컬렉션(Placement Group)을 인덱싱함.
EBOFS는 Copy-on-Write를 적극적으로 사용