Windows 2008:WinSXS目录无法控制地增长,阻止了服务器


62

我为客户端运行带有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的数据,该数据已由Windows Windows在24小时内填充。就像在恐怖电影中一样。我尝试过的

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

您最终解决了这个问题吗?
2011年

@UpTheCreek实际上,可悲的是,不!该提供程序为我们在VPS上提供了5 GB的额外空间,而Windows Lucky没有填补这些空间。但是Windows目录仍然占用20 GB。该合同即将到期,我们将更换托管公司。
Pekka

Answers:


24

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

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

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


这听起来不错,但是Windows目录实际上似乎消耗了12GB以上的空间(这是15GB的空间,程序和工作数据占据了2.5 GB的空间,没有剩余的空间)。Compcln.exe在2008年不存在,有人在那里知道类似的命令吗?
Pekka 09 2009年


SP2听起来很有趣,但是服务器太满了,我什至无法安装它。我已经要求供应商提供一些额外的空间几天,但是过去它们并没有被证明有太大帮助。这确实很麻烦,并且会导致严重的问题。我打开了赏金并添加了一些屏幕截图。
Pekka

我猜想重新映像计算机并运行更新不是您的选择吗?
blueberryfields

只是作为最后的手段,因为我投入了大量的工作来设置所有东西……这可能会解决,但是我很乐意解决它。
Pekka

18

我和你在同一条船上。我有5个全新的2008 VM,并且在过去一年中,我一直在稳定地观看它们对磁盘的需求越来越大。让我用windrstat举例说明。

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

替代文字 3.8 GB winsxs目录

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

替代文字 5.4GB winsxs目录

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

据我所知,没有办法截断winsxs目录。WinSxS代表Windows并排。为了减少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,并依赖于WinSxS,直到有新的DLL归档或依赖项解析方法可用为止。

在每个新的Windows 2008/7 / Vista盒子上,我都觉得30GB C:几乎是正确的。(暂时)有足够的空间来存放补丁程序,日志和一些应用程序。

我等不及了,直到有人弄清楚了所有这些并开始使用流氓清单重新激活补丁前的DLL ,这些DLL 成为攻击/利用的载体。


1
谢谢,如果没有奇迹般的缩小WinSXS的方式出现,我会接受这个答案,因为它让我知道我不是唯一的发生这种情况的人。太糟糕了,似乎没有解决方案。升级到30GB是很难的,因为它是外部付费托管。也许我会降级到2003年-但这听起来也很愚蠢……
Pekka

1
是的,我对此也不感到很兴奋。看起来winsxs并不是硬链接的集合。而是将硬链接投影到系统的其余部分,但是似乎对此也存在一些分歧。winvistaclub.com/f16.html ...
Joseph Kern

我还想提到,在我用于示例的任何服务器上都没有启用服务器角色。生产服务器是Apache Tomcat服务器。我用来查找驱动器空间的程序是windirstat.info
Joseph Kern


5

15 GB不会减少我的经验,特别是如果它是一台64位计算机并且有活动的话...

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

进行32位安装将减少一些开销,而对于Server Core则将减少很多开销。我的运行svnserve,dfs,打印服务等并定期更新的32位Server 2008 Core文件服务器约为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,大部分相同)
    • 等等等

假设您从一个好的备份开始(图片),请尝试一下看!


4

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

以下是描述该操作方法的博客链接:单击

我建议您在尝试该过程之前,对整个C:分区进行完整备份(甚至更好:一个映像)。请注意,我仅在Vista而不是Win2008 Server上尝试过此操作。


好主意,但就我而言(这是没有替代存储的VPS),不幸的是这不是一个选择。
Pekka

---由于同样的原因,制作图像并不容易-否则,我会制作一个图像并尝试在自己的计算机上运行以进行进一步检查。
Pekka

3

如果罪魁祸首是WindowsUpdate,那么我想说,购买更多空间或进行系统文件手术的唯一选择是限制由Microsoft满意的更新引起的增长。

由于您主要使用的是非Microsoft应用程序平台,因此您可以避免90-95%的“重要”更新被下推。

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


3

如果WinDirStat和操作系统本身(仅在“我的电脑”下显示)报告了相同的已用空间,则如果将大小错误地算作硬链接,则它无关紧要。如果操作系统认为您的空间不足-您的空间不足。

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

通过使用DISM清理取代的更新(dism.exe / online / cleanup-image / startcomponentcleanup),此问题已在Windows 8 / Server 2013中得到修复,因此很明显,这是他们认识到的问题,不幸的是,除了升级后,这些问题没有其他解决方案2008。


3

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

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

DISM.exe /online /Cleanup-Image /spsuperseded

我知道这可能与您无关,因为您拥有Windows Server 2008(显然不是R2),但是我在寻找R2解决方案时发现了这个问题,因此对某些人可能有用。


这将仅删除sp1之前的文件,而不删除以后发布的修补程序中的文件。
休伯特·卡里欧

1

一些建议:

  • 您的交换文件在哪里?

  • 使用相同的软件设置测试计算机,以查看是否可以复制问题。这绝对是不正常的,我唯一能想到的是那个盒子上的东西在不断地修改DLL(或类似的东西),因此Windows在不断地对其进行备份。

对于Windows 2008安装,15GB的价格非常低-Windows 2008构建的标准C:驱动器为60GB。


15GB就是虚拟主机提供商软件包的大小,每个扩展(我们从10GB开始)都非常昂贵。这就是为什么我不能将交换文件移到其他任何地方的原因。
Pekka

哦,我忘记了:出于同样的原因,复制机器并非易事。除非采取其他措施,否则这将是最后的选择。
Pekka

因此,请更改提供商。
TomTom


1

Microsoft为Server 2008提供的系统要求是“磁盘空间:最小32Gb或更大”。

http://www.microsoft.com/windowsserver2008/en/us/system-requirements.aspx

您为什么认为它可以在一半的空间中舒适地运行?


我正在从一家大型托管服务提供商处租用VPS解决方案,该解决方案最初是一个10GB的软件包,并预先安装了2008 Server。我认为他们一定为此提供了条件。大型提供商有10GB或20GB Windows软件包:请参见例如bit.ly/h0AZsP。提供者告诉我,我是个怪胎
Pekka

我的错,我已经链接到Server 2008 R2 SP1要求。Server 2008的要求8G的最低限度- microsoft.com/latam/windowsserver2008/sysreqs.mspx -但仍然建议的40Gb。
TessellatingHeckler,

感谢您的链接。但是,它可能是该操作系统是升级之间在-我将调查
佩卡· 웃

0

使用的一种选择-如果它只是用于简单用途的廉价旧VPS,则值得在磁盘或特定文件夹上启用NTFS压缩:

这可能会从驱动器中挤出一些空间。文章说它适用于XP,但是在Win7 / 2008上是相同的步骤:


0

我遇到了同样的问题。当然应该归咎于WinSxs。但是我认为问题部分归因于WinDirStat之类的工具,它们以相同的方式计算文件和连接的大小。联结只是指向文件的指针,而不是构成文件的所有块的副本。

我发现VSS是造成此问题的罪魁祸首。使用以下命令查看VSS是否占用了过多的磁盘空间,回收该空间或设置较小的限制:

vssadmin列表阴影存储

vssadmin删除ShadowStorage / For = C:/ On = C:

vssadmin调整ShadowStorage的大小/ For = C:/ On = C:/ MaxSize = 20%

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.