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