kvm

kvm

KVM guest management

.. contents::

Install packages

Debian or Ubuntu

Redhat or Fedora

KVM virsh cheat sheet!

This is a list of commands to use in the virsh cli.

To start the virsh cli run the following cmd:

.. code-block:: bash

$ virsh

or:

.. code-block:: bash

virsh –connect qemu:///system

KVM has its own commands, but we like to use virsh.

Here is a list comparing Xen and KVM (virsh) commands.

List running guests

xen | xm list

kvm | virsh list | virsh dominfo

Start a guest

xen | xm create /etc/xen/

kvm | virsh create /etc/libvirt/qemu/.xml | virsh start

Console to guest

xen xm console

kvm virsh console

Shutdown a guest

xen xm shutdown

kvm virsh shutdown

This command doesn’t always work…

Be sure the guests XML file has the following entry:

| | |

Also make sure the apci is installed on the guest operating system.

debian / ubuntu sudo apt-get install acpid

fedora / redhat yum install acpid

Autostart guest on reboot

xen ln -s /etc/xen/ /etc/xen/auto/

kvm virsh autostart

Edit a guests configuration file

xen NA

kvm
virsh edit

Pull the power on a guest

xen xm destroy

kvm virsh destroy

Quit virsh cli

kvm virsh quit

Virtual Serial Console configuration

From the KVM host run:

.. code-block:: xml

virsh edit

Then add the following inside the directives:

.. code-block:: xml

From the Guest run:

.. code-block:: xml

sudo cp -p /etc/init/tty06.conf /etc/init/ttyS0.conf sudo vi /etc/init/ttyS0.conf sudo diff /etc/init/tty06.conf /etc/init/ttyS0.conf

Vmbuilder Example

This example assumes ubuntu linux.

Install vmbuilder

.. code-block:: python

sudo apt-get install python-vm-builder

Display Help vmbuilder

.. code-block:: python

vmbuilder kvm ubuntu –help

Custom vmbuilder string

mbison example

.. code-block:: bash

VMNAME=mbison
mkdir /vms/$VMNAME

sudo vmbuilder kvm ubuntu –libvirt=qemu:///system –suite=lucid –flavour=virtual  
–hostname=$VMNAME –domain=‘foxhop.net’ –rootsize=‘10240’ –mem=‘1024’  
–ip=192.168.1.51 –gw=192.168.1.254 –dns=192.168.1.22 –bridge=br0  
–addpkg=openssh-server –addpkg=acpid –timezone=EDT –verbose

cammy example

.. code-block:: bash

VMNAME=cammy
mkdir /vms/$VMNAME

sudo vmbuilder kvm ubuntu  
–libvirt=qemu:///system  
–suite=lucid  
–arch=amd64 -o  
–flavour=virtual  
–hostname=VMNAME  −  − dest = /vms/VMNAME  
–rootsize=20480  
–mem=1024  
–bridge=br0  
–ip=192.168.1.52  
–gw=192.168.1.254  
–dns=192.168.1.22  
–user=john  
–pass=doe  
–addpkg=openssh-server  
–addpkg=acpid  
–timezone=EDT  
–verbose

virt-install

debian netboot example

This method shows the virt-install script installing from a debian netboot image hosted on the internet

.. code-block:: bash

HOSTNAME=tehforum DOMAIN=foxhop.net

sudo virt-install
–name=HOSTNAME  −  − vcpu = 1  −  − ram = 396  −  − disk = /KVMROOT/HOSTNAME.qcow2,size=10
–os-type=linux
–autostart
–location=http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/
–extra-args=“auto=true priority=critical keymap=us locale=en_US hostname=HOSTNAMEdomain=DOMAIN url=http://192.168.1.22/foxhop-debconf-preseed.txt”

ubuntu netboot example

This method shows the virt-install script installing from an ubuntu netboot image hosted on the internet

.. code-block:: bash

HOSTNAME=mbison DOMAIN=foxhop.net

sudo virt-install
–name=HOSTNAME  −  − vcpu = 1  −  − ram = 396  −  − disk = /KVMROOT/HOSTNAME.qcow2,size=10
–os-type=linux
–autostart
–location=http://archive.ubuntu.com/ubuntu/dists/raring/main/installer-amd64/
–extra-args=“auto=true priority=critical keymap=us locale=en_US hostname=HOSTNAMEdomain=DOMAIN url=http://192.168.1.22/foxhop-debconf-preseed.txt”

Mounting a qcow2 image on the host

Sometimes it is helpful to be able to mount a drive image under the host system. For example, if the guest doesn’t have network support, the only way to transfer files into and out of the guest will be by the storage devices it can address or to restore files from a backup image.

To mount qcow2 images there is (at least in F-11 qemu) very useful qemu-nbd util. It shares image through kernel network block device protocol and this allows to mount it:

.. code-block:: bash

sudo modprobe nbd max_part=63 sudo qemu-nbd -c /dev/nbd0 image.img sudo mount /dev/nbd0p1 /mnt/image

Add another disk image to a guest

This is how you add an additional disk to a guest. In this example I will be adding a 20GB disk image to a guest dom named cammy.

.. code-block:: bash

fallocate -l 20g /vms/cammy/cammy-aux.img

or

.. code-block:: bash

qemu-img create -f qcow2 /vms/cammy/cammy-aux.img 20G

If you want to look that the image statistics try this command.

.. code-block:: bash

qemu-img info /vms/cammy/cammy-aux.img

Now we need to mount this disk:

.. code-block:: bash

sudo virsh attach-disk cammy /vms/cammy/cammy-aux.img vdb

That command only mounted the disk. To make this change permanent we need to alter the dom’s xml:

.. code-block:: xml

# sudo virsh edit cammy

SSH to the guest and verify that the disk shows up in fdisk -l. You may now partition this disk how you like. For more information view linux raw filesystem management <http://www.foxhop.net/linux-raw-filesystem-management>_.

shrink a qcow2 image

http://pve.proxmox.com/wiki/Shrink_Qcow2_Disk_Files