目录
ceph
命令概述- 全局选项(Global Options)
- 主要子命令及详细参数
- 高级用法与示例
- 附录
1. ceph
命令概述
ceph
是 Ceph 集群的主要命令行工具,用于管理、监控和配置 Ceph 集群。其基本语法如下:
ceph [全局选项] <子命令> [子命令选项] [参数]
- 全局选项(Global Options):适用于所有子命令的选项,如指定配置文件、密钥文件等。
- 子命令(Commands):执行特定操作的命令,如管理 OSD、PG、监视器等。
- 子命令选项(Command Options):针对特定子命令的选项。
- 参数(Arguments):传递给子命令的参数,如实体名称、ID 等。
2. 全局选项(Global Options)
全局选项适用于所有 ceph
子命令,常用于配置命令的执行环境。以下是常见的全局选项:
选项 | 说明 | 示例 |
---|---|---|
-h, --help |
显示帮助信息 | ceph --help |
--version |
显示 ceph 工具的版本信息 |
ceph --version |
-c <file>, --conf <file> |
指定 Ceph 配置文件 | ceph -c /etc/ceph/ceph.conf |
-k <file>, --keyring <file> |
指定认证密钥文件 | ceph -k /etc/ceph/ceph.client.admin.keyring |
--name <entity>, -n <entity> |
指定执行命令的实体名称 | ceph -n client.admin |
--cluster <name> |
指定集群名称,适用于多集群环境 | ceph --cluster mycluster status |
-f <format>, --format <format> |
指定输出格式,如 json 、json-pretty 、xml 、plain |
ceph -f json status |
-w, --watch |
实时监控集群状态,持续输出 | ceph -w |
--watch-interval <seconds> |
设置监控输出的刷新间隔(秒) | ceph -w --watch-interval 10 |
--admin-daemon <path> |
指定管理守护进程的路径 | ceph --admin-daemon /var/run/ceph/ceph-mgr.a.asok |
--debug <level> |
设置调试级别 | ceph --debug ms=20 |
--quiet, -q |
减少输出信息 | ceph -q status |
示例
ceph -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring status
3. 主要子命令及详细参数
3.1 集群状态与健康管理
ceph status
或 ceph -s
说明:显示 Ceph 集群的总体状态,包括健康状态、OSD 数量、使用率、PG 状态等。
语法:
ceph status [全局选项]
ceph -s [全局选项]
常用选项:
-f <format>, --format <format>
:指定输出格式,如json
、json-pretty
、xml
、plain
。
示例:
ceph -s
ceph status -f json-pretty
输出示例:
{
"health": {
"status": "HEALTH_OK",
"checks": {}
},
"summary": {
"overall_status": "HEALTH_OK",
"overall_summary": {},
"summary_by_category": {}
},
"services": {
"mon": [
{"name": "a", "rank": 0, "state": "leader"},
{"name": "b", "rank": 1, "state": "peon"},
{"name": "c", "rank": 2, "state": "peon"}
],
"mgr": [
{"name": "a", "rank": 0, "state": "active"}
],
"osd": [
{"id": 0, "status": "up", "in": true},
{"id": 1, "status": "up", "in": true},
// 其他 OSD 信息
]
},
"pgmap": {
"num_pgs": 100,
"num_pgs_placed": 100,
"num_pgs_clean": 100,
// 其他 PG 信息
},
"services_info": {}
}
ceph health
说明:查看集群的健康状态。
语法:
ceph health [全局选项]
常用选项:
--format <format>
:指定输出格式,如json
、json-pretty
、xml
、plain
。
示例:
ceph health
ceph health --format json-pretty
输出示例:
HEALTH_OK
或者 JSON 格式:
{
"status": "HEALTH_OK",
"checks": {}
}
ceph df
说明:显示 Ceph 集群的数据使用情况,包括全局使用情况和各存储池的使用情况。
语法:
ceph df [全局选项]
常用选项:
-f <format>, --format <format>
:指定输出格式,如json
、json-pretty
、xml
、plain
。--refresh
:刷新缓存数据。
示例:
ceph df
ceph df -f json-pretty
输出示例:
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
100 TiB 90 TiB 10 TiB 10%
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
rbd 1 5 TiB 5% 85 TiB 5000000
cephfs_data 2 3 TiB 3% 85 TiB 3000000
或者 JSON 格式:
{
"stats": {
"bytes_used": 5000000000,
"bytes_avail": 9000000000,
"bytes_total": 10000000000,
"bytes_used_real": 5000000000,
"bytes_avail_real": 9000000000,
"bytes_total_real": 10000000000
},
"pools": [
{
"name": "rbd",
"id": 1,
"stats": {
"bytes_used": 5000000000,
"bytes_avail": 8500000000,
"bytes_total": 9000000000,
"objects": 5000000
}
},
{
"name": "cephfs_data",
"id": 2,
"stats": {
"bytes_used": 3000000000,
"bytes_avail": 8500000000,
"bytes_total": 9000000000,
"objects": 3000000
}
}
]
}
3.2 OSD(对象存储守护进程)管理
ceph osd
主命令
说明:管理 OSD(对象存储守护进程)的命令集合。
语法:
ceph osd <子命令> [选项] [参数]
ceph osd tree
说明:显示 OSD 树结构,包括 OSD、主机、故障域等信息。
语法:
ceph osd tree [全局选项]
常用选项:
-f <format>, --format <format>
:指定输出格式,如json
、json-pretty
。
示例:
ceph osd tree
ceph osd tree -f json-pretty
输出示例:
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.00000 root default
-3 0.01000 host node1
0 0.00500 osd.0 up 1.00000 1.00000
1 0.00500 osd.1 up 1.00000 1.00000
-4 0.01000 host node2
2 0.00500 osd.2 up 1.00000 1.00000
3 0.00500 osd.3 up 1.00000 1.00000
ceph osd df
说明:显示 OSD 的磁盘使用情况,包括每个 OSD 的总容量、已用空间、可用空间等。
语法:
ceph osd df [全局选项]
常用选项:
-f <format>, --format <format>
:指定输出格式,如json
、json-pretty
。
示例:
ceph osd df
ceph osd df -f json-pretty
输出示例:
ID CLASS WEIGHT REWEIGHT SIZE USE AVAIL %USE VAR PGS
0 hdd 1.000 1.000 1 TB 200 GB 800 GB 20% 0.00 100
1 hdd 1.000 1.000 1 TB 200 GB 800 GB 20% 0.00 100
2 hdd 1.000 1.000 1 TB 200 GB 800 GB 20% 0.00 100
3 hdd 1.000 1.000 1 TB 200 GB 800 GB 20% 0.00 100
ceph osd ls
说明:列出所有 OSD 的 ID。
语法:
ceph osd ls [全局选项]
示例:
ceph osd ls
输出示例:
0
1
2
3
ceph osd crush
子命令
说明:管理 CRUSH 映射,调整数据分布策略。
语法:
ceph osd crush <子命令> [选项] [参数]
常见子命令:
add-bucket <name> <type>
:添加新的 CRUSH 容器(如 host、rack 等)。remove <name>
:移除 CRUSH 容器。move <name> <new_parent>
:移动 CRUSH 容器到新的父节点。reweight <name> <weight>
:调整 CRUSH 容器或 OSD 的权重。rm-bucket <name>
:移除 CRUSH 容器(同remove
)。rename <old_name> <new_name>
:重命名 CRUSH 容器。rule create-simple <rule_name> <root> <bucket1> [<bucket2> ...]
:创建简单的 CRUSH 规则。
示例:
ceph osd crush add-bucket rack1 rack
ceph osd crush move osd.0 rack1
ceph osd crush reweight osd.0 0.5
ceph osd pool
子命令
说明:管理 OSD 存储池的子命令集合。
语法:
ceph osd pool <子命令> [选项] [参数]
常见子命令:
ls
:列出所有存储池。create <poolname> <pg_num> [<pgp_num>]
:创建新的存储池。delete <poolname> <poolname> --yes-i-really-really-mean-it
:删除存储池。set <poolname> <option> <value>
:设置存储池的配置选项。get <poolname> <option>
:获取存储池的配置选项。rename <old_poolname> <new_poolname>
:重命名存储池。application enable <poolname> <application>
:启用存储池的特定应用。application disable <poolname> <application>
:禁用存储池的特定应用。
详细说明及示例:
列出存储池:
ceph osd pool ls
创建存储池:
ceph osd pool create mypool 128 128
参数说明:
mypool
:存储池名称。128
:PG 数量。128
:PGP 数量(通常与 PG 数量相同)。
删除存储池:
ceph osd pool delete mypool mypool --yes-i-really-really-mean-it
设置存储池配置:
ceph osd pool set mypool size 3 ceph osd pool set mypool min_size 2 ceph osd pool set mypool crush_ruleset 1
获取存储池配置:
ceph osd pool get mypool size
重命名存储池:
ceph osd pool rename oldpool newpool
启用存储池的特定应用:
ceph osd pool application enable mypool rbd
禁用存储池的特定应用:
ceph osd pool application disable mypool rbd
ceph osd crush
子命令详细
CRUSH 映射是 Ceph 数据分布的核心。以下是一些常用的 crush
子命令及其说明:
添加新的 CRUSH 容器:
ceph osd crush add-bucket <name> <type>
示例:
ceph osd crush add-bucket rack1 rack
说明:
<name>
:新 CRUSH 容器的名称,如rack1
。<type>
:CRUSH 容器的类型,如rack
、host
、datacenter
等。
移除 CRUSH 容器:
ceph osd crush remove <name>
示例:
ceph osd crush remove rack1
移动 CRUSH 容器到新的父节点:
ceph osd crush move <name> <new_parent>
示例:
ceph osd crush move osd.0 rack1
调整 CRUSH 容器或 OSD 的权重:
ceph osd crush reweight <name> <weight>
示例:
ceph osd crush reweight osd.0 0.5
说明:
<weight>
:新的权重值,范围通常在 0.0 到 1.0 之间。权重决定了 CRUSH 映射中数据分布的比例。
显示当前 CRUSH 映射:
ceph osd crush dump
示例输出:
[ { "id": -1, "name": "default", "type": "root", "children": [-3, -4], "weight": 1.000000, "depth": 0 }, { "id": -3, "name": "node1", "type": "host", "children": [0, 1], "weight": 0.010000, "depth": 1 }, { "id": 0, "name": "osd.0", "type": "osd", "children": [], "weight": 1.000000, "depth": 2 }, { "id": 1, "name": "osd.1", "type": "osd", "children": [], "weight": 1.000000, "depth": 2 }, { "id": -4, "name": "node2", "type": "host", "children": [2, 3], "weight": 0.010000, "depth": 1 }, { "id": 2, "name": "osd.2", "type": "osd", "children": [], "weight": 1.000000, "depth": 2 }, { "id": 3, "name": "osd.3", "type": "osd", "children": [], "weight": 1.000000, "depth": 2 } ]
3.3 PG(放置组)管理
ceph pg
主命令
说明:管理 PG(放置组)的命令集合。
语法:
ceph pg <子命令> [选项] [参数]
ceph pg stat
说明:显示 PG 的状态统计信息。
语法:
ceph pg stat [全局选项]
示例:
ceph pg stat
输出示例:
126 pgs: 126 active+clean
ceph pg dump
说明:导出 PG 的详细信息。
语法:
ceph pg dump [全局选项]
示例:
ceph pg dump
输出示例:
pg 1.0, state active+clean, acting [0,1,2]
...
ceph pg repair <pgid>
说明:修复指定的 PG。
语法:
ceph pg repair <pgid> [全局选项]
示例:
ceph pg repair 1.0
ceph pg deep-scrub <pgid>
说明:对指定的 PG 执行深度擦洗操作,用于检测和修复数据不一致。
语法:
ceph pg deep-scrub <pgid> [全局选项]
示例:
ceph pg deep-scrub 1.0
ceph pg force-create <pgid>
说明:强制创建指定的 PG。
语法:
ceph pg force-create <pgid> [全局选项]
示例:
ceph pg force-create 1.0
ceph pg repair
和 ceph pg deep-scrub
的区别
ceph pg repair
: 用于修复 PG 中的错误状态,如不一致的对象副本、缺失的对象等。适用于 PG 处于非正常状态时。ceph pg deep-scrub
: 执行全面的数据一致性检查,适用于定期维护,确保数据的完整性。
3.4 监视器(Monitor)管理
ceph mon
主命令
说明:管理 Ceph 监视器(Monitor)的命令集合。
语法:
ceph mon <子命令> [选项] [参数]
ceph mon stat
说明:显示监视器的状态,包括当前监视器数量、存活监视器、选举领导者等信息。
语法:
ceph mon stat [全局选项]
示例:
ceph mon stat
输出示例:
election epoch 3, quorum a,b,c
ceph mon add <mon_name> <mon_address>
说明:添加新的监视器。
语法:
ceph mon add <mon_name> <mon_address> [全局选项]
参数说明:
<mon_name>
:监视器名称,如mon4
。<mon_address>
:监视器地址,通常包括 IP 和端口,如192.168.1.4:6789
。
示例:
ceph mon add mon4 192.168.1.4:6789
ceph mon remove <mon_name>
说明:移除指定的监视器。
语法:
ceph mon remove <mon_name> [全局选项]
示例:
ceph mon remove mon4
ceph mon getmap
说明:获取当前的监视器映射信息。
语法:
ceph mon getmap [全局选项]
示例:
ceph mon getmap -o monmap
ceph mon update
说明:更新监视器配置。
语法:
ceph mon update <mon_name> <option> <value> [全局选项]
示例:
ceph mon update mon1 mon_debug_ms 20
3.5 Manager 守护进程管理
ceph mgr
主命令
说明:管理 Ceph Manager 守护进程的命令集合。
语法:
ceph mgr <子命令> [选项] [参数]
ceph mgr stat
说明:显示 Manager 守护进程的状态信息。
语法:
ceph mgr stat [全局选项]
示例:
ceph mgr stat
输出示例:
{
"services": {
"dashboard": "up",
"prometheus": "up"
},
"modules": [
"dashboard",
"prometheus"
]
}
ceph mgr services
说明:显示 Manager 守护进程的服务信息,如启用的模块和对应的服务地址。
语法:
ceph mgr services [全局选项]
示例:
ceph mgr services
输出示例:
{
"dashboard": {
"addr": "192.168.1.1:7000"
},
"prometheus": {
"addr": "192.168.1.1:9283"
}
}
ceph mgr module
子命令
说明:管理 Manager 模块的命令集合,用于启用、禁用和列出模块。
语法:
ceph mgr module <子命令> [参数] [全局选项]
常见子命令:
enable <module>
:启用指定的 Manager 模块。disable <module>
:禁用指定的 Manager 模块。ls
:列出所有启用的 Manager 模块。
详细说明及示例:
启用模块:
ceph mgr module enable <module>
示例:
ceph mgr module enable dashboard ceph mgr module enable prometheus
禁用模块:
ceph mgr module disable <module>
示例:
ceph mgr module disable dashboard
列出启用的模块:
ceph mgr module ls
输出示例:
[ "dashboard", "prometheus" ]
列出所有可用模块(包括未启用的):
ceph mgr module ls-available
输出示例:
[ "dashboard", "prometheus", "metrics", "telemetry" ]
3.6 存储池(Pool)管理
ceph pool
主命令
说明:管理 Ceph 存储池的命令集合。
语法:
ceph pool <子命令> [选项] [参数]
ceph pool ls
说明:列出所有存储池的名称。
语法:
ceph pool ls [全局选项]
示例:
ceph pool ls
输出示例:
rbd
cephfs_data
cephfs_metadata
ceph pool create <poolname> <pg_num> [<pgp_num>]
说明:创建新的存储池。
语法:
ceph pool create <poolname> <pg_num> [<pgp_num>] [全局选项]
参数说明:
<poolname>
:存储池名称。<pg_num>
:PG 数量。<pgp_num>
:PGP 数量(通常与 PG 数量相同)。
示例:
ceph pool create mypool 128 128
ceph pool delete <poolname> <poolname> --yes-i-really-really-mean-it
说明:删除存储池。需要重复存储池名称以确认操作,并添加 --yes-i-really-really-mean-it
以防止误操作。
语法:
ceph pool delete <poolname> <poolname> --yes-i-really-really-mean-it [全局选项]
示例:
ceph pool delete mypool mypool --yes-i-really-really-mean-it
ceph pool set <poolname> <option> <value>
说明:设置存储池的配置选项。
语法:
ceph pool set <poolname> <option> <value> [全局选项]
常用选项及说明:
size
:副本数量。min_size
:最小副本数量,低于该数量时 OSD 将下线。pg_num
:PG 数量(动态调整)。pgp_num
:PGP 数量。crush_ruleset
:CRUSH 规则集编号。allow_ec_overwrites
:允许擦除编码池覆盖现有数据。compression_mode
:压缩模式。snapdir_expire
:快照目录过期时间。
示例:
ceph pool set mypool size 3
ceph pool set mypool min_size 2
ceph pool set mypool crush_ruleset 1
ceph pool get <poolname> <option>
说明:获取存储池的配置选项值。
语法:
ceph pool get <poolname> <option> [全局选项]
示例:
ceph pool get mypool size
输出示例:
size 3
ceph pool rename <old_poolname> <new_poolname>
说明:重命名存储池。
语法:
ceph pool rename <old_poolname> <new_poolname> [全局选项]
示例:
ceph pool rename oldpool newpool
ceph pool application enable <poolname> <application>
说明:启用存储池的特定应用,如 rbd
、cephfs
等。
语法:
ceph pool application enable <poolname> <application> [全局选项]
示例:
ceph pool application enable mypool rbd
ceph pool application disable <poolname> <application>
说明:禁用存储池的特定应用。
语法:
ceph pool application disable <poolname> <application> [全局选项]
示例:
ceph pool application disable mypool rbd
ceph pool get-quota <poolname>
说明:获取存储池的配额信息。
语法:
ceph pool get-quota <poolname> [全局选项]
示例:
ceph pool get-quota mypool
输出示例:
max_bytes 10000000000
max_objects 1000000
ceph pool set-quota <poolname> max_bytes <bytes> [max_objects <objects>]
说明:设置存储池的配额。
语法:
ceph pool set-quota <poolname> max_bytes <bytes> [max_objects <objects>] [全局选项]
示例:
ceph pool set-quota mypool max_bytes 10000000000 max_objects 1000000
3.7 认证与权限管理
ceph auth
主命令
说明:管理 Ceph 的认证和权限。
语法:
ceph auth <子命令> [选项] [参数]
ceph auth list
说明:列出所有认证实体及其权限。
语法:
ceph auth list [全局选项]
示例:
ceph auth list
输出示例:
client.admin
key: AQBW4...
caps: [ 'mon' : 'allow *', 'osd' : 'allow *', 'mgr' : 'allow *' ]
client.user1
key: AQBv3...
caps: [ 'mon' : 'allow r', 'osd' : 'allow rw pool=mypool' ]
ceph auth get <entity>
说明:获取指定实体的认证信息。
语法:
ceph auth get <entity> [全局选项]
示例:
ceph auth get client.admin
输出示例:
key: AQBW4...
caps: [ 'mon' : 'allow *', 'osd' : 'allow *', 'mgr' : 'allow *' ]
ceph auth add <entity> <caps>
说明:添加新的认证实体,并设置其权限。
语法:
ceph auth add <entity> <caps> [全局选项]
参数说明:
<entity>
:实体名称,如client.newuser
。<caps>
:权限范围,通常包括mon
、osd
、mgr
等模块的权限。
示例:
ceph auth add client.newuser mon 'allow r' osd 'allow rwx pool=mypool'
ceph auth del <entity>
说明:删除指定的认证实体。
语法:
ceph auth del <entity> [全局选项]
示例:
ceph auth del client.newuser
ceph auth caps <entity> <module> <caps>
说明:为指定实体设置某个模块的权限。
语法:
ceph auth caps <entity> <module> <caps> [全局选项]
示例:
ceph auth caps client.newuser mon 'allow r' osd 'allow rw pool=mypool'
ceph auth get-or-create-key <entity> <caps>
说明:获取或创建指定实体的密钥,并设置其权限。
语法:
ceph auth get-or-create-key <entity> <caps> [全局选项]
示例:
ceph auth get-or-create-key client.newuser mon 'allow r' osd 'allow rw pool=mypool'
3.8 配置管理
ceph config
主命令
说明:管理 Ceph 集群的配置选项。
语法:
ceph config <子命令> [选项] [参数]
ceph config dump
说明:导出当前集群的所有配置选项及其值。
语法:
ceph config dump [全局选项]
示例:
ceph config dump
输出示例:
[global]
fsid = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
mon_initial_members = a,b,c
mon_host = 192.168.1.1,192.168.1.2,192.168.1.3
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
ceph config set <daemon_type>.<daemon_id> <option> <value>
说明:设置特定守护进程的配置项。
语法:
ceph config set <daemon_type>.<daemon_id> <option> <value> [全局选项]
参数说明:
<daemon_type>
:守护进程类型,如mon
、osd
、mgr
、mds
等。<daemon_id>
:守护进程的 ID,如a
、1
、0
等。<option>
:配置项名称。<value>
:配置项的值。
示例:
ceph config set mon.a mon_debug_ms 20
ceph config set osd.0 osd_recovery_max_active 3
ceph config get <daemon_type>.<daemon_id> <option>
说明:获取特定守护进程的配置项值。
语法:
ceph config get <daemon_type>.<daemon_id> <option> [全局选项]
示例:
ceph config get mon.a mon_debug_ms
输出示例:
20
ceph config push <file>
说明:从指定的配置文件推送配置到集群。
语法:
ceph config push <file> [全局选项]
示例:
ceph config push /etc/ceph/custom.conf
ceph config reset <daemon_type>.<daemon_id> <option>
说明:重置特定守护进程的配置项到默认值。
语法:
ceph config reset <daemon_type>.<daemon_id> <option> [全局选项]
示例:
ceph config reset mon.a mon_debug_ms
ceph config get <daemon_type>.<daemon_id> [<option>]
说明:获取特定守护进程的所有配置项,或指定的配置项。
语法:
ceph config get <daemon_type>.<daemon_id> [<option>] [全局选项]
示例:
获取所有配置项:
ceph config get mon.a
获取特定配置项:
ceph config get mon.a mon_debug_ms
ceph config reload <daemon_type>.<daemon_id>
说明:重新加载特定守护进程的配置。
语法:
ceph config reload <daemon_type>.<daemon_id> [全局选项]
示例:
ceph config reload mon.a
3.9 文件系统(CephFS)管理
ceph fs
主命令
说明:管理 Ceph 文件系统(CephFS)的命令集合。
语法:
ceph fs <子命令> [选项] [参数]
ceph fs ls
说明:列出所有 Ceph 文件系统的名称和状态。
语法:
ceph fs ls [全局选项]
示例:
ceph fs ls
输出示例:
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data]
ceph fs status <fs_name>
说明:显示指定 Ceph 文件系统的状态信息。
语法:
ceph fs status <fs_name> [全局选项]
示例:
ceph fs status cephfs
输出示例:
cephfs:
metadata server: a:1/1/2
data pools: cephfs_data
metadata pool: cephfs_metadata
max_mds: 2
active_mds: cephfs-1
clients: 10
ceph fs create <fs_name> <metadata_pool> <data_pool>
说明:创建新的 Ceph 文件系统。
语法:
ceph fs create <fs_name> <metadata_pool> <data_pool> [全局选项]
参数说明:
<fs_name>
:文件系统名称。<metadata_pool>
:元数据池名称。<data_pool>
:数据池名称。
示例:
ceph fs create cephfs cephfs_metadata cephfs_data
ceph fs rm <fs_name> --yes-i-really-mean-it
说明:删除指定的 Ceph 文件系统。需要添加 --yes-i-really-mean-it
以确认操作。
语法:
ceph fs rm <fs_name> --yes-i-really-mean-it [全局选项]
示例:
ceph fs rm cephfs --yes-i-really-mean-it
ceph fs set <fs_name> <option> <value>
说明:设置 Ceph 文件系统的配置选项。
语法:
ceph fs set <fs_name> <option> <value> [全局选项]
常用选项:
allow_non_mds
:允许非 MDS 守护进程处理元数据请求。max_mds
:设置最大 MDS 数量。quota.max_bytes
:设置文件系统的最大字节数。quota.max_files
:设置文件系统的最大文件数。
示例:
ceph fs set cephfs max_mds 2
ceph fs set cephfs allow_non_mds true
ceph fs set cephfs quota.max_bytes 10000000000
ceph fs set cephfs quota.max_files 1000000
ceph fs get <fs_name> <option>
说明:获取 Ceph 文件系统的配置选项值。
语法:
ceph fs get <fs_name> <option> [全局选项]
示例:
ceph fs get cephfs max_mds
输出示例:
max_mds 2
ceph fs mds fail <fs_name>.<rank>
说明:标记 MDS 守护进程为失败。
语法:
ceph fs mds fail <fs_name>.<rank> [全局选项]
示例:
ceph fs mds fail cephfs.0
ceph fs mds add <fs_name> <name>
说明:添加新的 MDS 守护进程。
语法:
ceph fs mds add <fs_name> <name> [全局选项]
示例:
ceph fs mds add cephfs mds1
ceph fs mds fail <fs_name>.<rank>
说明:标记指定的 MDS 守护进程为失败。
语法:
ceph fs mds fail <fs_name>.<rank> [全局选项]
示例:
ceph fs mds fail cephfs.0
3.10 日志管理
ceph log
主命令
说明:管理 Ceph 日志的命令集合。
语法:
ceph log <子命令> [选项] [参数]
ceph log last <n>
说明:查看最近的 n 条日志。
语法:
ceph log last <n> [全局选项]
示例:
ceph log last 100
ceph log list
说明:列出日志的级别和类型。
语法:
ceph log list [全局选项]
示例:
ceph log list
输出示例:
[
{
"level": "debug",
"type": "all"
},
{
"level": "info",
"type": "all"
},
{
"level": "warn",
"type": "all"
},
{
"level": "error",
"type": "all"
}
]
ceph log set <level> <type>
说明:设置日志级别和类型。
语法:
ceph log set <level> <type> [全局选项]
参数说明:
<level>
:日志级别,如debug
、info
、warn
、error
。<type>
:日志类型,如all
、mon
、osd
、mgr
、mds
等。
示例:
ceph log set debug mon
ceph log set info osd
3.11 其他重要子命令
ceph tell
说明:向特定守护进程发送命令。
语法:
ceph tell <daemon> <command> [选项] [参数]
参数说明:
<daemon>
:目标守护进程,如mon.a
、osd.0
等。<command>
:要执行的命令,如injectargs
。
示例:
ceph tell mon.a injectargs '--mon-cluster-log-to-stderr'
详细示例:
向 OSD 守护进程发送命令以重新加载配置:
ceph tell osd.0 injectargs '--osd-max-backfills 5'
向 Manager 守护进程发送命令以启用某个模块:
ceph tell mgr.a module enable mymodule
ceph version
说明:显示 Ceph 集群和 ceph
工具的版本信息。
语法:
ceph version [全局选项]
示例:
ceph version
输出示例:
ceph version 15.2.13 (c71e2e6b4e9da59b...) nautilus (stable)
选项
--format <format>
:指定输出格式,如json
、json-pretty
。
示例:
ceph version --format json-pretty
输出示例:
{
"version": "15.2.13",
"commit": "c71e2e6b4e9da59b...",
"branch": "nautilus",
"type": "stable"
}
ceph pg repair <pgid>
说明:修复指定的 PG。
语法:
ceph pg repair <pgid> [全局选项]
示例:
ceph pg repair 1.0
ceph pg deep-scrub <pgid>
说明:对指定的 PG 执行深度擦洗操作。
语法:
ceph pg deep-scrub <pgid> [全局选项]
示例:
ceph pg deep-scrub 1.0
4. 高级用法与示例
4.1 自动化脚本示例
以下是一些常见的 Ceph 管理任务的自动化脚本示例:
监控集群状态并发送警报
#!/bin/bash
HEALTH=$(ceph health)
if [[ "$HEALTH" != "HEALTH_OK" ]]; then
echo "Ceph Cluster Health: $HEALTH" | mail -s "Ceph Health Alert" admin@example.com
fi
定期检查并修复 PG
#!/bin/bash
PG_LIST=$(ceph pg dump | grep 'state active+clean' -v | awk '{print $2}')
for PG in $PG_LIST; do
ceph pg repair $PG
done
自动扩展存储池的 PG 数量
#!/bin/bash
POOL_NAME="mypool"
CURRENT_PG=$(ceph pg dump | grep "^pg $POOL_NAME" | awk '{print $3}')
NEW_PG=$((CURRENT_PG * 2))
ceph pg pool set $POOL_NAME pg_num $NEW_PG
ceph pg pool set $POOL_NAME pgp_num $NEW_PG
自动重启异常 OSD
#!/bin/bash
for OSD in $(ceph osd tree | grep 'osd.' | awk '{print $1}'); do
STATUS=$(ceph osd stat | grep "osd.$OSD" | awk '{print $2}')
if [[ "$STATUS" != "up" ]]; then
echo "OSD $OSD is down. Restarting..."
systemctl restart ceph-osd@${OSD}
fi
done
4.2 常见故障排除
OSD 处于 down 或 out 状态
检查 OSD 守护进程是否运行:
systemctl status ceph-osd@<osd_id>
重新启动 OSD:
systemctl restart ceph-osd@<osd_id>
将 OSD 标记为 in:
ceph osd in <osd_id>
PG 不健康,如 degraded
或 undersized
检查 PG 状态:
ceph pg stat
ceph pg dump | grep <pgid>
执行 PG 修复:
ceph pg repair <pgid>
检查 OSD 的健康状态,确保有足够的 OSD 在线:
ceph osd stat
监视器无法选举领导者
检查监视器服务状态:
systemctl status ceph-mon@<mon_name>
查看监视器日志:
journalctl -u ceph-mon@<mon_name>
确保监视器数量为奇数,以避免选举问题:
ceph mon stat
添加或移除监视器以确保 quorum:
ceph mon add mon4 192.168.1.4:6789
ceph mon remove mon3
无法创建新的存储池
检查是否存在配额限制:
ceph osd pool get-quota <poolname>
检查 CRUSH 映射是否正确:
ceph osd crush dump
确保有足够的 PG 数量,并且 OSD 分布均匀:
ceph osd df
5. 附录
5.1 常用快捷命令
查看所有子命令:
ceph --help
查看特定子命令的帮助信息:
ceph <子命令> --help
示例:
ceph osd --help ceph pool --help
获取特定模块的 CRUSH 映射:
ceph osd crush dump
列出所有认证实体:
ceph auth list
列出所有存储池及其详细信息:
ceph osd pool ls detail
获取特定 OSD 的详细信息:
ceph osd dump | grep osd.<id>
获取集群的配置参数:
ceph config dump
获取特定守护进程的配置项:
ceph config get <daemon_type>.<daemon_id> <option>