私は Virtualbox VM を持っており、ホスト マシンで 49 GB を占有する .vdi を持っています。
かつては VM 内でこれだけのスペースを使用したことがあるかもしれませんが、現在実際に使用しているのは 6 GB 程度だけです。
VirtualBox でこのコマンドを試しました:
vboxmanage modifyhd /path/to/disk.vdi --compact
動作し始めたのは 0%、10%、100% でした。しかし、実際には何も起こらず、.vdi はまだ 49 GB でした。
次に、VM で「df -h」を実行すると、次の結果が見つかりました。
root@mypc# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/mypc-root 2.0T 38G 1.9T 2% /
udev 1.3G 4.0K 1.3G 1% /dev
tmpfs 502M 784K 501M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.3G 160K 1.3G 1% /run/shm
/dev/sda1 228M 31M 185M 15% /boot
/home/someuser/.Private 2.0T 38G 1.9T 2% /home/someuser
なぜそこに 38GB が使われているのか分かりません。
ゴミ箱を掃除しましたが、効果はありませんでした。
他に何ができるか、何かアイデアはありますか?
VM には、暗号化された LVM とホーム (.Private ディレクトリ) を備えた Ubuntu 12 があります。ホストには Windows 7 があります。
アップデート
/dev/sda1 の領域を解放できましたが、/dev/mapper/mypc-root の領域は解放できませんでした。Zerofree が開始されて終了することはありませんが、1 分後にノイズがなくなるため、ディスクの書き込みが停止したことはわかります。
'df -ih'の出力は次のとおりです。
root@mypc:/home/someuser# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/mypc-root 128M 208K 128M 1% /
udev 311K 495 310K 1% /dev
tmpfs 314K 428 314K 1% /run
none 314K 4 314K 1% /run/lock
none 314K 7 314K 1% /run/shm
/dev/sda1 122K 230 122K 1% /boot
/home/someuser/.Private 128M 208K 128M 1% /home/someuser
答え1
からマニュアル:
この操作を有効にするには、まず適切なソフトウェア ツールを使用してゲスト システムの空き領域をゼロにする必要があります。Windows ゲストの場合は、
sdelete
Microsoft が提供するツールを使用できます。仮想ディスク イメージを圧縮する前に、ゲストで実行してsdelete -c
空きディスク領域をゼロにします。Linux の場合は、ext2/ext3 ファイルシステムをサポートするユーティリティを使用しますzerofree
。
答え2
への敬意を持ってこの解決策があった元の回答:
VM 内:
dd if=/dev/zero of=test.file
sync
rm test.file
ホストマシン上:
VBoxManage modifyhd --compact your_image_path.vdi
これは私が試した中で唯一機能する解決策です。 およびzerofree
(sfill
からsecure-delete
) は私の Debian VM (Windows 10 ホスト) では機能しません。
答え3
問題の核心は、ルート ファイルシステム ( /
) のサイズが 2TB であることだと思います。そのくらい大きなファイルシステムでは、比較的小さなオーバーヘッド (i ノードなど) でも、それでもかなり大きくなります (あなたの場合は 32GB 超)。
仮想ディスクを縮小したい場合は、まずルートファイルシステムを縮小する必要があります。