virt-v2v-output-local1
Using virt-v2v to convert guests to local files or libvirt
Usage
virt-v2v [-i*
options]
[-o
libvirt]
-os
POOL
virt-v2v [-i*
options]
-o
local
-os
DIRECTORY
virt-v2v [-i*
options]
-o
qemu
-os
DIRECTORY
[--qemu-boot]
virt-v2v [-i*
options]
-o
null
Overview
This page documents how to use virt-v2v(1) to convert guests to local files or to a locally running libvirt instance. There are four output modes you can select on the virt-v2v command line:
-
-o libvirt -os "POOL"
-
-os "POOL" -
This converts the guest to a libvirt directory pool call
"POOL", and instantiates the guest in libvirt (but does not start it running). See "OUTPUT TO LIBVIRT" below.-o libvirt is the default if no -o option is given, so you can omit it.
-
-o local -os "DIRECTORY" -
This converts the guest to files in
"DIRECTORY". A libvirt XML file is also created, but unlike -o libvirt the guest is not instantiated in libvirt, only files are created.The files will be called:
NAME-sda, NAME-sdb, etc. Guest disk(s).NAME.xml Libvirt XML.where
"NAME"is the guest name.
-
-o qemu -os "DIRECTORY"
-
-o qemu -os "DIRECTORY" --qemu-boot -
This converts the guest to files in
"DIRECTORY". Unlike -o local above, a shell script is created which contains the raw qemu command you would need to boot the guest. However the shell script is not run, unless you also add the --qemu-boot option.
-
-o null -
The guest is converted, but the final result is thrown away and no metadata is created. This is mainly useful for testing.
Output to libvirt
The -o libvirt option lets you upload the converted guest to a libvirt-managed host. There are several limitations:
- •
-
You can only use a local libvirt connection [see below for how to workaround this].
- •
-
The -os pool option must specify a directory pool, not anything more exotic such as iSCSI [but see below].
- •
-
You can only upload to a KVM hypervisor.
Workaround for output to a remote libvirt instance and/or a non-directory storage pool
- 1.
-
Use virt-v2v in -o local mode to convert the guest disks and metadata into a local temporary directory:
virt-v2v [...] -o local -os /var/tmpThis creates two (or more) files in /var/tmp called:
/var/tmp/NAME.xml # the libvirt XML (metadata)/var/tmp/NAME-sda # the guest’s first disk(for
"NAME"substitute the guest’s name).
- 2.
-
Upload the converted disk(s) into the storage pool called
"POOL":size=$(stat -c%s /var/tmp/NAME-sda)virsh vol-create-as POOL NAME-sda $size --format rawvirsh vol-upload --pool POOL NAME-sda /var/tmp/NAME-sda
- 3.
-
Edit /var/tmp/NAME.xml to change /var/tmp/NAME-sda to the pool name. In other words, locate the following bit of XML:
<disk type='file' device='disk'><driver name='qemu' type='raw' /><source file='/var/tmp/NAME-sda' /><target dev='hda' bus='ide' /></disk>and change two things: The
"type='file'"attribute must be changed to"type='volume'", and the"<source>"element must be changed to include"pool"and"volume"attributes:<disk type='volume' device='disk'>...<source pool='POOL' volume='NAME-sda' />...</disk>
- 4.
-
Define the final guest in libvirt:
virsh define /var/tmp/NAME.xml
Releases
3 releases since Debian 10 (Buster); the text changed 2 times.