Server Message Block文件共享已经存在了很长一段时间,一般来说是稳定和可靠的。但是一些管理员发现如果从Windows 7或Windows 8客户端向Windows Server文件共享传输大文件的时候会出现一些古怪的问题。 解决文件复制错误的第一步是识别哪些行为是本来设计之初就有的,哪些行为代表出现了问题。在Windows 7中,通常来说区分正常文件复制行为和有问题行为非常简单。
不过基于Windows 8有缓存进程工作的方式,有的时候看起来是问题的实际上却没有任何问题。 当使用Windows 8来拷贝一个文件到远程文件共享系统的时候,会用到内存缓存机制。它会将文件的一部分写入……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
![TechTarget微信公众号二维码](/wp-content/uploads/res/images/spriteimg/ttweixin.jpg)
TechTarget
官方微博
![TechTarget中国官方微博二维码](/wp-content/uploads/res/images/spriteimg/ttweibo.jpg)
TechTarget中国
Server Message Block文件共享已经存在了很长一段时间,一般来说是稳定和可靠的。但是一些管理员发现如果从Windows 7或Windows 8客户端向Windows Server文件共享传输大文件的时候会出现一些古怪的问题。
解决文件复制错误的第一步是识别哪些行为是本来设计之初就有的,哪些行为代表出现了问题。在Windows 7中,通常来说区分正常文件复制行为和有问题行为非常简单。不过基于Windows 8有缓存进程工作的方式,有的时候看起来是问题的实际上却没有任何问题。
当使用Windows 8来拷贝一个文件到远程文件共享系统的时候,会用到内存缓存机制。它会将文件的一部分写入内存中,然后将它拷贝到文件共享系统。传输小文件的时候,这种机制可以让传输的速度变得非常快,但是传输大文件的时候,文件传输进程在开始的时候非常快,但是到后来就缓慢的进行了(如图1所示)。
图1. 在Windows 8传输大文件到网络文件共享时,文件传输进程在开始的时候非常快,然后速度会明显下降
如果传输的文件不是非常的大,那么图1中显示的这种现象会一直持续到拷贝结束为止。如果是更大的文件——或者使用的是很小缓存的计算机——的话,复制的过程会出现抖动。一大块的数据会被复制,然后会在一段时间内没有任何动静。在这段减速的过程中,操作系统会清空缓存然后将新的内容注入内存中去(如图2所示)。
图2. 在有些时候,文件复制过程中速度会发生变化
图1和图2中的这些情况都没有表明任何问题。因为这是在Windows 8.1中正常的行为。但是,有的时候文件复制过程中出现了超时,导致错误信息出现(如图3所示)。
图3. 有的时候,有效期超时也会导致复制出错
这个问题只会出现在拷贝非常大的文件(10GB甚至更大)的时候出现。在图3中出现的错误代码是"Error 0x80070079: The semaphore timeout period has expired."。这样笼统的报错信息很难诊断问题所在。这种错误可能出现在Windows 7、Windows 8和其他Windows版本。这个问题可能是因为Windows桌面、Windows Server或者连接它们之间的网络导致的。
检查服务器日志
从检查服务器的事件日志来开始排错吧。虽然报错信息可能不会在日志中产生一个事件,但是你有可能可以从中找到一些关于导致超时的线索。
然后,检查一下是服务器还是终端导致的问题。尽管Performance Monitor可以帮到你,但主观的测试也可以是很有效的。开始传输一个可能会导致错误的文件,然后测试服务器和客户端的响应能力。比如你能否在客户端上播放视频?你能否在复制过程中,用另一台客户端向这台服务器写入文件?在大多数的情况下,你可能会发现客户端持续响应,但是服务器的性能在显著地下降。
使用PowerShell来进行进一步诊断
如果你将问题定位到了服务器端后,你还需要找到导致这个问题的真正原因。问题有很大的可能性是因为存储设备的瓶颈或者网络的瓶颈。这些瓶颈可能是因为设计的缺陷或者设备健康问题。在你的文件服务器上执行以下两个PowerShell命令吧。
Get-PhysicalDisk
Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object ReadErrorsTotal, WriteErrorsTotal, Temperature
这些命令会显示你服务器上的磁盘是否是健康的状态,以及是否正在发生任何读写错误。有的时候文件拷贝超时错误的出现是因为有一块不健康的磁盘,它不能跟上I/O请求的速度。
检查服务器使用的物理网卡状态也是一个好的方法,特别如果文件服务器是一台虚拟机的话。想象一下一台只有单网卡的宿主机如果使用了它所有的带宽这种情况。虚拟化相关的操作,例如实时迁移和同步操作都可以占用用户的带宽并且导致文件复制操作超时。
如果你不能马上解决文件共享错误的问题,那么你可能需要用到专业的文件拷贝工具来作为短期内的解决方案,例如使用Robocopy来替代操作系统自带的拷贝功能。
作者
相关推荐
-
PowerShell管道应用示例
管理人员可以创建一些功能来支持PowerShell管道的运行,而通过脚本将目标对象传递到整个管道中,同样也可以提升基于文本的Shell质量。
-
要不要升级Windows 10?你也是这样的网友吗?
微软表示,免费升级到Windows 10的服务将在今年7月29日正式终结,对于未在7月29日之前进行免费升级的Windows7、Windows 8.1用户,则需要花费119美元购买该操作系统,或者直接购买预装了Windows 10的新设备。
-
Windows管理员如何学习组策略基础知识
组策略自出现以来并没有太多改变,但对于初学者来说却是一堵难以翻越的城墙。本文介绍如何学习使用组策略来管理用户和计算机。
-
技巧:使用PowerShell FTP脚本上传和下载文件
系统管理员有时需要将文件从A点传到B点,比较流行的做法是使用PowerShell FTP脚本,这样管理员可以使用Windows的.NET功能。