运维群里发通知,说这台 Windows 服务器要打一个 hotfix,让先停业务。开发问:hotfix 和平时 Windows Update 推的补丁有什么区别?
Hotfix 原意是热修复,指针对某个具体缺陷单独发布的修复包。微软内部的叫法是 Quick Fix Engineering,编号就是常见的 KB 加一串数字。
几种补丁形态的区别
- Hotfix / QFE:针对单个问题,按需申请或单独下载,影响范围窄。
- 累积更新(LCU、月度汇总):每月一次,把之前的修复打包,现在的主流形态。
- Service Pack:大版本汇总,Win7 之后基本不再出。
- 功能更新:升系统版本号,不是修 bug。
现在微软很少单独发 hotfix,除非是紧急安全问题,或者客户通过支持合同单独索取。日常见到的 KB 补丁,多数已经是累积更新。
打之前该做的三件事
先看 KB 号对应的问题描述,确认和自己遇到的现象对得上,别为了打而打。再看已知问题列表,微软每个累积更新都会列,经常有打完某补丁后共享打印失效、VPN 断连这类记录。最后确认回滚路径:Windows 可以在「已安装更新」里卸载,但累积更新卸掉后可能影响后续补丁的安装顺序。
生产环境先灰度一台,观察一两天再全量。这个流程看着慢,出问题时能救命。
查已经装了哪些补丁
wmic qfe list briefPowerShell 里用 Get-HotFix,加 ComputerName 参数可以查远程机器。输出里的 HotFixID 就是 KB 号,InstalledOn 是安装日期。排查「某天之后开始出问题」,先对照这个日期看当天装了什么,比翻事件日志快。
Linux 那边对应什么
没有 hotfix 这个概念,靠发行版的包管理和内核热补丁。Ubuntu 的 unattended-upgrades、RHEL 的 yum update 加安全参数,只装安全更新是常见做法。内核层面有 kpatch、kGraft,能不打重启修内核漏洞。
不管哪个平台,补丁管理的关键不是打得多快,而是知道自己在打什么、出事能不能退回去。