• Ceph常用命令总结


    查看集群健康状态

    • ceph -s 集群状态总览
    • ceph health detail 集群状态详情
    • ceph df 查看集群容量及使用率

    osd相关

    • ceph osd tree 查看osd树形图
    • ceoh osd df 查看osd使用率
    • ceph osd df | sort -nr -k17 | head 查看osd使用率排序
    • ceph osd down [...] 将osd设置为down
    • ceph osd find 查找osd在那个节点上
    • ceph osd in [...] 将osd进入集群,将引起数据回填
    • ceph osd out [...] 将osd踢出集群,都将引起数据重映射
    • ceph osd ok-to-stop [...] 判断osd能否安全停止而不造成数据丢失
    • ceph osd ok-to-stop {0..10} 判断osd.0到osd.10这11个osd能否安全停止
    • ceph osd perf dump osd性能数据
    • ceph osd reweight 设置osd的权重,如某个osd权重过高,可降低其权重
    • ceph osd set full|pause|noup|nodown|noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub {--yes-i-really-mean-it} 设置osd标志位
    • ceph osd unset full|pause|noup|nodown|noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub {--yes-i-really-mean-it} 取消osd标志位设置
    • osd set-backfillfull-ratio 设置osd会被标记为不可回填的使用率
    • ceph osd set-full-ratio 设置osd被标记为写满的使用率
    • ceph osd set-nearfull-ratio 设置osd被标记为即将写满的使用率
    • ceph osd dump 显示osd map总览

    osd标志位参数说明

    • noup OSD启动时,会将自己在MON上标识为UP状态,设置该标志位,则OSD不会被自动标识为up状态。
    • nodown OSD停止时,MON会将OSD标识为down状态,设置该标志位,则MON不会将停止的OSD标识为down状态,设置noup和nodown可以防止网络抖动。
    • noout 设置该标志位,则mon不会从crush映射中删除任何OSD。对OSD作维护时,可设置该标志位,以防止CRUSH在OSD停止时自动重平衡数据。OSD重新启动时,需要清除该flag。
    • noin 设置该标志位,可以防止数据被自动分配到OSD上。
    • norecover 设置该flag,禁止任何集群恢复操作。在执行维护和停机时,可设置该flag。
    • nobackfill 禁止数据回填
    • noscrub 禁止清理操作。清理PG会在短期内影响OSD的操作。在低带宽集群中,清理期间如果OSD的速度过慢,则会被标记为down。可以该标记来防止这种情况发生。
    • nodeep-scrub 禁止深度清理。
    • norebalance 禁止重平衡数据。在执行集群维护或者停机时,可以使用该flag。
    • pause 设置该标志位,则集群停止读写,但不影响osd自检。
    • full 标记集群已满,将拒绝任何数据写入,但可读。

    pool相关

    • ceph osd lspools 列出所有的pool
    • ceph osd pool ls detail 列出pool详情
    • ceph osd pool get size|min_size 查询pool副本数|最小副本数
    • ceph osd pool set size|min_size {--yes-i-really-mean-it} 设置pool副本数|最小副本数
    • ceph osd pool get-quota 查询pool容量或对象数配额
    • ceph osd pool set-quota max_objects|max_bytes 设置pool容量或对象数配额

    pg相关

    • ceph pg ls 列出所有pg
    • ceph pg ls-by-osd 列出osd上的所有pg
    • ceph pg ls-by-pool 列出pool里的所有pg
    • ceph pg ls-by-primary 列出所有主副本在该osd上的pg
    • ceph pg map 查看pg的副本分布在哪些osd上
    • ceph pg repair 执行pg修复,可修复某些pg异常状态(虽然大部分时候不管用)
    • ceph pg scrub/deep-scrub 执行数据一致性校验/深度校验
    • ceph pg debug unfound_objects_exist|degraded_pgs_exist 显示pg debug信息
    • ceph pg dump_stuck {inactive|unclean|stale|undersized|degraded [inactive|unclean|stale|undersized|degraded...]} 查询异常pg信息
    • ceph pg dump/dump_json 显示pg map/json格式的pg map

    常见的pg状态说明

    • creating 创建中
    • down pg处于离线状态
    • repair pg正在被修复
    • peering 等待互联,peering 是由主osd发起的使存放PG副本的所有OSD就PG的所有对象和元素数据的状态达成一致的过程,peering过程完成后,主OSD就可以接受客户端写请求
    • active 可读写状态
    • clean 干净态,副本数完整
    • replay 某OSD崩溃后,PG数据重放
    • degraded 降级,未达到要求副本数
    • inconsistent 不一致,PG副本间出现不一致
    • recoverying 恢复中,通过日志重放恢复数据
    • backfilling 回填,pg数据全量从其余osd拷贝生成副本
    • remapped 重映射,pg重映射至新osd
    • stale 数据老旧
    • scrubbing 在做一致性校验

    动态配置相关

    • ceph daemon {daemon-name} config show 查询组件的动态配置
    • ceph daemon osd.0 config show 例如查询osd.0的动态配置
    • ceph daemon /var/run/ceph/client.radosgw.rgw_ec_1.asok config show 例如查询radosgw的动态配置

    查询及调整日志级别

    • ceph daemon /var/run/ceph/client.radosgw.rgw_ec_1.asok config show | grep debug_rgw 查询radosgw日志级别
    • ceph daemon /var/run/ceph/client.radosgw.rgw_ec_1.asok config set debug_rgw 20/20 调整日志级别到最高,第一个20表示log level,第二个20表示memory level,详见https://docs.ceph.com/en/latest/rados/troubleshooting/log-and-debug/#subsystem-log-and-debug-settings
    • ceph daemon osd.0 config show | grep debug_osd 查询osd日志级别
    • ceph daemon osd.0 config set debug_osd 0/5 调整osd日志级别
    或使用tell方式获取及调整动态配置
    • ceph tell {daemon-type}.{daemon id or *} config set {name} {value} 调整动态配置,例如ceph tell osd.0 config set debug_osd 0/5
    • ceph tell {daemon-type}.{daemon id or *} config get {name} 获取动态配置

    慢请求排查

    • ceph daemon osd.id dump_historic_slow_ops

    radosgw相关

    • radosgw-admin bucket list 列出所有桶
    • radosgw-admin bucket stats --bucket=[bucket] 获取桶信息,包括用户、对象数
    • radosgw-admin user info --uid=[uid] 获取用户信息,包括AK/SK
  • 相关阅读:
    Qt 案例 使用QNetworkReply或者URLDownloadToFile 下载http、https资源到本地路径
    SLF4J 报错解决:No SLF4J providers were found
    pnpm:简介
    干洗店管理系统洗鞋店预约上门小程序洗护流程;
    最新发现:《羊了个羊》通关靠运气,项目通关靠双商
    Redis分布式锁
    Node.js| Node.js 修改模块全局安装路径、缓存路径、配置镜像源以及修改完毕后全局安装报错问题
    基于最小二乘支持向量机(LS-SVM)进行分类、函数估计、时间序列预测和无监督学习(Matlab代码实现)
    .NET6打包部署到Windows Service
    SQL 的优化
  • 原文地址:https://blog.csdn.net/sinat_32582203/article/details/137269700