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

文書番号: 2537777 - 対象製品
すべて展開する | すべて折りたたむ

現象

 ファイルサーバ上の共有フォルダにあるファイルなどに対して操作を行うと、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再起動します。


 

状況

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

プロパティ

文書番号: 2537777 - 最終更新日: 2011年12月15日 - リビジョン: 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
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック