返回

常用ceph命令

工作中遇到的比较常用的命令,特此整理以备忘.

  • 查看集群状态
ceph -s #查看状态
ceph -v #查看版本
ceph df #查询集群存储容量
ceph health detail #集群详细健康信息
  • 查询集群组件信息相关命令
rados lspools #查询池子列表
ceph osd dump | grep pool #查询所有池子信息
rados -p <pool> ls #池子下对象
rados --pgid <pgid> ls #查看pg下对象
ceph osd map <pool> object #查看对象信息
ceph-objectstore-tool --data-path <datapath> --journal-path <journalpath> <objname> dump #输出对象元数据信息
ceph-admin-disktool --getdisks  #获取磁盘信息

#mon信息
ceph mon stat
ceph mon dump
ceph quorum_status

#osd信息
ceph osd tree
ceph osd dump
ceph osd find <numeric_osd_id>
ceph osd df tree #查看集群空间使用率

#pg信息
ceph pg stat
ceph pg dump
ceph pg dump_stuck unclean
  • systemctl管理服务
systemctl reset-failed ceph-osd@*   #重置失败服务
systemctl start ceph-osd.target     #重启osd服务
systemctl restart ceph.target   #重启ceph服务
systemctl stop ceph-osd@0   #停止单个osd服务
systemctl status ceph-osd@1 #查看服务状态
  • 集群操作命令
ceph osd pool delete <pool> <pool> --yes-i-really-really-mean-it    #删除池
rados put <oid> <filename> --pool=<pool> #在池中添加对象
eph osd pool create <pool> <pgnum> <pgnum> -r <host、osd>  #创建池
  • crush相关操作
ceph osd crush dump
ceph osd crush rule list
ceph osd crush rule dump <crush rule name>
#在线修改crush rule
ceph osd getcrushmap -o <map_old>    #导出map
crushtool -d <map_old> -o <map_old.txt>  #转化成可编辑格式
vi map_old.txt #修改rule replicated_ruleset step chooseleaf firstn 0 type *osd*
crushtool -c <map_old.txt> -o <map_new>  #还原为map
ceph osd setcrushmap -i <map_new>     #将map导入ceph
  • 块设备管理命令
ceph osd pool create <rbd> <pgnum> <pgnum>
ceph osd pool set <rbd> size <repnum>
rbd create --image <my_image> --size <1T> --pool <rbd>
rbd ls -p <pool_name> #查看指定pool中的卷
rbd trash move/mv <images_name> -p <pool_name> #将卷丢到回收站
rbd trash restore <ID> -p <pool_name> #将回收站中的卷还原
rbd trash remove/rm <ID> -p <pool_name> #清除回收站中的卷
  • 配置命令
ceph --show-config #查询集群默认配置

ceph daemon <mon.5> config show | grep <mon_osd_down_out_interval> #查询进程配置信息
#修改运行配置信息 临时生效
ceph tell <daemon-type>.<daemon id or *> injectargs --<name> <value>
ceph tell osd.0 injectargs '--debug-osd 0/5'
  • 其他
  1. 出现由于mon服务没有起来导致的admin_socket问题,可能原因是mon对所在分区目录空间的要求不满足(默认5%)清除部分空间即可;