---
name: "virt-v2v-output-local"
section: "1"
platform: "linux"
package: "virt-v2v"
version: "2.6.0-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/virt-v2v-output-local"
---

# virt-v2v-output-local(1)

Using virt-v2v to convert guests to local files or libvirt

## NAME

virt-v2v-output-local - Using virt-v2v to convert guests to local files or libvirt

## SYNOPSIS

```
 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
```

## DESCRIPTION

This page documents how to use [**virt-v2v**(1)](/virt-v2v/1.md) 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/tmp
  ```

  This 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 raw
   virsh 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
  ```

## SEE ALSO

[**virt-v2v**(1)](/virt-v2v/1.md).

## AUTHOR

Richard W.M. Jones

## COPYRIGHT

Copyright (C) 2009-2020 Red Hat Inc.

## LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

## BUGS

To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter\_bug.cgi?component=libguestfs&product=Virtualization+Tools

When reporting a bug, please supply:

- •

  The version of libguestfs.

- •

  Where you got libguestfs (eg. which Linux distro, compiled from source, etc)

- •

  Describe the bug accurately and give a way to reproduce it.

- •

  Run [**libguestfs-test-tool**(1)](/libguestfs-test-tool/1.md) and paste the **complete, unedited** output into the bug report.
