4

У меня есть 64-битная виртуальная машина Ubuntu, которую я извлек из ova-файла ~ 1 ГБ, я использовал ее в VMware vSphere, чтобы установить на нее еще какое-то программное обеспечение и использовать систему против нескольких наборов данных, занимающих 2-3 ГБ, но сейчас что я удалил эти большие файлы, я ожидал, что вновь сгенерированный файл ova из него также займет около ~ 1,1 ГБ места, но вместо этого займет около 3 ГБ. Если я посмотрю детали файла .vmdk в virtualbox, я увижу следующее:

Hart Disk: SATA Port 0
Type (Format): Normal (VMDK)
Virtual Size: 8.00 GB
Actual Size:  7.90 GB
Details: Dynamically allocated storage
Location: /somewhere/myVM-disk1.vmdk
Attached To: myVM.virtualbox

Размер яйцеклетки при экспорте этой машины составляет ~ 3 ГБ.

Любые идеи, как я могу уменьшить это?

2 ответа2

8

См. Статью Как сжать динамически расширяющийся образ гостевой виртуальной коробки.

Он описывает, как сжать диск с помощью:

  1. Обнулить свободное пространство, используя ZeroFree для Ubuntu
  2. Сожмите ВМ используя
    VBoxManage modifyhd my.vdi –compact
4

Пространство в .vmdk выделяется, когда ОС выполняет первую запись в конкретный сектор. После того, как написано, оно выделяется навсегда.

Итак, вам нужно добавить второй виртуальный жесткий диск динамического размера на вашу виртуальную машину, затем загрузить виртуальную машину с LiveCD, создать разделы с помощью fdisk и скопировать все файлы (cp -R). Затем выключите виртуальную машину, замените виртуальные жесткие диски, загрузитесь снова и убедитесь, что все работает, затем отсоедините оригинальный виртуальный жесткий диск от виртуальной машины и удалите его в виде файла на диске хост-системы.

Прямое копирование с помощью dd в VM не будет работать, потому что каждый сектор будет записан в целевой файл .vmdk, поэтому он будет расширяться до полного размера, а не сжиматься.

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