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


我为客户端运行带有Windows 2008 Server的(远程托管)虚拟服务器。 最初,它有10 GB的空间。 在几个星期的过程中 - 在此期间 没有 除了使用基于Web的系统的正常工作之外,在机器上完成了 - Windows开始填满其臭名昭着的“winsxs”目录,以至于最终硬盘已满,我们不得不另外订购5 GB。 现在,三周后,winsxs也消耗了这5 GB,而且我再也无法在这台机器上工作了。 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文件。
  • 使用其中一个“cleanup winsxs”脚本对我来说不是一个选项,它们看起来都太阴暗了。我无法直接从Microsoft找到解决此问题的任何内容。

60
2017-10-29 12:54




你最后解决了这个问题吗? - UpTheCreek
实际上,@ UpTheCreek,可悲的是,不!提供商在VPS上给了我们5 GB的额外空间,Windows幸运没有填满。但Windows目录仍然占用20 GB。合同即将用完,我们将转换托管公司。 - Pekka 웃


答案:


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

这篇文章 磁盘空间 (在此引用 http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/)对WinSxS目录有一个很好的解释。

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


22
2017-10-29 14:39



这听起来不错,但是Windows目录实际上似乎消耗了大约12GB(它是15GB空间,程序和工作数据占用2.5GB,并且没有空间)。 Compcln.exe在2008年不存在,有人知道那里有类似的命令吗? - Pekka 웃
可能只有W2K8 SP2: news.softpedia.com/news/... - Christopher_G_Lewis
SP2听起来很有趣,但服务器太满了我甚至无法安装它。我已经向提供商询问了几天的额外空间,但过去没有证明它们太有帮助。这真是令人不安,并造成严重问题。我正在打开奖金并添加一些屏幕截图。 - Pekka 웃
我猜测重新映像机器并运行更新不是你的选择吗? - blueberryfields
只是作为非常非常的最后手段,因为我投入了大量的工作来设置一切......这可能会解决它,但我会非常乐意绕过它。 - Pekka 웃


我和你在同一条船上。我有5个全新的2008 VM,我在去年看着他们稳定地需要越来越多的磁盘空间。让我用windrstat来说明。

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

alt text 3.8 GB winsxs目录

现在这里是一个屏幕截图 生产2008服务器

alt text 5.4GB winsxs目录

最后一个屏幕截图 全新的2008R2服务器alt text 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 流氓舱单,成为攻击/攻击媒介。


17
2017-11-13 16:10



谢谢,如果没有神奇的方式减少WinSXS,我会接受这个答案,让我知道我不是唯一一个发生这种情况的人。太糟糕了似乎没有解决方案。升级到30GB将很难证明,因为它是外部付费托管。也许我会降级到2003年 - 但这听起来很傻...... - Pekka 웃
是的,我对此也不太兴奋。看起来winsxs不是硬链接的集合。相反,它将硬链接投射到系统的其他部分,但似乎也存在一些不同意见。 winvistaclub.com/f16.html ... - Joseph Kern
我还想提一下,我在用于示例的任何服务器上都没有启用服务器角色。生产服务器是一个apache tomcat服务器。我用来找到驱动器空间的程序是 windirstat.info - Joseph Kern
MS确实声明32 GB作为最低磁盘要求: microsoft.com/windowsserver2008/en/us/system-requirements.aspx - Christopher_G_Lewis


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

扩展VPS磁盘然后扩展系统分区应该很容易,无需重新安装任何东西,无论它多么昂贵。为现代Windows Server VPS提供低于60GB的系统磁盘,即使~30GB可能会削减一段时间,但最初似乎没有想到:7

使用32位安装将消除一些开销,而去服务器核心将删除很多。我的32位Server 2008核心文件服务器运行svnserve,dfs,打印服务等等并定期更新大约5 GB ...而我的64位Server 2008 Standard服务于Web应用程序(asp.net和php使用IIS)现在占用30 GB。这两个指标当然不包括数据存储/分区,只有Windows系统,而且两者都只是示例我有64位Server 2008系统磁盘,现在占用10到35 GB的任何内容。

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


5
2017-11-15 00:24





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

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

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

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


5
2018-03-27 16:51





如果可能,您可以尝试将WinSXS移动到另一个分区作为解决方法。据我所知,没有办法摆脱WinSXS的内容。这个可爱的小东西是Vista / Win2008操作的核心,所以...我没有听到更好的事情,因为它移动到另一个分区。

这是一个描述如何操作的博客的链接: 点击

我建议你在尝试程序之前对整个C:分区进行完整备份(甚至更好:图像)。请注意,我只在Vista上尝试过,而不是在Win2008 Server上。


4
2017-11-13 08:26



好主意,但在我的情况下(这是一个没有替代存储的VPS),遗憾的是它不是一个选择。 - Pekka 웃
---并且出于同样的原因制作图像并不容易 - 否则我会制作一个并尝试在我自己的机器上运行它以进一步检查。 - Pekka 웃


如果主要的罪魁祸首是WindowsUpdate,那么我会说你购买更多空间或执行系统文件手术的唯一选择是限制微软触发快乐更新所带来的增长。

由于您主要使用的是非Microsoft应用程序平台,因此您可能无需将90-95%的“重要”更新推迟。

因此,您可以做的是禁用自动更新,然后非常有选择性地应用哪些“重要”更新。仅应用那些直接危害您的安全计划的修补程序漏洞。大多数“重要”更新可能不适用于您的安全方案,如果他们这样做,您可能会修改您的安全计划,以便不使用它们(例如,不要在服务器上使用IE,使用备用文件服务,加强网络安全性) 。


3
2017-12-20 06:30





如果WinDirStat和操作系统本身(只是在我的电脑下看)会报告相同的空间使用量,那么如果它将大小错误计算为硬链接则无关紧要。如果操作系统认为你的空间不足 - 你就没有空间了。

我在Storage Server 2008和DC(Server 2008)上遇到此问题。在DC上没有安装其他程序但Windows安装更新,两台服务器在WinSXS下都占用了15GB的空间。惠普预装的存储服务器在C:上有40GB,所以我也遇到了这个问题。低至5GB的可用空间。

这已在Windows 8 / Server 2013中通过使用DISM来清除被取代的更新(dism.exe / online / cleanup-image / startcomponentcleanup)得到修复,因此很明显这是他们承认的问题,遗憾的是除了为那些坚持使用的人进行升级之外没有任何修复2008年。


3
2018-04-11 02:47





在Windows Server 2008 R2中,您可以使用DISM清理WinSxS,当然,执行此操作后您将无法回滚更新。这是一个解释: http://www.sqlskills.com/blogs/glenn/how-to-reclaim-disk-space-in-your-windowswinsxs-directory-on-windows-server-2008-r2-sp1/

总之,您需要以管理员身份运行以下命令:

DISM.exe /online /Cleanup-Image /spsuperseded

我知道这可能不是一个相关的解决方案,因为你有Windows Server 2008(显然不是R2),但我在寻找R2的解决方案时发现了这个问题,所以它可能对某些人有用。


3
2017-07-14 08:24



这只删除了pre sp1文件,而不是后来出现的修补程序中的文件。 - Hubert Kario