5

CentOSをvirtualboxにインストールしました(ホストOSはWindows 7です)。VDIファイル(動的に割り当てられたイメージ)であるディスクイメージファイルを作成しました。最近、CentOSで巨大なファイルを削除しても、ディスク上のVDIファイルが減少しません。なんで?この問題に取り組む方法は?

4

2 に答える 2

6

VM 内のファイルを削除しても、VirtualBox は (ホスト上の) ディスク容量を自動的に再利用しません。ディスク イメージを縮小するには、次の手順を実行する必要があります。

まず、すべての空き領域 (HDD 上のすべてのパーティションと論理ボリューム) をゼロにしてから、VM をオフにします。

cat /dev/zero > z;sync;sleep 3;sync;rm -f z

次に、次のコマンドを使用して VDI を圧縮します。

VBoxManage modifyhd /path/to/image.vdi --compact

VBox ドキュメント

--compact オプションを使用すると、ディスク イメージをコンパクト化できます。つまり、ゼロのみを含むブロックを削除できます。これにより、動的に割り当てられた画像が再び縮小されます。仮想ディスクの論理サイズに影響を与えることなく、イメージの物理サイズを縮小します。圧縮は、基本イメージと、スナップショットの一部として作成された差分イメージの両方で機能します。

ところで:VMWare(.vmdk)の場合vmware-vdiskmanager -k xxx.vmdk、同じことを行うために使用する必要があります。

于 2013-02-17T22:48:26.800 に答える
1

ホストは、VM に提供されたどのセクターが VM によって使用され、どのセクターが空いているかをどのように知ることができますか?

それが知っている唯一のことは、VM がディスク ファイルでまだ割り当てられていないセクターを要求したとき (それを増やしたとき) です。

おそらく、「最適化」または同様の手順により、ディスクの使用を十分に再編成できるため、ホストに手動でスペースを削減するように指示できます。ただし、これまでのところ、その機能を提供する VM ホストを知りません (そして、それを使用することは常に非常に危険です)。

最も簡単な方法は、VM を新しい VM に複製することです。

于 2013-02-17T13:43:03.973 に答える