みなさま、こんにちは。
仮想環境を運用していると、仮想ハードディスクのファイル(vhdx/avhdx)が肥大化してしまい、物理ハードディスクの容量を圧迫していまうことがります。
今回は仮想ハードディスクのファイルサイズが肥大化した場合の対処方法について紹介したいと思います。
なお、仮想ハードディスクの種類が「容量可変」となっている場合です。仮想ハードディスクの種類が「容量固定」や「差分」となっている場合は対象外とります。
仮想マシンのディスク容量確認
仮想マシンのディスク容量を確認します。「23.5GB」のディスク容量を使用しています。
物理ハードディスクの容量確認
仮想マシンのディスク容量は「23.5GB」ですので、仮想ハードディスクのファイルサイズは「23.5GB」に近いサイズ?
あれ?「83.6GB」?仮想マシンのディスク容量は「23.5GB」なのに、仮想ハードディスクのファイルサイズが「83.6GB」となっています。
そういえば、仮想マシンで検証のためにアプリケーションをインストール、アンインストールを繰り返していましたので、ディスク容量は増減を繰り返していました。
仮想ハードディスクの圧縮
旦、サイズが大きくなった仮想ハードディスクのファイルは、仮想マシンのディスク容量が小さくなっても自動的に縮小されません。そのため、自分で仮想ハードディスクのファイルを圧縮します。
では、仮想ハードディスクの圧縮をおこなってみましょう。
ディスククリーンナップ
ディスクに不要なファイルが残っていたら圧縮する意味がないので、ディスククリーンナップをおこないます。Windows10の場合、Windows.oldフォルダがあるかもしれません。不要な場合は、システムファイルのクリーンナップから削除しましょう。
実データの削除
データ(ファイルなど)を削除しても、実際はデータ領域に実データが残っています。なので、例えば、「EaseUS Data Recovery Wizard」などのツールを使い、削除したファイルなどを復元することができてしまうのです。そのため、データ領域にある不要なデータを削除するため、「SDelete」を使いその領域を「0」で上書きします。
「SDelete」って、もしかして怪しいツール?と、思うかもしれませんが、安心してください。Microsoft(Windows Sysinternals)のツールですので、「SDelete」は安心して使えます。
ただし、「SDelete」は、標準でインストールされているわけではないので、Microsoftのサイトから「SDelete」をダウンロードします。
圧縮(zip形式)されていますので、適当なフォルダに解凍します。
不要なデータを削除するため、コマンドプロンプトを起動し、以下のコマンドを実行します。この時、管理者権限で実行します。
sdelete64.exe -z C:
ライセンス契約に同意する必要があります。[Agree]をクリックすると、「SDelete」が開始されます。
「SDelete」終了後、仮想マシンのディスク容量を確認します。「23.6GB」のディスク容量を使用しています。「0.1GB」増えていますが、誤差ですので、気にせず進めます。
仮想環マシンをシャットダウンします。
仮想ハードディスクの圧縮
仮想ハードディスクのファイルを圧縮する準備が整いましたので、物理ハードディスクにある仮想ハードディスクのファイルを圧縮します。
「PowerShell」を起動し、以下のコマンドを実行します。
Optimize-VHD -Path "F:\01_Hyper-V¥TestMachine\Virtual Hard Disks\TestMachine.vhdx" -Mode Full
※仮想ハードディスクのファイル名はフルパスで指定します。
仮想ハードディスクの圧縮が開始されます。
圧縮結果確認
仮想ハードディスク圧縮後の、仮想ハードディスクのファイルサイズが「39.1GB」となっています。仮想ハードディスク圧縮前と比べ、半分くらいのサイズになりました。
圧縮結果確認②
以下は、「SDelete」を使わなかった場合の結果です。
仮想ハードディスク圧縮後の、仮想ハードディスクのファイルサイズが「42.7GB」となっています。仮想ハードディスク圧縮前と比べ、やはり半分くらいのサイズになりましたが、「SDelete」を使った場合に比べ、仮想ハードディスクのファイルサイズは若干大きくなっています。
まとめ
仮想ハードディスクのファイルサイズが肥大化した場合の対処方法についてまとめました。
仮想ハードディスクの圧縮は、Microsoftが提供しているツールで実施できます。仮想ハードディスクのファイルサイズを点検し、仮想ハードディスクの圧縮をおこなってみてはいかがでしょうか。
物理ハードディスクの容量を圧迫し、仮想マシンが起動できなくなってしまうと余計にめんどうですよね。
また、「SDelete」についても、使った場合と使わない場合では、結果が違いましたので、時間があれば「SDelete」も使ったほうがよいと思います。
最後までお読みいただきありがとうございました。
では。