AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 79485
Accepted
Pekka
Pekka
Asked: 2009-10-30 04:54:24 +0800 CST2009-10-30 04:54:24 +0800 CST 2009-10-30 04:54:24 +0800 CST

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

  • 772

我为客户端运行带有 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 找到解决此问题的任何内容。
windows-server-2008
  • 13 13 个回答
  • 117769 Views

13 个回答

  • Voted
  1. Best Answer
    Christopher_G_Lewis
    2009-10-30T06:39:21+08:002009-10-30T06:39:21+08:00

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

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

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

    • 24
  2. Joseph Kern
    2009-11-14T08:10:26+08:002009-11-14T08:10:26+08:00

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

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

    替代文字 3.8 GB winsxs 目录

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

    替代文字 5.4GB winsxs 目录

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

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

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

    1. 虽然 winxs 中有一些硬链接,但唯一的硬链接应该是当前 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: 几乎是对的。足够的空间(目前)用于补丁、日志和一些应用程序。

    我等不及有人弄清楚这一切并开始使用rogue-manifests重新激活预补丁 DLL ,这将成为攻击/利用向量。

    • 18
  3. Oskar Duveborn
    2009-11-15T16:24:52+08:002009-11-15T16:24:52+08:00

    根据我的经验,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 产生任何影响,因为系统可能认为这些依赖项已被其他工具使用。

    • 6
  4. Martin Gerhold
    2011-03-28T08:51:53+08:002011-03-28T08:51:53+08:00

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

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

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

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

    • 5
  5. imagodei
    2009-11-14T00:26:25+08:002009-11-14T00:26:25+08:00

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

    这是一个博客链接,描述了如何做到这一点:点击

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

    • 4
  6. Matias Nino
    2009-12-20T22:30:40+08:002009-12-20T22:30:40+08:00

    如果罪魁祸首是 WindowsUpdate,那么我想说,除了购买更多空间或执行系统文件手术之外,您唯一的选择是限制由 Microsoft 的触发式更新引起的增长。

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

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

    • 3
  7. NickIzk99
    2013-04-11T18:47:31+08:002013-04-11T18:47:31+08:00

    如果 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
  8. Ynhockey
    2013-07-15T00:24:56+08:002013-07-15T00:24:56+08:00

    在 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
  9. John Röthlisberger
    2009-11-14T04:39:17+08:002009-11-14T04:39:17+08:00

    几个建议:

    • 你的交换文件在哪里?

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

    对于 Windows 2008 安装来说,15GB 非常低——我的标准 C: 驱动器为 Windows 2008 构建是 60GB。

    • 1
  10. techsmarty
    2011-03-10T03:50:46+08:002011-03-10T03:50:46+08:00

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

    找到了这篇文章,但从未尝试过.. 看起来有一种方法可以移动 winsxs 文件夹。如果有人可以试试这个,请通过并告诉我

    • 1

相关问题

  • 文件复制到分支机构

  • 对于 ASP.Net 应用程序,Windows 64 位相对于 32 位的主要优势是什么?

  • Windows Server 2008 Hyper-V 虚拟化服务器的最佳 RAID 配置?

  • 远程连接 sql server 不工作,但如果防火墙禁用它呢?

  • 无法从 SQL Server 2008 备份数据库

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve