5

У меня есть виртуальная машина Virtualbox, с .vdi, который занимает 49 ГБ на хост-машине.

Возможно, я однажды использовал столько места внутри виртуальной машины, но сейчас я использую только около 6 ГБ.

Я попробовал эту команду для virtualbox:

vboxmanage modifyhd /path/to/disk.vdi --compact

Это начало работать 0% .. 10% ..... 100%. Но на самом деле ничего не произошло, .vdi все еще был 49gb.

Затем я запустил '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 и дома (это.Частный реж). На хосте установлена 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

3 ответа3

8

Из руководства:

Чтобы эта операция была эффективной, необходимо сначала обнулить свободное место в гостевой системе, используя подходящий программный инструмент. Для гостей Windows вы можете использовать инструмент sdelete , предоставленный Microsoft. Выполните sdelete -c в гостевой системе, чтобы обнулить свободное дисковое пространство перед сжатием образа виртуального диска. Для Linux используйте утилиту zerofree которая поддерживает файловые системы ext2/ext3.

1

Что касается исходного ответа, который имел это решение:

В ВМ:

  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 (хост Windows 10).

0

Я думаю, что суть вашей проблемы в том, что ваша корневая файловая система (/) имеет размер 2 ТБ. При такой большой файловой системе сравнительно небольшие издержки (иноды и т.д.) Все еще довольно велики (в вашем случае> 32 ГБ).

Если вы хотите сжать ваш виртуальный диск, вам сначала нужно сжать корневую файловую систему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .