为了将其放入更多生产盒中,我正在测试 Windows 2016 更新行为。我已经运行sconfig
以在“Windows 更新设置”中选择“仅下载”,并将“活动时间”配置为从 07:00 到 19:00。
据我了解,此设置应按以下方式工作:
- 自动下载更新;
- 更新不会自动安装;相反,系统管理员必须手动确认更新安装;
- 如果必须重新启动服务器,则应自动配置在活动时间之外的计划重新启动;
- 在非工作时间(即:19:00 - 07:00 之后)服务器应该重新启动。
主要问题:上述理解正确吗?
我问是因为在 Windows 2016 域控制器上进行测试并手动安装更新时,即使通知显示“您的设备计划在活动时间之外重新启动(活动时间为 07:00 至 19:00)”,重启也不会发生。
我注意到在任务管理器\库\Windows\Windows 更新中,musnotification.exe RebootDialog
创建了一个重新启动任务启动以在 19:20 运行,它每 30/60 分钟运行一次。
第二个问题:默认情况下,当有远程桌面用户登录时,Windows 2016 的行为如何?它通知吗?它会重新启动吗?如果会话处于断开状态怎么办?
注意:我知道政策No auto-restart with logged on users for scheduled automatic updates installations
,但是:
- 它未激活/未配置;
- 由于我不是自动安装更新,它应该没有效果:
仅当配置自动更新策略配置为执行计划的更新安装时,此策略才适用。
当然,我完全理解服务器应该只在适当的时间进行修补和重新启动。但是,我真的很想了解当前(Win2016)更新行为背后的逻辑。我强烈觉得我遗漏了一些东西,因为这应该是一项基本的维护任务。
我已经阅读了这些信息,但我真的很想听听一些第一手的 Windows 系统管理员经验。
好吧,经过一年多的 Windows 2016 安装,我可以回答我自己的问题了。下面的答案在某些方面可能不正确,因为微软不太热衷于有关活动时间的详细信息;尽管如此,这是我对其工作原理的最佳理解。根据需要与众所周知的 Win7/Win2008R2 更新方法进行比较。
简短回答:使用 启用自动更新后
sconfig
,启用 GPO“始终在预定时间自动重启”以简单地忽略“活动时间”并恢复到经典(阅读:Win7/Win2008R2)更新和重启行为。将其他相关 GPO(如“ScheduledInstallTime”)保留为默认设置。长话短说: Win7 和 Win2008R2 有一个简单的升级计划:默认情况下,更新安装在 03:00,如果需要,机器会重新启动。如果机器在预定的安装时间关闭,则首先安装更新,但会推迟重新启动并在用户方便时省略。
这种推迟重启的方法被认为对于 Windows 10 的 Windows 即服务模型来说并不理想,不幸的是,它也影响了 Windows 2016。为了避免一个单一的、容易错过的重启计划 (03:00),Win10 和 Win2016 具有“活动时间”的概念——服务器被积极使用且不应重启的时间。不在该范围内的时间(我们称它们为“非活动时间”)被视为“空闲时间”。这意味着在“活动时间”之外,可以重新启动服务器。
但是,“活动时间”最多可以配置为 12 小时(注意:Win10 的最新版本改变了这一点),并且为了防止意外重启,微软添加了一些通用的启发式方法来避免在服务器之外使用时重启服务器“活动时间”。例如,启发式似乎检测用户是否登录、用户是否有未保存的工作、是否正在访问共享、ecc。这意味着正在使用的服务器(即:域控制器、具有已登录终端服务用户的服务器等)将不会重新启动。
但还有更多:因为即使是活动服务器也必须迟早重新启动,一个额外的计时器确保机器在 7 天后重新启动(在“活动时间”之外),即使服务器很忙(注意:7 天的时间段)可通过 GPO 配置)。这可能是您可以通过 Google 找到大量“我的 Win2016 意外重启”帖子的原因。
加上极其缓慢的 Windows 2016 更新过程以及上述与“活动时间”的混淆,我的拙见是微软真的搞砸了 Windows 更新过程。在这方面,Windows 2019 似乎更好,但考虑到在任何服务器级 Linux 发行版上更新是多么容易(和快速),我真的很想知道微软怎么能做这些乱七八糟的事情。
为了结束这种疯狂,可以使用 GPO“总是在预定时间自动重启”:它基本上会禁用新的“活动时间”行为,返回到更明显(且易于管理)的“重启服务器后需要它的更新”的行为。