У меня есть виртуальная машина Virtualbox с расширением .vdi, которая занимает 49 ГБ на хост-машине.
Возможно, когда-то я использовал столько места внутри виртуальной машины, но сейчас я использую только около 6 ГБ.
Я попробовал эту команду для virtualbox:
vboxmanage modifyhd /path/to/disk.vdi --compact
Он начал работать на 0%..10%.....100%. Но на самом деле ничего не произошло, .vdi все еще был 49 ГБ.
Затем я запустил «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
Я не знаю, почему там используется 38 ГБ.
Я очистил Корзину, но это не помогло.
Есть идеи, что еще я могу сделать?
На виртуальной машине установлена Ubuntu 12 с зашифрованным LVM и home (это каталог .Private). На хосте установлена Windows 7.
ОБНОВЛЯТЬ
Мне удалось освободить место для /dev/sda1, но не для /dev/mapper/mypc-root. Zerofree начинается и никогда не заканчивается, хотя я могу сказать, что диск перестал писать, потому что он перестает издавать звуки через минуту.
Вот вывод для '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 используйте утилиту,zerofree
которая поддерживает файловые системы ext2/ext3.
решение2
С уважением коригинальный ответ, который имел это решение:
В ВМ:
dd if=/dev/zero of=test.file
sync
rm test.file
На хост-компьютере:
VBoxManage modifyhd --compact your_image_path.vdi
Это единственное решение, которое я пробовал и которое работает. zerofree
И sfill
(из secure-delete
) не работают на моей виртуальной машине Debian (хост Windows 10).
решение3
Я думаю, что суть вашей проблемы в том, что ваша корневая файловая система ( /
) имеет размер 2 ТБ. При такой большой файловой системе относительно небольшие накладные расходы (иноды и т. п.) все равно остаются довольно большими (>32 ГБ, в вашем случае).
Если вы хотите уменьшить размер виртуального диска, сначала вам необходимо уменьшить размер корневой файловой системы.