1. 程式人生 > >ceph學習筆記之八 CRUSH

ceph學習筆記之八 CRUSH

sds ceph.crush

CRUSH(Controlled Replication Under Scalable Hashing)

它是一種基於偽隨機控制數據分布、復制的算法。

數據分布式算法的要求:

數據分布和負載均衡

首先要讓數據分布均勻,使數據能均勻的分布在各個節點和磁盤上。其次是負載均衡,使數據訪問(主要是讀寫操作)的負載在各個節點和磁盤上的負載均衡。

靈活應對集群伸縮

系統可以方便的增加或者刪除存儲設備(包括節點和設備失效的處理)。當增加、刪除存儲設備後,能自動的實現數據均衡,並且遷移的數據盡可能的少

支持大規模集群

為了支持大規模的存儲集群,要求數據分布算法維護的元數據相對較小,並且計算量不能太大。隨著集群規模增加,數據分布算法的開銷比較小。

基本原理

CRUSH算法根據種每個設備的權重盡可能概率平均地分配數據。分布算法是由集群可用存儲資源以及其邏輯單元的map控制的。這個map的描述類似於一個大型服務器的描述:服務器由一系列的機櫃組成,機櫃裝滿服務器,服務器裝滿磁盤。數據分配的策略是由定位規則來定義的,定位規則指定了集群中將保存多少個副本,以及數據副本的放置有什麽限制。例如:可以指定數據有三個副本,這三個副本必須放置在不同的機櫃中,使得三個數據副本不公用一個物理電路。

給定一個輸入x,CRUSH 算法將輸出一個確定的有序的儲存目標向量。當輸入x,CRUSH利用強大的多重整數hash函數根據集群map、定位規則、以及x計算出獨立的完全確定可靠的映射關系。CRUSH分配算法是偽隨機算法,並且輸入的內容和輸出的儲存位置之間是沒有顯式相關的。可以說CRUSH 算法在集群設備中生成了“偽集群”的數據副本,集群的設備對一個數據項目共享數據副本,對其他數據項目又是獨立的。

本文出自 “無詺IT小站” 博客,謝絕轉載!

ceph學習筆記之八 CRUSH