.\" Automatically generated by Podwrapper::Man 1.44.2 (Pod::Simple 3.42) .\" .\" 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-output-local 1" .TH virt-v2v-output-local 1 "2021-11-24" "virt-v2v-1.44.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 "НАЗВА" .IX Header "НАЗВА" virt\-v2v\-output\-local \- Using virt\-v2v to convert guests to local files or libvirt .SH "КОРОТКИЙ ОПИС" .IX Header "КОРОТКИЙ ОПИС" .Vb 1 \& 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 json \-os DIRECTORY \& [\-oo json\-disks\-pattern=PATTERN] \& \& virt\-v2v [\-i* options] \-o null .Ve .SH "ОПИС" .IX Header "ОПИС" This page documents how to use \fBvirt\-v2v\fR\|(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: .ie n .IP "\fB\-o libvirt \-os\fR ""POOL""" 4 .el .IP "\fB\-o libvirt \-os\fR \f(CWPOOL\fR" 4 .IX Item "-o libvirt -os POOL" .PD 0 .ie n .IP "\fB\-os\fR ""POOL""" 4 .el .IP "\fB\-os\fR \f(CWPOOL\fR" 4 .IX Item "-os POOL" .PD This converts the guest to a libvirt directory pool call \f(CW\*(C`POOL\*(C'\fR, and instantiates the guest in libvirt (but does not start it running). See \&\*(L"\s-1OUTPUT TO LIBVIRT\*(R"\s0 below. .Sp \&\fI\-o libvirt\fR is the default if no \fI\-o\fR option is given, so you can omit it. .ie n .IP "\fB\-o local \-os\fR ""DIRECTORY""" 4 .el .IP "\fB\-o local \-os\fR \f(CWDIRECTORY\fR" 4 .IX Item "-o local -os DIRECTORY" This converts the guest to files in \f(CW\*(C`DIRECTORY\*(C'\fR. A libvirt \s-1XML\s0 file is also created, but unlike \fI\-o libvirt\fR the guest is not instantiated in libvirt, only files are created. .Sp The files will be called: .Sp .Vb 2 \& NAME\-sda, NAME\-sdb, etc. Guest disk(s). \& NAME.xml Libvirt XML. .Ve .Sp where \f(CW\*(C`NAME\*(C'\fR is the guest name. .ie n .IP "\fB\-o qemu \-os\fR ""DIRECTORY""" 4 .el .IP "\fB\-o qemu \-os\fR \f(CWDIRECTORY\fR" 4 .IX Item "-o qemu -os DIRECTORY" .PD 0 .ie n .IP "\fB\-o qemu \-os\fR ""DIRECTORY"" \fB\-\-qemu\-boot\fR" 4 .el .IP "\fB\-o qemu \-os\fR \f(CWDIRECTORY\fR \fB\-\-qemu\-boot\fR" 4 .IX Item "-o qemu -os DIRECTORY --qemu-boot" .PD This converts the guest to files in \f(CW\*(C`DIRECTORY\*(C'\fR. Unlike \fI\-o local\fR 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, \fIunless\fR you also add the \fI\-\-qemu\-boot\fR option. .ie n .IP "\fB\-o json \-os\fR ""DIRECTORY""" 4 .el .IP "\fB\-o json \-os\fR \f(CWDIRECTORY\fR" 4 .IX Item "-o json -os DIRECTORY" This converts the guest to files in \f(CW\*(C`DIRECTORY\*(C'\fR. The metadata produced is a \s-1JSON\s0 file containing the majority of the data virt\-v2v gathers during the conversion. See \*(L"\s-1OUTPUT TO JSON\*(R"\s0 below. .IP "\fB\-o null\fR" 4 .IX Item "-o null" The guest is converted, but the final result is thrown away and no metadata is created. This is mainly useful for testing. .SH "ВИВЕДЕННЯ ДО LIBVIRT" .IX Header "ВИВЕДЕННЯ ДО LIBVIRT" За допомогою параметра \fI\-o libvirt\fR ви можете вивантажувати перетворені гостьові системи на основу систему під керуванням libvirt. Існує декілька обмежень: .IP "\(bu" 4 Ви можете використовувати лише локальне з'єднання libvirt [див. нижче способи обійти це обмеження]. .IP "\(bu" 4 Параметр \fI\-os pool\fR має вказувати на буфер\-каталог, а не щось екзотичніше, наприклад iSCSI [втім, див. нижче]. .IP "\(bu" 4 Вивантаження можливе лише до гіпервізору \s-1KVM.\s0 .SS "Workaround for output to a remote libvirt instance and/or a non-directory storage pool" .IX Subsection "Workaround for output to a remote libvirt instance and/or a non-directory storage pool" .IP "1." 4 Скористайтеся virt\-v2v у режимі \fI\-o local\fR для перетворення дисків і метаданих гостьової системи до локального тимчасового каталогу: .Sp .Vb 1 \& virt\-v2v [...] \-o local \-os /var/tmp .Ve .Sp Ця команда створює два (або більше) файли у \fI/var/tmp\fR із такими назвами: .Sp .Vb 2 \& /var/tmp/НАЗВА.xml # XML libvirt (метадані) \& /var/tmp/НАЗВА\-sda # перший диск гостьової системи .Ve .Sp (замість слова \f(CW\*(C`НАЗВА\*(C'\fR має бути назва гостьової системи). .IP "2." 4 Вивантаження перетворених дисків до буфера сховища із назвою \f(CW\*(C`POOL\*(C'\fR: .Sp .Vb 3 \& size=$(stat \-c%s /var/tmp/НАЗВА\-sda) \& virsh vol\-create\-as POOL НАЗВА\-sda $size \-\-format raw \& virsh vol\-upload \-\-pool POOL НАЗВА\-sda /var/tmp/НАЗВА\-sda .Ve .IP "3." 4 Внесіть зміни до \fI/var/tmp/НАЗВА.xml\fR, щоб замінити \fI/var/tmp/НАЗВА\-sda\fR на назву буфера. Іншими словами, знайдіть такий фрагмент у \s-1XML:\s0 .Sp .Vb 5 \& \& \& \& \& .Ve .Sp і змініть дві речі: атрибут \f(CW\*(C`type=\*(Aqfile\*(Aq\*(C'\fR слід замінити на \&\f(CW\*(C`type=\*(Aqvolume\*(Aq\*(C'\fR, а елемент \f(CW\*(C`\*(C'\fR слід змінити так, щоб у ньому були атрибути \f(CW\*(C`pool\*(C'\fR і \f(CW\*(C`volume\*(C'\fR: .Sp .Vb 5 \& \& ... \& \& ... \& .Ve .IP "4." 4 Визначте остаточну гостьову систему у libvirt: .Sp .Vb 1 \& virsh define /var/tmp/NAME.xml .Ve .SH "OUTPUT TO JSON" .IX Header "OUTPUT TO JSON" The \fI\-o json\fR option produces the following files by default: .PP .Vb 2 \& NAME.json JSON metadata. \& NAME\-sda, NAME\-sdb, etc. Guest disk(s). .Ve .PP where \f(CW\*(C`NAME\*(C'\fR is the guest name. .PP It is possible to change the pattern of the disks using the \fI\-oo json\-disks\-pattern=...\fR option: it allows parameters in form of \f(CW\*(C`%{...}\*(C'\fR variables, for example: .PP .Vb 1 \& \-oo json\-disks\-pattern=disk%{DiskNo}.img .Ve .PP Recognized variables are: .ie n .IP """%{DiskNo}""" 4 .el .IP "\f(CW%{DiskNo}\fR" 4 .IX Item "%{DiskNo}" The index of the disk, starting from 1. .ie n .IP """%{DiskDeviceName}""" 4 .el .IP "\f(CW%{DiskDeviceName}\fR" 4 .IX Item "%{DiskDeviceName}" The destination device of the disk, e.g. \f(CW\*(C`sda\*(C'\fR, \f(CW\*(C`sdb\*(C'\fR, etc. .ie n .IP """%{GuestName}""" 4 .el .IP "\f(CW%{GuestName}\fR" 4 .IX Item "%{GuestName}" The name of the guest. .PP Using a pattern it is possible use subdirectories for the disks, even with names depending on variables; for example: .PP .Vb 1 \& \-oo json\-disks\-pattern=%{GuestName}\-%{DiskNo}/disk.img .Ve .PP The default pattern is \f(CW\*(C`%{GuestName}\-%{DiskDeviceName}\*(C'\fR. .PP If the literal \f(CW\*(C`%{...}\*(C'\fR text is needed, it is possible to avoid the escape it with a leading \f(CW\*(C`%\*(C'\fR; for example, \f(CW\*(C`%%{GuestName}\-%{DiskNo}.img\*(C'\fR will create file names for the disks like \f(CW\*(C`%%{GuestName}\-1.img\*(C'\fR, \&\f(CW\*(C`%%{GuestName}\-2.img\*(C'\fR, etc. .SH "ТАКОЖ ПЕРЕГЛЯНЬТЕ" .IX Header "ТАКОЖ ПЕРЕГЛЯНЬТЕ" \&\fBvirt\-v2v\fR\|(1). .SH "АВТОР" .IX Header "АВТОР" Richard W.M. Jones .SH "АВТОРСЬКІ ПРАВА" .IX Header "АВТОРСЬКІ ПРАВА" Copyright (C) 2009\-2020 Red Hat Inc. .SH "LICENSE" .IX Header "LICENSE" .SH "BUGS" .IX Header "BUGS" To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools .PP To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools .PP When reporting a bug, please supply: .IP "\(bu" 4 The version of libguestfs. .IP "\(bu" 4 Where you got libguestfs (eg. which Linux distro, compiled from source, etc) .IP "\(bu" 4 Describe the bug accurately and give a way to reproduce it. .IP "\(bu" 4 Run \fBlibguestfs\-test\-tool\fR\|(1) and paste the \fBcomplete, unedited\fR output into the bug report.