qemu-img convert source_not_compressed_qcow2.img -O qcow2 -c target_compressed_qcow2.img
Пример
qemu-img convert /home/vm/nfsshare-vmmanager.qcow2 -O qcow2 -c /home/vm/nfsshare-vmmanager_compress.qcow2
Для сжатия образа диска формата qcow2
в среде QEMU-KVM используется команда qemu-img
. Она позволяет уменьшить размер файла виртуального жесткого диска путем удаления неиспользуемых блоков памяти.
Шаги по компрессии образа
- Убедитесь, что виртуальная машина выключена. Если образ диска используется запущенной виртуальной машиной, процесс сжатия завершится неудачей.
- Используйте команду
qemu-img convert
, чтобы создать сжатый образ:sudo qemu-img convert -O qcow2 -c source.qcow2 destination.qcow2Где:source.qcow2
: исходный файл образа диска,destination.qcow2
: новый сжатый файл образа диска.
Флаг
-c
включает компрессию образа. - После завершения процесса проверяйте размеры файлов командой:ls -lh *.qcow2
Дополнительная оптимизация
Чтобы дополнительно освободить пространство внутри виртуальных машин перед сжатием, выполните следующие шаги:
- Запустите виртуальную машину и очистите ненужные файлы.
- Затем используйте утилиту
zerofree
илиdd if=/dev/zero of=zerofile bs=1M count=$((disk_size)) && sync && rm zerofile
, чтобы заполнить свободные блоки нулями. Это упростит дальнейшую компрессию.
Таким образом, команды будут выглядеть следующим образом:# Очистка образов вручнуюsudo apt install zerofree # установка инструмента для очистки свободных секторовsudo zerofree /dev/vda1 # замените vda1 на ваш диск# Альтернативный методdd if=/dev/zero of=/tmp/fill bs=1M || truesyncrm /tmp/fill
Затем повторите процедуру сжатия (qemu-img convert
) снова.
Итоги
Процесс состоит из двух этапов:
- Подготовьте виртуальную машину, заполнив её пустые области нулями.
- Выполните преобразование образа с использованием опции сжатия (
-c
), что позволит значительно уменьшить итоговый размер файла.