===
kvm
===


kvm
===

KVM guest management
====================

.. contents::

Install packages
================

**Debian or Ubuntu**

-  sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder
   bridge-utils

**Redhat or Fedora**

-  yum install kvm
-  yum install virt-manager libvirt libvirt-python python-virtinst
-  chkconfig libvirtd on
-  service libvirtd start

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=\ :math:`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=\ :math:`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=\ :math:`HOSTNAME domain=`\ 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=\ :math:`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=\ :math:`HOSTNAME domain=`\ 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

.. raw:: html

   <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>

.. raw:: html

   <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>

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
