文档目录

适用场景

  • 产品:ZCF
  • 组件:ZStone
  • 涉及对象:分布式存储、存储管理节点、deep-scrub、crontab
  • 版本:5.2.6
  • 触发条件: 需要通过计划任务定时控制存储池 deep-scrub 开关,优化深度巡检执行时间窗口。

问题现象

  • 需要对存储池的 deep-scrub 功能进行定时开启/关闭控制。
  • 目标是在不影响业务运行的前提下,按固定时间窗口执行深度巡检。
  • 变更不涉及管理服务和物理机节点重启。

判断方法

  1. 确认当前环境属于本文适用范围,并记录当前版本、目标版本、系统架构、操作系统、部署形态和存储类型等关键信息。
  2. 确认目标存储池名称可从存储 UI 的存储池总览中获取。
  3. 确认计划任务已正确写入 crontab。
  4. 检查日志文件 /root/ceph_deep_scrub_ctl.log,确认脚本按预期执行。

原因说明

本次优化目标是在任意存储管理节点上通过计划任务控制 deep-scrub 功能的开关,从而把深度巡检安排在指定时间段执行,减少对业务运行的影响。

解决方案

1. 执行前准备

  • 风险等级:低风险
  • 变更前关闭全局高可用。
  • 将控制脚本上传到任意存储管理节点的 /root/ 目录。

2. 处理步骤

  1. 关闭全局高可用。
  • 预期结果:平台进入维护状态。
  1. 上传任务脚本工具到任意存储管理节点。
  • 脚本文件名:ceph_deep_scrub_ctl.sh
  • 预期结果:脚本已放置于 /root/ 目录。
  1. 配置计划任务,定时开关 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_scrub
  • off:关闭 deep_scrub
  • $POOL_NAME:存储池名称,从存储 UI 的存储池总览中获取
  • 日志输出位置:/root/ceph_deep_scrub_ctl.log
  • 预期结果:定时任务配置成功。
  1. 检查云平台状态正常后,重新打开全局高可用。
  • 预期结果:高可用恢复,业务正常运行。

验证方法

  • 检查 crontab 中是否存在计划任务。
  • 检查 /root/ceph_deep_scrub_ctl.log,确认 deep-scrub 开关动作按计划执行。
  • 确认高可用恢复后平台与业务状态正常。

风险与回滚

  • 风险:方案评估为低,且变更期间不影响业务运行。
  • 风险等级:低。
  • 回滚:删除配置的 crontab 任务,并删除 /root/ceph_deep_scrub_ctl.sh 与 /root/ceph_deep_scrub_ctl.log 文件。

异常处理建议

如变更过程中出现异常,应立即停止后续操作,并按回退方案进行恢复;必要时删除定时任务和脚本,恢复原状态。

deep-scrub 深度巡检优化 | 技术方案 · KB | ZStack 资源中心