Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

Windows Vista/Windows Server 2008でディスクの書き込みキャッシュを有効にする

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2009/02/13
対象OS
Windows Vista
Windows Server 2008
ディスクのキャッシュ制御方式にはライトバックとライトスルーの2種類がある。
パフォーマンス向上のためにはライトバック、信頼性向上のためにはライトスルーを利用する。
UACが有効なOSでは、これらの設定はディスクの管理ツールで行う。

解説

 アプリケーションがデータをファイルに書き込む場合、まずOS内に用意されたキャッシュ用領域(タスク・マネージャで「システム・キャッシュ」などと表現されている領域)にいったんデータを貯めておき、ある程度まとまったところで、実際にディスクに書き込む。これにより、ファイル読み書きのサイズと実際のセクタ/クラスタ・サイズの違いを吸収したり、読み書きのパフォーマンスの向上などを図ったりしている。

 キャッシュに蓄積されたデータをどのタイミングでディスクに書き込むかは、キャッシュの制御アルゴリズムによる。ディスクへの書き込みをなるべく控え、ある程度まとまってから書き込むようにする「ライトバック(write back、書き戻し)」方式にすれば、パフォーマンスの向上が期待できる。ファイルのコピーなどでは連続するクラスタへの書き込みが続くため、まとめて書き込めばオーバーヘッドを最小限にできるからだ。しかしキャッシュのデータをディスクに書き込む前にシステムに障害が発生すると、(アプリケーションが)書き込んだはずのデータが失われてしまう可能性があるため、ファイルへの書き込みと同時に、必ずキャッシュの内容をディスクへも書き込み、データが失われる危険性を最小限にすることもできる。これを「ライトスルー(write through)」方式という。

 Windows OSでは、ドライブのプロパティでどちらの方式を利用するかを設定できるようになっている。例えばエクスプローラでC:ドライブを右クリックし、ポップアップ・メニューから[プロパティ]を選択する。そしてプロパティ・ダイアログで[ハードウェア]タブを選択するとシステムに接続されているハードディスクの一覧が表示されるので、適当なドライブを選んで[プロパティ]ボタンをクリックする。

ディスクのプロパティ
ハードディスクの書き込みキャッシュの制御方式を設定、確認するには、ディスクのプロパティを利用する。
C:やD:などのドライブのプロパティを表示させ、このタブを選択する。
対象となるディスクを選択する。
ディスクの接続先。ディスクが多数あり、どのインターフェイスに接続されているか分かりづらい場合はこれで判断するとよい。
これをクリックする。

 [プロパティ]ボタンをクリックして[ポリシー]タブを選択すると次のように表示される。

書き込み方式の確認
Windows VistaやWindows Server 2008では、UACによる保護機能が働き、項目が変更できない。
これを選択する。
これらを変更したいが、設定できない。

 これが書き込み方式を変更するための設定画面であるが、見ると分かるように、設定ボタンがグレー・アウトしていて変更できない。Windows Server 2003やWindows XP/Windows 2000などではこの画面で設定が変更できたが、Windows VistaやWindows Server 2008ではUACにより、そのような操作は禁止されている(UACのダイアログも表示されないので、この画面では何も操作できない)。本TIPSでは、これらのOSにおけるキャッシュの制御方式の変更方法やその意味などについて解説する。

操作方法

 Windows VistaやWindows Server 2008でディスク・キャッシュの書き込み制御方式を変更するには、管理者としてシステムにログオン後、[コントロール パネル]の[管理ツール]−[コンピュータの管理]を実行する([コンピュータ]を右クリックして[管理]を選択してもよいし、Windows Server 2008の場合は[サーバー マネージャ]でもよい)。UACの確認ダイアログが表示されるので[続行]をクリックしてツールを起動し、[記憶域]の下にある[ディスクの管理]を選択する。そして表示されたディスク・ドライブの一覧からキャッシュを設定したいドライブを選び、右クリックしてポップアップ・メニューから[プロパティ]を選択する。

ディスクのプロパティの表示
ディスクの書き込み方式を変更するには、ディスクの管理ツールを使うとよい。
これを選択する。
変更したいディスク・ドライブを右クリックする。設定はディスクごとに行える(ボリュームごとではない)。
これを選択する。

 表示されたプロパティ・ダイアログで[ポリシー]タブを選択すると、書き込みキャッシュの制御方法を設定できる。

書き込み方式の変更
ディスクの管理ツールから起動したプロパティ画面では、このように設定を変更できる。
このタブを選択する。
リムーバブル・デバイスでのみ選択可能な項目。これを選択すると、ライトスルー方式となり、[ハードウェアの安全な取り出し]メニューを使わなくてもメディアを取り外すことができる。
非リムーバブル・デバイスの場合はこちらしか選択できない。リムーバブル・デバイスの場合、これを選択すると書き込みパフォーマンスは向上するが、メディアの取り外し時に必ず[ハードウェアの安全な取り出し]メニューを使う必要がある。
これをオンにするとライトバック方式になり、オフにするとライトスルー方式となる。
従来との互換性を維持するための設定。デフォルトのオフのまま運用するのがよい。

 いくつか設定できる項目があるが、一般的にはをオンにして運用するのが普通である。以下、それぞれの設定について解説しておく。

「クイック削除のために最適化する」
  これは、USBメモリなどのリムーバブル・デバイスでのみ選択可能な項目である。これを選択すると、書き込みがすべてライトスルーとなるので、書き込み後は[ハードウェアの安全な取り出し]という操作を行わずとも、デバイスを取り外すことができる(書き込みランプが点灯している間は取り外してはいけないのは当然だが)。

「パフォーマンスのために最適化する」
  ハードディスクなど、非リムーバブルのデバイスはこちらしか選択できない。リムーバブル・デバイスの場合は、こちらを選択すると書き込みデータやファイル・システム情報などがキャッシュされるので、取り外す場合は必ず[ハードウェアの安全な取り出し]という操作を行う必要がある。

「ディスクの書き込みキャッシュを有効にする」
  これをオンにするとキャッシュの制御方式がライトバックになり、オフにするとライトスルーとなる。デフォルトではオンとなっているはずだが、データの確実性が必要な場合は(データベース・システムなど)、オフにして運用してもよい。ファイル・サーバとして利用している場合はオンにしておくのがよいだろう。なおActive Directoryのドメイン・コントローラとして設定すると自動的にオフになり、信頼性を向上させるようになっているが、パフォーマンスを優先させたい場合は、そのデメリットを十分理解したうえでオンにしてもよいだろう。

「拡張処理能力を有効にする」
  これは上のをオンにした場合にのみ設定可能な項目だ。この設定はWindows Server 2003でも設定可能である(Windows XPやそれ以前のOSでは利用できない)。この項目の説明文には、「バックアップの電源供給があるディスクのみに推奨します。……」とあるので、UPSを装備したシステムやバッテリを持つノートPCなどでは有用なオプションに見える。だが実際は、ディスク・ドライブ自身の持つキャッシュ制御機能FUA(Forced Unit Access)を利用するかどうかを決めるものである。
  ハードディスク内にもキャッシュがあるため、突然の電源断で書き込み前のデータが失われる可能性があるが、それを避け、書き込みコマンドを受け付けたらライトスルーでディスクに書き込むように指示することもできる(「同期書き込み」などとも呼ばれる)。その機能を制御するのがFUAであるが(ディスクによっては利用できないことがある)、実はWindows Server 2003よりも前のOSではこのFUA機能の制御コードが間違っており、正しく動作していなかった。いくらディスク・ドライブへのコミット(同期書き込み)要求を指示しても、すべて無視されていた。パフォーマンス的にはこれは望ましいが、機能的には正しくない。Windows Server 2003ではこれを修正したが、アプリケーションによってはパフォーマンスの低下が発生し、問題となる可能性がある。そこで用意されたのがこのオプションである。
  これをオンにすると、以前の状態(つまりバグありの状態)を再現し、FUA要求を無視するようになる。実際の書き込み動作が遅延され、いつディスクに書き込まれるかOS側からは制御できなくなるため、突然電源がオフになるようなシステムでは危険性が高くなる(そのため、「バックアップの電源供給が……」というメッセージが表示されている)。オフにすると正しくFUAを処理するようになる。デフォルトではオフとなっているが、特に理由がない限りオフのままでよいだろう。この機能については以下の記事が詳しい。End of Article

Column
ライトバックとライトスルーのパフォーマンスの違い

  キャッシュの制御方式を変えると、ディスクのパフォーマンス(読み書き速度)にどの程度の違いが出るかを見るために、ディスクの読み書きベンチマークを行ってみた。以下は、「CrystalDiskMark」というベンチマーク・ソフトウェアを使って測定した場合の例である。「Seq」というのは、ファイルのコピーなど、比較的大きなサイズのファイルの読み書き作業などでのパフォーマンスを表している。「512K」は512Kbytes単位でのランダム読み書きの速度を表し、一般的なファイル入出力などでの動作を反映していると考えてよいだろう。

ライトバック方式のベンチマークの例
CrystalDiskMarkによるベンチマーク結果の例。「Seq」は大きなファイルのコピーなどと同等の処理、「512K」はWindows OSに一般的なファイル入出力とほぼ同等のランダム処理、と考えてよいだろう。左側が読み出し、右側が書き込みのパフォーマンスを表す。この例では、ライトバックのキャッシュが有効なので、ディスクの読み出し速度と書き込み速度はほぼ同じになっている(違っていても、1〜2割程度)。

ライトスルー方式のベンチマークの例
ライトスルー方式では、ディスクへの書き込み要求が細かく分割されるため、(ディスク・プラッタの回転待ちなどのために)書き込み速度が、読み出し速度の半分とかそれ以下に低下する。信頼性は向上するが、書き込みのパフォーマンスは低くなる。

 これを見ると分かるように、ライトバックからライトスルーに変更すると、ディスクへの書き込み速度が読み出しの半分とか3分の1程度にまで低下する。ファイルのコピーなどが読み出しよりも極端に遅い場合は、この設定を確認するとよい。


「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間