デスクトップ ファイル最適化に関する事実

Wes Miller

ハード ディスクが存在する限り、ディスクの断片化がなくなることはありません。システムに問題がある場合は、定期的にシステムの最適化を行う必要があります。ここでおそらく、毎年、歯科定期検診で医師から歯間掃除について言われていることを思い出すでしょう。最適化は、それと同じくらい重要なことです。

コンピュータが部屋の隅で電源がオフになったまま放置されているわけでなければ、断片化は徐々に進みます。この後、断片化が発生するしくみについて説明しますが、まず、最適化の歴史をご紹介しましょう。

最適化と Windows NT

Windows NT® には組み込みのデフラグ ユーティリティがなく、最適化は不要というのが当時の一般的な考えでした。NTFS は最適化を考慮して構築されたシステムなので、同等の FAT ボリュームほど著しい断片化が発生することはありませんでした。しかし、コンピュータを長い間使用していると、最適とは言えないファイルの配置により、NTFS システムでもパフォーマンスが低下することがあります。その結果、活況なサードパーティ製のデフラグ ツールの市場が生まれました。IT プロフェッショナルの間で最も人気のある製品の 1 つに、Executive Software 社 (現在は Diskeeper Corporation) の Diskeeper という製品がありました。マイクロソフトでは、Windows 2000 に最適化の機能を組み込むとき、Executive Software 社からテクノロジのライセンス供与を受けました。Windows® 2000 の最適化機能は、この機能専用の Microsoft® 管理コンソール (MMC) スナップイン (dfrg.msc) を使用して実行できます。このスナップインは、ボリュームをクリックするか、コマンド ラインから手動で defrag.exe を実行して、呼び出すことができます。スケジュール設定機能がなく、使用できるコマンド ラインが制限されていたので、多くの IT プロフェッショナルは、組み込みのデフラグ ツールを使用した最適化処理を自動化する機能を実装したスクリプトを作成していました。Windows XP と Windows Server® 2003 の defrag.exe では、以前のバージョンよりも少し機能が強化されましたが、自動化の機能には制限があったので、IT プロフェッショナルは依然としてスクリプトを作成する必要がありました。

(私の以前の勤務先である) Winternals Software 社などの多くのベンダによって、企業向けの最適化ソフトウェアが提供されています。こうした製品のほとんどは同じような機能を提供し、集中管理されたコンソール、(常時または必要に応じて) クライアント システムで実行されるなんらかのエージェント、および最適化タスクを実行するタイミングと方法を指定する構造を持ちます。

Windows Vista® では、多くの点において単一システムの最適化という流れを引き継いでいますが、デフラグ ツールの最適化が行われ、小さいファイルの断片 (64 MB 以下) の最適化などのオプションが実装されています。このオプションにより、最適化の処理速度は上がりますが、ディスク上に多数の大きなファイルの断片が残るという欠点もあります。Windows Vista と Windows Server 2008 では、最適化エンジン自体が以前のバージョンの Windows よりも強化されています。また、自動的に実行されるので、手動でのスケジュール設定は必要ありません。ただし、大規模な組織で最適化を実行する場合や、既定のデフラグ ツールで提供されていない方法を使用してシステムを最適化する必要がある場合は、サードパーティ製のソフトウェアのライセンスを取得する必要があります。また、以前のバージョンと同様に、NTFS 圧縮が有効になっていて広範に使用しているボリュームの最適化は、困難な作業になることがあります。このようなシナリオでも、サードパーティ製のツールが役立つ場合があります。

断片化が発生するしくみ

断片化は、時間の経過と共にファイルが変更されるために発生します。Windows のファイル自体が変更されないのが理想的です。または、Service Pack やソフトウェア更新プログラムのインストール時にだけ変更されるなど、少なくともあまり頻繁に変更されず、このような変更がないときには、システム ファイルが比較的一定の状態が保たれるというのが望ましいでしょう。Service Pack のインストールなど、大幅な更新が行われると、通常、更新対象のファイルは、ディスク上にある該当ファイルを上書きできないため、当然断片化が発生します。また、更新を適用するために再起動が必要な場合があり、さらに断片化が進むことになります。

一方、ユーザー ファイルとユーザー データ (および Windows レジストリ) は、常に変更される傾向があります。絶えず行われるファイルの読み取り、書き込み、編集、コピー、および削除によって、特にドライブの空き容量が減るにつれて、大幅な断片化が発生します。

この状況を視覚化するために、ファイルがすきまなく連続した状態で領域を使用している、完璧に整列されたディスクを想像してみてください。あるファイルを開いて編集し、保存するとします。ファイルのサイズが大きくなった場合、Windows ではファイル全体をディスク上の他の場所 (たとえば、ファイル N の後) に保存するか、更新されたデータをファイル N の後に保存する必要があります。つまり、ファイル 2 は断片化されたことになります。この時点で、ファイル 1 を編集すると、断片化した 2 つのファイルを編集することになります。このような作業を長期にわたって繰り返すと、システムでは大幅な断片化が進み、ドライブで各ファイルにアクセスするために、複数の場所を調べなければなりません。大きなデータベース ファイル、仮想コンピューティング テクノロジ対応の拡張性のあるハード ディスク ファイル、および標準的なディスクに格納される情報量の多いビデオやオーディオでは、日常的に断片化が発生します。もちろん、現在のハード ディスクのサイズが従来のものより大きくなっていることで断片化の問題は軽減されますが、問題がなくなるわけではありません。また、小さなハード ディスクを搭載した古いラップトップ コンピュータでは、徐々に応答が遅くなり、起動に時間がかかり、ファイルを開いたり保存したりする速度が低下します。

考慮すべき重要な点は、必ずしもシステムの断片化の程度であるとは限らず、各ファイルの断片化の程度です。ディスク デフラグ ツールで色による分類を採用した UI が導入されてからずっと、ユーザーは「途中に白い部分がなく、色で塗りつぶされた状態にしたい」と考えてきました。しかし、実際それは最も望ましくない状態です。中には、ディスクを 2 つのブロックで表示しようとする製品があります。一方は色付き (ファイル データ) で、もう一方は通常白 (空き領域) です。残念ながら、最適化の頻度とコストを最小限に抑えることが目的である場合は、これはディスクに対して行う最悪の処理の 1 つです。ディスクの先頭にすべてのファイル データを強制的に圧縮し、空き領域の大部分を削除した場合、ファイルに追加の編集を行うと、そのすべての編集内容をファイル データの最後に書き込む必要があります。このような方法で最適化を行うと、実際には、次回ファイルを編集するときから断片化が発生することになります。最適化後の適切な状態とは、きれいに整理された 2 つのブロックのファイル データではなく、視覚的には必ずしも完璧ではない状態です。たとえば、図 1 で最適化を実行する前のテスト システムの状態を確認してください。その後、図 2 で、Windows で最適化が完了した後の同じシステムの状態を確認してください。

図 1 最適化前のドライブ

図 1** 最適化前のドライブ **(画像を拡大するには、ここをクリックします)

図 2 最適化後のドライブ

図 2** 最適化後のドライブ **(画像を拡大するには、ここをクリックします)

Windows では、ディスク上にあるファイルの全体的な断片化ではなく、各ファイルの断片化に重点を置いています (このシステムを最適化する前の、最適化のレポートの [最も断片化されたファイル] セクションについては、図 3 を参照してください)。

図 3 最適化のレポート

図 3** 最適化のレポート **

そのため、最適化を実行しても、Windows では、ディスクの先頭に完全に圧縮されたファイル データのセットが表示されることはありません。図 1図 2 の両方に大きな緑色のデータの部分があることに注意してください。この部分は、この後説明する Windows ページ ファイルを表しています。Windows システムで休止状態を有効にしている場合に、最適化を実行すると、休止状態ファイルが同じように表示されます。

定期的な最適化が不可欠

歯間掃除と同様に、重要なのは、定期的に最適化を行うことです。最適化には非常に時間がかかるだけでなく、最適化の特定のフェーズでは CPU 使用量が多くなるため、最適化を行わずにいると、最適化の処理に時間がかかり、サーバーが使用できなくなったり、応答しなくなったりする可能性があります。したがって、サーバーなどの使用頻度の高いシステムでは、頻繁に最適化を行うことが非常に重要です。

最も優れたオンラインのデフラグ ツールでも、すべてのものを最適化することができるわけではありません。たとえば、開かれているファイルやロックされているファイル (ページ ファイルやレジストリ ファイルなど) は最適化できません。また、(システムで使用している RAM と同じサイズの) 休止状態ファイルが存在する場合は、それに対応する必要があります。ロックされたファイルを最適化する方法については、この後の最適化のテクニックを紹介しているセクションを参照してください。

最適化に関する通説と事実を理解することが重要です。図 4図 5 に、最適化について話し合ったときに聞いたことがあるいくつかの一般的なトピックを示し、これらの問題が発生する実際の確率を説明します。

Figure 5 最適化に関する通説

通説 可能性
システムがクラッシュする。 低 - 通常、クラッシュは、ドライバやハードウェアの問題が原因で発生します (メモリの破損、再起動の原因となる温度の問題、ディスクの温度に問題があることで発生するディスク エラーなど)。
アプリケーションがクラッシュする。 低 - システム全体と同様に、適切に設計されたアプリケーションは断片化によってクラッシュすることはないため、断片化がクラッシュの原因であることが特定できていない場合は、断片化によってクラッシュが発生したとは考えないでください。
レジストリが破損する。 低 (上記参照) - 断片化によってレジストリが破損することはありません。
最適化を実行すると、ディスクの視覚的なイメージは塗りつぶされた状態になる。 低 - 空き領域を取り除いたり、パーティションを圧縮または分割したりしないセクタ ベースのイメージング ツールを使用して、システムのイメージを作成する予定がある場合を除き、通常、システム上のすべてのファイルがディスクの先頭に詰めて配置されることはありません。このようなツールを使用してイメージを作成する予定がある場合は、ディスクの先頭部分にファイルを配置する必要があります。それ以外の場合、ファイルを強制的に統合すると、さらに断片化が進むだけです。
   

Figure 4 最適化に関する一般的な懸念事項

懸念事項 可能性
システムのパフォーマンスが低下する。 高 - システムの使用状況によって異なります。
誤って削除したファイルの回復が困難または不可能になる場合がある。 高 - ほとんどのファイル回復ツールは、ヒューリスティック (データの種類を特定するため) とファイル クラスタの近接度に依存します。ファイルの断片が散在していると、ファイルの回復操作が複雑または不可能になります。
システムの最適化にはコストがかかる。 中 - システムの使用度合いと時間の経過と共にシステムで変更されるファイル数の間には、直接的な相関関係があります。たとえば、ユーザーが頻繁にファイルを編集していても、サーバー共有にしか保存していない場合は、時間の経過によるパフォーマンスの大幅な低下は見られません。
ディスクの破損が発生する。 低 - 実際にディスクが破損する可能性は高くありません。この場合も、システムにかかる負荷が高いほど (常にディスクに電源が供給された状態にしておいて、ファイルを編集、変更、または削除する場合)、破損の可能性が高くなります。ただし、現在のハードウェアは、ファイルの編集だけが原因で破損することはありません。
   

インフラストラクチャの一部としての最適化

すべてのシステムで定期的にデフラグ ツールを実行することを、真剣に検討する必要があります。Windows に組み込まれたデフラグ ツールを使用するか、サードパーティ製品を検討するかの 2 つの選択肢があります。基本的に、どの程度のエンジニアリングを必要としているかで決まります。Windows XP 以降のバージョンでは、defrag.exe をスケジュールされたタスクとして追加できます。これを行う方法については、support.microsoft.com/kb/555098 を参照してください。ラップトップ コンピュータの最適化には、いくつかの特殊な考慮事項があることに注意してください。ユーザーのシステムの電源がオンになっているとき (理想的には AC 電源を使用しているとき) に最適化を行い、またモバイル ユーザーが作業をしているときには、CPU やディスク サイクルを消費しないようにする必要があります。ただし、残念ながら、モバイル ユーザーがシステムで作業をしていないときは、AC 電源が接続されておらず、スタンバイ状態か休止状態 (電源管理とスケジュールされたタスクの観点から言うと、電源がオフの状態) になっている可能性が高くなります。Winternals 社では (おそらく、すべて企業でも)、理想的なモバイル ユーザーのシナリオを設計するのにかなりの時間を費やしています。Windows Vista を使用している場合、組み込みのデフラグ ツールとスケジュールされたタスクを使用するソリューションでは、以前のバージョンよりも電源に関する認識がはるかに強化されているので、十分な解決策が提供されるでしょう。このソリューションが十分でない場合は、モバイル システム向けのサードパーティ ソリューションが必要になることがあります。サードパーティのソリューションには、実際に最適化タスクを開始し、最適化を実行したこと、実行した日時 (頻度)、および実行した時間を通知するものがあります。

モバイル シナリオに加えて、ファイル システム以外の断片化について考える必要もあります。これは、一般的にデスクトップ システムやモバイル システムについて心配する必要があることではありませんが、Microsoft Exchange Server、SQL ServerTM、または他のデータ ストアなどのサーバーでは、独自の最適化が必要になることがあります。そのような場合は、サーバー独自の最適化をファイル システムの最適化を実行する前に行うか、実行した後に行うかを決定する必要があります。

サードパーティ製のデフラグ ツールを使用している場合は、Windows デフラグ API を使用することをお勧めします。Windows NT 4.0 以降の Windows では、独自のデフラグ API が用意されており、データが予期せず失われることを防いでいます。たとえば、ファイルを移動している最中にシステムに電源が供給されなくなった場合、最悪の事態は不完全な断片が移動されることです。このような状況が発生すると、データが失われ、システムを起動できなくなる可能性もあります。

最後に、仮想コンピューティング テクノロジを使用している場合は、仮想ディスクの最適化の管理方法も検討することをお勧めします。仮想ディスクでも、物理ディスクと同様に断片化が発生します。サイズに制限があるため、物理ディスクよりも、断片化の状況がいろいろな意味において悪化する可能性があります。また、仮想化ソリューションでディスクやパーティションを圧縮できる場合は、領域を解放するために (または、少なくとも圧縮処理にかかる時間を短縮するために)、まず最適化を行う必要があります。

その他のツール

ここまでの説明で、最適化が重要で価値のある機能であることに納得していただけたでしょう。最適化自体にサードパーティ製のツールを使用しない場合でも、PageDefrag という名前の Mark Russinovich 社が提供するツールの使用を検討することをお勧めします。このツールは、Microsoft Sysinternals ツール サイト (microsoft.com/technet/sysinternals/FileAndDisk/PageDefrag.mspx) から入手できます。既に説明したように、Windows がオンラインのときには、Windows ページ ファイルを最適化することはできません。また、Windows レジストリ ファイルや Windows イベント ログについても同様です。PageDefrag では、小さなドライバを使用して、Windows が起動を完了してファイルがロックされる前に、このようなロックされるファイルに対して最適化を実行できます。この機能を使用するのに必要な作業は、PageDefrag を実行し、次回の再起動時に実行するか、再起動のたびに実行するかを設定するだけです。システムの再起動時 (具体的には、ご覧になったことがあるかもしれませんが、ブート プロセスでディスク チェックが実行されるタイミングで)、一覧で指定されたファイルを最適化します (図 6 参照)。

図 6 PageDefrag で最適化するファイル

図 6** PageDefrag で最適化するファイル **

PageDefrag による処理が完了したら、システムは通常どおり起動します。PageDefrag の詳細については、9 月号のユーティリティ スポットライトで Lance Whitney が執筆した記事 (technetmagazine.com/issues/2007/09/UtilitySpotlight) を参照してください。PageDefrag は、Windows NT 4.0、Windows 2000、Windows XP、および Windows Server 2003 のみでサポートされていることに注意してください。現時点では、Windows Vista ではサポートされていません。

PageDefrag の他に、Sysinternals 社が提供している Contig という名前のツールがあります。このツールを使用すると、特定のファイルを手動で最適化することができます (詳細については、microsoft.com/technet/sysinternals/FileAndDisk/Contig.mspx を参照してください)。特定のファイルを通常の最適化タスクで最適化できなかった場合、または通常の最適化タスクの実行後に、特定のファイルだけが断片化し、ボリュームの他の部分は断片化していない場合は、このツールが役立ちます。

Contig では、ワイルドカードを使用して、ディレクトリ全体またはサブディレクトリも最適化できます。次のコードでは、Windows ディレクトリの下のすべてのファイルを、配置場所に関係なく最適化します。

Contig –s c:\Windows\*.*

–v スイッチを指定すると詳細な情報が表示されるようになり、–q スイッチを指定すると情報が表示されずに実行されます。

Wes Miller は、テキサス州オースティンにある Pluck 社 (www.pluck.com) の開発マネージャです。以前は、オースティンにある Winternals Software に勤務しており、その前はマイクロソフトで Windows のプログラム マネージャとプロダクト マネージャを兼任していました。Wes の連絡先は、technet@getwired.com (英語のみ) です。

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; 許可なしに一部または全体を複製することは禁止されています.