首页/系统与基础设施/自动化运维速查/批量操作前的预检与冻结
批量执行与作业50 条

批量操作前的预检与冻结

预检在动手前确认前提条件成立,冻结让环境在操作期间保持稳定。预检覆盖连通性、权限、磁盘空间、依赖服务健康、时间同步与备份可用性;冻结包括暂停定时任务与自动修复、从负载均衡摘流、必要时进入只读。硬条件不满足应当立即中止。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​‌‌‌‌​‌‌‌​​​​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​​​​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌​‌​​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌​‌​‌‌​​‌​‌‌​‌​‌‌​​‌‌​​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌​‌​‌‌‌‌​‌​​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

预检与冻结是什么

预检是在动手之前确认前提条件成立,冻结是让环境在操作期间保持稳定,两者通常一起使用。预检覆盖连通性、凭据可用性、提权权限、磁盘剩余空间、依赖服务健康、版本与时间同步、备份可用性;冻结包括暂停可能干扰的自动化(定时任务、自动伸缩、自动修复)、把目标从负载均衡摘除、必要时让业务进入只读或维护模式。原则是预检脚本化,任一硬条件不满足就直接中止,而不是靠人工目测。

基本信息

预检项连通性、免密或凭据可用、sudo 权限、磁盘剩余空间、依赖服务状态、版本与时间同步、备份可用
冻结手段暂停定时任务与自动伸缩、摘除流量、置为只读、静默无关告警
失败处理硬条件不满足立即中止,并输出具体原因
关键要求预检结果留档,作为变更记录的一部分

典型使用场景

  • 大规模变更前的环境体检
  • 数据库迁移前冻结写入并确认备份就绪
  • 批量重启前暂停自动修复脚本,否则自动逻辑会把变更结果覆盖回去
  • 确认所有目标主机时间同步正常,避免日志与租约判定错乱
  • 维护窗口开始前把节点从负载均衡摘除

预检与冻结示例

预检与冻结示例
fail=0
for h in $(cat hosts); do
  ssh -n -o BatchMode=yes -o ConnectTimeout=5 "$h" 'true' || { echo "$h 连接失败"; fail=1; }
  ssh -n "$h" 'df -P / | awk "NR==2{exit !(\$4>1048576)}"' || { echo "$h 磁盘不足"; fail=1; }
done
[ "$fail" -eq 0 ] || { echo '预检未通过,中止'; exit 1; }

# 冻结:暂停会与本次变更冲突的自动化
systemctl stop app-autorepair.timer      # 暂停自动修复,避免覆盖变更结果
crontab -l | grep -v 'sync.sh' | crontab -   # 变更期间摘掉收集类定时任务

预检项与后果

预检项检查方式不通过的后果
连通性ssh 以 BatchMode 试连中途大量失败,回滚成本陡增
磁盘空间df 检查剩余绝对值写入中途失败并留下半截文件
依赖服务systemctl is-active 与探活接口变更显示成功但业务不可用
时间同步timedatectl 与时间同步服务状态日志顺序错乱,租约与证书判定异常
备份可用备份文件存在且可读可解压出问题时无法回滚
最容易漏掉的预检项是时间同步与备份可读性:时间偏差会让日志、证书有效期、租约、分布式锁的判定全部失真;备份存在但从未验证可恢复,等于没有备份。
不冻结自动化是最隐蔽的失败原因:自动修复、自动伸缩、配置收敛脚本可能在变更过程中把环境改回原状,表现为变更莫名其妙没生效或反复回退,排查时几乎不会第一眼怀疑到它们。

易错点

  • 预检只在控制端执行,未验证目标端的磁盘与依赖状态,执行中途批量失败
  • 不暂停自动修复或配置收敛脚本,变更被自动逻辑改回原状
  • 预检失败后仍继续执行,抱着先跑起来看看的心态跳过中止条件
  • 备份文件存在但从未验证可读,真正需要回滚时才发现不可用

数据来源与参考

  • systemd 官方文档:systemctl is-active 与 timer 单元控制
  • OpenSSH 手册 ssh(1):BatchMode 与 ConnectTimeout
  • ITIL 4 变更使能实践:变更前检查与冻结窗口

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/batch-operation-precheck-freeze.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​‌‌‌‌​‌‌‌​​​​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​​​​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌​‌​​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌​‌​‌‌​​‌​‌‌​‌​‌‌​​‌‌​​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌​‌​‌‌‌‌​‌​​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​