Windows 2008:WinSXS 目录不受控制地增长,阻塞服务器

Pek*_*kka 62 windows-server-2008 storage automatic-updates

我为客户端运行带有 Windows 2008 Server 的(远程托管的)虚拟服务器。最初,它有 10 GB 的空间。在几个星期的过程中——在此期间,除了使用基于 Web 的 icket 系统进行正常工作外,机器上没有任何事情——Windows 开始填满其臭名昭著的“winsxs”目录,以至于最后,硬盘被满了,我们不得不再订购 5 GB。现在,三周后,这 5 GB 也被 winsxs 消耗掉了,我再次无法在机器上工作。Winsxs 现在是 8 GB,其余的 windows 目录为 5 GB。

我在网上找到了描述相同问题的各种来源。显然,Windows 2008 存储了它在正常更新过程中下载的所有 DLL 的所有语言版本。只是删除那里的东西被描述为致命的危险,因为它包含重要的组件。我还没有找到任何类型的工具或说明来识别和删除那些不再需要的文件。

我能做什么?这是正常行为吗?如果是,空间同样有限的其他服务器如何管理?有什么我可以关闭或打开的吗?

在预定义的服务器角色中,只有“文件服务”(或任何用英语称呼的,它是瑞士服务器)被激活。此外,我还安装了 Apache、mySQL 和 Subversion。自动更新已激活。

编辑:问题仍然存在。

注意:我知道 WinSXS 目录主要由符号链接组成,用户通常会因为它的大小而感到恐慌。尽管如此,在 15 GB 的空间中,我有 1.5 MB 的空间被程序和数据使用,什么也没有留下。我很高兴我什至可以访问该死的机器。*我已经释放了 1 GB 的数据,这些数据在 24 小时内被 windows Windows 填充。这就像在恐怖电影中一样。我尝试过的:

  • 安装 SP2(随 compcln.exe 一起提供)不是一种选择,因为磁盘空间甚至不够。
  • 机器上没有vsp1clean.exe,可能是因为SP1已经合并到系统中了。事实上,任何地方都不存在名为 *cln.exe 的文件。
  • 没有卷影副本。卷影副本未激活。
  • 据我所知,没有系统还原点处于活动状态。
  • 唯一激活的服务器角色是“文件服务器”。
  • 标准的“清理”功能(右键单击 C: 驱动器)为我提供了令人困惑的 2 MB 垃圾内容和临时 Internet 文件。
  • 使用周围的“清理 winsxs”脚本之一对我来说不是一种选择,它们看起来都太阴暗了。我无法直接从 Microsoft 找到解决此问题的任何内容。

Chr*_*wis 24

WinSxS 目录几乎不占用资源管理器报告的空间,因为它使用硬链接到物理文件,而不是实际文件。Explorer 只是在报告硬链接的大小时出现问题。

这篇关于磁盘空间的文章(参考这里 http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/)对 WinSxS 目录有很好的解释。

至于您的实际磁盘使用问题 - 您可以尝试运行 COMPCLN.EXE 以查看是否可以清理任何旧的服务包和热修复文件,这应该会有所帮助。我还会查看任何日志记录目录,看看是否还有其他事情发生。


Jos*_*ern 18

我和你在同一条船上。我有 5 台全新的 2008 虚拟机,并且在过去一年中我一直在观察它们需要越来越多的磁盘空间。让我用windrstat来说明。

这是一个全新的 2008 服务器的屏幕截图:

替代文字 3.8 GB winsxs 目录

现在这是2008 年生产服务器的屏幕截图:

替代文字 5.4GB winsxs 目录

最后是一个全新的 2008R2 服务器的屏幕截图: 替代文字 5.4GB winsxs 目录

据我所知,无法截断 winsxs 目录。WinSxS 代表 Windows Side-by-Side。为了减少 DLL 地狱(即依赖项)的影响,Microsoft 决定将系统上安装过的每个 DLL 的每个版本都保存在 winsxs 目录中。

这意味着两件事(我认为):

  1. 虽然 winsxs 中有一些硬链接,但唯一的硬链接应该是当前 DLL 的硬链接。换句话说,系统中当前处于活动状态的 DLL 被硬链接回此 winsxs 文件夹。

  2. 所有以前版本的 DLL 仍然可用,并备份在 winsxs 目录中。正如您在所有示例中看到的那样,如果 winsxs 目录确实是“主要是硬链接”,那么它不可能占用您当前磁盘使用量的 50% 以上。现在,即使 winsxs 目录“主要是硬链接”是真的,50% 的使用率也意味着你的整个 C: 驱动器被硬链接回 winsxs 目录。

我尝试了一切。删除旧文件、卸载补丁、删除“$”补丁目录。一切。

最后,我最终将所有服务器上的所有 C: 分区增加到每个 30GB。这只是一个临时修复,因为 winsxs 目录将继续增长。不过好消息是,因为最新版本的 NTFS 允许您在不重新启动的情况下扩展分区。多么方便。

WinSxS 不仅仅是一个烦人的目录,它还是适用于所有 Windows 开发人员的新方法。WinSxS 不会很快消失。开发人员正在使用 WinSxS 并依赖它,直到新的 DLL 归档或依赖项解析方法可用。

在每个新的 windows 2008/7/Vista 盒子上,我觉得 30GB C: 几乎是正确的。足够的空间(目前)用于补丁、日志和一些应用程序。

我迫不及待地想知道这一切,并开始重新激活带有流氓清单的预补丁 DLL ,这些DLL成为攻击/利用向量。

  • MS 确实声明 32 GB 作为最低磁盘要求:http://www.microsoft.com/windowsserver2008/en/us/system-requirements.aspx (5认同)

Osk*_*orn 5

根据我的经验,15 GB 不会削减它,特别是如果它是一台有一些活动的 64 位机器......

扩展 VPS 磁盘然后扩展系统分区应该很容易,无需重新安装任何东西,无论它有多昂贵。为现代 Windows Server VPS 提供少于 60GB 的系统磁盘似乎并没有经过深思熟虑,即使 ~30GB 可以减少一段时间:7

使用 32 位安装会减少一些开销,而使用服务器核心会减少很多开销。我的 32 位 Server 2008 Core 文件服务器运行 svnserve、dfs、打印服务等并定期更新大约 5 GB ......而我的 64 位 Server 2008 Standard 为 Web 应用程序提供服务(使用 IIS 的 asp.net 和 php)现在占用 30 GB。当然,这两个指标都不包括数据存储/分区,只包括 Windows 系统,这两个指标都只是示例,我现在拥有 64 位 Server 2008 系统磁盘,它占用了 10 到 35 GB 的空间。

您安装的每个工具、升级或应用程序都会增加 winsxs 目录,卸载内容并不总是对 winsxs 产生任何影响,因为系统可能认为这些依赖项已被其他工具使用。


小智 5

这对您来说可能为时已晚,并且仅基于 Vista 经验,但是:

  1. 不要相信那些说“它主要是硬链接,所以文件夹没有看起来那么大”的人——这是真的,但是如果磁盘空间用完了,那就太大了。
  2. 唯一建议的“治疗”是删除将膨胀添加到文件夹的应用程序 - 但我知道没有记录的方法可以找到罪魁祸首。
  3. 未能找到令人满意的答案后,我的“治疗”是粗暴地删除最大的(和不需要的)文件夹,例如:

    • 6 个版本的“Microsoft 自然语言搜索”,每个版本约 300kB
    • 许多我永远不会使用的东方字体(有时是其中的 6 个 vns,大部分相同)
    • 等等等等。

假设你从一个好的备份(图像)开始,试试看!