在 Windows 2012、Windows 2012R2 上复制大文件时禁用文件缓存

在 Windows 2012、Windows 2012R2 上复制大文件时禁用文件缓存

我在少数主机上备份 Hyper-V 时遇到了很多问题。在软件备份期间,某些机器变得不可用,主机开始死机等。我们将其归咎于文件复制,而不是软件本身。只需将 30GB 的文件从 D 盘复制到 C 盘,文件传输期间主机就会死机。文件复制前的 RAM 使用量为 64GB,使用了 48GB。当您开始传输 30GB 文件时,RAM 使用量会发生变化,1 分钟内,64 台服务器中的 64 台开始运行,甚至 RDP 和物理访问也停止工作,直到文件复制完成。因此,在备份期间,服务器可能需要数小时才能恢复可用。

这是一台 DELL 服务器 R515,其 RAID 控制器处于写回模式。我在其他 Windows 2012 服务器上也注意到了这一点。我尝试使用一些旧的解决方案来禁用 2003 年的缓存,但都不起作用。我在 IBM 和 Dell 服务器上都进行了测试,结果非常相似。内存使用率上升。首先,它以 700MB/s 的速度复制,然后在内存使用后,速度变慢。所以问题是如何禁用文件缓存或将其限制为正常值。

请不要建议使用 robocopy 或其他“复制”工具,因为虽然它可能解决使用外部软件进行复制的问题,但我的问题实际上是关于第三方软件进行的备份,而我无法影响它。我希望“Explorer”正常运行 :-)

答案1

在命令行以管理员身份运行此命令:

fsutil behavior set memoryusage 0 

您可以为此条目设置三个值:0 表示未设置、1 表示默认、2 表示增加。

答案2

导致你的服务器崩溃的是不是磁盘缓存或内存使用本身,而不是复制操作本身。事实上,如果发生内存压力,非脏页可以立即回收。

基本上,在复制过程中,您不断提交 I/O 请求,速度快于磁盘的处理速度,导致系统运行缓慢。虽然禁用写回缓存(在操作系统和 RAID 卡级别)可以稍微提高性能,但真正的解决方案是将此类操作安排在负载较低的时间(例如:夜间),或者,您可以降低复制速度(以免消耗所有可用的 IOPS)。

答案3

任何人都想知道...它在 Windows Server 2012 上的表现就是这样。升级到 Windows Server 2012 R2 有帮助。微软拒绝修补它,因为他们说这是戴尔的问题(他们进行了所有故障排除并指出缓存问题),而戴尔拒绝提供帮助,因为显然服务器是在没有许可证的情况下购买的,这只是部分正确,因为服务器实际上是从戴尔购买的,但有许可证,但通过经销商,很可能确实从两个不同的来源销售。

所以我们购买了新的许可证,之后服务器就可以正常工作了。但问题依然存在。

相关内容