概要
VirtualBoxでDBの再作成を繰り返していたら仮想ディスクのwindows上のサイズが大きくなりすぎたため未使用領域を解放したときのメモです。
約50GB->14GBまで戻りました。
VBoxManage.exeの説明によれば 未使用領域を 0埋め後 「VBoxManage.exe modifymedium uuid --compact」で未使用領域が解放されるとなっています。(参考)
環境
「windows10」の「VirtualBox 6.1」で「almalinux」を実行しています。
手順
- linuxの空き領域をzero埋めし、
- linuxのshutdoun後
- windows上より modifymedium --compact で未使用領域を解放します。
解放前の状態
- windowsのディスク容量
c:\>dir
2022/09/02 18:55 51,350,863,872 vbox.vdi
- linuxのディスク容量
> df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 2.0G 16K 2.0G 1% /dev/shm
tmpfs 2.0G 8.6M 1.9G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/almalinux-root 47G 14G 34G 29% /
/dev/sda1 1014M 282M 733M 28% /boot
share 238G 222G 16G 94% /mnt/share
tmpfs 390M 0 390M 0% /run/user/0
実ディスク容量は約50G、linux上の使用領域は14G
実際の作業
-
linuxの空き領域をzero埋めし、
>dd if=/dev/zero of=zero bs=4k >rm zero
-
linuxのshutdoun後
対象のVMを停止する。 -
windows上より modifymedium --compact で未使用領域を解放します。
- VBoxManage.exe" list hdds にて対象ディスクのUUIDを確認する(今回の場合は 80c51a57・・・・)
C:\>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list hdds
UUID: 80c51a57-d8b0-4be8-b551-a8451902b2b9
Parent UUID: base
State: created
Type: normal (base)
Location: C:\vbox\vdisk\vbox.vdi
Storage format: VDI
Capacity: 204800 MBytes
Encryption: disabled
- modifymedium --compactを実行しディスクを解放します
C:\>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifymedium 80c51a57-d8b0-4be8-b551-a8451902b2b9 --compact
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
解放後の状態
- windowsのディスク容量
C:\>dir
2022/09/02 19:50 15,730,737,152 vbox.vdi
- linuxのディスク容量
> df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 2.0G 16K 2.0G 1% /dev/shm
tmpfs 2.0G 8.6M 1.9G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/almalinux-root 47G 14G 34G 29% /
/dev/sda1 1014M 282M 733M 28% /boot
share 238G 222G 16G 94% /mnt/share
tmpfs 390M 0 390M 0% /run/user/0
結果
windows上のディスクを約35GB解放しました。
参考
VirtualBox - 仮想ディスクを圧縮する
VirtualBox公式ドキュメント VBoxManage modifymedium --compact