上一篇文章介绍了为什么微软的系统,打补丁了要重启。这是一个既成事实,说的是如何去接受这个事实。

但是今天的故事会更有一点意思,我们介绍一下特定场景中,如何做到打补丁不重启的,也就是不去接受上面的事实。

虽然打补丁重启很麻烦,但是需要注意的是,在Windows 10/Windows Server 2016以后的操作系统中,我们不需要在意补丁的细节,只需要安装最新的补丁,这种补丁是累计更新的。

而在Windows7以及更早的系统中,补丁的安装是这样的:

随便聊聊:如何硬气的打补丁不重启_重启

早期的补丁安装方式优点和缺点同样明显:

  • 补丁一般有专门的应对功能,相对体积较小,安装速度快。
  • 补丁2的安装可能依赖补丁1,有时候不见得会有很明确的说明。
  • 补丁3可能替换了补丁1,在安装补丁3的时候不需要安装补丁1。
  • 安装补丁依然会有可能需要重启。

如何做到打补丁不重启

打补丁不重启不是什么高科技,这只是微软的产品功能。说到功能,就要理解一般来说,这会有限制条件。一个恰当的比喻类似于显卡的​​光线追踪​​。

而在打补丁这个事情里,这项技术叫做 ​​Azure Automanage 热补丁​​,他是随着​​Windows Server 2022​​的发布而带来的功能,但是这项功能又不是泛指所有的​​Windows Server 2022​​,它只支持一种操作系统

  • Windows Server 2022(core)

再次强调一下,是Windows Server 2022的​​CORE​​版。虽然使用CORE版会减低被攻击的风险,但是没有图形界面对大多数朋友来说,应该还是会带来一些障碍的。

而且也不是随便一个平台,随便一个版本就支持,它只存在下面两种环境中。

  • Azure(公有云)
  • AzureStack HCI(混合云)

也就是说,本地化的Windows Server 2022(零售、EA)并不支持这项功能。要在自家数据中心使用这项功能,必须要使用AzureStack HCI,而云端则必须要选择Azure。

什么是 Azure Automanage 热补丁

这里简单介绍一下这项功能:

“Windows Server 2022 Datacenter:Azure 版本”支持 Azure Automanage 中的热补丁。 热修补是在新的 Windows Server Azure Edition 虚拟机 (VM) 上安装更新的一种新方式,安装后无需重新启动。 有关详细信息,请参阅 ​​Azure Automanage 文档​​。

热补丁目前处于​​公共预览版​​中。需要一个选择加入程序才能使用下面描述的功能。此预览版在没有服务级别协议的情况下提供,不建议用于生产工作负载。某些功能可能不受支持或功能受限。有关详细信息,请参阅​​Microsoft Azure 预览版的补充使用条款​​。

热补丁的工作原理

Hotpatch 的工作原理是首先使用 Windows 更新最新累积更新建立基线。基于该基线的热补丁会定期发布(例如,每月的第二个星期二)。热补丁将包含不需要重新启动的更新。定期(从每三个月开始)使用新的最新累积更新刷新基线。

随便聊聊:如何硬气的打补丁不重启_基线_02

上面的话很官方,简单来说就是这样:

  • 可以做到打补丁不重启,但是这只能坚挺三个月
  • 每3个月会打一个基线补丁,这个时候会重启。
  • 周而复始

回到和Windows7时代的补丁机制对比,每个补丁很小,对系统的影响相对较小。但是每3个月会对齐一下基线,让补丁不至于和Win7一样乱,这对于解决补丁依赖和补丁替代,会有积极的作用。

除了上面计划内的补丁安装之外,也可能会出现一些计划外的补丁,比如重大的0day,那就可能会发布新的需要重启的补丁。

补丁安装的原则是这样的:

  • 分类为“关键”或“安全”的补丁会自动下载并应用到虚拟机上。
  • 在 VM 时区的非高峰时段应用补丁程序。
  • 补丁编排由 Azure 管理,补丁的应用遵循​​可用性优先原则​​。
  • 监控通过平台健康信号确定的虚拟机健康状况以检测修补故障。

实现

要开始在Azure上新 VM 上使用热补丁,请执行以下步骤:

  1. 启用​​预览访问​
  • 每个订阅都需要启用一次性预览访问权限。
  • 可以通过 API、PowerShell 或 CLI 启用预览访问,如下面的“启用预览访问”部分所述。
  1. 从 Azure 门户开始创建新 VM
  1. 在 VM 创建期间提供详细信息
  • 确保在“图像”下拉列表中选择了受支持的Windows Server Azure 版图像。使用​​本指南​​确定支持哪些图像。
  • 在“来宾操作系统更新”部分下的“管理”选项卡上,选中“启用热补丁”复选框以在预览时评估热补丁。补丁编排选项将设置为“Azure 编排”。
  • 在“Azure Automanage”部分下的“管理”选项卡上,为“Azure Automanage 环境”选择“开发/测试”或“生产”,以在预览时评估 Automanage 机器最佳实践。
  1. 创建你的新虚拟机

补丁更新

我们可以手动的对系统打一下补丁,试验一下效果,看看到底是不是真的不用重启。

  • 在安装好的操作系统,进入​​来宾和主机更新​​→​​转到热补丁(预览)​

随便聊聊:如何硬气的打补丁不重启_基线_03

  • 在这个界面​​Assess updates​​→​​立即触发评估​​→​​确定​

随便聊聊:如何硬气的打补丁不重启_基线_04

  • 等待评估结束,可以看到能够安装的补丁会在下方列出来。

  • 此时可以点击顶部的​​Manage updates​​→​​one-time update​​进行手动安装补丁

随便聊聊:如何硬气的打补丁不重启_重启_05

  • 进行如下配置,默认不需要修改

随便聊聊:如何硬气的打补丁不重启_基线_06

  • 在左侧点击​​+包含更新分类​​,勾选所有

  • 刚才发现的补丁就可以安装了。点击​​下一步​​继续

  • 确认无误,正式安装

  • 右上角会出现提示正在安装。

随便聊聊:如何硬气的打补丁不重启_热补丁_07

  • 由于补丁不大,安装很快结束。

随便聊聊:如何硬气的打补丁不重启_重启_08

  • 一条正常的安装日志,大概是长这个样子的。

随便聊聊:如何硬气的打补丁不重启_基线_09

补丁安装失败的情况处理

在我的测试过程中,我发现补丁安装有失败的情况,那这个锅应该甩给热补丁么?

  • 检查日志,看到有如下错误提示

随便聊聊:如何硬气的打补丁不重启_基线_10

  • 这里也能看到相应错误提示
  • 随便聊聊:如何硬气的打补丁不重启_热补丁_11
  • 前往虚拟机,查看日志,由于是个core系统,没有资源管理器,所以需要开一个notepad,然后在notepad里面,使用​​打开​​​,操作这个窗口。在这里,我们可以选择​​单个文件​​,通过远程桌面,可以把文件拷贝出来。日志检查没有发现异常的地方。

随便聊聊:如何硬气的打补丁不重启_重启_12


  • 检查日志过程中,发现裸机内存占用很大,远程桌面也有时会断联。

随便聊聊:如何硬气的打补丁不重启_热补丁_13

  • 内存扩容为3.5G,裸连直接使用掉2G,因此可以下定论,Windows Server 2022比较占用内存资源,即使是CORE,也要分配4G内存。

随便聊聊:如何硬气的打补丁不重启_基线_14

  • 内存扩容后,补丁安装正常,现阶段可以看出来,Windows Server 2022对系统资源要求相对较高,这一块大家一定要有心理预期。

总结

从我最早知道热补丁这个概念的时候,我对他的期待还是蛮高的,安装补丁要重启,重启就有可能带来各种意外的问题。所以不重启的话,就能减低出现问题的可能性。

现在的功能从标配的次次重启改成了3个月重启一次。并且在Azure上,可以由Azure来托管补丁的安装过程。这对于云端用户是个利好消息。

而本地化的用户呢?其实这种改变对本地化用户也有很大的影响,在本地使用需要使用Azure Stack HCI。HCI的账单会从Azure走,进行合并。如果用户没有互联网连接,也就无法使用这项功能。

虽然没有做到完全的不重启打补丁,这是一种有很多前置条件的​​不重启​​,但这确实在某种程度上改变了和推进了云运维的模式。