書き込みキャッシュが有効な場合、ディスク パフォーマンスが低下する

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

目次

現象

ハード ディスクに書き込みキャッシュが実装されていて、次のいずれかのオペレーティング システムを使用している場合、特定のハード ディスク書き込み操作のパフォーマンスが通常よりも低下することがあります。
  • Windows 2000 Service Pack 3 (SP3)
  • 以下の「サポート技術情報」 (Microsoft Knowledge Base) に記載されている修正プログラムをインストールした Windows 2000 Service Pack 2 (SP2)
    281672 [書き込みキャッシュを有効にする] 機能を有効にすると、データが失われる
  • Windows XP
具体的には、ハード ディスクの書き込みのパフォーマンスが Windows 2000 の SP3 より前のバージョンよりも低下します。また、クラスタ コンピュータでは、共有ディスクに対するハード ディスク書き込み操作のパフォーマンスに関して、各ノード間で大幅な差異が発生することがあります。

原因

Windows 2000 の SP3 より前のバージョンには、特定のディスク コマンドの発行を妨げる不具合が含まれています。これらのコマンドは、書き込みキャッシュを有効にしているディスクに対してのみ発行されます。これらのコマンドは、重要なデータを、ディスクの遅延書き込みキャッシュに一時的に保持するのではなく、ディスク デバイスに即座に書き込むように強制するコマンドです。

この不具合の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
281672 [書き込みキャッシュを有効にする] 機能を有効にすると、データが失われる

「サポート技術情報」 (Microsoft Knowledge Base) の資料 281672 に記載されている修正プログラムによって、この不具合は修正され、これらのコマンドは書き込みキャッシュが有効な場合にディスクに対して正常に発行されるようになります。この修正プログラムは Windows 2000 SP3 に含まれています。同様の修正プログラムは Windows XP にも含まれています。

仕様上、これらのコマンドでは、重要なデータの安全性のために、ある程度のパフォーマンスが犠牲になります。これらのコマンドでは、重要なデータが即座にディスクに書き込まれます。また、これらのコマンドは、特定のディスク デバイスについて書き込みキャッシュが有効になっていて、標準のメカニズムを使用してそれが検出できる場合にのみ発行できます。書き込みキャッシュを実装しているディスクに対してこの安全な動作が行われると、特定のディスク操作中にパフォーマンスの低下が見られます。詳細については、この資料の「詳細」を参照してください。クラスタ コンピュータでは、クラスタ リソースのフェールオーバーが発生したときにリソースを引き継ぐノードに、ハード ディスク情報が配布されない場合があります。このため、各ノード間のハード ディスク書き込み操作パフォーマンスに差異が発生します。

解決方法

Windows 2000 を実行しているコンピュータの場合

警告 : Windows 2000 ディスク ドライバには、重要なデータを後でディスクの組み込みキャッシュからディスクに書き込まずに、ディスクに即座に書き込むための保護機能が組み込まれています。この修正プログラムを実装すると (更新されたドライバをインストールし、Power Protected (電源保護) 書き込みキャッシュ オプションを有効にすると)、この保護機能が削除されます。使用中のコンピュータおよび接続されているすべてのハード ディスクが、バッテリによる冗長電源供給などの機能を含むハードウェア設計などによって、偶発的または不注意による電源切断から保護されている場合を除き、この修正プログラムは実装しないでください。使用中のハードウェアに提供されている保護の程度を確認するには、コンピュータまたは記憶装置の製造元にお問い合わせください。この修正プログラムは、実装に伴うリスクのレベルを理解および承諾し、適切なハードウェアの電源保護によってこのリスクを軽減できるという確信がない限り、実装しないでください。また、クラスタ コンピュータでは、共有ディスクに対するハード ディスク書き込み操作のパフォーマンスがノード間で異なる現象は、各ノードの Power Protected 書き込みキャッシュ オプションを設定することで解決できます。

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
281672 [書き込みキャッシュを有効にする] 機能を有効にすると、データが失われる

第 1 部 : Windows 2000 の更新

マイクロソフトでは、この製品のデフォルトの動作を変更する、サポートされた機能を用意していますが、この機能はこの資料に記載された動作のみを修正することを目的としており、この機能を必要とするコンピュータに対してのみ適用することを推奨します。この機能は、今後さらにテストを行う場合があります。したがって、この機能の不足により深刻な影響を受けていない場合は、この機能が含まれる次の Windows 2000 Service Pack がリリースされるまで待つことを推奨します。

この機能を入手するには、Microsoft Product Support Services にお問い合わせください。Microsoft Product Support Services の電話番号一覧およびサポート料金については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support

   日付          時刻    バージョン            サイズ    ファイル名

   ------------------------------------------------------------
   2003/01/15  11:42  5.0.2195.6655     34,832  classpnp.sys    
   2003/01/15  11:43  5.0.2195.6655     30,768  disk.sys        
: この修正プログラムに含まれているファイルには、SP3 以降のバージョン番号が付けられていますが、この修正プログラムは Windows 2000 SP2 ベースのコンピュータおよび Windows 2000 SP3 ベースのコンピュータの両方で使用できます。修正プログラム パッケージは、Windows 2000 SP2 ベースのコンピュータおよび Windows 2000 SP3 ベースのコンピュータの両方にインストールされます。

第 2 部 : Power Protected 書き込みキャッシュ オプションの構成

Windows 2000 更新プログラムをインストールし、更新されたドライバが読み込まれるようにコンピュータを再起動した後、書き込みキャッシュが有効になっていて、偶発的な電源切断に対して書き込みキャッシュが保護されている各ディスクについて、Power Protected (電源保護) 書き込みキャッシュ オプションを有効にする必要もあります。Power Protected 書き込みキャッシュ オプションが有効になっていない場合、この更新プログラムを適用しても、ディスクの動作やパフォーマンスは何も変更されません。

対象のディスクで Power Protected 書き込みキャッシュ オプションを構成するには、Dskcache.exe ツールを使用します。Dskcache.exe は単体で提供されています。 Dskcache.exe ツールおよび Power Protected 書き込みキャッシュ オプションを有効にする方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
811392 Dskcache.exe ツールを入手して "電源保護" 書き込みキャッシュ オプションを構成する
: Power Protected 書き込みキャッシュ オプションは、既存のディスクについてのみ有効にできます。デフォルトでは、Power Protected 書き込みキャッシュ オプションは無効になっています。したがって、このオプションは、この設定を適用した後に追加するディスクに関しては無効です。ディスクを追加する場合は、この設定が有効になるように、追加したディスクについて Power Protected 書き込みキャッシュ オプションを有効にしてください。

Windows XP を実行しているコンピュータの場合

Windows 2000 と Windows XP では設計が異なるため、現時点では、この動作をサポートする Windows XP 用の更新プログラムをリリースする予定はありません。

状況

この動作は仕様です。

詳細

多くのディスク デバイスでは、オンボード キャッシュを使用してパフォーマンスを強化しています。オンボード キャッシュは、ディスクから読み取られるデータに対する先読みキャッシュと、ディスクに書き込まれるデータに対する遅延書き込みキャッシュ ("lazy" 書き込み) を提供します。状況によっては、データをオンボードの書き込みキャッシュに保持し、後でアイドル状態になったときにディスクに書き込むのではなく、データを即座に物理ディスクに書き込むことが重要な場合があります。これによって、書き込みキャッシュが実装されているディスクやコントローラの電源が突然切れた場合などに、データの消失や破損を防止できます。

キャッシュされたデータを即座に物理ディスクに書き込むように強制するには、一般に以下の 2 つのコマンドを使用します。
  • flush buffers コマンドは、SCSI および IDE/ATAPI のディスク デバイスで使用できるコマンドであり、ディスクに対し、キャッシュされたデータをすべて即座にディスクに書き込むように命令します。SCSI ディスクの場合は、ディスクに SYNCHRONIZE CACHE コマンドを発行することによって実装されています。IDE/ATAPI ディスクの場合は、ディスクに対して FLUSH CACHE コマンドが送られます。このコマンドは、通常、Windows のプログラムが FlushFileBuffers API を呼び出した結果として発行されます。レジストリへの書き込みは、FlushFileBuffers API の呼び出しとディスクへの SYNCHRONIZE CACHE コマンドの送信が発生する操作の一例です。
  • Write Through コマンドは、SCSI ディスク デバイスでのみ使用でき、ForceUnitAccess (FUA) ビットを設定した状態でディスクに対して WRITE コマンドを発行することによって実装されています。この種のコマンドは、現在のデータのパケットを、オンボード書き込みキャッシュを通さずに、即座にディスクに書き込むように命令します。通常、この動作が発生するのは、Windows プログラムが、FILE_FLAG_WRITE_THROUGH フラグを設定した状態で CreateFile API を呼び出して開いたファイルに対して、WriteFile API を呼び出して書き込みを行った場合です。一般にウイルス検索ソフトウェアは、FILE_FLAG_WRITE_THROUGH フラグを設定した状態でファイルを開きます。FUA ビットのサポートはオプションです。この機能は、一部の SCSI およびファイバ チャネル (FC) デバイス (一般には RAID アレイではなく個々のドライブ) にのみ実装されています。
仕様により、これらのコマンドは、ディスクに書き込まれているデータの安全性を確保するため、ある程度のパフォーマンス (一般にはディスクのオンボード書き込みキャッシュによって提供されるもの) を犠牲にします。これらのコマンドによってデータがディスクに即座に書き込まれず、さらにディスクの電源が突然切れた場合、キャッシュされたデータは失われます。また、書き込み中のファイルが破損する可能性もあります。

SP3 より前のバージョンの Windows 2000 では、これらのコマンドが、ディスク デバイスに対して発行されるべきタイミングで発行されません。たとえば、プログラムが FlushFileBuffers を呼び出しても、ディスクに対して SYNCHRONIZE CACHE コマンドが発行されません。また、FILE_FLAG_WRITE_THROUGH が設定された状態でファイルが開かれても、WRITE コマンドに FUA ビットが設定されません。この問題は、「サポート技術情報」 (Microsoft Knowledge Base) の資料 281672 に記載されている修正プログラムによって修正されます。これにより、これらのコマンドは意図されたとおりに発行され、その結果、重要なデータの消失に対する保護機能が正常に機能します。

: Microsoft SQL Server は、ローカルのデータベース データ、ログ ファイル、およびバックアップ ファイルに対して広範囲に FILE_FLAG_WRITE_THROUGH を使用しています。ローカルのデータベース データは SCSI ドライブや SAN ドライブ上のデータを含む可能性がありますが、NAS ドライブ上のデータは含みません。Power Protected 記憶装置機能が、ライトスルー キャッシュを保護するハードウェアに対して有効になっていない場合には、大規模データベースのチェックポイント処理中に、SQL Server のパフォーマンスに影響が生じる可能性があります。

デバイス マネージャでディスク デバイスに対して "書き込みキャッシュを有効にする" オプションが構成されているとき、次の 2 つの動作が発生します。
  • 書き込みキャッシュを有効または無効にするコマンドが、ディスク デバイスに送信されます。
  • レジストリ値が保存されます。これは、ディスク ドライバがディスクに書き込みキャッシュ管理コマンド (Flush、Write-Through) を発行するかどうかを決定するために使用されます。
この資料に記載されている修正プログラムは、追加の構成オプションである Power Protected 書き込みキャッシュ オプションを提供します。"書き込みキャッシュを有効にする" オプションおよび Power Protected オプションの両方が有効になっている場合、ディスクの書き込みキャッシュが有効になり、そのことがディスク ドライバによって認識されますが、ディスク ドライバは書き込みキャッシュ管理コマンド (Flush、Write-Through) をディスクに発行しません。これにより、書き込みキャッシュからディスク メディアにデータをフラッシュすることにより発生するパフォーマンスの低下が回避されます。しかし、ディスクに書き込まれていないデータがディスクの書き込みキャッシュに残っているときに電源が切れた場合には、ディスク データの消失や破損が発生するおそれがあります。

次の表では、"書き込みキャッシュを有効にする" オプションと Power Protected オプションの動作をまとめています。
元に戻す全体を表示する
書き込みキャッシュPower Protected
動作
無効 N/A ディスクはキャッシュへの書き込みを行いません。
ドライバは Flush/Write-Through コマンドを発行しません。
(書き込みキャッシュがハードウェアで有効になっていないドライブに対してのみ可能な動作)
有効 無効 ディスクは、キャッシュへの書き込みを行います。
ドライバは Flush/Write-Through コマンドを発行します。
(ハードウェアで書き込みキャッシュが有効になっているドライブに対する、この更新プログラムが適用された SP3 のデフォルトの動作)
有効 有効 ディスクは、キャッシュへの書き込みを行います。
ドライバは Flush/Write-Through コマンドを発行しません。
(ハードウェアで書き込みキャッシュが有効になっているドライブに対する、SP3 より前の不具合による動作)

プロパティ

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

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com