大型分散式檔案系統傳統上需要中繼資料來記錄每個區塊或物件所在的位置。到了 PB 級規模,這些配置對照表便成了協調、復原與重新平衡上的難題。

Ceph 的答案是 CRUSH:一種偽隨機放置函式。用戶端與儲存節點可以根據物件名稱與叢集對照表計算出物件的位置,而不必向中央對照表查詢。

OSDI 論文報告指出,Ceph 每秒可支援超過 250,000 次中繼資料操作,而 CRUSH 的發表則將該演算法定位為可支援數萬至數十萬個儲存裝置,同時避免使用中央目錄。

把放置變成一個函式

確定性的放置函式讓每個參與者都能獨立找到同一個物件。

權重與故障域規則保留了機架、裝置容量等現實世界的限制條件。

小幅的拓撲變更只會搬移必須搬移的資料,使擴充與故障的干擾更小。

移除配置清單後,中繼資料伺服器的工作縮減為命名空間,而不再需要記錄每個位元組的位址。

在極端規模下,刪除協調機制可能比最佳化協調機制更重要;一個共享的確定性函式可以取代共享的可變目錄。

CRUSH 成為 Ceph 的標誌性構想之一,並協助該專案成為一個長久可靠的開源儲存系統。其美妙之處在於架構層面:在 PB 級規模下,最好的目錄就是根本沒有目錄。

追溯依據

參考來源

  1. CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data Storage Systems Research Center, UC Santa Cruz · ssrc.us
  2. Ceph: A Scalable, High-Performance Distributed File System USENIX · usenix.org ·