e1587dfd0a
Add KVM config info from Config Reference Update Enabling KVM in the native file Update the references to QEMU and Xen Create Enabling KVM section and use it from both Config Reference and Install Guide Add reference to amd and intel subsections Change-Id: I103ec048cceefb336026823a16257d88671bf969 Closes-Bug: #1238256 Author: Nermina Miller
204 lines
10 KiB
XML
204 lines
10 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<section xmlns="http://docbook.org/ns/docbook"
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
|
xml:id="kvm">
|
|
<?dbhtml stop-chunking?>
|
|
<title>KVM</title>
|
|
<para>KVM is configured as the default hypervisor for
|
|
Compute.</para>
|
|
<note>
|
|
<para>This document contains several sections about hypervisor
|
|
selection. If you are reading this document linearly, you
|
|
do not want to load the KVM module before you install
|
|
<systemitem class="service">nova-compute</systemitem>.
|
|
The <systemitem class="service">nova-compute</systemitem>
|
|
service depends on qemu-kvm, which installs
|
|
<filename>/lib/udev/rules.d/45-qemu-kvm.rules</filename>,
|
|
which sets the correct permissions on the /dev/kvm device
|
|
node.</para>
|
|
</note>
|
|
<para>To enable KVM explicitly, add the following configuration
|
|
options to the <filename>/etc/nova/nova.conf</filename>
|
|
file:</para>
|
|
<programlisting language="ini">compute_driver=libvirt.LibvirtDriver
|
|
libvirt_type=kvm</programlisting>
|
|
<para>The KVM hypervisor supports the following virtual machine
|
|
image formats:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Raw</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>QEMU Copy-on-write (qcow2)</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>QED Qemu Enhanced Disk</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>VMWare virtual machine disk format (vmdk)</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>This section describes how to enable KVM on your system. For
|
|
more information, see the following distribution-specific
|
|
documentation:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><link
|
|
xlink:href="http://fedoraproject.org/wiki/Getting_started_with_virtualization"
|
|
>Fedora: Getting started with
|
|
virtualization</link> from the Fedora project
|
|
wiki.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><link
|
|
xlink:href="https://help.ubuntu.com/community/KVM/Installation"
|
|
>Ubuntu: KVM/Installation</link> from the
|
|
Community Ubuntu documentation.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><link
|
|
xlink:href="http://static.debian-handbook.info/browse/stable/sect.virtualization.html#idp11279352"
|
|
>Debian: Virtualization with KVM</link> from the
|
|
Debian handbook.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><link
|
|
xlink:href="http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/sect-Virtualization_Host_Configuration_and_Guest_Installation_Guide-Host_Installation-Installing_KVM_packages_on_an_existing_Red_Hat_Enterprise_Linux_system.html"
|
|
>RHEL: Installing virtualization packages on an
|
|
existing Red Hat Enterprise Linux system</link>
|
|
from the <citetitle>Red Hat Enterprise Linux
|
|
Virtualization Host Configuration and Guest
|
|
Installation Guide</citetitle>.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><link
|
|
xlink:href="http://doc.opensuse.org/documentation/html/openSUSE/opensuse-kvm/cha.kvm.requires.html#sec.kvm.requires.install"
|
|
>openSUSE: Installing KVM</link> from the openSUSE
|
|
Virtualization with KVM manual.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><link
|
|
xlink:href="http://doc.opensuse.org/products/draft/SLES/SLES-kvm_sd_draft/cha.kvm.requires.html#sec.kvm.requires.install"
|
|
>SLES: Installing KVM</link> from the SUSE Linux
|
|
Enterprise Server Virtualization with KVM
|
|
manual.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<xi:include href="section_kvm_enable.xml"/>
|
|
|
|
<section xml:id="libvirt-xml-cpu-model">
|
|
<title>Specify the CPU model of KVM guests</title>
|
|
<para>The Compute service enables you to control the guest CPU
|
|
model that is exposed to KVM virtual machines. Use cases
|
|
include:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>To maximize performance of virtual machines by
|
|
exposing new host CPU features to the guest</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>To ensure a consistent default CPU across all
|
|
machines, removing reliance of variable QEMU
|
|
defaults</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>In libvirt, the CPU is specified by providing a base CPU
|
|
model name (which is a shorthand for a set of feature
|
|
flags), a set of additional feature flags, and the
|
|
topology (sockets/cores/threads). The libvirt KVM driver
|
|
provides a number of standard CPU model names. These
|
|
models are defined in the
|
|
<filename>/usr/share/libvirt/cpu_map.xml</filename>
|
|
file. Check this file to determine which models are
|
|
supported by your local installation.</para>
|
|
<para>Two Compute configuration options define which type of
|
|
CPU model is exposed to the hypervisor when using KVM:
|
|
<literal>libvirt_cpu_mode</literal> and
|
|
<literal>libvirt_cpu_model</literal>.</para>
|
|
<para>The <literal>libvirt_cpu_mode</literal> option can take
|
|
one of the following values: <literal>none</literal>,
|
|
<literal>host-passthrough</literal>,
|
|
<literal>host-model</literal>, and
|
|
<literal>custom</literal>.</para>
|
|
<simplesect>
|
|
<title>Host model (default for KVM & QEMU)</title>
|
|
<para>If your <filename>nova.conf</filename> file contains
|
|
<literal>libvirt_cpu_mode=host-model</literal>,
|
|
libvirt identifies the CPU model in
|
|
<filename>/usr/share/libvirt/cpu_map.xml</filename>
|
|
file that most closely matches the host, and requests
|
|
additional CPU flags to complete the match. This
|
|
configuration provides the maximum functionality and
|
|
performance and maintains good reliability and
|
|
compatibility if the guest is migrated to another host
|
|
with slightly different host CPUs.</para>
|
|
</simplesect>
|
|
<simplesect>
|
|
<title>Host pass through</title>
|
|
<para>If your <filename>nova.conf</filename> file contains
|
|
<literal>libvirt_cpu_mode=host-passthrough</literal>,
|
|
libvirt tells KVM to pass through the host CPU with no
|
|
modifications. The difference to host-model, instead
|
|
of just matching feature flags, every last detail of
|
|
the host CPU is matched. This gives absolutely best
|
|
performance, and can be important to some apps which
|
|
check low level CPU details, but it comes at a cost
|
|
with respect to migration: the guest can only be
|
|
migrated to an exactly matching host CPU.</para>
|
|
</simplesect>
|
|
<simplesect>
|
|
<title>Custom</title>
|
|
<para>If your <filename>nova.conf</filename> file contains
|
|
<literal>libvirt_cpu_mode=custom</literal>, you
|
|
can explicitly specify one of the supported named
|
|
model using the libvirt_cpu_model configuration
|
|
option. For example, to configure the KVM guests to
|
|
expose Nehalem CPUs, your
|
|
<filename>nova.conf</filename> file should
|
|
contain:</para>
|
|
<programlisting language="ini">libvirt_cpu_mode=custom
|
|
libvirt_cpu_model=Nehalem</programlisting>
|
|
</simplesect>
|
|
<simplesect>
|
|
<title>None (default for all libvirt-driven hypervisors
|
|
other than KVM & QEMU)</title>
|
|
<para>If your <filename>nova.conf</filename> file contains
|
|
<literal>libvirt_cpu_mode=none</literal>, libvirt
|
|
does not specify a CPU model. Instead, the hypervisor
|
|
chooses the default model. This setting is equivalent
|
|
to the Compute service behavior prior to the Folsom
|
|
release.</para>
|
|
</simplesect>
|
|
</section>
|
|
<section xml:id="kvm-performance">
|
|
<title>KVM Performance Tweaks</title>
|
|
<para>The <link
|
|
xlink:href="http://www.linux-kvm.org/page/VhostNet"
|
|
>VHostNet</link> kernel module improves network
|
|
performance. To load the kernel module, run the following
|
|
command as root:</para>
|
|
<screen><prompt>#</prompt> <userinput>modprobe vhost_net</userinput></screen>
|
|
</section>
|
|
<section xml:id="kvm-troubleshooting">
|
|
<title>Troubleshooting</title>
|
|
<para>Trying to launch a new virtual machine instance fails
|
|
with the <literal>ERROR</literal>state, and the following
|
|
error appears in the
|
|
<filename>/var/log/nova/nova-compute.log</filename>
|
|
file:</para>
|
|
<screen><computeroutput>libvirtError: internal error no supported architecture for os type 'hvm'</computeroutput></screen>
|
|
<para>This message indicates that the KVM kernel modules were
|
|
not loaded.</para>
|
|
<para>If you cannot start VMs after installation without
|
|
rebooting, the permissions might not be correct. This can
|
|
happen if you load the KVM module before you install
|
|
<systemitem class="service">nova-compute</systemitem>.
|
|
To check whether the group is set to kvm, run:</para>
|
|
<screen><prompt>#</prompt> <userinput>ls -l /dev/kvm</userinput></screen>
|
|
<para>If it is not set to kvm, run:</para>
|
|
<screen><prompt>#</prompt> <userinput>sudo udevadm trigger</userinput></screen>
|
|
</section>
|
|
</section>
|