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

我为Windows客户端运行(远程托pipe)虚拟服务器。 最初,它有10 GB的空间。 在几个星期的过程中 – 除了正常的工作,使用基于web的机器系统之外, 没有任何东西在机器上完成,Windows开始填满臭名昭着的“winsxs”目录,最终硬盘是完整,我们不得不再订购5 GB。 现在,三个星期后,这些5 GB也被winsxs消耗掉了,我再也不能在机器上工作了。 Winsxs现在是8 GB的大,其余的Windows目录5 GB。

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

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

在预定义的服务器angular色中,只有“文件服务”(或者英文称为“瑞士服务器”)被激活。 另外,我已经安装了Apache,mySQL和Subversion。 自动更新被激活。

编辑:问题依然存在。

注意:我知道WinSXS目录主要由符号链接组成,用户通常会惊慌地看着它的大小。 尽pipe如此,在15 GB的空间中,我有1.5 MB的程序和数据使用, 没有任何东西 。 我很高兴我甚至可以访问该死的机器。 *我已经释放了1 GB的数据,这是由Windows窗口在24小时内填补。 这就像在一个恐怖电影。 我曾经尝试过:

  • 安装SP2(compcln.exe附带)不是一个选项,因为即使是磁盘空间不够。
  • 机器上没有vsp1clean.exe,可能是因为SP1已经被合并到系统中。 实际上,任何地方都不存在名为* cln.exe的文件。
  • 没有影子副本。 卷影副本不活动。
  • 据我所知,没有系统还原点活跃。
  • 唯一激活的服务器angular色是“文件服务器”。
  • 标准的“清理”function(右键单击C:驱动器)给我一个莫名其妙的垃圾内容和临时Internet文件2 MB。
  • 使用其中一个“清理winsxs”脚本是不是我的select,他们都看起来太阴暗。 我无法直接从Microsoft处理此问题。

由于WinSxS使用硬链接到物理文件而不是实际的文件,因此WinSxS目录几乎不占用由Explorer报告的空间。 资源pipe理器只是报告硬链接大小的问题。

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

至于您的实际磁盘使用问题 – 您可以尝试运行COMPCLN.EXE来查看是否可以清理任何旧的Service Pack和Hot Fix文件,这应该会有所帮助。 我也会看任何日志目录,看看是否有其他事情正在进行。

我和你在同一条船上。 我有5个全新的2008年虚拟机,我一直在观望它们,去年需要更多的磁盘空间。 让我用windrstat来说明。

以下是全新的2008服务器的屏幕截图:

替代文字 3.8 GB的winsxs目录

下面是生产2008服务器的屏幕截图:

替代文字 5.4GB winsxs目录

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

从我可以告诉,无法截断winsxs目录。 WinSxS代表Windows Side-by-Side。 在试图减lessDLL地狱的影响(即依赖关系)时,Microsoft决定将每个DLL的每个版本都安装在系统上的winsxs目录中。

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

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

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

我尝试了一切。 删除旧文件,卸载修补程序,删除“$”修补程序目录。 一切。

最后,我最终将所有服务器上的所有C:分区都增长到了30GB。 这只是一个临时的解决scheme,winsxs目录将继续增长。 好消息是,由于NTFS的最新版本允许你扩大你的分区,而无需重新启动。 多么方便。

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

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

我不能等到有人弄清楚这一切,并开始重新激活与stream氓清单 ,这成为攻击/利用载体的预先补丁的DLL。

15 GB不会削减我的经验,尤其是如果它是一个64位机器有一些活动…

扩展VPS磁盘,然后系统分区应该很容易,而不必重新安装任何东西,但它是昂贵的。 为现代Windows Server VPS提供less于60GB的系统磁盘,即使〜30GB可能会暂时中断它,似乎也没有想到:7

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

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

这对你来说可能已经太晚了,只能基于Vista的经验,但是:

  1. 不要相信那些“主要是硬链接,所以文件夹没有看起来那么大”的人 – 这是真的,但是如果你用光盘空间不足,那就太大了。
  2. 有史以来唯一的“治疗方法”是删除将文件夹添加到文件夹中的应用程序 – 但没有logging的方式,我知道find罪魁祸首。
  3. 我没有find满意的答案后,“治愈”是残酷地删除最大(和不需要)的文件夹,例如:

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

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

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

这里有一个链接到博客描述如何做到这一点: 点击

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

如果主要的罪魁祸首是WindowsUpdate,那么我只能说你购买更多空间或执行系统文件手术的唯一select是限制微软触发更新所引起的增长。

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

因此,你可以做的是禁用自动更新,然后非常有select性地应用哪些“重要”更新。 只适用那些直接危害你的安全计划的补丁漏洞。 大多数“重要的”更新可能不适用于您的安全场景,如果是这样的话,您可能会修改安全计划,使其无法使用(例如,不要在服务器上使用IE,使用备用文件服务,加强networking安全) 。

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

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

这已经在Windows 8 / Server 2013中通过使用DISM清除被取代的更新(dism.exe / online / cleanup-image / startcomponentcleanup)得到解决,所以很明显这是一个他们承认的问题,不幸的是除了升级2008年。

在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/

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

DISM.exe /online /Cleanup-Image /spsuperseded 

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

几点build议:

  • 你的交换文件在哪里?

  • 使用相同的软件设置testing机器,看看是否可以复制问题。 这绝对是不正常的,我能想到的唯一的事情就是那个盒子上的东西总是在修改一个DLL(或类似的东西),所以Windows一直在做它的备份。

对于Windows 2008安装来说,15GB是非常不利的 – 我为Windows 2008构build的标准C:驱动器是60GB。

http://tech.xlab.si/2009/07/move-winsxs-folder/

find这篇文章,但从来没有尝试过..看起来像有一种方法来移动winsxs文件夹。 如果nyone可以尝试这个,请通过,让我知道

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

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

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

一个select使用 – 如果它只是一个便宜的旧VPS,你用于简单的事情,那么值得启用NTFS压缩磁盘或特定的文件夹:

这可能会挤压驱动器的一些空间。 文章说,它的XP,但它是在Win7 / 2008相同的步骤:

  • 在NTFS驱动器上压缩文件或文件夹
  • 如何使用文件压缩

    1. 用鼠标右键单击您要压缩的卷,然后单击属性
    2. 常规选项卡上单击以选中压缩卷以节省磁盘空间checkbox,然后单击确定。
    3. 在确认属性更改中,单击所需的选项。

我遇到了同样的问题。 当然,WinSxs的部分原因是…但我认为这个问题部分是由于像WinDirStat这样的工具以相同的方式计算文件和路口的大小。 结只是一个指向文件的指针,而不是构成文件的所有块的重复。

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

vssadmin列表shadowstorage

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

vssadmin Resize ShadowStorage / For = C:/ On = C:/ MaxSize = 20%