こんにちは、テクニカルサポートの武田です。
今回は、サーバのデフラグ処理のスケジュール動作について書かせて頂きます。
デフラグ自体は昔からある処理で、ハードディスクへの読み書きやデータ消去が日々行われる中でハードディスク内でファイルの断片化が起こりますが、それを整理しなおして最適化することでファイルの読み込み書き込みスピードやパソコン動作の改善をする処理になりますが、今回投稿したきっかけは特定の(条件は不明)サーバにおいてデフラグのスケジュール処理がOS標準のデフラグツール(ドライブの最適化)では自動で行われないことが分かった事がきっかけになります。次に事のいきさつと対応策を書かせて頂きます。
私の調べではサーバ向けOSではWindows Server 2012以降、コンシューマー向けOSではWindows7以降のOS標準のデフラグツールでは基本的に毎週デフラグが行われるように既定で設定がされています。
既定でスケジュールされているにも関わらず、「最後の実行」の日付が古い日付のままだったため、デフラグが自動で行われないということが分かりました。
実際、手動でドライブを選択し、分析を行うと、断片化が見られました。また、手動で最適化する分には正常に最適化が行われますので、デフラグできないという訳ではありませんでした。
ネット上のコミュニティの情報よりデフラグのスケジュールをタスクスケジューラにて管理するという手法を見つけまして、試してみましたが、タスクスケジューラ処理は実施されているようですが、デフラグは行われていませんでした。
なぜ、スケジュール処理が行われないのかを調査して発見したのが下記の画像で、ドライブの最適化の「設定の変更(S)」をクリックすると表示される「最適化のスケジュール」メニュ内に、「ドライブの選択(H)」があり、ここをクリックすると表示されるドライブ選択画面に、存在するドライブパスが何も表示されていないことがわかりました。
説明では「自動最適化がスケジュールできるドライブのみが表示されます。」と記載があるので、特定のサーバではドライブが対応できず、自動最適化がスケジュールできないという判断になりました。
弊社ではDELL製のサーバ製品をメインに扱っており、DELL社のサポートセンターへこの事象について、問い合わせを行い、調査をして頂きましたが、DELL社からは症状の再現はできたが原因が全く分からない、おそらくはハードウェア(RAIDコントローラなど)の問題なのではないかという推測情報を頂きましたが、どうしようもないことが分かりました。
よく考えてみると、USBの外付けHDDすら対応できていないので、OS側の問題かもしれないと思いながらも原因はやはり分かっていません。
DELL社のサポートセンターからの情報により、コマンドでデフラグを実行してはどうかというご案内があり、試したところ、コマンドによりデフラグは問題なく実施できたため、デフラグツールでのスケジュール処理ではなく、コマンドを仕込んだバッチファイルをタスクスケジューラにて実施することでスケジュール処理を実現することにしました。
実行するコマンドは「defrag.exe -c -h -o -$」になります。
元情報は先のタスクスケジューラ内の標準で用意されたデフラグ用のスケジュール設定の操作の部分を参考にしていますが、説明をすると
-
- defrag.exe (デフラグの実行)
- -c (すべてのボリューム上で操作を実行します)
- -h (通常の優先順位で操作を実行します (既定値は低です))
- -o (メディアの種類ごとに適切な最適化を実行します)
- -$ (※調べてみましたが分かりませんでした。すみません。)
となります。
上記コマンドにより無事にデフラグツールで自動スケジュール機能により実施されるデフラグとおなじ処理を実現することができるようになりました。
※バッチファイルの作り方やタスクスケジューラへの登録方法は割愛させて頂きます。
この投稿記事が同じ事象に悩む方の手助けになりますと幸いです。