mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-09-09 01:04:59 +00:00
The "libvirt supports:" section on the main page of libvirt.org contains a list of hypervisors with links that point to the sites of the underlying virt technologies. The entry for KVM points to http://www.linux-kvm.org/, for example. People coming to libvirt.org for the first time are likely to know about those sites, and they're probably interested in how libvirt manages those technologies. This patch points those links to the libvirt driver pages instead. It also consolidates KVM and QEMU as there is only one libvirt driver page for them. Finally, it adds a line about networking support. v2: incorporate Eric's feedback adding project links to driver pages. website: Add project links to KVM/QEMU driver page website: Add project links to Xen driver page website: Add project links to LXC driver page website: Add project links to OpenVZ driver page website: Add project links to UML driver page website: Add project links to Virtualbox driver page website: Add project links to ESX driver page website: Add project links to VMware driver page
123 lines
3.4 KiB
HTML
123 lines
3.4 KiB
HTML
<html>
|
|
<body>
|
|
<h1>LXC container driver</h1>
|
|
<p>
|
|
The libvirt LXC driver manages "Linux Containers". Containers are sets of processes
|
|
with private namespaces which can (but don't always) look like separate machines, but
|
|
do not have their own OS. Here are two example configurations. The first is a very
|
|
light-weight "application container" which does not have its own root image.
|
|
</p>
|
|
|
|
<h2><a name="project">Project Links</a></h2>
|
|
|
|
<ul>
|
|
<li>
|
|
The <a href="http://lxc.sourceforge.net/">LXC</a> Linux
|
|
container system
|
|
</li>
|
|
</ul>
|
|
|
|
<h2>Cgroups Requirements</h2>
|
|
|
|
<p>
|
|
The libvirt LXC driver requires that certain cgroups controllers are
|
|
mounted on the host OS. The minimum required controllers are 'cpuacct',
|
|
'memory' and 'devices', while recommended extra controllers are
|
|
'cpu', 'freezer' and 'blkio'. The /etc/cgconfig.conf & cgconfig
|
|
init service used to mount cgroups at host boot time. To manually
|
|
mount them use:
|
|
</p>
|
|
|
|
<pre>
|
|
# mount -t cgroup cgroup /dev/cgroup -o cpuacct,memory,devices,cpu,freezer,blkio
|
|
</pre>
|
|
|
|
<p>
|
|
NB, the blkio controller in some kernels will not allow creation of nested
|
|
sub-directories which will prevent correct operation of the libvirt LXC
|
|
driver. On such kernels, it may be neccessary to unmount the blkio controller.
|
|
</p>
|
|
|
|
|
|
<h3>Example config version 1</h3>
|
|
<p></p>
|
|
<pre>
|
|
<domain type='lxc'>
|
|
<name>vm1</name>
|
|
<memory>500000</memory>
|
|
<os>
|
|
<type>exe</type>
|
|
<init>/bin/sh</init>
|
|
</os>
|
|
<vcpu>1</vcpu>
|
|
<clock offset='utc'/>
|
|
<on_poweroff>destroy</on_poweroff>
|
|
<on_reboot>restart</on_reboot>
|
|
<on_crash>destroy</on_crash>
|
|
<devices>
|
|
<emulator>/usr/libexec/libvirt_lxc</emulator>
|
|
<interface type='network'>
|
|
<source network='default'/>
|
|
</interface>
|
|
<console type='pty' />
|
|
</devices>
|
|
</domain>
|
|
</pre>
|
|
|
|
<p>
|
|
In the <emulator> element, be sure you specify the correct path
|
|
to libvirt_lxc, if it does not live in /usr/libexec on your system.
|
|
</p>
|
|
|
|
<p>
|
|
The next example assumes there is a private root filesystem
|
|
(perhaps hand-crafted using busybox, or installed from media,
|
|
debootstrap, whatever) under /opt/vm-1-root:
|
|
</p>
|
|
<p></p>
|
|
<pre>
|
|
<domain type='lxc'>
|
|
<name>vm1</name>
|
|
<memory>32768</memory>
|
|
<os>
|
|
<type>exe</type>
|
|
<init>/init</init>
|
|
</os>
|
|
<vcpu>1</vcpu>
|
|
<clock offset='utc'/>
|
|
<on_poweroff>destroy</on_poweroff>
|
|
<on_reboot>restart</on_reboot>
|
|
<on_crash>destroy</on_crash>
|
|
<devices>
|
|
<emulator>/usr/libexec/libvirt_lxc</emulator>
|
|
<filesystem type='mount'>
|
|
<source dir='/opt/vm-1-root'/>
|
|
<target dir='/'/>
|
|
</filesystem>
|
|
<interface type='network'>
|
|
<source network='default'/>
|
|
</interface>
|
|
<console type='pty' />
|
|
</devices>
|
|
</domain>
|
|
</pre>
|
|
|
|
<p>
|
|
In both cases, you can define and start a container using:</p>
|
|
<pre>
|
|
virsh --connect lxc:/// define v1.xml
|
|
virsh --connect lxc:/// start vm1
|
|
</pre>
|
|
and then get a console using:
|
|
<pre>
|
|
virsh --connect lxc:/// console vm1
|
|
</pre>
|
|
<p>Now doing 'ps -ef' will only show processes in the container, for
|
|
instance. You can undefine it using
|
|
</p>
|
|
<pre>
|
|
virsh --connect lxc:/// undefine vm1
|
|
</pre>
|
|
</body>
|
|
</html>
|