Hyper-VでVMを作成する際にVHDXのディスクの種類がどうあるべきかを本気で考えたのでメモメモ。
容量可変ディスクの問題点
ファイルサイズが自動縮小されない
最初はコンパクトに始めても、データが増えるに従ってディスク容量が勝手に拡張される。その後にデータを削除してもファイルサイズは縮小されない問題。対応策はこのリンクの通りだが、運用が面倒。
容量固定ディスクよりも読み書きが遅い
フラグメンテーションする可能性が高くなる
「Block Allocation Table」がディスクに追加されるため固定のディスクよりサイズが大きくなる
「Block Allocation Table」の詳細はこのサイトを参考にしてください。
オーバーコミットされる環境下ではディスク容量が枯渇し、他の問題を引き起こす可能性がある
容量固定ディスクの問題点
使っていないディスクの領域を取られる
大きいサイズのVHDXはVMのポータビリティーを損なう
容量可変→容量固定にすることに、、、
滅多に容量が変化しないことが想定されるVMなので、容量固定のVM(VHDX)を作成することになった。既に作成していた容量可変のVM(VHDX)があったので容量固定として作り直すことに。
やり方
DiskPartコマンドラインユーティリティ起動
コマンドプロンプトで
DiskPart
から起動する。
容量可変のVHDXを容量固定のVHDXにコピー
直接コンバートすることはできないのでVHDXを新規作成しコピーする処理が必要が。流したコマンドは以下の通り。
create vdisk file="新規作成する固定のVHDX" source="容量可変として作成していたVHDX" type=fixed
容量可変時に設定した最大サイズでコピー先のVHDXはできるのでディスクサイズの枯渇に注意。
MaximumSizeを指定できたらいいのになー。
Hyper-Vから仮想マシンを作成
作成した容量固定VHDXをHyper-Vに食わせて仮想マシンを作成する。Cドライブには容量可変時に設定したフルフルのサイズとしてディスクサイズが割り振られている。
仮想マシンのCドライブに割り当てられた領域を未割り当てにする
明らかに余りがあるのに、未割り当てにできない場合や「ディスク容量が足りない」と怒られる場合はデフラグしてから実行すると状況の改善が見込まれます。
容量固定のVHDXのサイズの縮小
仮想マシンのドライブを未割り当てにすると、ホスト側のHyper-Vの「ディスクの編集」でディスクの縮小ができるようになります。今回作成した容量固定VHDXを選択しディスクの縮小を行います。
容量可変のVHDXのサイズを最適化(圧縮)する方法
ちらっと上に書きましたが、以下のサイトにやり方が載ってました。
ちなみに私の仮想マシンは手順の実行で20GB減らすことができました。
Optimize-VHD コマンドレットは2回実行すると良いみたいな記事も見ました。
感想
地味にメンドくさかった。
参考
容量固定と容量可変のトレードオフについて