「Windows 10ミニTips」は各回の作成時点で最新のWindows 10環境を使用しています。

自動メンテナンスはタスクやスケジュールを使わない?

ある程度のPC歴を持つユーザーなら、HDDのフラグメント(断片化)を解消するデフラグツールはおなじみだろう。MicrosoftがデフラグツールをOSに標準搭載したのは、MS-DOS バージョン6の時代から。当時、DOS環境の必須ツールだった「Norton Utilities」を発売するSymantecから技術提供を受けていた。

MS-DOS バージョン6.2Jの「Defrag」

その後、MS-DOSはWindowsに形を変え、現在のWindows 10に至るが、Windows 7あたりからメインストレージもHDDからSSDへ移り変わっていった。詳細は省くが、SSDはその性質上、HDDのようなデフラグ操作ではなく、Trimコマンドによってパフォーマンスダウンを防いでいる。

Windows 10は「自動メンテナンス」という形で、定期的に実行する仕組みを備えた。TrimコマンドをSSDに対して発行し、HDDに対しては従来のデフラグを実行する。

GUIツールである「dfrgui.exe」を起動した状態

デフラグはコマンドラインから実行する「defrag.exe」も継続して用意しているが、以前はともかく現在はGUI版の「dfrgui.exe」から呼び出す存在ではない。dfrgui.exeはdefragsvc.dll上のAPIを利用し、管理者権限で自身を再起動してから、直接ストレージのデフラグやTrimコマンドの発行を行っている。

GUI版デフラグで最適化を実行している状態をユーザー権限で起動した「Process Explore」で確認すると、権限がないためアクセス拒否となる

興味深いのが、dfrgui.exeが生成するタスクだ。「\Microsoft\Windows\Defrag\ScheduledDefrag」に、「%windir%\system32\defrag.exe -c -h -o -$」を追加している。これらのオプションが意味するのは、「すべてのボリュームを対象に(c)、通常の優先度で(h)、メディアタイプに適した最適化(o)、を実行する」というもの。「$」の意味は分からないが、管理者権限を持つコマンドプロンプトから同じコマンドを実行すると、説明どおりの最適化が始まる。

タスクと同じ「defrag.exe -c -h -o -$」を実行した状態。次々とストレージの最適化を実行していく

疑問なのは自動メンテナンスで実行するデフラグはGUI版なのか、CUI版なのかという点だ。残念ながら24時間運用しているWindows 10 PCが手元にないため、同等の条件で稼働させたWindows Server 2016のタスクを確認すると、約1カ月前に実行した形跡がある。GUI版デフラグのスケジュール設定は既定の「毎週」であってもだ。ちなみに手動で自動メンテナンスを実行しても、タスクの実行時刻やGUI版デフラグの実行日は更新されなかった。

Windows Server 2016の各種情報。GUI版デフラグはスケジュールが有効ながらも実行結果は「未実行」。タスクと自動メンテナンスは「2017年10月11日」に実行している

これらのことを総合的に考えると、自動メンテナンスは独自のロジックでストレージの最適化を行っているようだ。そのため、GUI版デフラグのスケジュールやタスクを意識する必要はない。もし、自動メンテナンスを無効にしている場合は、手動で「ドライブの最適化」を実行するようにしよう。

阿久津良和(Cactus)