
VMwareゲストOSのディスク容量を削減する完全ガイド【vmware-toolbox-cmd disk shrink】
VMwareの仮想マシンを長期間使っていると、ゲストOS内でファイルを削除しているはずなのに仮想ディスクファイル(.vmdk)の容量が減らない、という状況に直面することがあります。
この記事では vmware-toolbox-cmd の disk shrink コマンドを使い、仮想ディスクの未使用領域を安全に回収してファイルサイズを縮小する手順を、Linux・Windows それぞれのゲストOS向けに解説します。
実際に筆者が VMware Workstation・VMware Player 環境で手順を検証済みです。

なぜゲストOSのディスクは肥大化するのか
仮想ディスクのファイル容量が減らない理由を理解しておくと、対処方法の意味が分かりやすくなります。
ファイル削除とディスクの実態の違い
一般的なOSでファイルを削除するとき、実際に行われる処理は「ファイルのインデックス情報の削除」です。ファイルの実データが書き込まれているディスクの領域は、新しいデータが書き込まれるまで そのままの状態で残り続けます。
これはホストOSでもゲストOSでも同様の仕組みです。しかし仮想ディスクにおいては、ゲストOS内でファイルを削除しても:
-
ゲストOS:「このブロックは空き領域」と認識
-
VMware(ホスト側):「このブロックは一度書き込まれたデータがある」と認識したまま
という状態になり、.vmdk ファイルは縮小されません。
仮想ディスクの2種類のモード
VMwareの仮想ディスクには以下の2種類があります:
|
モード
| 説明
| 肥大化の挙動
|
| シンプロビジョニング(Thin)
| 実際に使った分だけ拡張
| ファイル削除後も縮小しない
|
| シックプロビジョニング(Thick)
| 最初から最大容量を確保
| 常に最大サイズのまま
|
シンプロビジョニングの仮想ディスクは、データを書き込むたびに .vmdk ファイルが拡張されますが、ゲストOS内でファイルを削除しても自動的には縮小されません。これが「肥大化」の正体です。

前提条件
このガイドを進める前に、以下を確認してください。
-
ホスト環境: VMware Workstation / VMware Player(バージョン問わず)
-
ゲストOS: Linux(Ubuntu、CentOS、Debian等)または Windows
-
必須: ゲストOS内に VMware Tools がインストール済みであること
-
仮想ディスク形式: シンプロビジョニング(Thin Provisioned)の
.vmdk
重要: VMware Tools がインストールされていない場合、vmware-toolbox-cmd コマンドが存在しないため、この手順は実行できません。VMware Tools は VMware のメニューから「VMware Tools のインストール」を選択してインストールしてください。
VMware Tools のインストール確認方法
Linux の場合:
vmware-toolbox-cmd -v
# 出力例: VMware Tools daemon version: 12.3.0.61624
Windows の場合(コマンドプロンプトまたは PowerShell):
"C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe" -v
バージョンが表示されれば VMware Tools は正常にインストールされています。
全体の流れ
このガイドは以下の4ステップで構成されています。
-
ゲストOS内で不要ファイルを削除する — 5〜30分
-
未使用領域をゼロフィルする — 10〜60分(ディスク容量に依存)
-
縮小結果を確認する — 5分

ステップ1: ゲストOS内で不要ファイルを削除する
まず仮想ディスクの縮小効果を最大化するために、ゲストOS内の不要ファイルを削除します。
Linux の場合
パッケージキャッシュの削除:
# Ubuntu / Debian 系
sudo apt-get clean
sudo apt-get autoremove -y
# CentOS / RHEL / Rocky Linux 系
sudo yum clean all
# または
sudo dnf clean all
ログファイルの整理:
# journald ログを直近7日分に制限
sudo journalctl --vacuum-time=7d
# 古いログファイルを手動で確認・削除
sudo du -sh /var/log/*
sudo find /var/log -name "*.gz" -delete
tmpファイルの削除:
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
Windows の場合
-
ディスククリーンアップ(
cleanmgr.exe)を実行 -
一時フォルダ(
%TEMP%)を手動で削除 -
ごみ箱を空にする
-
Windowsアップデートのキャッシュを削除(
C:\Windows\SoftwareDistribution\Download\)
よくあるミス: ごみ箱を空にせずに進めてしまうケースが多いです。ファイルシステム上はゴミ箱内のファイルも「使用中の領域」として扱われるため、必ず空にしてください。
✅ ステップ1完了の確認: df -h(Linux)または「ディスクの管理」(Windows)で空き容量が増えていることを確認してください。
ステップ2: 未使用領域をゼロフィルする
disk shrink コマンドは内部で「未使用領域をゼロで埋める(wipe)」処理を行ってから縮小します。ただし明示的に wipe を先に実行しておくことで、shrink 処理の効率が上がります。
disk コマンドのサブオプション確認
まず利用可能なサブオプションを確認します:
# Linux
vmware-toolbox-cmd help disk
disk: perform disk shrink operations
Usage: vmware-toolbox-cmd disk [args]
Subcommands:
list: list available locations
shrink : wipes and shrinks a file system at the given location
shrinkonly: shrinks all disks
wipe : wipes a file system at the given location
|
サブコマンド
| 処理内容
|
| list
| 縮小対象のマウントポイント(Linux)またはドライブ(Windows)を一覧表示
|
| wipe
| 指定した場所の未使用領域をゼロフィル(縮小はしない)
|
| shrink
| ゼロフィル + 仮想ディスクの縮小を一括実行
|
| shrinkonly
| すべてのディスクを縮小(ゼロフィル済み前提)
|
対象ディスクの一覧確認
# Linux
vmware-toolbox-cmd disk list
/
/boot
# Windows(コマンドプロンプトを管理者権限で実行)
"C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe" disk list
C:\

✅ ステップ2完了の確認: disk list でマウントポイントが表示されれば、次のステップに進む準備ができています。
ステップ3: disk shrink コマンドで仮想ディスクを縮小する
いよいよ仮想ディスクの縮小を実行します。shrink コマンドは内部で wipe(ゼロフィル)と縮小を一括実行します。
Linux ゲストOSでの実行
ルート(/)を縮小する場合:
vmware-toolbox-cmd disk shrink /
/boot も縮小したい場合は別途実行します:
vmware-toolbox-cmd disk shrink /boot
実行中の表示例:
Shrinking disk...
[=====================================================] 100%
Disk shrink complete.
実行中は仮想マシンの操作が数十分間ほど制限されます(ディスク使用量が大きいほど時間がかかります)。目安として 50GB の仮想ディスクで20〜40分程度かかることがあります。
Windows ゲストOSでの実行
コマンドプロンプトを管理者権限で開き、以下を実行します:
"C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe" disk shrink C:\
管理者権限が必須です。 通常のコマンドプロンプトでは権限エラーが発生します。スタートメニューからコマンドプロンプトを右クリック →「管理者として実行」を選択してください。

shrinkonly での一括縮小
すべてのディスクをまとめて縮小したい場合は shrinkonly を使います:
# Linux(すべてのマウントポイントを一括縮小)
vmware-toolbox-cmd disk shrinkonly
✅ ステップ3完了の確認: 「Disk shrink complete.」のメッセージが表示されれば成功です。
ステップ4: 縮小結果を確認する
disk shrink が完了したら、ホストOS側で .vmdk ファイルのサイズを確認します。
# ホストOS(Linux/macOS)で仮想マシンフォルダのサイズを確認
du -sh ~/VMs/MyVM/
ls -lh ~/VMs/MyVM/*.vmdk
Windows ホストの場合は、エクスプローラーで仮想マシンフォルダを開き、.vmdk ファイルのプロパティからサイズを確認します。
VMware Workstation GUI からの確認・操作
VMware Workstation Pro / Fusion を使っている場合は、GUIからもディスク縮小を実行できます:
-
仮想マシンの設定を開く
-
ハードディスク → Defragment(最適化) または Compact(縮小) を選択
ただし GUI から操作する場合、VMware Tools の disk shrink ほど細かい制御はできません。
応用編: VMware ESXi / vSphere 環境での対応
個人向けの VMware Player / Workstation だけでなく、企業の仮想化基盤である ESXi / vSphere でも同様の問題が発生します。
ESXi での仮想ディスク最適化
ESXi 環境ではゲストOS内からの vmware-toolbox-cmd に加えて、Storage vMotion や vmkfstools を使う方法もあります:
# ESXi ホストのシェルで実行(ESXi Shell を有効にして SSH 接続が必要)
vmkfstools -K /vmfs/volumes/datastore1/VM-Name/VM-Name.vmdk
-K オプション(Shrink)で仮想ディスクの未使用領域を回収します。
スナップショットが残っている場合の注意点
スナップショット(スナップショットチェーン)が存在する場合、disk shrink の効果は限定的になります。スナップショットを削除(統合)してからディスク縮小を行うことで、最大の効果が得られます。
# GUIメニュー: 仮想マシン → スナップショット → スナップショットマネージャー
トラブルシュート
|
症状
| 原因
| 解決策
|
| command not found: vmware-toolbox-cmd
| VMware Tools が未インストール
| VMware メニューから VMware Tools をインストール
|
| Shrink disk is disabled
| ディスクのスナップショットが存在する
| スナップショットをすべて削除してから再実行
|
| This operation is not supported
| Thick Provisioned ディスクを使用中
| シンプロビジョニングへの変換が必要(vmkfstools -i で変換)
|
| コマンド実行後にサイズが変わらない
| ホストOS側での仮想ディスク再配置が必要
| VMware を再起動するか、VMware Workstation の「ディスクを最適化」を実行
|
| Windows で権限エラー
| 管理者権限なしで実行している
| コマンドプロンプトを「管理者として実行」で開く
|
まとめ
VMwareゲストOSの仮想ディスク肥大化を解消する手順をまとめます。
-
原因: ファイル削除ではディスクの実データ領域は解放されず、
.vmdkファイルは自動で縮小されない -
ステップ1: ゲストOS内の不要ファイル・キャッシュ・ログを削除して空き容量を確保する
-
ステップ2:
vmware-toolbox-cmd disk listで対象を確認する -
ステップ3:
vmware-toolbox-cmd disk shrink /(Linux)またはVMwareToolboxCmd.exe disk shrink C:\(Windows)を実行する -
ステップ4: ホストOS側で
.vmdkファイルサイズを確認する
定期的に(3〜6か月に1回程度)disk shrink を実行することで、ホストOSのストレージを効率的に活用できます。特に SSD を使用しているホスト環境では、仮想ディスクの肥大化がホストOS全体のパフォーマンスに影響するため、こまめなメンテナンスをおすすめします。


