簡體   English   中英

為什么 Ceph 用 object hash 而不是 CRUSH 算法計算 PG ID?

[英]Why Ceph calculate PG ID by object hash rather than CRUSH algorithm?

Ceph 使用 CRUSH 算法進行 PG->OSD 映射,它適用於增加/減少 OSD 節點。

但是對於 obj->PG 映射,Ceph 還是使用傳統的 hash,即pgid = hash(obj_name) % pg_num 如果我們改變 PG 的數量,這種方法可能會導致大量的數據遷移,甚至會降低系統的可用性。

為什么 Ceph 不使用 CRUSH algirhtm(比如稻草 2)進行 obj->PG 映射,當 PG 的數量發生變化時,它可能具有最佳的數據遷移量?

有不同的場景,我認為 CRUSH 不是靈丹妙葯。

  1. PG->OSD 是一對多的 function 而 obj->PG 是一對一的 function。
  2. OSD 的添加和刪除相當頻繁,而 PG 被認為是相當穩定的。
  3. OSD 組可能部分不可用,而 PG 不會。

這是我的看法,歡迎批評或討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM