Превращаем VDI в QCOW2
Как бывший пользователь VirtualBox, я храню несколько VDI, которые мне дороги. На Linux я сейчас пользуюсь Virt-Manager, QEMU и KVM как основными инструментами для виртуализации. И, поскольку VirtualBox мне больше не нужен, я всё-же решил конвертировать VDI образы в QCOW2.
В сети можно найти много советов по такой конвертации. Но почти каждый совет почему-то использует VBoxManage для конвертации из VDI в RAW. Потом нужно использовать qemu-img для конвертации из RAW в QCOW2.
Есть нюанс. RAW не поддерживает динамическое выделение пространства. Если диск в VM мог хранить 128G, а использовано только 32G, то VDI и QCOW2 (в идеале) будут использовать всего 32G. RAW во всех случаях будет занимать 128G, а сколько было реально использовано не имеет никакого значения. В результате, для конвертации нужно больше свободного места на диске. Вот объёмы одного и того же образа в разных форматах (расширение .img отвечает за RAW формат):
$ du -h lubuntu.*
129G lubuntu.img
40G lubuntu.qcow2
42G lubuntu.vdi
Подобные советы по конвертации совсем игнорирует поддержку VDI со стороны QEMU. Хотя для QEMU есть документированная поддержка VDI. А ведь QEMU – не только интерфейс для эмуляции и запуска VM через CLI, но и другой инструментарий, включая упомянутый qemu-img для работы с образами дисков. Будь это создание, изменение или конвертация, qemu-img поддерживает VDI.
Расставим последние точки над И. Вам не нужно конвертировать VDI образ диска для перехода с VirtualBox на QEMU. Virt-Manager и CLI QEMU позволяют запускать системы с VDI образов. Никаких проблем при этом я не замечал. Вот пример простой команды для запуска моего VDI образа с Lubuntu:
$ qemu-system-x86_64 -enable-kvm -m 1G lubuntu.vdi
А для конвертации не требуется VBoxManage, нужен только qemu-img. К примеру, конвертирую старый образ Lubuntu в QCOW2:
$ qemu-img convert lubuntu.vdi -O qcow2 lubuntu.qcow2
Это всё, что требуется. Можно дополнительно проверить, что это действительно QCOW2, а не RAW:
$ qemu-img info lubuntu.qcow2
image: lubuntu.qcow2
file format: qcow2
virtual size: 128 GiB (137438953472 bytes)
disk size: 40 GiB
cluster_size: 65536
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false
И, поскольку это действительно QCOW, можно сделать проверку образа на ошибки:
$ qemu-img check lubuntu.qcow2
No errors were found on the image.
654308/2097152 = 31.20% allocated, 0.00% fragmented, 0.00% compressed clusters
Image end offset: 42895933440
Никаких дополнительных пакетов или программ, как видите, не требуется. Ну вот, теперь образы VM полноценно соответствуют линуксоидному “фэншую”.