みなさん、こんにちは。
仮想マシンを長期間使用していると、仮想ディスクのサイズが徐々に大きくなり、ホストマシンのストレージ容量を圧迫してしまうことがありますよね?
何も手当てをしなければ、いつの間にか容量不足で仮想マシンが落ちている、そんな状況になりかねません。
以前、Hyper-VとVirtualBoxに関しては記事を書きました。
その後、私自身がVirtualBoxからVMware Workstation へメインの仮想環境を移行したため、VMwareでも同様に仮想ディスクの最適化が必要になりました。
そこで今回は、VMware Workstation / Fusion / Player で利用される VMDK 仮想ディスク の最適化手順について、実践的な方法を解説します!
前回の記事と内容が重なる部分もありますが、VMwareに特化した形で手順を順を追って詳しく紹介していきます。
なぜVMDKの最適化が必要なのか
VMwareで容量可変(シンプロビジョニング)のVMDKディスクを使用している場合、ディスク容量は必要に応じて自動的に拡張されます。
しかし、ゲストOS内でファイルを削除しても、仮想ディスクファイル(.vmdk)のサイズは自動では縮小されません。
これが、時間の経過とともに仮想ディスクサイズが肥大化する主な原因です。
定期的に最適化を行うことで、不要なスペースを回収し、ホストマシンのストレージを効率的に利用できます。
VMwareにおけるVMDK最適化の手順
前提条件
- 可変サイズ(シンプロビジョニング)のVMDK を使用していること
- 最適化作業中は仮想マシンを停止する必要がある
- VMware Workstation / Fusion / Player に付属の vmware-vdiskmanager を使用する
1. ゲストOS内での準備作業
最適化の効果を高めるため、空き領域を「ゼロ埋め」しておきます。
Linuxゲストの場合
ターミナルで以下を実行します。
sudo dd if=/dev/zero of=zerofill bs=1M
sudo rm zerofill
sync
Windowsゲストの場合
SDelete ツールを使用します。
sdelete.exe -z C:
※ C:
の部分は対象のドライブに合わせて変更してください。

この作業により、削除済み領域が「0」で埋められ、後続の圧縮処理で効率的にサイズが削減されます。
2. ホスト側での最適化
ゲストOSをシャットダウンしたら、ホストOSで以下のコマンドを実行します。
コマンド例
vmware-vdiskmanager -k /path/to/disk.vmdk
-k
オプションは shrink(圧縮・最適化) を意味します。- /path/to/disk.vmdk はご自身の環境に置き換えてください。
- Windows環境では通常以下のパスにあります:
"C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe"

3. 追加のメンテナンスオプション
vmware-vdiskmanager
には他にも便利な機能があります。
- ディスク検証
vmware-vdiskmanager -R disk.vmdk
- デフラグ
vmware-vdiskmanager -d disk.vmdk
- サイズ拡張
vmware-vdiskmanager -x 80GB disk.vmdk
最適化実行時の注意点
バックアップの重要性
最適化作業前に、必ず仮想マシン全体のバックアップを取得しましょう。特にスナップショットを利用している場合は注意が必要です。
処理時間
ディスク容量やゼロ埋めの実施状況によっては、最適化処理に数十分〜数時間かかる場合があります。
一時的なディスク容量の確保
最適化中は一時的に余分なディスク容量を使用する場合があります。ホスト側に十分な空き容量があることを確認してから実行してください。
まとめ
仮想ディスクの最適化は、ホストマシンのストレージを効率的に活用するための大切なメンテナンス作業です。
- ゲストOSで空き領域をゼロ埋め
- ホストOSで
vmware-vdiskmanager -k
を実行
この流れを定期的に行うことで、VMDKの肥大化を防ぎ、安定した仮想環境を維持できます。
特に、大規模なファイル削除やシステム更新を行った後は、最適化を実施してみてください。
本日も最後までお読みいただきありがとうございました。
それでは、よいVMライフを!
ピンバック: Hyper-VおよびVirtualBoxにおける仮想ディスクの最適化方法 - ビューローみかみ