1. 程式人生 > >Ceph-智慧分佈CRUSH之Object與PG與OSD

Ceph-智慧分佈CRUSH之Object與PG與OSD

Ceph  智慧分佈CRUSH

Ceph CRUSH演算法(Controlled Replication Under ScalableHashing)一種基於為隨機控制資料分佈、複製的演算法。

基本原理:

儲存裝置通常支援條帶化以增加儲存系統的吞吐量並提升效能,條帶化最常見的方式就是做raid.如raid0.

資料在陣列中的硬碟上是以條帶的形式分佈的,條帶化是指資料在陳列中所有硬碟中的儲存過程。檔案中的資料被分割成小塊的資料段在陣列中的硬碟上順序儲存,這個最小資料塊叫做條帶單元。

決定Ceph條帶化資料的三個因素:

物件大小、條頻寬度、條帶總量

Object 與PG、OSD:

      Ceph

條帶化之後,將獲得N個帶有唯一oid(即object的id).Object id 是進行線性對映生成的,即由file的元資料、ceph條帶化產生的Object的序號連綴而成。此時Object需要對映到PG中,該對映包括兩部分。

1)          由Ceph叢集指定的靜態Hsah函式計算Object的oid,獲取到其Hash值。

2)          將該Hash值與mask進行與操作,從而獲得PG ID。

由PG對映到資料儲存的是幾單元OSD中,該對映是由CRUSH演算法來確定的,將PG ID作為該演算法的輸入,獲得到包含N個OSD的集合,該集合第一個OSD被作為主OSD,其他依次作為從OSD。

注:CRUSH演算法的結果不是絕對不變的,會受到(1)當前系統狀態(2)儲存策略配置

的影響。實際情況,策略配置不會改變,系統狀態一般是裝置損壞。但Ceph對這種情況提供了自動化支援。

在Ceph中,PG的全稱為PlacementGroup,中文名稱為歸置組。顧名思義,PG的用途是將某些東西進行邏輯歸組,從而達到統一管理,提升效率的作用。

而實際也是如此,Ceph通過CRUSH演算法,將若干個object對映到PG上,從而形成一個object與PG的邏輯集合,並以此作為object與OSD的中間層,將PG根據所在POOL的副本數,複製到多個OSD上。下面這個圖描述了object、PG及OSD守護程序之間的對映關係:

1、 PGP起到對PG進行歸置的作用。PGP是PG的邏輯承載體。
2、 PGP的取值應該與PG相同,在PG的值增大的同時,也要增大PGP的值以保持二者的值相同。
3、 當一個POOL的PG增大後,Ceph並不會開始進行rebalancing(資料遷移),只有在PGP的值增大後,PG才會開始遷移至其他的OSD上,並且開始rebalancing。

在cephj叢集裡,當有資料物件要寫入叢集時,需要進行兩次對映。

第一次:object -> PG   第二次  PG -> OSDset  

每一次對映都是與其他物件無關的,體現了CRUSH的獨立性(充分分散)和確定性(可確定的儲存位置)

CRUSH關係分析:

      CRUSH是通過儲存裝置的權重來計算資料物件的分佈的。計算過程中,通過Cluster Map(叢集對映)、Data Distribute Policy(資料分佈策略)和給出的一個隨機數來共同決定資料物件的最終位置。

      Cluster Map : 記錄所有可用的儲存資源及互相之間的空間層次結構(叢集中有多少個機架,機架上有多少伺服器,每個機器上有多少磁碟等資訊)

      Cluster Map 由Device和Bucket構成,它們都有自己的ID和權重值,最終形成一個以Device為葉子節點、Bucket為軀幹的樹狀結構。