This patch adds some docs to the website demonstrating use of virsh for
converting native config formats into domain XML and vica-veca for Xen
and QEMU
drvqemu.html | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
drvqemu.html.in | 96 ++++++++++++++++++++++++++++++++++++++++++++++++-
drvxen.html | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
drvxen.html.in | 89 ++++++++++++++++++++++++++++++++++++++++++++-
4 files changed, 390 insertions(+), 8 deletions(-)
Daniel
diff -r 0c8a291a5fbe docs/drvqemu.html
--- a/docs/drvqemu.html Wed May 13 15:28:44 2009 +0100
+++ b/docs/drvqemu.html Wed May 13 15:30:56 2009 +0100
@@ -130,12 +130,28 @@
</div>
<div id="content">
<h1>QEMU/KVM hypervisor driver</h1>
+ <ul><li>
+ <a href="#prereq">Deployment pre-requisites</a>
+ </li><li>
+ <a href="#uris">Connections to QEMU driver</a>
+ </li><li>
+ <a href="#imex">Import and export of libvirt domain XML
configs</a>
+ <ul><li>
+ <a href="#xmlimport">Converting from QEMU args to domain
XML</a>
+ </li><li>
+ <a href="#xmlexport">Converting from domain XML to QEMU
args</a>
+ </li></ul>
+ </li><li>
+ <a href="#xmlconfig">Example domain XML config</a>
+ </li></ul>
<p>
The libvirt QEMU driver can manage any QEMU emulator from version 0.8.1
or later. It can also manage anything that provides the same QEMU command
line syntax and monitor interaction. This includes KVM, and Xenner.
</p>
- <h2>Deployment pre-requisites</h2>
+ <h2>
+ <a name="prereq" id="prereq">Deployment
pre-requisites</a>
+ </h2>
<ul><li>
<strong>QEMU emulators</strong>: The driver will probe
<code>/usr/bin</code>
for the presence of <code>qemu</code>,
<code>qemu-system-x86_64</code>,
@@ -153,7 +169,9 @@
node. If both are found, then Xen paravirtualized guests can be run using
the KVM hardware acceleration.
</li></ul>
- <h2>Connections to QEMU driver</h2>
+ <h2>
+ <a name="uris" id="uris">Connections to QEMU
driver</a>
+ </h2>
<p>
The libvirt QEMU driver is a multi-instance driver, providing a single
system wide privileged driver (the "system" instance), and per-user
@@ -171,6 +189,93 @@
qemu+ssh://root@example.com/system (remote access, SSH tunnelled)
</pre>
<h2>
+ <a name="imex" id="imex">Import and export of libvirt
domain XML configs</a>
+ </h2>
+ <p>The QEMU driver currently supports a single native
+ config format known as <code>qemu-argv</code>. The data for this
format
+ is expected to be a single line first a list of environment variables,
+ then the QEMu binary name, finally followed by the QEMU command line
+ arguments</p>
+ <h3>
+ <a name="xmlimport" id="xmlimport">Converting from
QEMU args to domain XML</a>
+ </h3>
+ <p>
+ The <code>virsh domxml-from-native</code> provides a way to convert an
+ existing set of QEMU args into a guest description using libvirt Domain XML
+ that can then be used by libvirt.
+ </p>
+ <pre>$ cat > demo.args <<EOF
+LC_ALL=C PATH=/bin HOME=/home/test USER=test \
+LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 \
+-nographic -monitor pty -no-acpi -boot c -hda \
+/dev/HostVG/QEMUGuest1 -net none -serial none \
+-parallel none -usb
+EOF
+$ virsh domxml-from-native qemu-argv demo.args
+<domain type='qemu'>
+ <uuid>00000000-0000-0000-0000-000000000000</uuid>
+ <memory>219136</memory>
+ <currentMemory>219136</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686'
machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ </disk>
+ </devices>
+</domain>
+ </pre>
+ <p>NB, don't include the literral \ in the args, put everything on one
line</p>
+ <h3>
+ <a name="xmlexport" id="xmlexport">Converting from
domain XML to QEMU args</a>
+ </h3>
+ <p>
+ The <code>virsh domxml-to-native</code> provides a way to convert a
+ guest description using libvirt Domain XML, into a set of QEMU args
+ that can be run manually.
+ </p>
+ <pre>$ cat > demo.xml <<EOF
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686'
machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ </disk>
+ </devices>
+</domain>
+EOF
+$ virsh domxml-to-native qemu-argv demo.xml
+ LC_ALL=C PATH=/usr/bin:/bin HOME=/home/test \
+ USER=test LOGNAME=test /usr/bin/qemu -S -M pc \
+ -no-kqemu -m 214 -smp 1 -name QEMUGuest1 -nographic \
+ -monitor pty -no-acpi -boot c -drive \
+ file=/dev/HostVG/QEMUGuest1,if=ide,index=0 -net none \
+ -serial none -parallel none -usb
+ </pre>
+ <h2>
<a name="xmlconfig" id="xmlconfig">Example domain XML
config</a>
</h2>
<h3>QEMU emulated guest on x86_64</h3>
diff -r 0c8a291a5fbe docs/drvqemu.html.in
--- a/docs/drvqemu.html.in Wed May 13 15:28:44 2009 +0100
+++ b/docs/drvqemu.html.in Wed May 13 15:30:56 2009 +0100
@@ -2,13 +2,15 @@
<body>
<h1>QEMU/KVM hypervisor driver</h1>
+ <ul id="toc"></ul>
+
<p>
The libvirt QEMU driver can manage any QEMU emulator from version 0.8.1
or later. It can also manage anything that provides the same QEMU command
line syntax and monitor interaction. This includes KVM, and Xenner.
</p>
- <h2>Deployment pre-requisites</h2>
+ <h2><a name="prereq">Deployment
pre-requisites</a></h2>
<ul>
<li>
@@ -32,7 +34,7 @@
</li>
</ul>
- <h2>Connections to QEMU driver</h2>
+ <h2><a name="uris">Connections to QEMU
driver</a></h2>
<p>
The libvirt QEMU driver is a multi-instance driver, providing a single
@@ -52,6 +54,96 @@
qemu+ssh://root@example.com/system (remote access, SSH tunnelled)
</pre>
+ <h2><a name="imex">Import and export of libvirt domain XML
configs</a></h2>
+
+ <p>The QEMU driver currently supports a single native
+ config format known as <code>qemu-argv</code>. The data for this
format
+ is expected to be a single line first a list of environment variables,
+ then the QEMu binary name, finally followed by the QEMU command line
+ arguments</p>
+
+ <h3><a name="xmlimport">Converting from QEMU args to domain
XML</a></h3>
+
+ <p>
+ The <code>virsh domxml-from-native</code> provides a way to convert an
+ existing set of QEMU args into a guest description using libvirt Domain XML
+ that can then be used by libvirt.
+ </p>
+
+ <pre>$ cat > demo.args <<EOF
+LC_ALL=C PATH=/bin HOME=/home/test USER=test \
+LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 \
+-nographic -monitor pty -no-acpi -boot c -hda \
+/dev/HostVG/QEMUGuest1 -net none -serial none \
+-parallel none -usb
+EOF
+$ virsh domxml-from-native qemu-argv demo.args
+<domain type='qemu'>
+ <uuid>00000000-0000-0000-0000-000000000000</uuid>
+ <memory>219136</memory>
+ <currentMemory>219136</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686'
machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ </disk>
+ </devices>
+</domain>
+ </pre>
+
+ <p>NB, don't include the literral \ in the args, put everything on one
line</p>
+
+ <h3><a name="xmlexport">Converting from domain XML to QEMU
args</a></h3>
+
+ <p>
+ The <code>virsh domxml-to-native</code> provides a way to convert a
+ guest description using libvirt Domain XML, into a set of QEMU args
+ that can be run manually.
+ </p>
+
+ <pre>$ cat > demo.xml <<EOF
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686'
machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ </disk>
+ </devices>
+</domain>
+EOF
+$ virsh domxml-to-native qemu-argv demo.xml
+ LC_ALL=C PATH=/usr/bin:/bin HOME=/home/test \
+ USER=test LOGNAME=test /usr/bin/qemu -S -M pc \
+ -no-kqemu -m 214 -smp 1 -name QEMUGuest1 -nographic \
+ -monitor pty -no-acpi -boot c -drive \
+ file=/dev/HostVG/QEMUGuest1,if=ide,index=0 -net none \
+ -serial none -parallel none -usb
+ </pre>
+
<h2><a name="xmlconfig">Example domain XML
config</a></h2>
<h3>QEMU emulated guest on x86_64</h3>
diff -r 0c8a291a5fbe docs/drvxen.html
--- a/docs/drvxen.html Wed May 13 15:28:44 2009 +0100
+++ b/docs/drvxen.html Wed May 13 15:30:56 2009 +0100
@@ -130,11 +130,27 @@
</div>
<div id="content">
<h1>Xen hypervisor driver</h1>
+ <ul><li>
+ <a href="#prereq">Deployment pre-requisites</a>
+ </li><li>
+ <a href="#uri">Connections to Xen driver</a>
+ </li><li>
+ <a href="#imex">Import and export of libvirt domain XML
configs</a>
+ <ul><li>
+ <a href="#xmlimport">Converting from XM config files to
domain XML</a>
+ </li><li>
+ <a href="#xmlexport">Converting from domain XML to XM
config files</a>
+ </li></ul>
+ </li><li>
+ <a href="#xmlconfig">Example domain XML config</a>
+ </li></ul>
<p>
The libvirt Xen driver provides the ability to manage virtual machines
on any Xen release from 3.0.1 onwards.
</p>
- <h2>Deployment pre-requisites</h2>
+ <h2>
+ <a name="prereq" id="prereq">Deployment
pre-requisites</a>
+ </h2>
<p>
The libvirt Xen driver uses a combination of channels to manage Xen
virtual machines.
@@ -163,7 +179,9 @@
the <code>/etc/xen</code> directory. It is important not to place
any other non-config files in this directory.
</li></ul>
- <h2>Connections to Xen driver</h2>
+ <h2>
+ <a name="uri" id="uri">Connections to Xen
driver</a>
+ </h2>
<p>
The libvirt Xen driver is a single-instance privileged driver,
with a driver name of 'xen'. Some example conection URIs for
@@ -177,6 +195,88 @@
xen+ssh://root@example.com/ (remote access, SSH tunnelled)
</pre>
<h2>
+ <a name="imex" id="imex">Import and export of libvirt
domain XML configs</a>
+ </h2>
+ <p>The Xen driver currently supports two native
+ config formats. The first known as <code>xen-xm</code> is the format
+ used by the XM tool for files in <code>/etc/xen</code>. The second
+ known as <code>xen-sxpr</code>, is the format used for interacting
+ with the XenD's legacy HTTP RPC service.</p>
+ <h3>
+ <a name="xmlimport" id="xmlimport">Converting from XM
config files to domain XML</a>
+ </h3>
+ <p>
+ The <code>virsh domxml-from-native</code> provides a way to convert an
+ existing set of XM config files into a guest description using libvirt Domain XML
+ that can then be used by libvirt.
+ </p>
+ <pre>$ virsh -c xen:/// domxml-from-native xen-xm rhel5.cfg
+<domain type='xen'>
+ <name>rhel5pv</name>
+ <uuid>8f07fe28-753f-2729-d76d-bdbd892f949a</uuid>
+ <memory>2560000</memory>
+ <currentMemory>307200</currentMemory>
+ <vcpu>4</vcpu>
+ <bootloader>/usr/bin/pygrub</bootloader>
+ <os>
+ <type arch='x86_64'
machine='xenpv'>linux</type>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <disk type='file' device='disk'>
+ <driver name='tap' type='aio'/>
+ <source file='/var/lib/xen/images/rhel5pv.img'/>
+ <target dev='xvda' bus='xen'/>
+ </disk>
+ <disk type='file' device='disk'>
+ <driver name='tap' type='qcow'/>
+ <source file='/root/qcow1-xen.img'/>
+ <target dev='xvdd' bus='xen'/>
+ </disk>
+ <interface type='bridge'>
+ <mac address='00:16:3e:60:36:ba'/>
+ <source bridge='xenbr0'/>
+ </interface>
+ <console type='pty'>
+ <target port='0'/>
+ </console>
+ <input type='mouse' bus='xen'/>
+ <graphics type='vnc' port='-1' autoport='yes'
listen='0.0.0.0'/>
+ </devices>
+</domain>
+ </pre>
+ <h3>
+ <a name="xmlexport" id="xmlexport">Converting from
domain XML to XM config files</a>
+ </h3>
+ <p>
+ The <code>virsh domxml-to-native</code> provides a way to convert a
+ guest description using libvirt Domain XML, into the XM config file
+ format.
+ </p>
+ <pre># virsh -c xen:/// domxml-to-native xen-xm rhel5pv.xml
+name = "rhel5pv"
+uuid = "8f07fe28-753f-2729-d76d-bdbd892f949a"
+maxmem = 2500
+memory = 300
+vcpus = 4
+bootloader = "/usr/bin/pygrub"
+kernel = "/var/lib/xen/boot_kernel.0YK-cS"
+ramdisk = "/var/lib/xen/boot_ramdisk.vWgrxK"
+extra = "ro root=/dev/VolGroup00/LogVol00 rhgb quiet"
+on_poweroff = "destroy"
+on_reboot = "restart"
+on_crash = "restart"
+sdl = 0
+vnc = 1
+vncunused = 1
+vnclisten = "0.0.0.0"
+disk = [ "tap:aio:/var/lib/xen/images/rhel5pv.img,xvda,w",
"tap:qcow:/root/qcow1-xen.img,xvdd,w" ]
+vif = [ "mac=00:16:3e:60:36:ba,bridge=virbr0,script=vif-bridge,vifname=vif5.0"
]
+ </pre>
+ <h2>
<a name="xmlconfig" id="xmlconfig">Example domain XML
config</a>
</h2>
<p>
diff -r 0c8a291a5fbe docs/drvxen.html.in
--- a/docs/drvxen.html.in Wed May 13 15:28:44 2009 +0100
+++ b/docs/drvxen.html.in Wed May 13 15:30:56 2009 +0100
@@ -2,12 +2,14 @@
<body>
<h1>Xen hypervisor driver</h1>
+ <ul id="toc"></ul>
+
<p>
The libvirt Xen driver provides the ability to manage virtual machines
on any Xen release from 3.0.1 onwards.
</p>
- <h2>Deployment pre-requisites</h2>
+ <h2><a name="prereq">Deployment
pre-requisites</a></h2>
<p>
The libvirt Xen driver uses a combination of channels to manage Xen
@@ -44,7 +46,7 @@
</li>
</ul>
- <h2>Connections to Xen driver</h2>
+ <h2><a name="uri">Connections to Xen
driver</a></h2>
<p>
The libvirt Xen driver is a single-instance privileged driver,
@@ -60,6 +62,89 @@
xen+ssh://root@example.com/ (remote access, SSH tunnelled)
</pre>
+ <h2><a name="imex">Import and export of libvirt domain XML
configs</a></h2>
+
+ <p>The Xen driver currently supports two native
+ config formats. The first known as <code>xen-xm</code> is the format
+ used by the XM tool for files in <code>/etc/xen</code>. The second
+ known as <code>xen-sxpr</code>, is the format used for interacting
+ with the XenD's legacy HTTP RPC service.</p>
+
+ <h3><a name="xmlimport">Converting from XM config files to
domain XML</a></h3>
+
+ <p>
+ The <code>virsh domxml-from-native</code> provides a way to convert an
+ existing set of XM config files into a guest description using libvirt Domain XML
+ that can then be used by libvirt.
+ </p>
+
+ <pre>$ virsh -c xen:/// domxml-from-native xen-xm rhel5.cfg
+<domain type='xen'>
+ <name>rhel5pv</name>
+ <uuid>8f07fe28-753f-2729-d76d-bdbd892f949a</uuid>
+ <memory>2560000</memory>
+ <currentMemory>307200</currentMemory>
+ <vcpu>4</vcpu>
+ <bootloader>/usr/bin/pygrub</bootloader>
+ <os>
+ <type arch='x86_64'
machine='xenpv'>linux</type>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <disk type='file' device='disk'>
+ <driver name='tap' type='aio'/>
+ <source file='/var/lib/xen/images/rhel5pv.img'/>
+ <target dev='xvda' bus='xen'/>
+ </disk>
+ <disk type='file' device='disk'>
+ <driver name='tap' type='qcow'/>
+ <source file='/root/qcow1-xen.img'/>
+ <target dev='xvdd' bus='xen'/>
+ </disk>
+ <interface type='bridge'>
+ <mac address='00:16:3e:60:36:ba'/>
+ <source bridge='xenbr0'/>
+ </interface>
+ <console type='pty'>
+ <target port='0'/>
+ </console>
+ <input type='mouse' bus='xen'/>
+ <graphics type='vnc' port='-1' autoport='yes'
listen='0.0.0.0'/>
+ </devices>
+</domain>
+ </pre>
+
+ <h3><a name="xmlexport">Converting from domain XML to XM config
files</a></h3>
+
+ <p>
+ The <code>virsh domxml-to-native</code> provides a way to convert a
+ guest description using libvirt Domain XML, into the XM config file
+ format.
+ </p>
+
+ <pre># virsh -c xen:/// domxml-to-native xen-xm rhel5pv.xml
+name = "rhel5pv"
+uuid = "8f07fe28-753f-2729-d76d-bdbd892f949a"
+maxmem = 2500
+memory = 300
+vcpus = 4
+bootloader = "/usr/bin/pygrub"
+kernel = "/var/lib/xen/boot_kernel.0YK-cS"
+ramdisk = "/var/lib/xen/boot_ramdisk.vWgrxK"
+extra = "ro root=/dev/VolGroup00/LogVol00 rhgb quiet"
+on_poweroff = "destroy"
+on_reboot = "restart"
+on_crash = "restart"
+sdl = 0
+vnc = 1
+vncunused = 1
+vnclisten = "0.0.0.0"
+disk = [ "tap:aio:/var/lib/xen/images/rhel5pv.img,xvda,w",
"tap:qcow:/root/qcow1-xen.img,xvdd,w" ]
+vif = [ "mac=00:16:3e:60:36:ba,bridge=virbr0,script=vif-bridge,vifname=vif5.0"
]
+ </pre>
<h2><a name="xmlconfig">Example domain XML
config</a></h2>
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|