Ceph之PG數調整

2022-02-12 07:44:01 字數 1928 閱讀 3218

目錄pg, placement groups。crush先將資料分解成一組物件,然後根據物件名稱、複製級別和系統中的pg數等資訊執行雜湊操作,再將結果生成pg id。可以將pg看做乙個邏輯容器,這個容器包含多個物件,同時這個邏輯物件對映之多個osd上。

如果沒有pg,在成千上萬個osd上管理和跟蹤數百萬計的物件的複製和傳播是相當困難的。沒有pg這一層,管理海量的物件所消耗的計算資源也是不可想象的。建議每個osd上配置50~100個pg。

一般的,

ceph集群中的pg總數:

pg總數 = (osd總數 * 100) / 最大副本數

** 結果必須捨入到最接近的2的n次方冪的值。

ceph集群中每個pool中的pg總數:

儲存池pg總數 = (osd總數 * 100 / 最大副本數) / 池數

平衡每個儲存池中的pg數和每個osd中的pg數對於降低osd的方差、避免速度緩慢的恢復再平衡程序是相當重要的。

pgp是為了實現定位而設定的pg,它的值應該和pg的總數(即pg_num)保持一致。對於ceph的乙個pool而言,如果增加pg_num,還應該調整pgp_num為同樣的值,這樣集群才可以開始再平衡。

引數pg_num定義了pg的數量,pg對映至osd。當任意pool的pg數增加時,pg依然保持和源osd的對映。直至目前,ceph還未開始再平衡。此時,增加pgp_num的值,pg才開始從源osd遷移至其他的osd,正式開始再平衡。pgp,placement groups of placement。

1.獲取現有的pg數和pgp數值:

ceph osd pool get data pg_num

ceph osd pool get data pgp_num

2.檢查儲存池的副本數或糾刪碼配置

ceph osd dump|greo -i size

糾刪碼池的 size 即為k+m

3.計算pg_num和pgp_num

# pg_num calculation

pg_num = (num_osds * 100) / num_copies

num_up = pow(2, int(log(pg_num,2) + 0.5))

num_down = pow(2, int(log(pg_num,2)))

if abs(pg_num - num_up) <= abs(pg_num - num_down):

pg_num = num_up

else:

pg_num = num_down

pgp_num = pg_num

4.修改儲存池的pg和pgp

ceph osd pool set data pg_num

ceph osd pool set data pgp_num

5.同樣,修改另外兩個儲存池:metadata和rbd的pg和pgp

場景資料遷移流程:

擴容前 3 個 osd, 4 個 pg

擴容後 4 個 osd, 4 個 pg

擴容前:

擴容後:

ceph 效能調整和基準

ceph 效能綜述 一般ceph效能影響因素 硬體水平 ceph 效能調整 軟體水平 ceph 擦除碼 ceph cache 層次 等級 ceph 基準 使用 rados 工作台 ceph的配置檔案ceph.conf裡面,global 部分是全域性的,如果其他部分 mon,mds,osd 部分重複定...

Ceph基礎之搭建ceph集群

8 更新源 yum update ysetenforce 0 4 安裝ntp,在所有ceph節點上執行 2 用ceph deploy建立ceph集群mkdir etc ceph 生成乙個新的ceph集群,集群包括ceph配置檔案以及monitor的金鑰環。3 安裝ceph二進位制軟體包ceph de...

PG資料庫部署linux引數調整

pg資料庫部署linux引數調整 為了使postgresql資料庫獲得最佳效能,需要正確定義作業系統引數。如果作業系統核心引數配置不當,可能會導致資料庫伺服器效能下降。因此,必須根據資料庫伺服器及其工作負載配置這些引數。主要是指在linux系統中針對業務服務應用而進行的系統核心引數調整。執行vim ...