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进行设置的方式就是一个个的去设置,这样可以比较好的反馈,此方法是需要在设置的角色所在的主机上进行设置。