VM サイズを縮小するにはどうすればいいですか?

VM サイズを縮小するにはどうすればいいですか?

私は 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 ゲストの場合は、sdeleteMicrosoft が提供するツールを使用できます。仮想ディスク イメージを圧縮する前に、ゲストで実行してsdelete -c空きディスク領域をゼロにします。Linux の場合は、ext2/ext3 ファイルシステムをサポートするユーティリティを使用しますzerofree

答え2

への敬意を持ってこの解決策があった元の回答:

VM 内:

  1. dd if=/dev/zero of=test.file
  2. sync
  3. rm test.file

ホストマシン上:

  1. VBoxManage modifyhd --compact your_image_path.vdi

これは私が試した中で唯一機能する解決策です。 およびzerofree(sfillからsecure-delete) は私の Debian VM (Windows 10 ホスト) では機能しません。

答え3

問題の核心は、ルート ファイルシステム ( /) のサイズが 2TB であることだと思います。そのくらい大きなファイルシステムでは、比較的小さなオーバーヘッド (i ノードなど) でも、それでもかなり大きくなります (あなたの場合は 32GB 超)。

仮想ディスクを縮小したい場合は、まずルートファイルシステムを縮小する必要があります。

関連情報