回答:
動的に成長するVirtual Box仮想ハードドライブファイルは、このファイルのセットアップで定義した最大サイズまで、仮想マシンの要求に応じて成長できます。ただし、ゲストOSで削除したファイルのスペースは解放されません。
ディスクが大きくなりすぎた場合は、未使用のスペースがゼロで埋められていて、ドライブがVDI形式である限り、再度圧縮できます。
ext2からext 4のファイルシステムの場合、これはコマンドラインユーティリティzerofree *を使用してUbuntuゲストから実行できます。
zerofree /dev/sdxX
これには、ドライブが使用されておらず、マウント解除されている必要があります。したがって、この目的のために作成した別のVMに一時的にバインドするか、このVMでUbuntuライブ環境を起動する必要があります。
問題/dev/sdxX
のext2、ext3、またはext4形式のパーティションに置き換えます。
複数のパーティションで、zerofree
パーティションごとに繰り返す必要があります。ゼロで埋めることにより、仮想ファイルが一時的に最大サイズまで大きくなることに注意してください。
すべての未使用ドライブ領域がゼロで満たされると、ドライブを次のように縮小します
VBoxManage modifyhd <name>.vdi --compact
これにより、VDIファイルのファイルサイズが大幅に減少します。
* Windowsゲストでは、ユーティリティで未使用のスペースを置き換えることができますsdelete
。
ecryptfs
場合、暗号化されたファイルはディスクユーティリティでは通常のファイルのように見え、これは機能します。フルディスク暗号化を使用している場合、いずれにしてもextフォーマットのパーティションとして認識されません:)
mount -n -o remount,ro -t ext4 /dev/sda1
、その後zerofree -v /dev/sda1
。
空きディスク容量をゼロにするためのいくつかの代替方法を次に示します(これは最も時間がかかる部分です)。その後、VBoxManage modifyhd <disk> --compact
実際のディスクファイルを圧縮するために実行する必要があります。
apt-get install zerofree
zerofree -v /dev/sdxN
dd if=/dev/zero of=temp-file-on-disk bs=20M
# run this to get the process ID of the dd command
pgrep -l '^dd$'
# then put the process ID on the command line to "kill -USR1"
# this will tell dd to print the current status (in another terminal)
kill -USR1 $(pgrep -l '^dd$' | awk '{print $1}')
dd
定期的に出力を自動的に印刷するようなプログラムです。
apt-get install dcfldd
dcfldd if=/dev/zero of=temp-file-on-disk bs=20M
zerofree
マウントされたファイルシステムで使用されているのを見たことがありますが、読み取り専用でマウントされたときです。ルートFSの場合でも:sudo mount -o remount,ro /
-しかし、GUIセッションではルートはビジーになるため、失敗します。ただし、ランレベル1(telinit 1
)では可能です。そのため、ライブCDから起動する必要はありません。