CentOSをvirtualboxにインストールしました(ホストOSはWindows 7です)。VDIファイル(動的に割り当てられたイメージ)であるディスクイメージファイルを作成しました。最近、CentOSで巨大なファイルを削除しても、ディスク上のVDIファイルが減少しません。なんで?この問題に取り組む方法は?
2 に答える
VM 内のファイルを削除しても、VirtualBox は (ホスト上の) ディスク容量を自動的に再利用しません。ディスク イメージを縮小するには、次の手順を実行する必要があります。
まず、すべての空き領域 (HDD 上のすべてのパーティションと論理ボリューム) をゼロにしてから、VM をオフにします。
cat /dev/zero > z;sync;sleep 3;sync;rm -f z
次に、次のコマンドを使用して VDI を圧縮します。
VBoxManage modifyhd /path/to/image.vdi --compact
--compact オプションを使用すると、ディスク イメージをコンパクト化できます。つまり、ゼロのみを含むブロックを削除できます。これにより、動的に割り当てられた画像が再び縮小されます。仮想ディスクの論理サイズに影響を与えることなく、イメージの物理サイズを縮小します。圧縮は、基本イメージと、スナップショットの一部として作成された差分イメージの両方で機能します。
ところで:VMWare(.vmdk)の場合vmware-vdiskmanager -k xxx.vmdk
、同じことを行うために使用する必要があります。
ホストは、VM に提供されたどのセクターが VM によって使用され、どのセクターが空いているかをどのように知ることができますか?
それが知っている唯一のことは、VM がディスク ファイルでまだ割り当てられていないセクターを要求したとき (それを増やしたとき) です。
おそらく、「最適化」または同様の手順により、ディスクの使用を十分に再編成できるため、ホストに手動でスペースを削減するように指示できます。ただし、これまでのところ、その機能を提供する VM ホストを知りません (そして、それを使用することは常に非常に危険です)。
最も簡単な方法は、VM を新しい VM に複製することです。