1. 程式人生 > >ceph學習筆記之五 Pool與映射過程

ceph學習筆記之五 Pool與映射過程

ceph sds

Pool

Pool是一個抽象的存儲池,它規定了數據冗余的類型以及對應的副本分布策略。目前實現了兩種Pool類型:

Replicated類型和Erasure Code類型。一個Pool由多個PG構成

對象映射過程

對象映射過程指的是查找對象在集群中分布的位置信息,其過程分為兩步:

A、對象到PG的映射。這個過程是靜態HASH映射(加入PG Split後實際變成了動態HASH映射方式),通過Object_id計算出HASH值,

用該Pool的PG的總數量PG_Num對HASH值取模,就可以獲得該對象所在的PG的ID號,其算法公式:

PG_id=Hash(Object_id)% PG_Num
B、PG到OSD列表映射。指PG上對象的副本如何分布在OSD上。使用Ceph自己的CRUSH算法來實現。由PG映射到數據存儲的實際單元OSD中,將PG_id作為算法的輸入,獲得包含N個OSD的集合,集合中第一個OSD被作為主OSD,其他的OSD則依次作為從OSD。N為該PG所在Pool下的副本數,在生產環境中N一般為3。

對象映射圖:

技術分享

通過HASH取模後計算,前3個對象分布在PG1上,後兩個對象分布在PG2上;PG1通過CRUSH算法,計算出PG1分布在OSD1、OSD3上;PG2通過CRUSH算法分布在OSD2和OSD4上。

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

ceph學習筆記之五 Pool與映射過程