天天看點

ceph -s叢集報錯too many PGs per OSD背景分析解決方案

背景

叢集狀态報錯,如下:

# ceph -s
    cluster d64ac80-be-a8-b4d8aeb18560
     health HEALTH_WARN     <-- 報錯的地方
            too many PGs per OSD ( > max )
     monmap e1:  mons at {node1=:/}
            election epoch , quorum  node1
     osdmap e49:  osds:  up,  in
            flags sortbitwise,require_jewel_osds
      pgmap v1256:  pgs,  pools,  bytes data,  objects
             MB used,  GB /  GB avail
                  active+clean
           

分析

問題原因是叢集osd 數量較少,在我的測試過程中,由于搭建rgw網關、和OpenStack內建等,建立了大量的pool,每個pool要占用一些pg ,ceph叢集預設每塊磁盤都有預設值,好像每個osd 為300個pgs,不過這個預設值是可以調整的,但調整得過大或者過小都會對叢集的性能産生一定影響。因為我們這個是測試環境,隻要能消除掉報錯即可。查詢目前每個osd下最大的pg報警值:

$ ceph --show-config  | grep mon_pg_warn_max_per_osd

mon_pg_warn_max_per_osd = 300
           

解決方案

在配置檔案中,調大叢集的此選項的告警閥值;方法如下,在mon節點的ceph.conf(/etc/ceph/ceph.conf)配置檔案中添加:

$ vi /etc/ceph/ceph.conf
[global]
.......
mon_pg_warn_max_per_osd = 1000
           

重新開機monitor服務:

$ systemctl restart ceph-mon.target
           

再次檢視ceph叢集狀态。

$ ceph -s

cluster 1d64ac80-21be-430e-98a8-b4d8aeb18560
 health HEALTH_OK
 monmap e1: 1 mons at {node1=109.105.115.67:6789/0}
        election epoch 6, quorum 0 node1
 osdmap e49: 2 osds: 2 up, 2 in
        flags sortbitwise,require_jewel_osds
  pgmap v1273: 912 pgs, 23 pools, 4503 bytes data, 175 objects
        13636 MB used, 497 GB / 537 GB avail
             912 active+clean
           

“`

繼續閱讀