Skip to main content

KVM

CheatSheet#

apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker # Install KVM headlesskvm-ok # Check installation and VM accelerationvirsh list # List VMsvirsh start openbsd # Start openbsd VMvirsh suspend openbsd # Suspend openbsd VMvirsh reboot openbsd # Soft Reboot openbsd VMvirsh reset openbsd # Hard Reset openbsd VMvirsh shutdown openbsd # Shutdown openbsd VMvirsh undefine openbsd # Remove openbsd VMvirsh destroy openbsd # Remove openbsd VM

Migrate VM from one host to another#

In this example the VM to be migrated is named vm and target hostname is kvm02.

On source host:

virsh shutdown vmvirsh dumpxml vm > /tmp/vm.xmlscp /tmp/vm.xml kvm02:/tmp/vm.xmlscp /var/lib/libvirt/images/vm.qcow2 kvm02:/var/lib/libvirt/images/vm.qcow2virsh undefine vmrm /var/lib/libvirt/images/vm.qcow2

On target host:

virsh define /tmp/vm.xmlvirsh start vm

This is a sample a working VM definition:

<domain type='kvm' id='3'>  <name>vm</name>  <uuid>7d9b55db-6cca-4737-b1bc-75bab1fe5839</uuid>  <memory unit='KiB'>2097152</memory>  <currentMemory unit='KiB'>2097152</currentMemory>  <vcpu placement='static'>1</vcpu>  <resource>    <partition>/machine</partition>  </resource>  <os>    <type arch='x86_64' machine='pc-i440fx-xenial'>hvm</type>    <boot dev='hd'/>  </os>  <features>    <acpi/>    <apic/>  </features>  <cpu mode='host-model'>    <model fallback='allow'/>  </cpu>  <clock offset='utc'>    <timer name='rtc' tickpolicy='catchup'/>    <timer name='pit' tickpolicy='delay'/>    <timer name='hpet' present='no'/>  </clock>  <on_poweroff>destroy</on_poweroff>  <on_reboot>restart</on_reboot>  <on_crash>restart</on_crash>  <pm>    <suspend-to-mem enabled='no'/>    <suspend-to-disk enabled='no'/>  </pm>  <devices>    <emulator>/usr/bin/kvm-spice</emulator>    <disk type='file' device='disk'>      <driver name='qemu' type='qcow2'/>      <source file='/var/lib/libvirt/images/vm.qcow2'/>      <backingStore/>      <target dev='hda' bus='ide'/>      <alias name='ide0-0-0'/>      <address type='drive' controller='0' bus='0' target='0' unit='0'/>    </disk>    <controller type='usb' index='0' model='ich9-ehci1'>      <alias name='usb'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>    </controller>    <controller type='usb' index='0' model='ich9-uhci1'>      <alias name='usb'/>      <master startport='0'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>    </controller>    <controller type='usb' index='0' model='ich9-uhci2'>      <alias name='usb'/>      <master startport='2'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>    </controller>    <controller type='usb' index='0' model='ich9-uhci3'>      <alias name='usb'/>      <master startport='4'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>    </controller>    <controller type='pci' index='0' model='pci-root'>      <alias name='pci.0'/>    </controller>    <controller type='ide' index='0'>      <alias name='ide'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>    </controller>    <controller type='virtio-serial' index='0'>      <alias name='virtio-serial0'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>    </controller>    <interface type='bridge'>      <mac address='xx:xx:xx:xx:xx:xx'/>      <source bridge='br1'/>      <target dev='vnet0'/>      <model type='virtio'/>      <alias name='net0'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>    </interface>    <interface type='bridge'>      <mac address='xx:xx:xx:xx:xx:xx'/>      <source bridge='br2'/>      <target dev='vnet1'/>      <model type='virtio'/>      <alias name='net1'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>    </interface>    <serial type='pty'>      <source path='/dev/pts/1'/>      <target port='0'/>      <alias name='serial0'/>    </serial>    <console type='pty' tty='/dev/pts/1'>      <source path='/dev/pts/1'/>      <target type='serial' port='0'/>      <alias name='serial0'/>    </console>    <channel type='spicevmc'>      <target type='virtio' name='com.redhat.spice.0' state='disconnected'/>      <alias name='channel0'/>      <address type='virtio-serial' controller='0' bus='0' port='1'/>    </channel>    <input type='mouse' bus='ps2'/>    <input type='keyboard' bus='ps2'/>    <graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>      <listen type='address' address='127.0.0.1'/>    </graphics>    <sound model='ich6'>      <alias name='sound0'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>    </sound>    <video>      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>      <alias name='video0'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>    </video>    <redirdev bus='usb' type='spicevmc'>      <alias name='redir0'/>    </redirdev>    <redirdev bus='usb' type='spicevmc'>      <alias name='redir1'/>    </redirdev>    <memballoon model='virtio'>      <alias name='balloon0'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>    </memballoon>  </devices>  <seclabel type='dynamic' model='apparmor' relabel='yes'>    <label>libvirt-7d9b55db-6cca-4737-b1bc-75bab1fe5839</label>    <imagelabel>libvirt-7d9b55db-6cca-4737-b1bc-75bab1fe5839</imagelabel>  </seclabel></domain>