我收到一个新的Windows 7工作站(replace旧的Windows 7工作站),并开始遇到错误,从Windows XP机器访问我的文件共享。
我得到各种似乎来来去去的错误(在某些时候,它会工作好几个小时)。 一个是:
没有足够的存储空间来处理这个命令
我也看到随机失败打开试图从共享访问大量文件的应用程序中的文件。
微软公布了一个关于这个问题的神秘的知识库文章,build议增加IRPStackSize来解决这个问题,而没有任何解释为什么你需要这样做。
我发现增加我的工作站和客户端XP机器上的IRPStackSize似乎使问题消失。
但是,为什么我需要这样做呢? 为什么一台Win7机器有这个问题,另一台没有? 他们都在同一个域中,所以组策略会将相同的设置向下推送给他们,其中一些我已经手动validation。 我怎么知道合适的价值是什么? 或者我应该设置到50的最大值?
这是给我的启示:
“我也看到随机失败,试图从共享中访问大量文件的应用程序中打开文件。”
Windows使用分层I / O模型,其中驱动程序彼此连接并利用底层驱动程序的服务来执行其工作。 利用彼此服务的驱动层通常被称为“驱动程序堆栈”。
你在特定的堆栈中有太多的filter(每个经过防病毒层,基本过滤引擎,ntfs等的请求数量等),所以默认的IRPStackSize不够大。 增加默认允许所有的filter有自己的I / O堆栈位置,每个人都很高兴。 这不是一般的Windows问题,而只是系统中某些驱动程序的限制。
考虑在文件服务器上托pipe大量使用的文件共享,然后阅读“2008 R2调整指南”,特别是有关调整文件服务器性能的部分: http : //msdn.microsoft.com/zh-cn/windows/hardware/gg463392