3. Goal
• Ceph에서 Data가 완전히 망실(permanent data loss)되는 Case를 통해,
Ceph의 Durability 및 운용 메커니즘에 대한 이해.
4. Summary of Scenario
• 특정 PG를 담당하는 1번째 OSD 망실.
• 망실된 OSD를 사용하는 PG의 Replica수가 3에서 2로 감소.
• Ceph는 새로운 OSD를 선택하여, 장애 PG의 3번째 Replica 복구 시작.
• 1번째 OSD 복구완료전, 동일 PG의 2번째 OSD 망실.
• 해당 PG의 Replica는 이제 1개만 남음.
• Ceph는 또 다시 신규 OSD를 선택하고, 원하는 Replica 만큼 복제 시도.
• 1,2 번째 OSD에 대한 복구가 완료 되기 전, 마지막 OSD마저 추가 망실.
• 해당 PG의 데이터는 영구적 망실(permanent data loss).
34. About “Long Time”(1)
• 본 시나리오에서 1번째 OSD의 망실은, 512개 PGs들 중, 약 150개의 PG
들의 Replica 하나를 잃었다는 것을 의미함. (512 × 3 ÷ 10)
• 유실된 Replica 1개를 복구 하기 위해, 남아 있는 9개 OSD들 중 하나를 대
체 OSD로 선택.
• OSD들은 상호간에 유실된 150개의 PG의 복구 복제본을 주고 받음.
• 이 과정에서 시간 소요가 필연적으로 따르며, 이 시간 소요는 Ceph 클러스
터 아키텍처에 따라 달라짐.
35. About “Long Time”(2)
• (가정)
• PGs는 전체 OSD들에 대해 균일하게 분산배치 되어 있으며, 1TB SSD타입의 OSD
가 모두 단독 머신을 사용하고 있고, 각 머신은 10Gbps 대역폭으로 스위치와 연결되
어 있는 상황에서, 망실된 하나의 OSD를 완전히 복구 하는데 M분의 시간이 걸린
다고 가정하자.
36. About “Long Time”(3)
• 일반적으로 Ceph에서 PGs 수는 Durability 및 Recovery 속도에 거의 영
향을 미치지 않음.
• 그러나, OSD수가 10에서 20으로 증가 할 경우, Recovery 속도는 증가 할 것
이고, 이는 곧 Durability가 현저히 증가함을 의미.
• 각 OSD는 10개 일 때, 150개의 PG를 처리하게 되지만, 20개의 OSD가 되면 단
75개만 처리하면 됨. (OSD당 관리 대상 감소 -> OSD당 복구 대상 감소)
• 10개의 OSD가 100GB를 복제 해야 한다면, 20개의 OSD상황에서는 50GB만 복제 하면 됨.
• 또한, 데이터 복구를 9대가 수행 하였지만, 19개가 수행하게 되므로, 컴퓨팅/네트웍
병목만 없다면 당연히 복구 속도는 상승.
37. About “Long Time”(4)
• 만일 이 클러스터가 40 OSD로 증가 된다면?
• 각 OSD는 35 PGs만을 담당.
• 한 OSD가 죽었을 경우, 20 OSD 경우보다, 더욱 빠르게 복구 될 것임.
• 더 나아가, 200 OSD까지 증가 시킨다면?
• 각 OSD는 겨우 7 PGs만을 담당.
• 한 OSD가 죽었을 경우, 최대 21개 (7PGs * 3Replica) OSD만이 복구 작업에 참여
못함. (나머지 179개의 OSD들은??? -> 비효율)
• 40개일 때 보다 오래 걸림.
• (40개 OSD일 경우는 OSD당 35PGs이므로, 40개 OSD모두 병렬 복구 작업 수행.)
• 이 경우, PG수를 늘려야 함. (가능한 모든 OSD가 복구 작업에 참여 유도)
39. About “Durability”(1)
• PGs는 Durability와는 무관.
• 그냥 CURSH 연산 비용을 줄이기 위한 논리적 그룹 개념.
• 당연, 복구 시간이 짧으면 좋지만, 그게 전부가 아님.
• 처음 (가정)의 상황에서,
• 10개 1번째 OSD가 망실되어, 나머지 9개 OSD중 하나로 150PGs의 복구작업 중,
• 2번째 OSD가 추가 망실되면, 17(≅ 150 ÷ 9) PGs에 해당되는 Replica는 클러스
터 전체에 걸쳐 “오직 하나의 사본만 존재”하게 됨.
• 최악의 상황으로, 2개의 OSD가 망실된 상황(가용 OSD는 8개)에서, 추가로 OSD가
망실되면(동시 3개 망실),
• 2 ≅ 17 ÷ 8 개의 PGs에 속한 모든 데이터는 영구히 유실됨. (Permanently Lost)
40. About “Durability”(2)
• 20 OSD를 가진 클러스터에서, 앞서 3개 동시 망실 케이스를 살펴보면,
• 2번째 OSD 망실
• Replica가 한 개만 남은 PGs는 4 ≅ 75 ÷ 19 개
• 10 OSD 때의 17보다 훨씬 감소한다.
• 3번째 OSD 망실
• 망실된 3번째 OSD가 Replica 한 개만 남은 PGs를 담당하는 OSD일 경우에만, Permanently
Lost가 발생됨.
• 즉, 동시에 3개의 OSD가 망실되더라도, Permanently Lost가 100% 발생되는 것은 아님.
41. About “Durability”(3)
• (가정) OSD복구 중, 추가로 OSD가 망실될 확률이 0.0001%라고 한다면,
• “Permanently Data Lost”가 발생할 확률은,
• 10 OSDs (& 512 PGs)
• 17𝑃𝐺𝑠 × 10𝑂𝑆𝐷𝑠 × 0.0001%
• 20 OSDs (& 512 PGs)
• 4𝑃𝐺𝑠 × 20𝑂𝑆𝐷𝑠 × 0.0001%
42. About “Durability”(4)
• Summary
• OSD가 많을 수록, 복구 속도가 빠름.
• 빠른 속도로 인해, PGs의“Cascading Failure”발생 리스크 감소.
• 50 OSDs 이하 규모에서는 512PGs나 4096PGs나 “Durability”측면에서는 차
이가 없다.
• 권장 PG 계산식
𝑇𝑜𝑡𝑎𝑙 𝑃𝐺𝑠 =
𝑂𝑆𝐷𝑠 ∗ 100
𝑅𝑒𝑝𝑙𝑖𝑐𝑎𝑠