Ceph存儲集群在啟動時,各守護進程都從配置文件ceph.conf中獲取自己的配置。ceph.conf中可配置參數很多,需要根據實際進行修改。修改ceph集群配置的方式分為兩種:直接修改 ceph.conf中的參數值,修改完重啟組件進程生效。或在運行中動態地進行參數調整,無需重啟進程。
1、查看運行時配置
ceph daemon {daemon-type}.{id} config show | less
例如:如果你現在位于 mon.XXX 所在的主機,命令將是:
ceph daemon mon.XXX config show | less
2、修改配置文件
Ceph 配置文件可用于配置存儲集群內的所有守護進程或者某一類型的所有守護進程。要配置某一類守護進程,配置項必須位于能收到配置的段落之下,比如:
[global]:global下的配置影響 Ceph 集群里的所有守護進程。
[osd]:osd下的配置影響存儲集群里的所有osd 進程,并且會覆蓋global的同一選項。
[mon]:mon下的配置影響集群里的所有mon 進程,并且會覆蓋global的同一選項。
[mds]:mds下的配置影響集群里的所有mds 進程,并且會覆蓋global的同一選項。
[client]:client下的配置影響所有客戶端(如掛載的CephFS文件系統、掛載的rbd塊設備等)。
全局設置影響集群內所有守護進程的例程,所以global可用于設置適用所有守護進程的選項。但可以用這些覆蓋global設置:
(1)在osd、mon、mds下更改某一類進程的配置。
(2)更改特定進程的設置,如 [osd.1] 。
覆蓋全局設置會影響所有子進程,明確剔除的例外。
3、運行中動態調整
Ceph可以在運行時更osd、mon、mds守護進程的配置,此功能在調整日志輸出、啟用/禁用調試設置、甚至是運行時優化的時候非常有用。Ceph集群提供兩種調整方式:使用tell的方式和daemon設置的方式。
tell 方式設置:
ceph tell {daemon-type}.{id or *} injectargs --{name} {value} [--{name} {value}]
用osd、mon、mds中的一個替代{daemon-type},或者用星號(*)更改一類進程的所有實例配置、或者更改某一具體進程ID(即數字或字母)的配置。例如提高名為osd.0的 恢復速率的命令如下:
ceph tell osd.0 injectargs --osd_recovery_max_active 64 --osd_max_backfills 64
在ceph.conf文件里配置時用空格分隔關鍵詞;但在命令行使用的時候要用下劃線或連字符(_或-)分隔,例如debug rgw變成debug-rgw。
daemon 方式設置
1、獲取當前的參數:
ceph daemon osd.1 config get osd_recovery_max_active
{
"osd_recovery_max_active": "1"
}
2、修改配置
ceph daemon osd.1 config set osd_recovery_max_active 16
{
"success": "osd_recovery_max_active = '16' "
}
3、檢查配置
ceph daemon osd.1 config get osd_recovery_max_active
{
"osd_recovery_max_active": "16"
}
注意:daemon方式修改后,重啟進程配置會恢復到默認參數,因此在調整后,如果參數是后續是需要使用的,需要將相關的參數寫入到配置文件ceph.conf當中持久化。
兩種設置方式的使用場景
使用tell的方式適合對整個集群進行設置,使用*號進行匹配,可以對整個集群的實例進行設置。但出現節點異常無法設置時候,只會在命令行當中進行報錯,不便于查找。
使用daemon進行設置的方式就是一個個的去設置,這樣可以比較好的反饋,此方法是需要在設置的角色所在的主機上進行設置。