适用场景
- 产品:ZCF
- 组件:ZStone
- 涉及对象:分布式存储、存储管理节点、deep-scrub、crontab
- 版本:5.2.6
- 触发条件: 需要通过计划任务定时控制存储池 deep-scrub 开关,优化深度巡检执行时间窗口。
问题现象
- 需要对存储池的 deep-scrub 功能进行定时开启/关闭控制。
- 目标是在不影响业务运行的前提下,按固定时间窗口执行深度巡检。
- 变更不涉及管理服务和物理机节点重启。
判断方法
- 确认当前环境属于本文适用范围,并记录当前版本、目标版本、系统架构、操作系统、部署形态和存储类型等关键信息。
- 确认目标存储池名称可从存储 UI 的存储池总览中获取。
- 确认计划任务已正确写入
crontab。 - 检查日志文件
/root/ceph_deep_scrub_ctl.log,确认脚本按预期执行。
原因说明
本次优化目标是在任意存储管理节点上通过计划任务控制 deep-scrub 功能的开关,从而把深度巡检安排在指定时间段执行,减少对业务运行的影响。
解决方案
1. 执行前准备
- 风险等级:低风险
- 变更前关闭全局高可用。
- 将控制脚本上传到任意存储管理节点的
/root/目录。
2. 处理步骤
- 关闭全局高可用。
- 预期结果:平台进入维护状态。
- 上传任务脚本工具到任意存储管理节点。
- 脚本文件名:
ceph_deep_scrub_ctl.sh - 预期结果:脚本已放置于
/root/目录。
- 配置计划任务,定时开关 deep-scrub 功能。
crontab -e
0 22 * * * /bin/bash /root/ceph_deep_scrub_ctl.sh on $POOL_NAME
0 6 * * * /bin/bash /root/ceph_deep_scrub_ctl.sh off $POOL_NAME
- 参数说明:
on:开启deep_scruboff:关闭deep_scrub$POOL_NAME:存储池名称,从存储 UI 的存储池总览中获取- 日志输出位置:
/root/ceph_deep_scrub_ctl.log - 预期结果:定时任务配置成功。
- 检查云平台状态正常后,重新打开全局高可用。
- 预期结果:高可用恢复,业务正常运行。
验证方法
- 检查
crontab中是否存在计划任务。 - 检查
/root/ceph_deep_scrub_ctl.log,确认 deep-scrub 开关动作按计划执行。 - 确认高可用恢复后平台与业务状态正常。
风险与回滚
- 风险:方案评估为低,且变更期间不影响业务运行。
- 风险等级:低。
- 回滚:删除配置的
crontab任务,并删除/root/ceph_deep_scrub_ctl.sh与/root/ceph_deep_scrub_ctl.log文件。
异常处理建议
如变更过程中出现异常,应立即停止后续操作,并按回退方案进行恢复;必要时删除定时任务和脚本,恢复原状态。
