Ceph PG數量分析

Placement Group

PG_NUM

建立新池時,算法

ceph osd pool create {pool-name} pg_num

必須選擇 的值,由於它不能(當前)自動計算。下面是一些經常使用的值:pg_numide

  • 少於 5 個 OSD 設置爲 128pg_num
  • 5 到 10 個 OSD 設置爲 512pg_num
  • 10 到 50 個 OSD 設置爲 1024pg_num
  • 若是您有 50 多個 OSD,您須要瞭解權衡以及如何本身計算值pg_num
  • 要本身計算值,請使用pgcalc 工具的幫助pg_num

隨着 OSD 數量的增長,爲 pg_num 選擇正確的值變得更加劇要,由於它對羣集的行爲以及出錯時數據的持久性(即災難性事件致使數據丟失的機率)有重要影響。工具

選擇放置組的數量

若是您擁有超過 50 個 OSD,咱們建議每一個 OSD 大約 50-100 個放置組,以平衡資源使用狀況、數據持久性和分佈。若是您擁有少於 50 個 OSD,則最好選擇上述預選。對於單個對象池,可使用如下公式獲取基線:編碼

(OSDs * 100)
Total PGs =  ------------
              pool size

其中大小是複製池的副本數或擦除編碼池的 K+M 總和(由 ceph osd 擦除代碼配置文件獲取返回)。設計

而後,您應該檢查結果是否有意義的方式,你設計你的Ceph集羣,以最大限度地提升數據持久性,對象分佈和儘可能減小資源使用rest

結果應始終四舍五入到最接近的功率爲 2code

只有兩個電源才能均勻地平衡放置組中的對象數。其餘值將致使數據在 OSD 中的分佈不均勻。它們的使用應限於逐步從一個兩個權力到另外一個權力。對象

例如,對於具備 200 個 OSD 和池大小爲 3 個副本的羣集,您將估計您的 PG 數量,以下所示:事件

(200 * 100)
----------- = 6667. Nearest power of 2: 8192
     3

使用多個數據池存儲對象時,您須要確保平衡每一個池的放置組數與每一個 OSD 的放置組數,以便得出合理的放置組總數,這些放置組提供合理的每一個 OSD 方差,而不會對系統資源徵稅,或使對等過程過於慢。資源

例如,一個 10 個池的羣集,每一個池在 10 個 OSD 上具備 512 個放置組,共有 5,120 個放置組分佈在 10 個 OSD 上,即每一個 OSD 有 512 個放置組。這不會使用太多的資源。可是,若是建立 1,000 個池,每一個池有 512 個放置組,則 OSD 將處理每一個放置組 50,000 個,而且須要大量資源和時間進行對等。

您可能會發現PGCalc 工具頗有幫助。

設置放置組數

若要設置池中放置組的數量,必須指定建立池時放置組的數量。有關詳細信息,請參閱建立池。即便在建立池後,您也能夠更改放置組的數量:

ceph osd pool set {pool-name} pg_num {pg_num}

增長放置組數後,還必須增長放置組數 (),而後羣集才能從新平衡。這將是將考慮由 CRUSH 算法放置的放置組數。增長拆分放置組,但數據不會遷移到較新的放置組,直到放置組放置,即。 增長。應等於 。要增長放置組的數量,請執行如下操做:pgp_num``pgp_num``pg_num``pgp_num``pgp_num``pg_num

ceph osd pool set {pool-name} pgp_num {pgp_num}

減小 PG 數量時,會自動進行調整。pgp_num

相關文章
相關標籤/搜索