1. 程式人生 > >超融合叢集資料分佈原理

超融合叢集資料分佈原理

    超融合是通過軟體定義基礎架構整合計算、儲存、網路和虛擬化資源。超融合基礎架構的目標是提供更為簡易的方式,它通過軟體定義儲存和伺服器虛擬化的整合,以替代傳統SAN儲存的方式來建設資料中心。超融合更注重基於低成本的X86伺服器來達到資料的管理和控制。在超融合中,叢集資料分佈起了較關鍵的作用。

超融合叢集資料分佈概念

  1. Ojbect —— object即“物件”,是檔案切片後生產的邏輯物件,object的最大size通常限定為2MB4MB,以便實現底層儲存的組織管理。
  2. PGPlacement Group)——顧名思義,PG的用途是對object的儲存進行組織和位置對映。具體而言,一個PG負責組織若干個
    object(可以為數千個甚至更多),但一個object只能被對映到一個PG中,即,PGobject之間是“一對多”對映關係。同時,一個PG會被對映到nOSD上,而每個OSD上都會承載大量的PG,即,PGOSD之間是“多對多”對映關係。在實踐當中,n至少為2,如果用於生產環境,則至少為3。一個OSD上的PG則可達到數百個。
  3.  OSD —— 即Object Storage Device主要功能包括:儲存資料,副本資料處理,資料恢復,資料回補,平衡資料分佈,並將資料相關的一些兒監控資訊提供給至少2 OSD,才能有效儲存兩份資料。

軟體定義儲存

    雲巨集超融合是整合了自主研發的伺服器虛擬化平臺

CNware和自主研發的高效能分散式檔案系統WinStore

    軟體定義儲存(WinStore)基於開源的Ceph並做了深度的優化和功能開發。雲巨集在2015年超融合元年推出了Winhong HCI v1.0,WinStore以模組化的方式執行在WinServer中而不是執行在虛擬機器上,WinStore可以將多臺物理機上面的本地SSD和HDD組成一個虛擬的儲存池,利用多臺x86伺服器分擔儲存負荷,利用位置伺服器定位儲存資訊,它不但提高了系統的可靠性、可用性和存取效率,還易於擴充套件。

資料分佈演算法-CRUSH演算法

    CRUSH演算法是WinStore的基石,是一種可擴充套件的偽隨機資料分佈演算法,用於控制資料的分佈,能夠高效穩定的將資料分佈在普通的結構化叢集中。

CRUSH演算法有以下特徵:

  • 去中心化架構,無元資料伺服器,讀寫效能不會因為叢集的擴大而降低;
  • 在相同的環境下,相似的輸入得到的結果之間沒有相關性,相同的輸入得到的結果是確定的;
  • 確保資料儘可能的平均分佈在叢集的各個節點的所有硬碟上;
  • 在增刪節點導致儲存目標數量出現變化時,能夠最小化叢集間的資料遷移量;

資料分佈過程

    WinServer與WinStore融合部署,WinServer虛擬機器的虛擬磁碟直接使用WinStore提供的rbd塊裝置。在虛擬機器上一個檔案的寫入過程中,首先會將檔案分片,分成多個object,每一個object都可能會寫入到不同的HDD(OSD)上,均衡分散到整個叢集中。


  • WinStore首先將檔案分片(2M),分成多個object,產生object id;
  • 根據虛擬磁碟所屬的儲存池Pool和object id,通過雜湊演算法和取模,得出所屬的PG(Placement Group)的ID;PG 在 Pool 被建立後就會根據 CRUSH 演算法計算出來的 PG 應該所在若干的 OSD 上被創建出來了。也就是說,在客戶端寫入物件的時候,PG 已經被建立好了,PG 和 OSD 的對映關係已經是確定了的;
  • 然後將PG的值傳給CRUSH演算法,由CRUSH演算法得出對應的主從OSD;
  • 資料寫入到與主從OSD所對應的SSD後,即給上層的業務系統返回寫入成功的資訊;
  • 最後WinStore會根據一定的規則,將SSD中的資料刷寫到持久化儲存HDD磁碟中。

    由此可見,系統指定的一個靜態雜湊函式計算object id的雜湊值,將object id對映成為一個近似均勻分佈的偽隨機值。然後,將這個偽隨機值和mask按位相與,得到最終的PG序號(pgid)。根據系統的設計,給定PG的總數為m(m應該為2的整數冪),則mask的值為m-1。因此,雜湊值計算和按位與操作的整體結果事實上是從所有m個PG中近似均勻地隨機選擇一個。基於這一機制,當有大量object和大量PG時,RADOS能夠保證object和PG之間的近似均勻對映。又因為object是由file切分而來,大部分object的size相同,因而,這一對映最終保證了,各個PG中儲存的object的總資料量近似均勻。

    其中PG對映到OSD中使用CRUSH演算法,而不是其他雜湊演算法,原因之一正是CRUSH具有可配置特性,可以根據管理員的配置引數決定OSD的物理位置對映策略;另一方面是因為CRUSH具有特殊的“穩定性”,也即,當系統中加入新的OSD,導致系統規模增大時,大部分PG與OSD之間的對映關係不會發生改變,只有少部分PG的對映關係會發生變化並引發資料遷移。

    這種可配置性和穩定性都不是普通雜湊演算法所能提供的。因此,CRUSH演算法的設計也是WinStore的核心內容之一。