Microsoft Drive Optimizer(旧称Disk Defragmenter)は、Microsoft Windowsに搭載されているユーティリティで、ディスクに保存されているファイルを再配置して連続したストレージ領域に配置することで、データアクセス速度を向上させるように設計されています。この手法はデフラグメンテーションと呼ばれます。
ディスクのデフラグはヘッドの移動を最小限に抑え、ディスクからのファイルの読み取りとディスクへのファイルの書き込みにかかる時間を短縮します。[ 1 ]読み取りと書き込み時間が短縮されるため、Microsoft ディスク デフラグツールは、ハードディスク ドライブ(HDD) などの磁気ストレージ デバイスから起動するシステムの起動時間を短縮します。ただし、 SD カードやソリッドステート ドライブ(SSD)などのフラッシュ メモリを使用するストレージ デバイスはヘッドを使用しないため、デフラグは不要であり、有害です。デフラグを実行すると、これらのタイプのデバイスの寿命が短くなる可能性があります。
Windows 8以降では、 「ドライブのデフラグと最適化」と名称が変更され、代わりにTRIM操作を実行することでSSDがより効果的かつ適切に最適化されるようになりました。
1982年末には、初期のIBMパーソナルコンピュータに付属していたIBM PC DOSオペレーティングシステムには、それらのマシンで使用されていた5¼インチフロッピーディスクをデフラグするためのディスクボリューム構成オプティマイザが含まれていました。当時、MicrosoftのMS-DOSにはハードディスクのデフラグ機能はありませんでした。このギャップを埋めるために、いくつかのサードパーティソフトウェア開発者がデフラグツールを販売しました。MS-DOS 6.0では、Norton SpeedDiskのライセンス版で機能を制限したMicrosoft Defragが導入されました[ 2 ] 。 [ 3 ]しかし、 Windows NTにはデフラグユーティリティが提供されておらず、Symantecがユーティリティの代替として提案されました[ 4 ] 。
Windows NT の初期リリースにはデフラグツールがありませんでした。Windows NT 3.51までのバージョンには、ハードディスク上のデータ クラスタを移動するためのアプリケーション プログラミング インターフェイスがありませんでした。 [ 5 ]後にDiskeeper Corporationと改名された Executive Software は、Windows NT 3.51 用のDiskeeperデフラグ ソフトウェアをリリースしました。 [ 5 ]これは、クラスタを移動できるカスタマイズされたバージョンの NT カーネルとファイルシステム ドライバとともに出荷されました。
Microsoft はWindows NT 4.0カーネルにクラスタを移動するためのファイルシステム制御 (FSCTL) コマンドを組み込みました[ 5 ]。これはNTFS パーティションとFATパーティションの両方で機能しました。しかし、Windows NT 4.0 にはグラフィカルまたはコマンドラインのユーザー インターフェイスは提供されていませんでした[ 5 ] 。
ディスク デフラグメンターは、最初はWindows 95の一部として出荷され、後にSymantec Corporation からライセンス供与を受けてWindows 98およびWindows Meにも出荷されました。メンテナンス ウィザードを使用してスケジュール設定でき、コマンドライン スイッチもサポートされていました。[ 6 ] Windows 95 および 98 に付属していたバージョンのディスク デフラグメンターでは、デフラグ中にドライブの内容が変更されると、プログラムが一時停止し、ドライブ全体を再スキャンしてから、中断したところから処理を再開しました。この癖は、Windows Me バージョンのディスク デフラグメンターで削除されました。[ 7 ] [ 8 ]
Windows 2000のディスク デフラグメンターは、Diskeeper Corporation からライセンスを受けた Diskeeper の簡略版でした。Windows NT 3.51 用に以前提供されていたプログラムの改良版であり、次の技術を使用しています。[ 5 ]
Windows 2000以降のオペレーティングシステムでは、Microsoft Disk Defragementerには以下の制限があります。
さらに、Windows 2000 バージョンには、Windows XP で削除された以下の制限があります。[ 10 ]
Windows ディスク デフラグツールは、いくつかの制限を緩和するために更新されました。[ 11 ]もはや Windows NT キャッシュ マネージャーに依存していません。キャッシュ マネージャーは、ファイル内で 256KB の境界を越えるファイルの断片をデフラグツールが移動することを妨げていました。NTFS メタデータ ファイルもデフラグできます。コマンドライン ツールdefrag.exeが同梱され、[ 12 ] cmd.exeおよびタスク スケジューラからデフラグツールにアクセスできるようになりました。Windows XP 以降ではブート ファイル デフラグ機能が導入され、この機能はデフォルトで有効になっており、レジストリで無効にすることができます。[ 13 ]
Windows Vista以降では、マスターファイルテーブル(MFT)が複数のフラグメントに分散している場合、デフラグエンジンはデフラグ中にMFTフラグメントを結合することができます。[ 14 ]
Windows Vistaでは、ディスクデフラグツールにタスクスケジューラを使用してスケジュールされた時間に自動的に実行するオプションが追加されました。また、CPU優先度を低く設定し、新たに導入された低優先度I/Oアルゴリズムを使用することで、コンピュータ使用中でもリソース(CPUとディスクの読み書きアクティビティ)を削減してデフラグを継続できます。ユーザーインターフェースは簡素化され、カラーグラフ、進行状況インジケーター、ディスク分析、断片化情報は完全に削除されました。
ファイルの断片のサイズが 64 MB を超える場合、GUI を使用するとファイルはデフラグされません。Microsoft は、このような大きなデータのチャンクを探す時間は、それらを読み取るのに必要な時間に比べて無視できるほど小さいため、パフォーマンス上のメリットがほとんどないことが理由だと述べています。[ 15 ]しかし、その結果、ディスク デフラグツールは、ボリュームのデフラグを正常に実行するために一定量の空き容量を必要としません。これは、ボリュームの少なくとも 15% の空き容量を必要とする完全なデフラグを実行する場合とは異なります。コマンドライン ユーティリティDefrag.exe は、サイズに関係なくすべてのファイル フラグメントを統合して完全なデフラグを実行するなど、デフラグ プロセスをより詳細に制御できます。[ 16 ]このユーティリティは、特定のボリュームをデフラグしたり、 Windows XPのデフラグツールのようにボリュームを分析したりするために使用できます。
ディスク デフラグツールは、Microsoft のコア ファイル サービスによって管理されています。Windows Vista 版は、Windows Server 2008で行われた改善を取り入れるために、Windows Vista SP1 で更新されました。これらの改善の中で最も注目すべき点は、デフラグするボリュームを選択する機能が再び追加されたことです。[ 17 ] 特に、Windows Vista のデフラグツールは、XP に付属していたバージョンよりもはるかに効果的です。[ 18 ]
Windows 7では、Windows Vistaで削除されていた分析機能とデフラグの完了率表示機能が復活しました。また、複数のボリュームを同時にデフラグすることも可能です。
Microsoftの Scott Hanselman 氏によると、Windows 7以降ではソリッドステート ディスク(SSD) の最適化は行われますが、まったく異なる方法で行われます。SSD はハードディスク ドライブ (HDD) とは異なる方法で動作するため、SSD 上のファイルのデフラグによるパフォーマンス上のメリットはありません。さらに、SSD は寿命が尽きるまでに限られた数のストレージ書き込みサイクルを処理できます。ただし、ファイルシステムはメタデータの制限に達すると、無限のファイル断片化をサポートすることはできません。Windows 7 以降の Microsoft Drive Optimizer (旧称 Disk Defragmenter) は、使用中のディスクが HDD か SSD かを認識します。HDD の場合、ファイル デフラグを含む完全なデフラグがサポートされます。SSD の場合、そのディスクでボリューム スナップショットが有効になっている場合にのみ、ファイルシステム メタデータのデフラグが実行されます。これは、断片化された SSD ボリュームで最適なボリューム スナップショット コピー オン ライト パフォーマンスを維持するために行われます。Windows 8 以降では、SSD で手動のTRIMまたは retrim 操作を実行する役割も担っています。[ 19 ]