VirtualBoxを使っていて、 ゲストOS上で10GBしか使っていないのに、ホストOS上で80GBも占有しているみたいな時があります

vdi仮想ディスクを可変ストレージにすると、 一度ゲストOS側で使用した領域は確保されたままになり、ゲストOS側でファイルを削除しても、ホストOS側では占有されたままになります

これを対処する方法のメモです

試した環境

  • ゲストOS: Debian 10 Buster
  • ホストOS: Windows 10

ゲストOS: 未使用領域にゼロを書き込み

1
2
3
4
5
6
7
8
// ゲストOSにログイン
$ vagrant.exe ssh

// 未使用領域にゼロを書き込み
$ sudo dd if=/dev/zero of=zero bs=4k;sudo rm zero

// シャットダウンする
$ sudo init 0

ホストOS: 最適化する

コマンドプロンプト起動

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// VBoxManage.exeのある場所へ移動
C:\> cd "C:\Program Files\Oracle\VirtualBox"

// ディスクの[UUID]を確認する
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe list hdds
UUID: 1f837eb9-9ff2-4ab2-bfde-d0c3c86b6332
Parent UUID: base
State: locked write
Type: normal (base)
Location: C:\Users\username\VirtualBox VMs\host_1568214268601_14913\box-disk001.vdi
Storage format: VDI
Capacity: 204800 MBytes
Encryption: disabled

// UUIDを指定して最適化する(※容量次第ですがそこそこ時間食います)
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe modifyhd 1f837eb9-9ff2-4ab2-bfde-d0c3c86b6332 --compact