qemu-img — манипуляции с образами дисков виртуальных машин (создание, конвертация)

Written by on . Posted in KVM

В этой статье описана краткая информация как пользоваться утилитой qemu-img для создания дисков и как сделать конвертацию из одного формата в другой.
qemu-img работает со следующими форматами: raw, qcow2, qcow, cow, vmdk, cloop, vpc (vhd)

Использование:

qemu-img command [command options]

Для манипуляции с образами используются следующие команды:

  • create — создание нового образа диска
  • check — проверка образа диска на ошибки
  • convert — конвертация существующего образа диска в другой формат
  • info — получение информации о существующем образе диска
  • snapshot — управляет снимками состояний (snapshot) существующих образов дисков
  • commit — записывает произведенные изменения на существующий образ диска
  • rebase — создает новый базовый образ на основании существующего

список не весь, все параметры см. man qemu-img

Как создать новый образ диска в формате qcow2

создадим образ диска размером 100 Gb в формате qcow2

root@v4:/virt# qemu-img create -f qcow2 asterisk_hd.qcow2 100G
Formatting 'asterisk_hd.qcow2', fmt=qcow2 size=107374182400 encryption=off cluster_size=65536 lazy_refcounts=off 

Как посмотреть информацию о образе диска

root@v4:/virt# qemu-img info asterisk_hd.qcow2 
image: asterisk_hd.qcow2
file format: qcow2
virtual size: 100G (107374182400 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

Как конвертировать образ диска из формата raw в qcow2

root@v4:/virt# qemu-img convert -f raw -O qcow2 disk_hd.img disk_hd.qcow2

Как смонтировать образ диска

Важное замечание! ни в коем случае не монтируете диск запущенной виртуалке, данные будут потеряны.
Иногда может понадобится смонтировать образ диска в системе не загружая виртуальную машину.
Делается это так, для формата raw:

modprobe nbd max_part=63
qemu-nbd -c /dev/nbd0 название_образа.img
partprobe /dev/nbd0
перед монтированием можно посмотреть разделы на диске sudo fdisk -l /dev/nbd0
mount /dev/nbd0p1 /mnt/qemu

С диском в формате qcow2 при монтировании просит указать тип fs

mount -t ext4 /dev/nbd0p1 /mnt/qemu

По завершению работы с диском отключаем

sudo umount /mnt/qemu
sudo qemu-nbd -d /dev/nbd0

Создание snapshot

Перед созданием snapshot необходимо выключить виртуальную машину.

Один из способов создания снапшотов qemu-img — это перенаправление записи в новый образ, а старый образ диска используется для чтения. Для создания ного snapshot образа из существующего original.qcow2 используйте флаг -b создание резервной копии (backing_file).

qemu-img create -f qcow2 -b original.qcow2 snapshot.qcow2

следующим шагом редактируем xml файл через virsh edit нужной виртуальной машины и указываем новый (созданный) образ диска snapshot.qcow2

virsh edit VMname

было:

<disk type='file' device='disk'><driver name='qemu' type='qcow2'/>
<source file='/cxd/virt/original.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

стало:

<disk type='file' device='disk'><driver name='qemu' type='qcow2'/>
<source file='/cxd/virt/snapshot.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

После этого можно запускать виртуальную машину.
В результате данных манипуляций у нас есть теперь 2 образа один для чтения и меняться не будет, а второй для записи, т.е. все манипуляции и изменения данных будут отражены на втором образе snapshot.qcow2.

Если возникла необходимость перенести данные с snapshot на основной диск, сделать это можно так:

qemu-img commit filename

в качестве filename нужно указать наш snapshot.qcow2.
Еще раз повторюсь, все манипуляции с образами дисков необходимо делать при выключенной ВМ, иначе можно потерять все данные.
Информация с сайта http://wiki.qemu-project.org/Documentation/CreateSnapshot

Leave a comment