1. 程式人生 > >ceph學習筆記之四PG

ceph學習筆記之四PG

sds ceph cloud 對象 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