Ceph PG數量分析

Placement Group

PG_NUM

創建新池時,

ceph osd pool create {pool-name} pg_num

必須選擇 的值,因爲它不能(當前)自動計算。下面是一些常用的值:pg_num

  • 少於 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集羣,以最大限度地提高數據持久性,對象分佈和儘量減少資源使用

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

只有兩個電源才能均勻地平衡放置組中的對象數。其他值將導致數據在 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章