workshop:libvirt_kvm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
workshop:libvirt_kvm [2010-06-22 21:03] xroworkshop:libvirt_kvm [2025-11-09 09:25] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== Workshop zu libVirt & KVM ====== +====== Workshop libVirt & KVM ====== 
-gehalten von Christian Pointner + 
-===== libvirt example =====+  * by Christian Pointner 
 +  * workshop notes by Michael Prokop 
 + 
 +===== Ressources ===== 
 + 
 +  * [[http://www.libvirt.org/]] 
 +  * man kvm 
 + 
 +===== Software ===== 
 + 
 +Required software packages: 
 + 
 +<file> 
 +apt-get install libvirt-bin qemu-kvm qemu-utils 
 +</file> 
 + 
 +Graphical user interface: 
 + 
 +<file> 
 +apt-get install virt-manager 
 +</file> 
 + 
 +Kernel 2.6.32 and according libvirt highly recommended, e.g. Debian/squeeze and Debian/lenny with backports works fine. 
 + 
 +===== ifaces example ===== 
 +<file> 
 +# This file describes the network interfaces available on your system 
 +# and how to activate them. For more information, see interfaces(5). 
 + 
 +# The loopback network interface 
 +auto lo 
 +iface lo inet loopback 
 + 
 +# bridge for kvm 
 +auto eth0 
 +iface eth0 inet manual 
 + 
 +auto vnet 
 +iface vnet inet dhcp 
 +    bridge_ports eth0 
 +</file> 
 + 
 +===== Simple demo setup with Grml ISO =====
  
 <file> <file>
-<domain type='kvm' id='7'> +cd /dev/shm 
-  <name>kvm-vnc</name+wget http://download.grml.org/grml-small_2010.04.iso 
-  <uuid>c4809964-9be7-4d66-2957-3a88743e2ac6</uuid>+ISO=/dev/shm/grml-small_2010.04.iso 
 +cat > grml.xml << EOF 
 +<domain type='kvm'> 
 +  <name>grml-kvm</name>
   <memory>262144</memory>   <memory>262144</memory>
   <currentMemory>262144</currentMemory>   <currentMemory>262144</currentMemory>
   <vcpu>1</vcpu>   <vcpu>1</vcpu>
   <os>   <os>
-    <type arch='i686' machine='pc-0.12'>hvm</type>+    <type arch='x86_64' machine='pc'>hvm</type>
     <boot dev='cdrom'/>     <boot dev='cdrom'/>
   </os>   </os>
Line 25: Line 70:
   <devices>   <devices>
     <emulator>/usr/bin/kvm</emulator>     <emulator>/usr/bin/kvm</emulator>
-    <disk type='block' device='disk'> +    <disk type='file' device='cdrom'>                                                                                  
-      <driver cache='none'/> +
-      <source dev='/home/equinox/Desktop/disks/kvm-graphic.img'/> +
-      <target dev='vda' bus='virtio'/> +
-      <alias name='virtio-disk0'/> +
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> +
-    </disk> +
-    <disk type='file' device='cdrom'>+
       <driver name='qemu'/>       <driver name='qemu'/>
-      <source file='/home/equinox/Downloads/grml-small_2010.04.iso'/>+      <source file='/grml/isos/grml-small_2010.04.iso'/>
       <target dev='hdc' bus='ide'/>       <target dev='hdc' bus='ide'/>
       <readonly/>       <readonly/>
Line 42: Line 80:
     <controller type='ide' index='0'>     <controller type='ide' index='0'>
       <alias name='ide0'/>       <alias name='ide0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> 
     </controller>     </controller>
     <interface type='bridge'>     <interface type='bridge'>
-      <mac address='52:54:00:64:ab:1d'/> +      <source bridge='vnet'/>
-      <source bridge='lan'/> +
-      <target dev='vnet1'/>+
       <model type='virtio'/>       <model type='virtio'/>
       <alias name='net0'/>       <alias name='net0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> 
     </interface>     </interface>
     <serial type='pty'>     <serial type='pty'>
       <source path='/dev/pts/9'/>       <source path='/dev/pts/9'/>
       <target port='0'/>       <target port='0'/>
-      <alias name='serial0'/>+      <alias name='serial0'/>`
     </serial>     </serial>
-    <console type='pty' tty='/dev/pts/9'+    <console type='pty'>
-      <source path='/dev/pts/9'/> +
-      <target port='0'/> +
-      <alias name='serial0'/>+
     </console>     </console>
     <input type='mouse' bus='ps2'/>     <input type='mouse' bus='ps2'/>
-    <graphics type='vnc' port='5904' autoport='no'/+    <graphics type='vnc' autoport='yes'/>
-    <video> +
-      <model type='cirrus' vram='9216' heads='1'/> +
-      <alias name='video0'/> +
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> +
-    </video>+
   </devices>   </devices>
 </domain> </domain>
 +EOF
 </file> </file>
  
-===== ifaces example ===== 
 <file> <file>
-# This file describes the network interfaces available on your system +sudo virsh [--connect qemu:///system] 
-# and how to activate them. For more information, see interfaces(5).+</file>
  
-# The loopback network interface +Inside virsh then define and start grml instance:
-auto lo +
-iface lo inet loopback+
  
-The primary network interface +<file> 
-bridge for kvm +virsh define grml.xml 
-auto eth0 +virsh start grml-kvm 
-iface eth0 inet manual+</file>
  
-auto lan +List VNC port: 
-iface lan inet dhcp + 
-  bridge_ports eth0+<file> 
 +virsh # vncdisplay grml-kvm 
 +:0
 </file> </file>
  
-===== grub2 example =====+List all defined instances: 
 <file> <file>
-GRUB_CMDLINE_LINUX_DEFAULT="quiet" +virsh # list --all 
-GRUB_CMDLINE_LINUX="quiet console=ttyS0,115200n8"+ Id Name                 State 
 +---------------------------------- 
 + 14 grml-kvm             running 
 +</file>
  
-Uncomment to disable graphical terminal (grub-pc only+List assigned serial console: 
-#GRUB_TERMINAL=console + 
-GRUB_TERMINAL=serial +<file> 
-GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"+virsh ttyconsole grml-kvm 
 +/dev/pts/
 +</file> 
 + 
 +Connect via serial console (choose the "Serial" boot menu entry under additional entries for "grml-small" in the bootsplash to automatically enable serial console): 
 + 
 +<file> 
 +sudo -u libvirt-qemu cu -l /dev/pts/
 +</file> 
 + 
 +Connect via VNC: 
 + 
 +<file> 
 +vncviewer localhost:5900 
 +</file> 
 + 
 +Possible falltraps while setup: 
 + 
 +  * i686 vs. x86_64 as arch type 
 +  * missing any defined block devices 
 +  * missing bridge configuration as defined in config, example for /etc/network/interfaces see above 
 + 
 +Verify defined configuration: 
 + 
 +<file> 
 +define $FOO 
 +dumpxml $FOO 
 +</file> 
 + 
 +Autostart setup: 
 + 
 +<file> 
 +autostart $HOST 
 +net-auostart default 
 +net-autostart --disable default 
 +autostart --disable $HOST 
 +</file> 
 + 
 +Ballooning: 
 + 
 +<file> 
 +setmem $HOST 256000 
 +<currentMemory> <= <memory> -> but can be overriden via setmaxmem 
 +</file> 
 + 
 +Overbooking of CPU: 
 + 
 +<file> 
 +<vcpu>16</vcpu> 
 +</file> 
 + 
 +Tip: Disable caching in the virtualised instance so just the internal system (the system running inside the virtual machineuses the caches (add this line inside every <disk> ... </disk> environment): 
 + 
 +<file> 
 +"<driver cache='none'/>" 
 +</file> 
 + 
 +===== Serial console access (guest) ===== 
 + 
 +Adjust Grub2 configuration /etc/default/grub: 
 + 
 +<file> 
 +GRUB_CMDLINE_LINUX="console=ttyS0,115200n8" 
 +GRUB_SERIAL_COMMAND="serial --speed=1152200 --unit=0 --word=8 --parity=no --stop=1" 
 +</file> 
 + 
 +Adjust /etc/inittab for serial console access: 
 + 
 +<file> 
 +T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100 
 +</file> 
 + 
 +==== Tips ==== 
 + 
 +Convert file config in the native guest configuration format named by format to a domain XML format: 
 + 
 +<file> 
 +virsh [--connect qemu:///system domxml-to-native] domxml-to-native qemu-argv /dev/shm/grml.xml 
 +</file> 
 + 
 +virsh like console access to kvm/qemu: 
 + 
 +<file> 
 +kvm [...] -monitor stdio 
 +</file> 
 + 
 +Block device: 
 + 
 +<file> 
 +qemu-img create -f qcow2 block.img 1G 
 + 
 +    <disk type='block' device='disk'> 
 +      <driver cache='none'/> 
 +      <source dev='/dev/shm/block.img'/> 
 +      <target dev='vda' bus='virtio'/> 
 +      <alias name='virtio-disk0'/> 
 +    </disk>
 </file> </file>
  
 ---- ----
-{{tag>workshop vortrag}}+ 
 +{{tag>workshop}}
  • /srv/dokuwiki/data/attic/workshop/libvirt_kvm.1277240624.txt.gz
  • Last modified: 2025-11-09 09:24
  • (external edit)