Ceph的设置
一个Ceph集群至少运行两类进程:
- Ceph Monitor(ceph-mon)
- Ceph OSD Daemon(ceph-osd)
如果需要支持Ceph Filesystem则至少要运行一个Ceph Metadata Server(ceph-mds). 支持Ceph对象存储的集群需要运行Ceph Gateway进程(radosgw)
所有的守护进程都有一系列的默认值, 这部分是在ceph/src/common/config_opts.h中定义的, 可以通过配置文件来覆盖这些设置值
每个进程启动时, 默认从ceph.conf获取集群配置的设置. 以下是ceph.conf中涉及的配置:
Cluster Identity Authentication settings Cluster membership Host names Host addresses Paths to keyrings Paths to journals Paths to data Other runtime options
1. 读取顺序
Ceph相关进程在读取配置时, 遵循以下的查找顺序
- $CEPH_CONF环境变量所指定的配置
- -c path/path 参数所指定的配置
- /etc/ceph/ceph.conf
- ~/.ceph/config (HOME目录下.ceph目录的config文件)
- ./ceph.conf (当前目录下的ceph.conf)
2. 语法格式
Ceph配置文件使用INI语法, 使用#或;来注释, 例如
# 这是注释.
; 这也是注释 # 注释以#或;开始 # 注释所在每行的结尾也是注释的结束 # 建议在配置文件中加入相关的注释
3. 配置段
[global]
说明: 全局配置, 影响集群中的所有Ceph进程 样例: auth supported = cephx [osd] 说明: osd相关配置, 对所有OSD生效, 会覆盖global相关的配置 样例: osd journal size = 1000 [mon] 说明: mon相关配置, 对所有MON生效, 会覆盖global相关的配置 样例: mon addr = 10.0.0.101:6789 [mds] 说明: mds相关配置, 对所有mds生效, 会覆盖global相关的配置 样例: host = myserver01 [client] 说明: ceph client相关配置 (例如, 挂载 Ceph Filesystems, 挂载 Ceph Block Devices, 等等.). 样例: log file = /var/log/ceph/radosgw.log
3.1 global设置
Global设置会影响集群中的所有Ceph实例. 全局化的配置建议放在Global配置段中, 对所有daemon生效, 同时你还可以在[osd],[mon],[mds]等配置段中覆盖对应的设置, 或在特定daemon的配置段如[osd.1]中来覆盖对应的配置. 在[osd],[mon],[mds]中覆盖对应的global设置, 将影响相关类型的所有Ceph daemon, 如果你只需要对某个daemon生效, 需要在特定daemon的配置段中设置
一个典型的全局设置如打开身份验证:
[global]
#在集群中的host之前打开认证 #v 0.54 或更早的版本 auth supported = cephx #v 0.55 和 0.55之后的版本 auth cluster required = cephx auth service required = cephx auth client required = cephx
3.2 各类型daemon的设置
[osd]
# 针对所有osd的设置 [mon] #针对所有mon的设置 [mds] #针对所有mds的设置
3.3 指定daemon的设置
[osd.1] # 针对osd.1实例的设置 [mon.a] # 针对mon.a实例的设置 [mds.b] # 针对mds.b实例的设置
如果你需要对Ceph Gateway某个client进行设置, 需要指定daemon类型和实例名, 使用.号分隔, 如下:
[client.radosgw.instance-name] # 针对 radosgw某个实例的配置
元变量
使用元变量可以简化Ceph集群配置文件, Ceph会对应替换对应的变量值, Ceph元变量有点类似bash的变量, 以下是Ceph支持的变量名
变量名 | 说明 | 用法例子 | 默认值 |
---|---|---|---|
$cluster | Ceph集群名,在同个硬件集群中运行多个Ceph集群时比较有用 | /etc/ceph/$cluster.keyring | ceph |
$type | 实例的类型(如mon,mds,osd) | /var/lib/ceph/$type | |
$id | 实例的标记符, 如osd.0则为0, mds.a则为a | /var/lib/ceph/$type/$cluster-$id | |
$host | 实例所在的host的hostname | ||
$name | 等于type.id | /var/run/ceph/$cluster-$name.asok |