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來替代操縱系統自帶的拷貝成果。