Windows Serverには、標準出荷状態で、ディスクのデフラグ(最適化)を定期的に実行する機能が有効化されています。
デフラグは、ハードディスクのフラグメンテーション(断片化)を解消し、アクセス速度を向上させるために役立ちます。しかしPrivate Cloudの環境においては、このデフラグの定期実行は、特定のケースを除き、非推奨です。
以下では、Private Cloudの環境におけるデフラグが推奨されない場合の理由と、無効化方法について説明します。
Private Cloudでディスク最適化(デフラグ)を無効化すべきかどうか?
仮想ディスクの構造とデフラグの不整合
デフラグは元々、物理環境でハードディスクを利用する場合に、効果が上がるように設計されています。
Private Cloud環境において、ゲストOS上で動作するWindows Serverのデフラグは、クラウド基盤側の仮想ディスクの構造と直接的な整合性がありません。したがってデフラグは、仮想マシン内のファイルシステム上のブロックを整理しますが、ホスト側の仮想ディスクの配置には影響を与えないため、期待するパフォーマンスの向上は得られません。
リソースの問題
デフラグの実行中は、ディスクの読み書きが頻繁に発生します。仮想環境では、このディスクI/Oがホストのリソースを消費するため、他の仮想マシンに対して影響を及ぼす可能性があります。特に、SSDを利用している場合、物理的なフラグメンテーションは発生しないため、デフラグの実行は無駄な負荷を生むだけです。
SSD使用時のデフラグの不要性
近年、多くの仮想環境がSSDを利用しています。SSDは従来のHDDと異なり、物理的なフラグメンテーションによるアクセス速度の低下が発生しないため、デフラグの効果がありません。また、SSDは書き込み回数に寿命が依存するため、デフラグを実行することは不要な書き込みを増やし、SSDの寿命を縮める原因になります。
しかしWindows Server2012以降、仮想OSのWindowsがSSDを認識した際、デフラグ(最適化)機能がデフラグのかわりにTRIM処理を実行するようになっています。
Windows Server バージョン | SSD検出と最適化の自動調整 | 詳細 |
---|---|---|
Windows Server 2008 R2 | 非対応 | SSDを認識しますが、デフラグを定期実行する設定がデフォルトとなっており、手動で無効化する必要があります。SSD向けのTRIMコマンドも自動実行されません。 |
Windows Server 2012以降 | 対応 | SSDを認識し、SSDには「リトリム」操作が実行されます。これにより、SSDのTRIMコマンドを利用した不要ブロックの解放処理が定期的に行われます。HDDには従来のデフラグがスケジュール実行されます。 |
ただし、上記に述べたとおり、ゲストOS上の仮想ディスクとクラウド基盤側の実際のストレージの構造には、直接的な整合性はありません。
結論(Thin Provisioningを踏まえて)
仮想OS内のTRIM(discard)コマンド発効により、ストレージ層に「不要ブロック」が伝えられ、再び仮想ディスクがThin Provisioning化することができる場合があります。通常、Thin Provisioning(仮想マシン作成の時、ゲストOSで利用している箇所のみディスクを確保する方式。初期では容量がほぼ使われないメリットがある)で、仮想OSを立ち上げたとしても、仮想ディスク内の利用がローテーション(現在のファイルシステムはディスクを連続確保するために未使用部分を積極的に使う)することで、最終的にThick Provisioningと変わらない状態となっていました。discardコマンドによりストレージ層に伝搬することで、自動的に解放されることが技術的に可能です。
これは、Private Cloud環境のストレージサービスによって異なります。
Private Cloud基盤 | ストレージタイプ | discard対応 |
---|---|---|
High Response Private Cloud 6Gf KVMモデル | 3 Tierタイプ(NFS-qcow2の利用) | ○(SSDエミュレーション、discard対応で可) |
High Response Private Cloud 6Gf KVMモデル | 3 Tierタイプ(NFS-それ以外) | × |
High Response Private Cloud 6Gf KVMモデル | HCIタイプ(Ceph) | ○(SSDエミュレーション、discard対応で可) |
High Response Private Cloud 6Gf Xenモデル | 全タイプ | × |
したがって、上記で「○」がついてる環境において、Windows 2012以降であれば、Private Cloud環境においても、スケジューリングされたデフラグ(実際は理トリム処理)を行っても良いことになります。
それ以外の環境においては、デフラグにより負荷を上げるだけでデメリットしかありません。
デフラグの無効化方法
仮想環境上のWindows Serverでデフラグを無効化する手順は以下の通りです。
タスクスケジューラから無効化する方法
- デフラグスケジュールの確認「タスクスケジューラ」を開きます。
- 左ペインから「タスクスケジューラライブラリ」→「Microsoft」→「Windows」→「Defrag」を選択します。
- 「ScheduledDefrag」を右クリックし、「プロパティ」を選択します。
- タスクの無効化「プロパティ」画面の「トリガー」タブを選択し、既存のトリガーを確認します。
- 必要に応じて、すべてのトリガーを選択し、「無効にする」をクリックします。また、「全般」タブで「無効にする」オプションがある場合はチェックを入れてください。
- 手動実行の確認デフラグを完全に無効化する場合は、手動実行も行わないように設定を確認してください。
エクスプローラのドライブのプロパティから無効化する方法
- ドライブのプロパティからツールタブを開きます。