OSD 클러스터 맵은 장애, 복구, 새로운 스토리지 추가 등으로 변경되며, Ceph는 이를 처리하기 위해 각 Object의 버전 번호와 최근 변경 로그(업데이트 또는 삭제된 Object의 이름 및 버전)를 관리
active OSD가 MON으로부터 클러스터 맵 업데이트를 받으면 자신이 관리 중인 Placement Groups(PG)를 모두 확인하고 CRUSH 알고리즘을 사용해, 자신이 각 PG에서 Primary 역할을 할지, Replica 역할을 할지를 계산.
PG의 구성원(PG membership)이 변경되었거나 OSD가 부팅된 경우 해당 PG를 공유하는 다른 OSD들(peer)과 동기화(peering) 과정을 시작.
복제된 PG(replica)의 경우, OSD는 자신이 보유한 해당 PG(replica)의 현재 버전 번호(PG version number)를 Primary OSD에 제공.
반대로, OSD가 해당 PG의 Primary 역할을 맡는 경우, 현재 복제본과 이전 복제본의 PG 버전 번호를 수집.
Primary OSD가 최신 PG 상태를 보유하고 있지 않은 경우, 현재 또는 이전 복제본 OSD(current or prior OSDs)로부터 최근 PG 변경 로그(PG change log) 또는 전체 내용 요약(content summary)을 받고, 이를 통해 올바르고 최신 상태의 PG 콘텐츠를 결정.
Primary OSD는 각 복제본 OSD에 증분 로그 업데이트(incremental log update) 또는 전체 내용 요약을 보냄.
이로써 모든 OSD가 동일한 PG 콘텐츠 상태를 알게 됨
Primary OSD가 올바른 PG 상태를 확인하고, 이를 복제본 OSD에 공유한 뒤에만, 해당 PG에 대한 I/O 요청 처리가 허용됨.
각 OSD는 background에서 독립적으로 누락된 데이터나 구버전 데이터를 다른 Peer OSD로부터 복구. 구버전 또는 누락된 object 요청 시 요청 처리를 지연시킨 후 누락된 object를 복구 큐(Recovery Queue)의 가장 앞에 배치하여 즉시 동기화.