目錄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_num2.檢查儲存池的副本數或糾刪碼配置ceph osd pool get data pgp_num
ceph osd dump|greo -i size3.計算pg_num和pgp_num糾刪碼池的 size 即為k+m
# 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_num5.同樣,修改另外兩個儲存池:metadata和rbd的pg和pgpceph osd pool set data pgp_num
場景資料遷移流程:
擴容前 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 ...