我为客户端运行带有 Windows 2008 Server 的(远程托管的)虚拟服务器。最初,它有 10 GB 的空间。在几个星期的过程中——在这期间,除了使用基于网络的票务系统进行正常工作外,机器上什么也没做——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 填满。就像在恐怖电影里一样。我试过的:
- 安装 SP2(compcln.exe 附带)不是一个选项,因为磁盘空间甚至不够。
- 机器上没有vsp1clean.exe,可能是因为SP1已经合并进系统了。事实上,任何地方都不存在名为 *cln.exe 的文件。
- 没有卷影副本。卷影副本未激活。
- 据我所知,没有系统还原点处于活动状态。
- 唯一激活的服务器角色是“文件服务器”。
- 标准的“清理”功能(右键单击 C:驱动器)为我提供了令人费解的 2 MB 垃圾内容和临时 Internet 文件。
- 使用“cleanup winsxs”脚本之一对我来说不是一个选择,它们看起来都太阴暗了。我无法直接从 Microsoft 找到解决此问题的任何内容。
WinSxS 目录几乎不会占用资源管理器报告的空间,因为它使用硬链接到物理文件,而不是实际文件。Explorer 只是有报告硬链接大小的问题。
这篇关于磁盘空间的文章(参考这里 http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/)对 WinSxS 目录有很好的解释。
至于您实际的磁盘使用问题 - 您可以尝试运行 COMPCLN.EXE 以查看是否可以清理任何旧的服务包和热修复文件,这应该会有所帮助。我还会查看任何日志记录目录,看看是否还有其他事情发生。
我和你在同一条船上。我有 5 台全新的 2008 虚拟机,我观察到它们在过去一年中稳定地需要越来越多的磁盘空间。让我用windrstat来说明。
这是一个全新的 2008 服务器的屏幕截图:
3.8 GB winsxs 目录
现在这里是生产 2008 服务器的屏幕截图:
5.4GB winsxs 目录
最后是一个全新的 2008R2 服务器的屏幕截图: 5.4GB winsxs 目录
据我所知,没有办法截断winsxs 目录。WinSxS 代表 Windows 并排。为了减少 DLL 地狱(即依赖项)的影响,Microsoft 决定将安装在系统上的每个 DLL 的每个版本都保存在 winsxs 目录中。
这意味着两件事(我认为):
虽然 winxs 中有一些硬链接,但唯一的硬链接应该是当前 DLL 的硬链接。换句话说,系统中当前处于活动状态的 DLL 被硬链接回该 winsxs 文件夹。
所有以前版本的 DLL 仍然可用,并备份在 winsxs 目录中。正如您在所有示例中看到的那样,如果 winsxs 目录真的是“主要是硬链接”,那么它不可能占用您当前磁盘使用量的 50% 以上。现在,即使winsxs 目录确实是“主要是硬链接”,50% 的使用率也意味着您的整个C: 驱动器都被硬链接回winsxs 目录。
我什么都试过了。删除旧文件,卸载补丁,删除“$”补丁目录。一切。
最后,我最终将所有服务器上的所有 C: 分区增加到每个 30GB。这只是一个临时修复,因为 winsxs 目录将继续增长。不过好消息是,最新版本的 NTFS 允许您在不重新启动的情况下扩展分区。多么方便。
WinSxS 不仅仅是一个烦人的目录,它是所有 Windows 开发人员的新方法。WinSxS 不会很快消失。开发人员正在使用 WinSxS 并依赖它,直到有新的 DLL 归档或依赖关系解析方法可用。
在每个新的 windows 2008/7/Vista 盒子上,我觉得 30GB C: 几乎是对的。足够的空间(目前)用于补丁、日志和一些应用程序。
我等不及有人弄清楚这一切并开始使用rogue-manifests重新激活预补丁 DLL ,这将成为攻击/利用向量。
根据我的经验,15 GB 不会削减它,特别是如果它是一台有一些活动的 64 位机器......
扩展 VPS 磁盘然后扩展系统分区应该很容易,无需重新安装任何东西,无论它多么昂贵。为现代 Windows Server VPS 提供少于 60GB 的系统磁盘似乎一开始就没有考虑过,即使 ~30GB 可以暂时减少它:7
选择 32 位安装将减少一些开销,而选择服务器核心将减少很多。我的运行 svnserve、dfs、打印服务等并定期更新的 32 位 Server 2008 核心文件服务器约为 5 GB...而我的 64 位 Server 2008 Standard 服务于 Web 应用程序(使用 IIS 的 asp.net 和 php)现在占用 30 GB。当然,这两个指标都不包括数据存储/分区,只有 Windows 系统,而且这两个都只是示例,我现在拥有 64 位 Server 2008 系统磁盘,占用 10 到 35 GB 不等。
您安装的每个工具、升级或应用程序都会增加 winsxs 目录,并且卸载内容并不总是对 winxs 产生任何影响,因为系统可能认为这些依赖项已被其他工具使用。
这对您来说可能为时已晚,并且仅基于 Vista 经验,但是:
在未能找到令人满意的答案后,我的“治疗”是粗暴地删除最大(和不需要的)文件夹,例如:
假设您从一个好的备份(图像)开始,试试看!
如果可能,您可以尝试将 WinSXS 移动到另一个分区作为解决方法。据我所知,没有任何方法可以摆脱 WinSXS 的内容。这个可爱的小东西是 Vista/Win2008 操作的核心,所以……我没有听说过将它移到另一个分区更好的方法。
这是一个博客链接,描述了如何做到这一点:点击
我建议您在尝试该过程之前对整个 C: 分区进行完整备份(甚至更好:映像)。请注意,我只在 Vista 上尝试过这个,而不是在 Win2008 Server 上。
如果罪魁祸首是 WindowsUpdate,那么我想说,除了购买更多空间或执行系统文件手术之外,您唯一的选择是限制由 Microsoft 的触发式更新引起的增长。
由于您主要使用非 Microsoft 应用程序平台,因此您可能无需下推 90-95% 的“重要”更新。
因此,您可以做的是禁用自动更新,然后非常有选择性地应用哪些“重要”更新。仅应用那些修补直接危及您的安全计划的漏洞。大多数“重要”更新可能不适用于您的安全方案,如果它们适用,您可能会修改您的安全计划以不使用它们(例如,不要在服务器上使用 IE,使用备用文件服务,加强网络安全) .
如果 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 年。
在 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/
总之,您需要以管理员身份运行以下命令:
我知道这对您来说可能不是一个相关的解决方案,因为您拥有 Windows Server 2008(显然不是 R2),但我在寻找 R2 的解决方案时发现了这个问题,因此它可能对某些人有用。
几个建议:
你的交换文件在哪里?
使用相同的软件设置测试机器,看看您是否可以复制问题。这绝对不正常,我唯一能想到的就是那个盒子上的东西在不断地修改一个 DLL(或类似的东西),所以 Windows 不断地对其进行备份。
对于 Windows 2008 安装来说,15GB 非常低——我的标准 C: 驱动器为 Windows 2008 构建是 60GB。
http://tech.xlab.si/2009/07/move-winsxs-folder/
找到了这篇文章,但从未尝试过.. 看起来有一种方法可以移动 winsxs 文件夹。如果有人可以试试这个,请通过并告诉我