[Vagrant & VirtualBox] VirtualBox のディスクサイズを縮小する
肥大化した仮想ハードディスクを縮小します。
以下のバージョンで確認しています。
% vagrant version
Installed Version: 2.2.5
Latest Version: 2.2.5
You're running an up-to-date version of Vagrant!
% VirtualBox --help
Oracle VM VirtualBox VM Selector v6.0.10
(C) 2005-2019 Oracle Corporation
All rights reserved.
No special options.
If you are looking for --startvm and related options, you need to use VirtualBoxVM.
ディスクの縮小
vagrant up
でゲスト OS を起動します。
ゼロ書き込みが完了した後、ホスト OS に戻ります。
% vagrant up
% vagrant ssh
$ dd if=/dev/zero of=zero bs=1M; \rm zero
dd: error writing 'zero': No space left on device
57607+0 records in
57606+0 records out
60404719616 bytes (60 GB, 56 GiB) copied, 775.581 s, 77.9 MB/s
$ exit
ホスト OS でディスクの Location を確認します。
% VBoxManage list hdds
UUID: b59506c6-1152-4d68-a267-133f3b31cdd5
Parent UUID: base
State: locked write
Type: normal (base)
Location: /Volumes/WDHD/VirtualBox_VMs/deadwood2/box-disk001.vmdk
Storage format: VMDK
Capacity: 65536 MBytes
Encryption: disabled
VMDK フォーマットは縮小ができないため .vmdk
から .vdi
のクローンを作成します。
VM を停止した後に実行します。
% vagrant halt
% VBoxManage clonehd /Volumes/WDHD/VirtualBox_VMs/deadwood2/box-disk001.vmdk /Volumes/WDHD/VirtualBox_VMs/deadwood2/box-disk001.vdi --format vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'vdi'. UUID: b3a4b065-2357-4ed5-b3fa-320515852db8
変換したディスクの UUID を指定してサイズを縮小します。
% VBoxManage modifyhd b3a4b065-2357-4ed5-b3fa-320515852db8 --compact
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
ディスクの入れ替え
VirtualBox の 仮想メディアマネージャーを開き、右クリックから変換前のディスクを「解放」して下さい。
後述の全ての確認が終わり不要になったら同じ手順で「除去」します。
マネージャーに戻り、対応する VM の設定を開きます。
ストレージが未指定となっています。
利用していたコントローラーを選択して変換した仮想ディスクを追加します。
以上で終了です。