官术网_书友最值得收藏!

3.5 CRUSH算法

CRUSH算法是Ceph的設計精髓,主要通過計算來確定數據的存儲位置,不需要像以往要查詢元數據服務器才能知道數據的位置。這也是Ceph不需要元數據服務器的原因。CRUSH是受控復制的分布式hash算法,是一種偽隨機算法。CRUSH算法可以避免單點故障、性能瓶頸以及對Ceph可擴展性的物理限制。

CRUSH依賴集群的映射圖,使用CRUSH Map偽隨機地存儲和檢索OSD中的數據,并使數據在整個集群中均勻分布。CRUSH Map包含OSD列表,用于將設備聚合到物理位置的桶列表中,并告訴CRUSH如何在存儲池中復制數據的規(guī)則列表。通過映射底層物理基礎架構信息,CRUSH可以規(guī)避相關硬件設備故障帶來的風險。典型的故障來源包括物理上臨近的資源,如共享的電源和共享的網絡等。此信息可以編碼到Cluster Map。CRUSH利用這些信息可以指定放置策略,可以在不同故障域之間分離對象副本,同時保證所需的數據均勻分布。這樣,即便某個服務器或者某個機架故障也不會影響整個集群的正常使用,還能保證數據的安全。例如,為了解決并發(fā)故障,我們可能需要確保數據副本位于使用不同機架、電源組、控制器和/或物理位置的設備上。

部署大型數據集群時,我們應充分考慮自定義的CRUSH Map,因為它將幫助你管理Ceph集群,提高性能并確保數據安全。例如,如果OSD出現故障,且你需要更換硬件時,CRUSH Map可以幫助查找OSD發(fā)生故障的主機的物理數據中心、房間和機架等資源,快速定位壞盤所在位置。同樣,CRUSH可以幫助你更快地識別故障。例如,如果特定機架中的所有OSD同時下線,故障可能出在網絡交換機/機架/網絡交換機的電源上,而不是OSD本身。當與故障主機關聯的放置組處于degraded狀態(tài)時,CRUSH Map還可以幫助識別Ceph存儲數據的冗余副本的物理位置。

CRUSH Map分為三個主要部分。

·Device:ceph-osd守護進程相對應的任何對象存儲設備。

·Bucket:包括存儲位置(例如機架、主機等)的關系和權重。

·Ruleset:選擇Bucket的規(guī)則集。

1.Device

通常,Ceph集群使用多種類型的存儲設備,包括HDD、SSD、NVMe及其混合。我們將這些不同類型的存儲設備稱為Device Class,以避免與CRUSH Bucket的type屬性混淆(例如主機、機架)。由SSD支持的OSD比由傳統(tǒng)機械磁盤支持的OSD運行快得多,因此其更適合大的工作負載。Ceph可以為不同類型的數據集或工作負載創(chuàng)建池,并分配不同的CRUSH規(guī)則來控制這些池中數據的放置。因此,Device是區(qū)分物理設備屬性的,為將來存儲具備特定屬性的數據提供描述依據。

2.Bucket

簡單來說,Ceph集群中有很多硬件設備,從上到下可能涉及某些邏輯單元,類似數據中心→設備所在機房→機架→行→服務器→OSD盤等的關系。那么,如何描述這些邏輯單元的關系、組織好這些關系、定義相應的故障域,以提高集群的數據安全性、可用性以及定位故障的速度等?Bucket專門用于描述以上提到的這些邏輯單元屬性,以便將來對這些屬性按樹狀結構進行組織。我們可以通過Ceph命令查看其組織結構。Bucket類型如表3-2所示。

表3-2 Bucket類型

我們可通過圖3-3更加清晰地了解Bucket的作用,完成物理設備資源的相關故障域的管控。

圖3-3 Bucket的成員組織關系

3.Ruleset

CRUSH Map包含CRUSH Rule的概念。CRUSH Rule是確定池中數據放置的規(guī)則。對于大型集群,你可能會創(chuàng)建許多池,其中每個池都有自己的CRUSH Ruleset(規(guī)則集)和Rule(規(guī)則)。默認的CRUSH Map有默認的Root規(guī)則,如果需要更多的規(guī)則,需要后續(xù)創(chuàng)建,或者在創(chuàng)建新池時指定規(guī)則讓Ceph自動創(chuàng)建。這些規(guī)則集主要是讓你知道數據存放在哪里。它包含副本方式或糾刪碼方式的使用規(guī)則,以及Bucket的層級組織形式等。

主站蜘蛛池模板: 扶风县| 泰安市| 通河县| 和平区| 克什克腾旗| 临安市| 龙泉市| 新密市| 文昌市| 伊金霍洛旗| 古交市| 南郑县| 登封市| 社会| 临武县| 唐海县| 中方县| 衡南县| 洛川县| 浦县| 长岛县| 鄂托克前旗| 安平县| 凤冈县| 丰都县| 洛浦县| 衡水市| 开封市| 曲水县| 府谷县| 手机| 资兴市| 昆明市| 通州区| 小金县| 交口县| 尉犁县| 临高县| 屏东县| 上林县| 肇州县|