最全⑦ Ceph日常运维管理命令_osd_scrub_max_interval(1),2024年最新Linux运维程序员面试笔试宝典

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

1、查看运行配置
命令格式:
# ceph daemon {daemon-type}.{id} config show 

命令举例:
# ceph daemon osd.0 config show 

2、tell子命令格式

使用 tell 的方式适合对整个集群进行设置,使用 * 号进行匹配,就可以对整个集群的角色进行设置。而出现节点异常无法设置时候,只会在命令行当中进行报错,不太便于查找。

命令格式:
# ceph tell {daemon-type}.{daemon id or *} injectargs --{name}={value} [--{name}={value}]
命令举例:
# ceph tell osd.0 injectargs --debug-osd 20 --debug-ms 1


  • daemon-type:为要操作的对象类型如osd、mon、mds等。
  • daemon id:该对象的名称,osd通常为0、1等,mon为ceph -s显示的名称,这里可以输入*表示全部。
  • injectargs:表示参数注入,后面必须跟一个参数,也可以跟多个
3、daemon子命令

使用 daemon 进行设置的方式就是一个个的去设置,这样可以比较好的反馈,此方法是需要在设置的角色所在的主机上进行设置。

命令格式:
# ceph daemon {daemon-type}.{id} config set {name}={value}
命令举例:
# ceph daemon mon.ceph-monitor-1 config set mon_allow_pool_delete false

三、集群操作

命令包含start、restart、status

1、启动所有守护进程
# systemctl start ceph.target

2、按类型启动守护进程
# systemctl restart ceph-mgr.target
# systemctl restart ceph-osd@id
# systemctl restart ceph-mon.target
# systemctl restart ceph-mds.target
# systemctl restart ceph-radosgw.target

3、更新所有节点的配置文件的命令
ceph-deploy --overwrite-conf config push cephnode01 cephnode02 cephnode03 

四、添加和删除OSD

1、添加OSD
1、格式化磁盘
ceph-volume lvm zap /dev/sd<id>
2、进入到ceph-deploy执行目录/my-cluster,添加OSD
# ceph-deploy osd create --data /dev/sd<id> $hostname

2、删除OSD
1、调整osd的crush weight为 0
ceph osd crush reweight osd.<ID> 0.0
2、将osd进程stop
systemctl stop ceph-osd@<ID>
3、将osd设置out
ceph osd out <ID>
4、立即执行删除OSD中数据
ceph osd purge osd.<ID> --yes-i-really-mean-it
5、卸载磁盘
umount /var/lib/ceph/osd/ceph-?

五、扩容PG

ceph osd pool set {pool-name} pg_num 128
ceph osd pool set {pool-name} pgp_num 128 

注:
1、扩容大小取跟它接近的2的N次方
2、在更改pool的PG数量时,需同时更改PGP的数量。PGP是为了管理placement而存在的专门的PG,它和PG的数量应该保持一致。如果你增加pool的pg_num,就需要同时增加pgp_num,保持它们大小一致,这样集群才能正常rebalancing。

六、Pool操作

列出存储池
ceph osd lspools

创建存储池
命令格式:
# ceph osd pool create {pool-name} {pg-num} [{pgp-num}]
命令举例:
# ceph osd pool create rbd 32 32

设置存储池配额
命令格式:
# ceph osd pool set-quota {pool-name} [max\_objects {obj-count}] [max\_bytes {bytes}]
命令举例:
# ceph osd pool set-quota rbd max\_objects 10000

删除存储池
#在ceph.conf配置文件中添加如下内容:
[mon]
mon allow pool delete = true
#重启ceph-mon服务
systemctl restart ceph-mon.target
#执行删除pool命令
ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it
命令举例:
ceph osd pool delete kube kube --yes-i-really-really-mean-it

重命名存储池
ceph osd pool rename {current-pool-name} {new-pool-name}

查看存储池统计信息
rados df

给存储池做快照
ceph osd pool mksnap {pool-name} {snap-name}

删除存储池的快照
ceph osd pool rmsnap {pool-name} {snap-name}

获取存储池选项值
ceph osd pool get {pool-name} {key}

调整存储池选项值
ceph osd pool set {pool-name} {key} {value}
size:设置存储池中的对象副本数,详情参见设置对象副本数。仅适用于副本存储池。
min_size:设置 I/O 需要的最小副本数,详情参见设置对象副本数。仅适用于副本存储池。
pg_num:计算数据分布时的有效 PG 数。只能大于当前 PG 数。
pgp_num:计算数据分布时使用的有效 PGP 数量。小于等于存储池的 PG 数。
hashpspool:给指定存储池设置/取消 HASHPSPOOL 标志。
target_max_bytes:达到 max_bytes 阀值时会触发 Ceph 冲洗或驱逐对象。
target_max_objects:达到 max_objects 阀值时会触发 Ceph 冲洗或驱逐对象。
scrub_min_interval:在负载低时,洗刷存储池的最小间隔秒数。如果是 0 ,就按照配置文件里的 osd_scrub_min_interval 。
scrub_max_interval:不管集群负载如何,都要洗刷存储池的最大间隔秒数。如果是 0 ,就按照配置文件里的 osd_scrub_max_interval 。
deep_scrub_interval:“深度”洗刷存储池的间隔秒数。如果是 0 ,就按照配置文件里的 osd_deep_scrub_interval 。

获取对象副本数
ceph osd dump | grep 'replicated size'

七、用户管理

Ceph 把数据以对象的形式存于各存储池中。Ceph 用户必须具有访问存储池的权限才能够读写数据。另外,Ceph 用户必须具有执行权限才能够使用 Ceph 的管理命令。

1、查看用户信息
查看所有用户信息
# ceph auth list
获取所有用户的key与权限相关信息
# ceph auth get client.admin
如果只需要某个用户的key信息,可以使用pring-key子命令
# ceph auth print-key client.admin 

2、添加用户
# ceph auth add client.john mon 'allow r' osd 'allow rw pool=liverpool'
# ceph auth get-or-create client.paul mon 'allow r' osd 'allow rw pool=liverpool'
# ceph auth get-or-create client.george mon 'allow r' osd 'allow rw pool=liverpool' -o george.keyring
# ceph auth get-or-create-key client.ringo mon 'allow r' osd 'allow rw pool=liverpool' -o ringo.key

3、修改用户权限
# ceph auth caps client.john mon 'allow r' osd 'allow rw pool=liverpool'
# ceph auth caps client.paul mon 'allow rw' osd 'allow rwx pool=liverpool'
# ceph auth caps client.brian-manager mon 'allow *' osd 'allow *'
# ceph auth caps client.ringo mon ' ' osd ' '

4、删除用户
# ceph auth del {TYPE}.{ID}


**先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里**

**深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/9e487f5635b4271c458e847907187008.png)
![img](https://img-blog.csdnimg.cn/img_convert/9cfbccab148ae99104a74746dd483b53.png)
![img](https://img-blog.csdnimg.cn/img_convert/5ee75408e78d8871bf60a81c3e0a6ce0.png)
![img](https://img-blog.csdnimg.cn/img_convert/7a026cfd8c98585b41f9d32e78a13c8c.png)
![img](https://img-blog.csdnimg.cn/img_convert/37f9ea2bf1ffb6c5ce0bf2c5222391b9.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.youkuaiyun.com/forums/4f45ff00ff254613a03fab5e56a57acb)**

94349644)]
[外链图片转存中...(img-Ev7u2Ny6-1715494349644)]
[外链图片转存中...(img-fkeGHZMR-1715494349645)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.youkuaiyun.com/forums/4f45ff00ff254613a03fab5e56a57acb)**

<think>好的,我现在需要处理用户的问题:“请使用中文回答我或者给我介绍一下: ceph_osd_perf_apply_latency_seconds * 1000 > 500”。首先,用户之前询问过关于Ceph RBD读取延迟的PromQL表达式,现在这个问题也是关于Ceph监控指标的,但这次是OSD的应用延迟。我需要先理解这个表达式的含义,以及用户可能的意图。 首先,用户给出的表达式是“ceph_osd_perf_apply_latency_seconds * 1000 > 500”。看起来这是一个PromQL查询,用于监控Ceph OSD的应用延迟是否超过500毫秒。用户可能希望了解这个表达式的用途、结构以及背后的监控逻辑。 接下来,我需要拆解这个表达式。ceph_osd_perf_apply_latency_seconds应该是Ceph OSD处理写入请求的延迟时间,单位是秒。乘以1000是为了将单位转换为毫秒,然后检查是否大于500。所以整个表达式的作用是筛选出应用延迟超过500毫秒的OSD实例。 用户可能在使用Prometheus监控Ceph集群,特别是OSD的性能。他们可能遇到了延迟问题,或者想设置警报,当延迟超过一定阈值时触发。因此,用户需要确认这个表达式的正确性,以及背后的指标含义,确保监控的有效性。 我需要考虑用户可能的背景。他们可能是运维人员或开发人员,负责维护Ceph集群,需要监控OSD的性能指标。之前的提问关于RBD读取延迟,现在转向OSD的应用延迟,说明他们在全面监控Ceph的不同组件,关注性能问题。 接下来,我需要验证这个PromQL的正确性。首先,确认指标名称是否正确。Ceph的监控指标通常通过ceph-exporter或类似的工具导出,不同的版本可能有不同的指标命名习惯。例如,是否存在ceph_osd_perf_apply_latency_seconds这个指标,或者是否有类似名称的指标,比如ceph_osd_apply_latency_seconds。如果用户写错了指标名称,可能会导致查询结果不准确。 其次,应用延迟的具体含义是什么?Apply latency通常指OSD处理写操作的时间,包括将数据写入日志和最终落盘的时间。用户需要了解这个指标反映的是OSD处理请求的效率,高延迟可能意味着磁盘性能问题、网络延迟或OSD过载。 然后,检查单位转换是否正确。原指标单位是秒,乘以1000转换为毫秒是合理的,但需要确认指标的实际单位是否确实是秒,避免误解。比如,有些指标可能以毫秒为单位,这时候转换就会出错。 此外,比较运算符“> 500”是否正确?用户可能想筛选延迟超过500毫秒的情况,但需要结合实际情况判断这个阈值是否合理。500毫秒对于存储系统来说可能已经很高,但具体取决于集群的配置和性能要求。用户可能需要根据历史数据调整阈值。 另外,PromQL的语法是否正确?表达式是否合法?比如,乘法运算符的使用是否正确,是否需要使用函数如rate或irate来处理计数器指标。这里可能存在误区,因为通常延迟指标可能是直方图或Summary类型,而不是简单的Gauge。如果ceph_osd_perf_apply_latency_seconds是一个直方图,那么可能需要使用rate函数来计算一段时间内的平均延迟,而不是直接使用该指标的值。 例如,正确的处理方式可能是:rate(ceph_osd_perf_apply_latency_seconds_sum[5m]) / rate(ceph_osd_perf_apply_latency_seconds_count[5m]) * 1000 > 500,这样计算的是平均延迟。如果用户直接使用该指标而没有考虑rate或irate,可能会得到错误的结果,因为累积值会不断增长,无法直接反映当前延迟。 因此,用户当前的表达式可能存在问题,需要进一步确认指标类型和正确的查询方式。如果用户直接使用了一个Gauge类型的指标,那么表达式是有效的,但如果是计数器类型,就需要使用rate或irate来处理。 另外,用户可能没有考虑到多个标签的情况,比如不同的OSD、集群、主机等。表达式是否需要按某些标签进行分组或聚合?例如,按OSD实例分组,以便查看每个OSD的延迟情况,而不是整体的情况。如果用户希望每个OSD单独判断,可能需要使用by (instance)或者其他相关标签。 此外,用户可能希望设置警报规则,当有任意OSD的延迟超过阈值时触发警报。这时候,PromQL需要正确返回所有超过阈值的实例,以便警报能够准确触发。 总结下来,我需要向用户解释以下几点: 1. 表达式的目的:监控Ceph OSD的应用延迟是否超过500毫秒。 2. 指标的含义:ceph_osd_perf_apply_latency_seconds的定义和单位。 3. 可能的语法问题:是否正确处理了指标类型(Gauge还是Counter),是否需要使用rate/irate函数。 4. 单位转换是否正确,阈值是否合理。 5. 是否需要聚合或分组,以正确显示各个OSD的情况。 6. 使用该表达式时的注意事项,比如指标是否存在、时间窗口的选择等。 同时,用户可能存在的深层需求是有效监控OSD性能,及时发现问题,并设置合理的警报。因此,除了解释当前表达式,还需要提供优化建议,比如正确的PromQL写法、阈值调整、结合其他指标分析等,帮助用户更好地实现监控目标。 最后,确保回答清晰易懂,结构合理,涵盖用户可能关心的问题点,并指出潜在的问题和解决方案,避免用户在使用过程中遇到问题。</think>以下是对 `ceph_osd_perf_apply_latency_seconds * 1000 > 500` 的详细解释和分析: --- ### **表达式的目的** 该 PromQL 表达式用于 **监控 Ceph OSD(Object Storage Daemon)的写入应用延迟**,并筛选出延迟超过 **500 毫秒** 的 OSD 实例。核心目标是识别性能异常的 OSD,帮助运维人员快速定位存储集群中的高延迟问题。 --- ### **指标拆解** #### 1. **指标含义** - **`ceph_osd_perf_apply_latency_seconds`** 表示 Ceph OSD 处理写入请求的 *应用延迟*(Apply Latency),即从 OSD 接收到写入请求到数据成功写入磁盘的总时间。 - 单位:**秒**(通过 `* 1000` 转换为毫秒)。 - 标签:通常包含 `ceph_cluster`(集群名称)、`osd`(OSD 编号)、`instance`(主机实例)等维度。 #### 2. **表达式逻辑** - **`ceph_osd_perf_apply_latency_seconds * 1000`** 将延迟单位从秒转换为毫秒,便于更直观的监控(例如,`0.5秒` → `500毫秒`)。 - **`> 500`** 筛选出应用延迟超过 **500 毫秒** 的 OSD 实例。 --- ### **适用场景** 1. **性能告警** 当 OSD 的写入延迟持续高于阈值(500ms)时,触发告警,提示可能存在磁盘性能问题或网络瓶颈。 2. **根因分析** 结合其他指标(如 CPU、磁盘 IO、网络流量),定位高延迟的具体原因(例如慢盘、硬件故障、负载过高等)。 3. **横向对比** 比较不同 OSD、主机或集群的延迟表现,识别性能瓶颈的分布。 --- ### **潜在问题与改进建议** #### 1. **指标类型需确认** - **假设验证**: 需要确认 `ceph_osd_perf_apply_latency_seconds` 是否为 **直方图(Histogram)** 或 **Summary 类型** 的指标(通常存储延迟类指标是这类类型)。 - **问题**: 如果该指标是 Counter 类型(累计值),直接查询其瞬时值无意义,需改用 `rate()` 或 `irate()` 计算单位时间增量。 - **改进建议**: 如果是直方图/Summary 类型,更规范的写法是: ```promql (sum(rate(ceph_osd_perf_apply_latency_seconds_sum[2m])) by (osd, instance)) / (sum(rate(ceph_osd_perf_apply_latency_seconds_count[2m])) by (osd, instance)) * 1000 > 500 ``` 这会计算过去 2 分钟内 OSD 的平均应用延迟。 #### 2. **阈值合理性** - **500 毫秒的适用性**: CephOSD 延迟通常要求更低(例如,SSD 环境下建议小于 50ms)。500ms 可能过高,需根据实际硬件性能调整阈值。 - **建议**: 结合历史数据(P99/P95 分位数)设置动态阈值,或分场景定义: ```promql # 普通 HDD 环境 ceph_osd_perf_apply_latency_seconds * 1000 > 200 # 高性能 SSD 环境 ceph_osd_perf_apply_latency_seconds * 1000 > 50 ``` #### 3. **单位转换优化** - **显式标注单位**: 建议在查询结果中注明单位,避免歧义: ```promql (ceph_osd_perf_apply_latency_seconds * 1000) > 500 # 结果展示为 "apply_latency_ms" ``` #### 4. **关联分析** - **结合其他指标**: 高延迟可能由多种因素引起,需综合以下指标分析: ```promql # 磁盘 IO 延迟 node_disk_io_time_seconds{device="osd_disk"} # 网络延迟 rate(ceph_osd_ping_latency_seconds[5m]) # CPU 使用率 rate(node_cpu_seconds_total{mode="idle"}[5m]) ``` --- ### **示例输出** 假设查询结果返回: ``` {ceph_cluster="prod-cluster", osd="osd.1", instance="10.0.0.1:9283"} 623 {ceph_cluster="prod-cluster", osd="osd.3", instance="10.0.0.2:9283"} 810 ``` 表示 OSD.1OSD.3 的应用延迟分别为 623ms 和 810ms,需要进一步排查这些节点的磁盘、网络或负载情况。 --- ### **总结** - **核心作用**:监控 OSD 写入延迟,识别性能瓶颈。 - **关键改进点**: - 确认指标类型,必要时修正为基于 `rate()` 的计算。 - 根据实际环境调整阈值。 - 结合多维指标进行根因分析。 如果有更多上下文(如 Ceph 版本、监控工具类型),可进一步优化表达式!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值