Windows 8 KB2821895 服务堆栈的改进,以及对升级至 8.1 起到的帮助

这是一篇翻译文章,原文在这里

我叫 Aditya,是微软 Windows 核心团队的资深支持工程师。本文是维护服务第一篇文章的后续。因此为了更好地理解本文,建议首先阅读上篇文章。上一篇曾经提到过,这系列有关 Windows 维护服务的博客文章共有四篇。

Windows 维护服务的变化:第一篇
Windows 维护服务的变化:第二篇:降低 Windows 空间占用
Windows 维护服务的变化:第三篇:服务堆栈的改进

该功能可反向移植(Back Port) Windows 8.1 的功能,进一步降低组件存储的磁盘空间占用。系统会将释放出来的空间用于升级至 Windows 8.1 时使用。

在上篇文章中,我们介绍了核心部署平台(Core Deployment Platform,CDP)在小存储量设备上降低系统空间占用所做的不懈努力。尽管做了大量工作,升级工作至少需要具备不少于 5GB 的可用存储空间。

为了进一步降低所需存储空间数量,我们将通过服务堆栈更新(Servicing Stack Update,SSU)机制对 Windows 8.1 存储组件的空间占用缩减功能进行反向移植。该技术还引入了用于控制空间占用缩减情况的维护任务,以及一系列深度清理操作。维护任务所释放的存储空间将被用于 Windows 8.1 的升级过程中。

下列两个功能主要针对底层移植:

1. 组件存储的增量压缩

2. 深度清理,卸载被取代的 GDR 程序包

维护任务将使用这些功能释放磁盘空间。除了对这些功能进行反向移植,服务堆栈更新还必须为 Windows 8.1 客户端的升级预留足够的可用空间。由于我们不鼓励对 Windows Server 2012 进行升级,因此该功能不能为服务器系统预留空间,只能用于客户端系统。

在计算机上安装 32 位 Windows 8 并查看 WINSXS 文件夹大小,可看到类似图 1 的结果:

01

在这台计算机上通过控制面板首次运行 Windows Update 时,可以看到共有大约 84 个更新,总体积 515MB【译注:请忽略图文不一致的情况,原文作于较早前,翻译时又多了几个更新,我在实验环境里就不偏执地精心挑选出 84 个总大小 515MB 的更新啦,反正一个意思】,如图 2 所示:

02

重启动计算机后,WINSXS 文件夹的体积增大了约 2GB,如图 3 所示:

03

留意空间占用情况,运行完 Windows Update 后,我们将下载并安装 KB2821895 更新。

04

安装该更新后,在这台计算机升级至 Windows 8.1 之前,将每周运行一次维护任务并回收磁盘空间。在减小磁盘空间占用的增量压缩过程中,将创建大小等同于所回收磁盘空间的临时文件。这个文件是隐藏的,并被标记为操作系统文件,因此无法直接看到。

预留文件位于:%windir%\winsxs\reserve.tmp

05

该文件的位置被保存在注册表键:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Configuration\[reserve] 下。这个键的值将被用于确定计算机上是否创建有预留文件,确定后会被删除。

06

注意:只有可以通过应用商店升级的 Windows 8 版本才能这样借助临时文件预留空间。

在通过应用商店升级 Windows 8.1 的过程中,该文件会被删除,借此获得足够的可用空间,确保成功升级至 Windows 8.1。

WIN8.1 与 Windows Server 2012 R2 的新功能

智能挂起逻辑

该功能使得无需重启的更新能够立刻安装,同时确保这样的更新不与需要重启的更新合并。此外该功能还可减少重启过程中安装更新所需的时间,因为只需要在重启过程中安装需要重启的更新,无需重启的更新可立刻安装。

目前在为系统安装多个更新后,如果其中的一个或多个更新需要重启,则会在重启动过程中安装“首个需要重启的更新”之后安装的全部更新。

在目前的服务堆栈设计中,如果存在下列情况,Windows 服务堆栈会向服务基础结构传递一个标记,以便将更新挂起:

•    存在任何已经被挂起的程序包
•    存在 Pending.xml
•    服务基础结构存储中设置有 PendingRequired 标记

这种设计的局限在于:

•    将程序包合并到一起并在重启后尝试安装时,由任何一个更新导致的故障将使得其他所有更新安装失败。
•    由于堆栈本身的局限,我们所设计的尽量减少重启的更新机制无法提供足够的收益。
•    由于所有挂起的更新都将在计算机重启动过程中安装,用户等待安装更新过程中,计算机不可用的时间长度将取决于挂起的更新数量。

我们目前在 Windows 8 与 Windows Server 2012 中使用的设计方式类似这样:

07

通过这个新功能,Windows 服务堆栈将不再检查是否有挂起的重启动,将始终尝试完整安装一个更新。新设计方式的运作流程类似这样:

08

在 Windows 8.1 与 Server 2012 R2 中,无需重启的更新将被直接完整安装,只有需要重启的更新才会挂起并等到重启动时安装。智能挂起逻辑只适用于联机维护操作。

智能挂起的例外情况:

由于性能与可用性原因,下列类型的程序包将不被智能挂起:

•    大程序包,例如 Service Pack 或语言包。
•    无法与其他程序包合并的特殊程序包。
•    针对服务堆栈的更新。

完整逻辑如下图所示:

09

希望本文能够帮你理解 Windows 8 操作系统的变化,以及 Windows 8.1 系统新增的功能,尤其是能帮助我们节约更多空间的智能逻辑。

本系列的下篇文章将介绍用于实现文件系统查错、文件系统健康度、未使用驱动器的清理等工作的自动化维护任务。希望能对你有所帮助….

Aditya
Senior Support Escalation Engineer
Microsoft Platforms Support

分享:

《Windows 8 KB2821895 服务堆栈的改进,以及对升级至 8.1 起到的帮助》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注

发表评论前,先做个简单的数学题吧: * Time limit is exhausted. Please reload CAPTCHA.