SMB2 通信を利用してファイルが正しく参照できないことがある

現象
 ファイルサーバ上の共有フォルダにあるファイルなどに対して操作を行うと、SMB2 が利用されている場合、ファイルが正しく保存されない、内容が破損してしまう、などの問題が発生することがあります。


原因
SMB2 では一度参照したファイルに関してのキャッシュ情報を持ちます。
キャッシュが存在する場合、ファイルの読み取り、書き込み時にもファイル キャッシュを利用します。
このとき、実際のファイルが更新され、ファイル キャッシュが最新の状態では無い場合があります。

この状況で古いキャッシュ情報に含まれるファイル サイズの情報を使用することで、誤った位置にファイル ポインタが設定される可能性があります。
その結果として、ファイルの読み取り、書き込みが発生した場合、ファイルの内容が正しく保存されない、または破損してしまうという現象が発生します。


解決方法
この問題に対処するためには、以下のいずれかの方法を実施します。



方法1

クライアント端末に、修正モジュールを適用します。

修正モジュールは、以下のサポート技術情報にて公開されています。 

- Windows Server 2008 / Windows Vista 用の修正モジュール
文書番号: 2635024
タイトル: Data corruption occurs when a user updates a shared file on a computer that is running Windows Vista or Windows Server 2008
URL:http://support.microsoft.com/kb/2635024


- Windows Server 2008 R2 / Windows 7 用の修正モジュール
文書番号: 2618096
タイトル: Data corruption when one user on a computer that is running Windows 7 or Windows Server 2008 R2 updates a shared file that is open on multiple computers by using SMB Version 2
URL: http://support.microsoft.com/kb/2618096/



方法2 

SMB 2 におけるファイルキャッシュを 無効化するよう設定します。

この設定はクライアントにて設定します。

1. レジストリエディタを開きます。

2. 以下のレジストリを設定します。

キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
 
タイプ : DWORD

値 :

FileInfoCacheLifetime

FileNotFoundCacheLifetime

DirectoryCacheLifetime

※無効にするには値に 0 を設定します。レジストリが存在しない場合には手動で追加してください。
 
3.編集が終わったらレジストリエディタを閉じます。 

4. OS再起動します 


方法 3

SMB2 を利用しないように設定します。
この設定は、共有フォルダを提供しているファイル サーバーにて設定します。

1. レジストリエディタを開きます。

2. 以下のレジストリを設定します。


キー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

名前 : SMB2

種類 : REG_DWORD

デフォルト : 1 (有効)

※無効にするには 0 を設定します。レジストリが存在しない場合には手動で追加してください。 



3.編集が終わったらレジストリエディタを閉じます。 

4. サーバーサービスの再起動、またはOS再起動します。


 
状況
この問題をマイクロソフトの問題として認識しています。
詳細
SMB 


注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2537777 - 最終更新日: 12/15/2011 05:09:00 - リビジョン: 16.0

Windows Server 2008 R2 Datacenter, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Foundation, Windows Server 2008 R2 Standard, Windows Server 2008 R2 Service Pack 1, Windows 7 Home Premium, Windows 7 Professional, Windows 7 Enterprise, Windows 7 Ultimate, Windows 7 Service Pack 1, Windows Server 2008 Datacenter, Windows Server 2008 Enterprise, Windows Server 2008 Standard, Windows Server 2008 Service Pack 2, Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Business, Windows Vista Enterprise, Windows Vista Ultimate, Windows Vista Service Pack 1, Windows Vista Service Pack 2

  • KB2537777
フィードバック