.\" Automatically generated by Podwrapper::Man 1.40.2 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
. if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{\
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\" ========================================================================
.\"
.IX Title "virt-v2v-input-xen 1"
.TH virt-v2v-input-xen 1 "2019-02-07" "libguestfs-1.40.2" "Virtualization Support"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
virt\-v2v\-input\-xen \- Using virt\-v2v to convert guests from Xen
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 2
\& export LIBGUESTFS_BACKEND=direct
\& virt\-v2v \-ic \*(Aqxen+ssh://root@xen.example.com\*(Aq GUEST_NAME [\-o* options]
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
This page documents how to use \fBvirt\-v2v\fR\|(1) to convert guests from
\&\s-1RHEL 5\s0 Xen, or \s-1SLES\s0 and OpenSUSE Xen hosts.
.SH "INPUT FROM XEN"
.IX Header "INPUT FROM XEN"
.SS "Set up ssh-agent access to Xen host"
.IX Subsection "Set up ssh-agent access to Xen host"
Currently you must enable passwordless \s-1SSH\s0 access to the remote Xen host
from the virt\-v2v conversion server.
.PP
You must also use ssh-agent, and add your ssh public key to
\&\fI/root/.ssh/authorized_keys\fR (on the Xen host).
.PP
After doing this, you should check that passwordless access works
from the virt\-v2v server to the Xen host. For example:
.PP
.Vb 2
\& $ ssh root@xen.example.com
\& [ logs straight into the shell, no password is requested ]
.Ve
.PP
Note that password-interactive and Kerberos access are \fBnot\fR
supported. You \fBhave\fR to set up ssh access using ssh-agent and
authorized_keys.
.PP
With some modern ssh implementations, legacy crypto policies required
to interoperate with \s-1RHEL 5\s0 sshd are disabled. To enable them you may
need to run this command on the conversion server (ie. ssh client),
but read \fBupdate\-crypto\-policies\fR\|(8) first:
.PP
.Vb 1
\& # update\-crypto\-policies LEGACY
.Ve
.SS "Test libvirt connection to remote Xen host"
.IX Subsection "Test libvirt connection to remote Xen host"
Use the \fBvirsh\fR\|(1) command to list the guests on the remote Xen host:
.PP
.Vb 5
\& $ virsh \-c xen+ssh://root@xen.example.com list \-\-all
\& Id Name State
\& \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
\& 0 Domain\-0 running
\& \- rhel49\-x86_64\-pv shut off
.Ve
.PP
You should also try dumping the metadata from any guest on your
server, like this:
.PP
.Vb 5
\& $ virsh \-c xen+ssh://root@xen.example.com dumpxml rhel49\-x86_64\-pv
\&
\& rhel49\-x86_64\-pv
\& [...]
\&
.Ve
.PP
\&\fBIf the above commands do not work, then virt\-v2v is not going to
work either\fR. Fix your libvirt configuration or the remote server
before continuing.
.PP
\&\fBIf the guest disks are located on a host block device\fR, then the
conversion will fail. See \*(L"Xen or ssh conversions from block devices\*(R"
below for a workaround.
.SS "Importing a guest"
.IX Subsection "Importing a guest"
To import a particular guest from a Xen server, do:
.PP
.Vb 4
\& $ LIBGUESTFS_BACKEND=direct \e
\& virt\-v2v \-ic \*(Aqxen+ssh://root@xen.example.com\*(Aq \e
\& rhel49\-x86_64\-pv \e
\& \-o local \-os /var/tmp
.Ve
.PP
where \f(CW\*(C`rhel49\-x86_64\-pv\*(C'\fR is the name of the guest (which must be shut
down).
.PP
In this case the output flags are set to write the converted guest to
a temporary directory as this is just an example, but you can also
write to libvirt or any other supported target.
.PP
Setting the backend to \f(CW\*(C`direct\*(C'\fR is a temporary
workaround until
libvirt bug 1140166 is fixed.
.SS "Xen or ssh conversions from block devices"
.IX Subsection "Xen or ssh conversions from block devices"
Currently virt\-v2v cannot directly access a Xen guest (or any guest
located remotely over ssh) if that guest’s disks are located on host
block devices.
.PP
To tell if a Xen guest uses host block devices, look at the guest \s-1XML.\s0
You will see:
.PP
.Vb 3
\&
\& ...
\&