0%

Ceph常用命令合集

Ceph 常用命令大全

Ceph 是一个开源的分布式存储系统,支持对象存储、块设备(RBD)和文件系统(CephFS)。以下是一份常用命令清单,适用于日常运维、监控和排错。

一、集群状态与信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看集群整体健康状态
ceph -s
ceph status

# 查看详细集群状态(包括 OSD、MON、MDS 等)
ceph health detail

# 查看集群使用情况(容量、PG 状态等)
ceph df

# 查看集群配置(需权限)
ceph config dump

# 列出所有 Ceph 配置选项(仅查看当前生效值)
ceph config show <daemon_type>.<id> # 如 ceph config show osd.0

二、OSD(对象存储守护进程)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 列出所有 OSD 及其状态
ceph osd tree
ceph osd stat
ceph osd dump

# 查看单个 OSD 信息
ceph osd info osd.<id>

# 标记 OSD 为 out(不再分配数据)
ceph osd out osd.<id>

# 标记 OSD 为 in(重新参与数据分配)
ceph osd in osd.<id>

# 停用/启用 OSD(配合维护)
ceph osd down osd.<id>
ceph osd up osd.<id> # 实际由服务启停控制,此命令较少用

# 删除 OSD(需先 out + purge)
ceph osd purge osd.<id> --yes-i-really-mean-it

# 重命名或替换 OSD(如更换磁盘)
ceph osd crush reweight osd.<id> 0 # 逐步迁移数据
ceph osd crush remove osd.<id>
ceph auth del osd.<id>
ceph osd rm osd.<id>

# 查看 OSD 使用率(磁盘、权重等)
ceph osd df
ceph osd df tree

三、Monitor(MON)

1
2
3
4
5
6
7
8
9
10
11
12
# 查看 MON 状态
ceph mon stat
ceph quorum_status -f json-pretty

# 列出所有 MON 节点
ceph mon dump

# 添加 MON(需在目标节点部署后)
ceph mon add <name> <ip>

# 删除 MON(谨慎操作)
ceph mon remove <name>

四、MDS(CephFS 元数据服务器)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看 MDS 状态
ceph mds stat
ceph fs status

# 列出文件系统
ceph fs ls

# 创建 CephFS(需至少两个 pool:metadata + data)
ceph fs new <fs_name> <metadata_pool> <data_pool>

# 删除 CephFS(先停用)
ceph fs fail <fs_name>
ceph fs rm <fs_name> --yes-i-really-mean-it

# 设置 MDS standby
ceph mds set_allow_standby_replay <fs_name> true

五、Pool(存储池)管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 列出所有 pool
ceph osd lspools
ceph df

# 创建 pool
ceph osd pool create <pool_name> <pg_num> [pgp_num] [replicated|erasure] ...

# 删除 pool(需先允许删除)
ceph config set mon mon_allow_pool_delete true
ceph osd pool rm <pool_name> <pool_name> --yes-i-really-really-mean-it

# 设置 pool 参数
ceph osd pool set <pool_name> size 3 # 副本数
ceph osd pool set <pool_name> min_size 2 # 最小可用副本
ceph osd pool set <pool_name> pg_num 128 # 不建议动态调大(需谨慎)

# 查看 pool 详细信息
rados df
ceph osd pool get <pool_name> all

六、RBD(块设备)操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 列出 pool 中的 RBD 镜像
rbd ls <pool_name>

# 创建 RBD 镜像
rbd create <pool_name>/<image_name> --size 10G

# 映射 RBD 到本地(需内核支持或 rbd-nbd)
rbd map <pool_name>/<image_name>
rbd showmapped

# 取消映射
rbd unmap <device_path>

# 查看镜像信息
rbd info <pool_name>/<image_name>

# 调整大小
rbd resize --size 20G <pool_name>/<image_name>

# 快照管理
rbd snap create <pool_name>/<image_name>@snap1
rbd snap list <pool_name>/<image_name>
rbd snap rollback <pool_name>/<image_name>@snap1
rbd snap rm <pool_name>/<image_name>@snap1

# 克隆(需先保护快照)
rbd snap protect <pool_name>/<image_name>@snap1
rbd clone <pool_name>/<image_name>@snap1 <pool_name>/<clone_name>

七、RADOS 对象操作(底层)

1
2
3
4
5
6
7
8
9
# 列出 pool 中对象(不推荐大 pool 使用)
rados -p <pool_name> ls

# 上传/下载对象
rados -p <pool_name> put <obj_name> <local_file>
rados -p <pool_name> get <obj_name> <local_file>

# 删除对象
rados -p <pool_name> rm <obj_name>

八、CRUSH Map 操作

1
2
3
4
5
6
7
8
9
10
11
# 导出 CRUSH map
ceph osd getcrushmap -o crushmap.bin
crushtool -d crushmap.bin -o crushmap.txt

# 编辑后编译并应用
crushtool -c crushmap.txt -o newcrushmap.bin
ceph osd setcrushmap -i newcrushmap.bin

# 查看 CRUSH 规则
ceph osd crush rule ls
ceph osd crush rule dump

九、日志与调试

1
2
3
4
5
6
7
8
9
10
11
# 动态调整日志级别(临时)
ceph tell osd.<id> injectargs '--debug_osd=20'

# 查看守护进程日志(取决于部署方式)
journalctl -u ceph-osd@<id>
# 或查看 /var/log/ceph/ 目录

# 查看 PG 状态(排查卡住的 PG)
ceph pg dump_stuck inactive
ceph pg dump_stuck unclean
ceph pg <pg_id> query

十、用户与认证(CephX)

1
2
3
4
5
6
7
8
9
10
11
# 列出所有用户
ceph auth list

# 查看用户密钥
ceph auth get client.admin

# 创建新用户(带 caps 权限)
ceph auth get-or-create client.user1 mon 'allow r' osd 'allow rw pool=data'

# 导出 keyring
ceph auth get client.user1 -o /etc/ceph/client.user1.keyring

十一、其他实用命令

1
2
3
4
5
6
7
8
9
10
11
12
# 查看版本
ceph --version

# 查看网络连接(MON/OSD 通信)
ceph report

# 手动触发数据均衡(通常自动进行)
ceph osd reweight-by-utilization 110 # 超过 110% 平均利用率的 OSD 降权

# 清除 full 标记(当集群满时)
ceph osd set-full-ratio 0.95
ceph osd set-backfillfull-ratio 0.90