ceph的crush演算法究竟是怎麼樣的

時間 2021-06-04 02:56:37

1樓:網易數帆

CRUSH僅需要乙份描述集群物理架構的資訊和預定義的規則(均包含在CRUSH map中),便可實現確定資料儲存位置的功能。

在Ceph的RADOS中,還引入了PG的概念用以更好地管理資料,如下圖所示:

RADOS提供的是基於object的儲存功能,每個object會先通過簡單的Hash演算法歸到乙個PG中,PGID再作為入參通過CRUSH計算置入到多個OSD中(這裡object可以看作是檔案,PG即是乙個目錄,OSD是乙個資料根目錄下僅有一級子目錄的簡易檔案系統)。因此,CRUSH提供的功能可以描述為:

with CRUSHMap as context:

CRUSH(PGID) -> [OSD_1, OSD_2, OSD_3, ...]

CRUSH map包含了集群正常情況下完成PG定位所需要的絕大部分資訊,編碼過的decrushmap一般包含以下幾個部分:

Tunables: 可調整的引數列表(僅一部分,非完整列表)

Devices: 儲存裝置列表,列舉了集群中所有的OSD

Types: 型別定義,一般0為OSD,其它正整數代表host、chassis、rack等

Buckets: 容器列表,指明了每個bucket下直接包含的children項及其權重值(非OSD的items統稱為bucket)

Rules: 規則列表,每個規則定義了一種選取OSD的方式

更詳細的解析可以參考:CRUSH演算法的原理與實現

2樓:vmcloud

從應用的角度來看,Ceph中乙個Object儲存Ceph管理的磁碟的流程如下:

obj-- (簡單Hash演算法) -->PG-- (CRUSH演算法) -->OSD Set

其中,OSD Set可以理解為是處於容錯域下的一組OSD(管理程序 + 儲存介質)。

所以,CRUSH演算法解決的最重要的問題就是給乙個PG找到乙個OSD set,即為同乙個資料物件找到最合適的停靠點,這也是目前分布式儲存系統解決的最重要的乙個問題。

Ceph在實現的時候因為有個中間的PG層,PG是不變的,當網路結構變化或者機器有增減的時候,使用者是感知不到的, 只不過PG與OSD Set的對應關係發生了改變,這會導致在後台進行相應的資料遷移工作。

3樓:李明

當儲存節點增加後,需要對資料進行遷移,根據不同的bucket資料的遷移量也有不同。比如uniform bucket,本質上是取模,需要將資料重新分布;如果是list bucket,則資料只需要從老的機器上遷移到新新機器上,演算法保證遷移的資料量是最優的。

男人究竟是怎樣的?

Josh 如果你的媽媽不是選擇大發脾氣選擇1知道裝不知道靜待緣分了結 2想挽回只能通過女人示弱的辦法一哭二鬧三上吊等類似你的爸爸可能會安慰她。這兩種可能會帶來不同的結果。你的爸爸既然是那樣的人說明1沒有責任心 2不知道什麼事情該做什麼事情不該做這個屬於道德範疇。告訴媽媽不要傷心如果你覺得痛苦可以選擇...

小年究竟是哪天?

不同地區的小年可能不一樣把,北方大部分地區 臘月二十三 北方小年 古時北方地區也是在臘月二十四過小年的,從清朝中後期開始帝王家就於臘月二十三舉行祭天大典,為了 節省開支 順便把灶王爺也給拜了,因此北方地區百姓上行下效也提前一天在臘月二十三過小年。南方大部分地區 臘月二十四 民間傳統小年 早在宋朝就有...

智商究竟是何物?

智商,即智力商數 Intelligence Quotient 也就是個人智力測驗成績和同年齡被試成績相比的指數,是衡量個人智力高低的標準。智力,主要是6個方面的能力 記憶力 計算力 邏輯推理能力 空間想象力 觀察力抽象力 創造力。 虎喵老爺 知識起源於人類實踐中 記憶 識別 判斷和聯想 等經驗的意識...