twitter ■お問い合わせ当サイトへのリンクサイト仕様

現在位置 > LostTechnology > Tips > 効率的にデフラグする

効率的にデフラグする

このページは2002年頃に執筆した雑誌の原稿の元となった仲間内用の情報を手直ししたものです。そのため当時の記事と一部似ている部分があります。

最近のハードディスクはかなり容量が大きいため、デフラグを実行するとかなりの時間を必要とします。特にWindows95/98/Meの場合は、デフラグ中にディスクへのアクセスが発生するとデフラグが最初からやり直しになるので、デフラグ中は何もできません。

Windows2000/XPではデフラグ中にファイルアクセスが発生しても処理はそのまま継続されるように改善されています。

Diskeeper Liteを使う

Windows2000/XPのデフラグは、%SystemRoot%\system32\dfrgfat.exe%SystemRoot%\system32\dfrgntfs.exe%SystemRoot%\system32\dfrgres.dllのファイルのプロパティを見るとわかりますが、Executive社が開発に関わっています。というかアプリケーションの画面からしてOEMですね。Executive社のデフラグといえば『Diskeeper』であり、それの機能制限版がOS標準のデフラグになっているといえます。

この製品には機能限定版で無料の『Diskeeper Lite』というものがあり、Analyze(分析)とDefrag(最適化)の機能しか使えませんが、デフラグ処理は高速でWindows95(OSR2以降)/98/Meにも対応しています。これを使えばそれらのOSでもWindows2000/XP同様、デフラグ中にファイルアクセスが発生してもデフラグ処理が継続されるため、ブラウザなどを使いながらでもデフラグが可能です。もっとも、使用中のファイルは再配置できないため、アプリケーションを使いながらのデフラグはあまり推奨できるものではありません。

Windows2000/XPのユーザーはデフラグの処理速度が差となりますが、インストールは微妙かもしれません。表示が英語になることと、起動すると「製品版買わない?」という広告が毎回表示されるためです。OS標準のはおそらくDiskeeper ver.5ベース(6かも?)、Diskeeper Liteはver.7ベースなので最大でも10~20%ぐらいの処理速度差しかないと思われます。この件は厳密に調べていないので自信なし……。

Diskeeper Liteはもうないため、「高速にデフラグする」を参照してください。

デフラグのスケジューリング

WindowsXPではOS標準のDEFRAGがコマンドラインから使えます。defrag.exeのコマンドラインオプションを利用することでスケジュール実行が可能です。

(文法)
defrag <drive:> [-a] [-f] [-v] [-?]
例) defrag c: -f

スタート→すべてのプログラム→アクセサリ→システムツール→タスクで、「スケジュールされたタスクの追加」を選んで、C:\WINDOWS\SYSTEM32\DEFRAG.EXEを選択し、「日単位実行」で実行する時間を選べばOKです。作成されたタスクのプロパティから、実行するファイル名に続けてオプションを記述してください。複数のドライブを対象に実行する場合は、実行する時間をずらして処理したいドライブの数だけ登録する必要があることにご注意を。この設定を行なっておくことで、デフラグをスケジューリングすることが可能となります。コマンドラインの任意オプションは、空き容量が少なくても強制的にデフラグを行なう-fを使うかどうかでしょう。

デフラグをスケジュール実行中に電源を落としたりはしないようにスケジュールに登録した場合はディスクアクセスによく注意してください。また、テレビ録画に使用しているPC にはスケジュール実行を絶対に行なわないようにしましょう。実行中に録画時間になってしまうと録画に失敗してしまいます。

デフラグの効用

ディスクへの書き込みや削除が繰り返されていくと、ディスク上のファイル配置がバラバラになって断片化していきます。十分な空き領域があるうちは、そこへファイルが書き込まれるので断片化は起こりませんが、空き容量が減ってくると複数の空き領域へ分断されてファイルが保存されるのです。デフラグはファイル配置を変えることでこのような断片化を解消します。

下の例はディスク上のファイルの配置です。例1の状態で、ファイルBを削除してファイルEを書き込んだ場合に起こりうるのが例2、ファイルCのデータ量が増えてしまった場合には例3のようになります。

例1) AAAABBBCCCCDDDD
例2) AAAAEEECCCCDDDDEEE
例3) AAAABBBCCCCDDDDCCC

断片化が起こると、ディスクドライブのヘッドの移動が増え、ディスクの回転待ちなどが発生して読み書きの速度も低下してしまいます。読み書きに必要なヘッド移動や回転数の増大はドライブの耐久性を損ねるのです。毎日デフラグするのはディスクへ負担が掛かって逆効果となりかねませんが、週1回~月1回ぐらいでデフラグを行なったほうがよいでしょう。

デフラグの使い分けとか

最後に自分のデフラグの使い方を紹介しておきます。うちのWindowsXP環境は、CドライブにOSとアプリケーションを入れています。Dドライブが頻繁に書き換えるデータ専用(主にキャプチャーや仕事のデータ保存用)。Eドライブが書き換えの発生しないデータ(AVIやMPEG、フォント、MP3など)。ほかのドライブは説明の例で必要がないので省略します。

うちの場合は『Diskeeper 8.0』が出たときにアップデートという選択をせず、別の『PerfectDisk 6.0』を選んだので使い分けということが可能となりました。

まず、CドライブはOSとアプリケーションの起動などで使われているので、WindowsXPのPrefetch機能を使いたいですね。よってデフラグはC:\WINDOWS\Prefetch\Layout.iniを参照してファイル配置を考慮してくれる『PerfectDisk 6.0』を使っています。OSやアプリケーションの起動に使われるファイルを順番にディスクの早いほうから配置してくれるためです。そのぶん、デフラグの処理速度は遅いんですけどね。

次にDドライブは頻繁に書き換わるので断片化がかなり激しくなります。ここは速度重視でC:\WINDOWS\Prefetch\Layout.iniを参照しない『Diskeeper 7.0』を使ってデフラグ。『PerfectDisk 6.0』の「最適化のみ」モードよりうちの環境ではやや早いので。

Eドライブは書き換わることがほとんどないため、どのデフラグでもさほど変わりません。というよりも、デフラグの必要があまりありません。書き換えないデータと、DVD-Rへ書き込むまでのデータ置き場なので。

このようにドライブをまず書き換え頻度別に分けてあるので、Cドライブはアップデートがあったときと月1回ぐらいで実行、Dドライブは週1回実行、EドライブはDVD-Rへデータを書き出したりして変化したときに実行する程度と、デフラグの実行回数を多少減らすことができています。こういう方法でドライブの使い分けで工夫してみるという方法もあるということで……。