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=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 _. shrink a qcow2 image http://pve.proxmox.com/wiki/Shrink_Qcow2_Disk_Files