ceph學習筆記之四PG
PG
PG(Placement Group)單從名字上可理解為一個放置策略組,它是對象的集合,集合裏的所有對象具有相同的放置策略;對象的副本都分布在相同的OSD列表上。一個對象只能屬於一個PG,一個PG對應於放置在其上的OSD列表。一個OSD上可以分布多個PG。
PG是一組對象的邏輯集合,也可將PG看成一個邏輯容器,容器裏面包含多個對象。
圖中PG1、PG2同處於一個Pool,所以是副本類型,並且是兩副本。
PG1、PG2裏包含許多對象,PG1上的所有對象,主從副本分布在OSD1和OSD2上,PG2上的所有對象的主從副本分布在OSD2和OSD3上。
一個對象只能屬於一個PG,一個PG包含多個對象。
一個PG的副本分布在對應的OSD列表,在一個OSD上可以分布多個PG。
計算PG數
計算ceph集群中的PG數公式:
PG總數=(OSD總數*100)/副本數
結果必須舍入到最接近2的N次冪的值。
計算每個Pool的PG數,公式:
PG總數=((OSD總數*100)/副本數)/Pool數
結果必須舍入到最接近2的N次冪的值。
PG與OSD
在實際集群中由PG映射到實際存儲數據的OSD中,該映射規則是CRUSH算法來確定的
首先將PG ID作為CRUSH算法的輸入,獲取到包含N個OSD的集合,集合中的第一個OSD將被作為主OSD,其他的OSD則依次作為從OSD。N表示該PG所在Pool下的副本數,在實際生產環境中N一般為3,表示3副本數。3副本表示將一個PG復制到3個不同節點OSD上。集合中的OSD將共同維護該PG下的Object。
CRUSH算法並不是絕對不變的,會受其他因素影響,影響因素主要有:
1、當前系統狀態(Cluster Map)
當系統中的OSD狀態、數量發生變化,會引起Cluster Map發生變化,這邊變化就會影響PG與OSD的映射關系。
2、存儲策略配置 (存儲策略主要與數據安全相關)
通過策略可以指定同一個PG的3個OSD分別位於數據中心的不同服務器甚至不同機櫃上,從而更加完善存儲的可靠性。
總結:只有在Cluster Map和存儲策略都不發生變化的情況下,PG和OSD之間的映射關系才會不變。
為什麽選擇CRUSH算法?
之所以在PG映射過程中選擇CRUSH算法而不是其他的Hash算法,原因有以下幾點:
1、CRUSH同態特性
利用CRUSH同態特性,ceph才可以將一個PG根據具體需求動態遷移到不同的OSD上,從而自動化實現高可靠、數據分布負載等特性,即使PG與OSD的映射關系發生了變化,對上層應用不會造成太大的困擾。
2、可配置特性
通過對存儲策略的配置,使用配置參數決定OSD的物理位置映射策略。
3、特殊的穩定性
當集群中加入新的OSD使規模增大時,大部分PG與OSD之間的映射關系並不會發生改變,只有少部分PG的映射關系會發生變化並觸發數據遷移。
本文出自 “無詺IT小站” 博客,謝絕轉載!
ceph學習筆記之四PG