Windows の クライアントから SMB 2.0 の通信で、共有フォルダに作成したファイルへのアクセスがエラーになる場合がある

適用対象: Windows Server 2012 R2 DatacenterWindows Server 2012 R2 StandardWindows Server 2012 Datacenter

現象


Windows Server 2008、Windows Server 2008 R2、Windows Server 2012、Windows Server 2012 R2、Windows Vista 、Windows 7 、Windows 8 または Windows 8.1 のクライアントから、SMB 2.0 の通信でサーバー上の共有フォルダにファイルを作成後、File.Exists、_access、GetFileAttributes、FindFirstFile、FindNextFile、または _stat などの関数で、作成直後のファイルにアクセスすると "ファイルが存在しない" というエラー (NO SUCH FILE など) が発生する場合があります。

原因


この現象は、SMB 2.0 の通信におけるクライアント側のキャッシュ機能が原因で発生します。

Windows Server 2008 または Windows Vista 以降の OS 間のファイル共有で使用される SMB 2.0 は、ネットワークの負荷を軽減させるためにクライアント キャッシュ機能が追加されました。クライアント サーバー間で SMB 2.0 のセッションが確立されると、クライアントはローカルのキャッシュを利用し、このクライアント側のキャッシュ内容は、デフォルト値では 10 秒おきにサーバーと同期されます。このため、サーバー側で新しいファイルが作成されても、クライアント側のキャッシュが同期されるまでは、そのファイルへの操作が失敗します。

回避策


重要 : このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。レジストリを誤って変更すると、深刻な問題が発生することがあります。レジストリを編集する際には十分に注意してください。万一に備えて、編集の前にレジストリをバックアップしておくと、問題が発生した場合にレジストリを復元することができます。バックアップおよび復元方法の詳細を参照するには、以下のサポート技術情報をクリックしてください。 322756 (http://support.microsoft.com/kb/322756/ ) Windows でレジストリをバックアップおよび復元する方法
この現象を回避するには、SMB 2.0 クライアントのキャッシュの同期間隔のレジストリ値を変更してください。

また、 キャッシュ機能を無効化するには、クライアント側で以下のレジストリ値を、すべて 0 に設定してください。

キー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
タイプ : DWORD
値 :
FileInfoCacheLifetime
FileNotFoundCacheLifetime
DirectoryCacheLifetime各レジストリ値の詳細については、次のマイクロソフト Web サイトを参照してください。 SMB2 Client Redirector Caches Explained (英語情報)
http://technet.microsoft.com/ja-jp/library/ff686200(WS.10).aspx

状況


この動作は仕様です。