Difference between revisions of "KVM"
(→Bijplaatsen extra disk) |
(→qemu-system-x86 100% CPU) |
||
Line 364: | Line 364: | ||
</pre> |
</pre> |
||
qemu-system-x86 moet na korte tijd een normale CPU hebben en virt-top is weer responsief. |
qemu-system-x86 moet na korte tijd een normale CPU hebben en virt-top is weer responsief. |
||
+ | == pid van vm vinden == |
||
+ | ps awx | grep qemu | grep -v grep | sed 's/\s*\([0-9]*\).*-name \(\w*\) .*/\1 \2/' |
||
<hr> |
<hr> |
||
Terug naar: [[Webhuis bouwstenen]] |
Terug naar: [[Webhuis bouwstenen]] |
Revision as of 12:18, 14 June 2014
Contents
Installatie fysieke host
Installeer een kale machine met ruimte voor:
- 8 Gb voor de fysieke machine, primary partition
- 2 Gb swap, eerste logical partition op de extended partition
- LVM op de tweede logical partition van de extended partition
Voor testuitvoer van het KVM gedeelte zie de uitvoer van tests na configuratiestappen in kvm test.
Prepareer LVM
Creeer het physical volume.
root@host:~# pvcreate /dev/md0 root@host:~# pvcreate /dev/md1 root@host:~# vgcreate kvm-root /dev/md0 root@host:~# vgcreate kvm-data /dev/md1
root@host:~# pvcreate /dev/sda7 /dev/sdb7 Physical volume "/dev/sda6" successfully created
en maak vervolens de volume group aan.
root@sauron:~# vgcreate dev-kvm /dev/sda6
Bijplaatsen extra disk
Kijk een beetje uit net het geven van namen aan volume groups. Er ontstaat een duplicate vg name conflict als je twee schijven samenvoegt als ze allebei dezelfde naam voor het physical volume hebben.
root@host:~# pvscan PV /dev/sdb6 VG dev-xen lvm2 [223.52 GiB / 31.52 GiB free] PV /dev/sda7 VG dev-xen lvm2 [216.89 GiB / 16.89 GiB free] Total: 2 [440.41 GiB] / in use: 2 [440.41 GiB] / in no VG: 0 [0 ] /dev/sda7 2081 30394 227432173+ 8e Linux LVM /dev/sdb6 1216 30395 234374144 8e Linux LVM Los dit op met: vgimportclone -i /dev/sdb6
Bijplaatsen netwerk interface
Het toekennen van een extra netwerk interface gaat als volgt:
root@host:~# virsh attach-interface test-host --type bridge --source br1 root@host:~# virsh dumpxml test-host > /etc/libvirt/qemu/test-host.xml
NB. De host zelf moet natuurlijk wel over een tweede interface en een bridge beschiken.
LVM snapshot logical volume
KVM maakt disk image aan op de LVM en daarbinnen partities. Om een partitie te mounten is een tussenstap nodig:
# kpartx -av /dev/dev-kvm/samba add map dev--kvm-samba1 (253:17): 0 32112640 linear /dev/dev-kvm/samba 2048 add map dev--kvm-samba2 (253:18): 0 1435650 linear /dev/dev-kvm/samba 32116734 add map dev--kvm-samba5 : 0 1435648 linear 253:18 2 # mount -t ext3 /dev/mapper/dev--kvm-samba1 /mnt/dev-kvm/samba1/
Zie ook:
Debian
De installatie verloopt vanaf een USB-stick met een netinstall, installeer een kale machine van 4 Gb met een swap space van 2 Gb. De uitvoer van tests na configuratiestappen staat in kvm test . Voorbereiding virtuele machines:
Vervolgens als de machine draait:
udell-kvm:~# apt-get install kvm qemu lvm2 libvirt-bin virtinst bridge-utils virt-manager virt-clone virt-goodies virt-top
- http://wiki.debian.org/KVM
- http://www.howtoforge.com/virtualization-with-kvm-on-a-debian-lenny-server-p3
- http://www.punknix.com/virtualization_kvm
- http://packages.debian.org/nl/lenny/kvm
- http://www.linux-kvm.org/page/Management_Tools
Ubuntu Server
De installatie verloopt via een .iso image van een CDRom, dus na de install is de volgende stap nodig voor zowel de host als de guests:
root@sauron:~# apt-get update && apt-get upgrade
De networkbridge voor KVM
martin@kvm-host:~$ cat /etc/network/interfaces # 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 br0 br1 allow-hotplug eth0 allow-hotplug eth1 iface lo inet loopback # The primary network interface iface br0 inet static address 10.22.23.148 netmask 255.255.255.240 network 10.22.23.144 gateway 10.22.23.145 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off post-up /usr/local/bin/post-up-br0.sh iface br1 inet static address 10.22.23.132 netmask 255.255.255.240 network 10.22.23.128 # gateway 10.22.23.129 bridge_ports eth1 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off martin@kvm-host:~$
udell-kvm:~# /etc/init.d/networking restart
Voeg toe aan /etc/modules
kvm kvm-intel
udell-kvm:~# modprobe kvm kvm-intel
Inspectie dom0
Inspecteer de dom0 met:
root@sauron:~# virt-top
Zie kvm test.
Installatie domU
Prepareer een logical volume
Maak een (voorbeeld) logical partition aan op de gecreeerde volume group
root@sauron:~# lvcreate -L 16G -n support dev-kvm
Zie kvm test voor testuitvoer.
Installatie console
De installatie verloopt middels vncviewer. Maak contact met de fysieke machine als de installatie op de fysieke machine is gestart. Let op: de -Y optie dient om grafisch weer te geven en het poortnummer is de poort waarop vnc voor de te installeren machines luistert.
martin@udell:~$ ssh -Y 192.168.1.201 Enter passphrase for key '/home/martin/.ssh/id_dsa': martin@sauron:~$ xvncviewer localhost:5901 VNC Viewer Free Edition 4.1.1 for X - built Apr 9 2010 18:41:55 Copyright (C) 2002-2005 RealVNC Ltd. See http://www.realvnc.com for information on VNC.
Er verschijnt een grafisch venster, dat dienst doet als console. De installatie gaat hiervandaan verder. Soms verschijnt de volgende melding:
VNC:Rect too big
Start dan xvncviewer als volgt op:
xvnc4viewer -Autoselect=0 localhost:5900 &
Installatie Debian domU
De installatie van een virtuele machine verloopt op de Debian manier via een netinstall. virt-install haalt alle code, inclusief de netboot van de debian repository, in geval van Webhuis via een apt-cacher proxy vanwege de installatie van meerdere machines.
- netinstall
- generatie xml van de virtuele machine install
- start van de install van de virtuele machine
- voortzetting van de installatie via een vnc-console
- generatie xml van de virtuele machine
- start van de virtuele machine
Eerst zoekt virt-install de netinstall: De Mirror van Webhuis bevat de voor de netboot benodigde bestanden. De MANIFEST file staat in:
http:mirror.webhuis.nl/debian/dists/squeeze/main/installer-amd64/current/images.
De installatie bestanden initrd.gz en linux staan in:
http:mirror.webhuis.nl/debian/dists/squeeze/main/installer-amd64/current/images/netboot/debian-installer/amd64
Verversen van deze bestanden gaat met:
wget http://mirrors.nl.kernel.org/debian/dists/squeeze/main/installer-amd64/current/images/MANIFEST wget http://mirrors.nl.kernel.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux wget http://mirrors.nl.kernel.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
root@dom0-123:~# virt-install --connect qemu:///system -n cfengine3 -r 256 --vcpus=2 --disk path=/dev/dev-kvm/cfengine3 \ -l http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64 os-type linux \ --os-variant debiansqueeze --accelerate --network=bridge:br1 --hvm --vnc --force --debug
De installatie met virt-install is vrij intelligent. Het draait om het vinden van de informatie om de installatie te starten. Na enige meldingen van de software die zijn weg zoekt in het archief vindt virt-install de voor de installatie belangrijke bestanden, het is zelfs een netinstall:
Wed, 26 Jan 2011 08:55:50 DEBUG Fetching URI: http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/MANIFEST Wed, 26 Jan 2011 08:55:50 DEBUG Saved file to /var/lib/libvirt/boot/virtinst-MANIFEST.gBEjKl Retrieving file MANIFEST... | 3.3 kB 00:00 ... Wed, 26 Jan 2011 08:55:50 DEBUG Detected a Debian distro Wed, 26 Jan 2011 08:55:50 DEBUG Fetching URI: http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux Wed, 26 Jan 2011 08:56:02 DEBUG Saved file to /var/lib/libvirt/boot/virtinst-linux.aW2jsK=======================- ] 176 kB/s | 2.2 MB 00:00 ETA Retrieving file linux... | 4.6 MB 00:11 ... Wed, 26 Jan 2011 08:56:02 DEBUG Fetching URI: http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz Wed, 26 Jan 2011 08:56:34 DEBUG Saved file to /var/lib/libvirt/boot/virtinst-initrd.gz.724oyj=====================-] 210 kB/s | 6.4 MB 00:00 ETA Retrieving file initrd.gz... | 13 MB 00:31 ...
De xml van de virtuele machine install
Wed, 26 Jan 2011 08:56:34 DEBUG Generated install XML: <domain type='kvm'> <name>cfengine3</name> <currentMemory>262144</currentMemory> <memory>262144</memory> <uuid>8c6c8c04-de68-eab9-fe18-e77b4b69b543</uuid> <os> <type arch='x86_64'>hvm</type> <kernel>/var/lib/libvirt/boot/virtinst-linux.aW2jsK</kernel> <initrd>/var/lib/libvirt/boot/virtinst-initrd.gz.724oyj</initrd> <cmdline>method=http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64</cmdline> </os> <features> <acpi/><apic/><pae/> </features> <clock offset="utc"/> <on_poweroff>destroy</on_poweroff> <on_reboot>destroy</on_reboot> <on_crash>destroy</on_crash> <vcpu>2</vcpu> <devices> <emulator>/usr/bin/kvm</emulator> <disk type='block' device='disk'> <driver name='qemu'/> <source dev='/dev/dev-kvm/cfengine3'/> <target dev='vda' bus='virtio'/> </disk> <interface type='bridge'> <source bridge='br1'/> <mac address='52:54:00:48:30:e6'/> <model type='virtio'/> </interface> <input type='tablet' bus='usb'/> <graphics type='vnc' port='-1' keymap='en-us'/> <console type='pty'/> <video> <model type='cirrus'/> </video> </devices> </domain>
De xml van de virtuele machine
Creating domain... | 0 B 00:00 Wed, 26 Jan 2011 08:56:34 DEBUG Started guest, looking to see if it is running Wed, 26 Jan 2011 08:56:34 DEBUG Launching console callback Wed, 26 Jan 2011 08:56:34 DEBUG Generated boot XML: <domain type='kvm'> <name>cfengine3</name> <currentMemory>262144</currentMemory> <memory>262144</memory> <uuid>8c6549c04-de48-e5b9-fe12-e7596869b543</uuid> <os> <type arch='x86_64'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/><apic/><pae/> </features> <clock offset="utc"/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <vcpu>2</vcpu> <devices> <emulator>/usr/bin/kvm</emulator> <disk type='block' device='disk'> <driver name='qemu'/> <source dev='/dev/dev-kvm/cfengine3'/> <target dev='vda' bus='virtio'/> </disk> <interface type='bridge'> <source bridge='br1'/> <mac address='52:54:00:23:40:6e'/> <model type='virtio'/> </interface> <input type='tablet' bus='usb'/> <graphics type='vnc' port='-1' keymap='en-us'/> <console type='pty'/> <video> <model type='cirrus'/> </video> </devices> </domain>
De installatie is gestart en virt-install heeft de melding het console niet te kunnen openen. virt-install geeft aan dat de rest van de installatie via een console.
Cannot open display: Run 'virt-viewer --help' to see a full list of available command line options Wed, 26 Jan 2011 08:56:35 DEBUG Removing /var/lib/libvirt/boot/virtinst-linux.aW2jsK Wed, 26 Jan 2011 08:56:35 DEBUG Removing /var/lib/libvirt/boot/virtinst-initrd.gz.724oyj Wed, 26 Jan 2011 08:56:37 DEBUG Domain state after install: 1 Domain installation still in progress. You can reconnect to the console to complete the installation process. root@dom0-148:~#
Openen van een console
Het openen van het console verloop via twee stappen.
- Met de grafische optie inloggen op de host
- vnc starten op de console
martin@dell:~$ ssh -Y 10.99.99.99 Enter passphrase for key '/home/martin/.ssh/key': Linux dom0-123 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 Last login: Wed Jan 26 13:46:08 2011 from 10.68.71.149 martin@dom0-123:~$ xvnc4viewer localhost:5900
De vnc console is verre van ideaal, maar wel werkbaar en is tenslotte maar een enkele keer nodig. De machine funcitoneert pas na een handmatige start.
Installatie Ubuntu-server domU
De installatie van een virtuele Ubuntu-server domU verloopt middels een iso-image.
root@sauron:~# virt-install --connect qemu:///system -n test01 -r 128 --vcpus=2 --disk path=/dev/dev-kvm/support \ -c /var/lib/ubuntu-server-10.4.20100612.iso os-type linux --os-variant ubuntulucid --accelerate \ --network=bridge:br0 --hvm --vnc --force --debug
Het nadeel van deze methode is dat het noodzakelijk is om onmiddelijk nadat de host is opgebracht een uprade uit te voeren.
root@sauron:~# apt-get update && apt-get upgrade
console virtuele machine
Een console vanaf de dom0 op een virtuele machine vereist op elke host configuratie instellingen en een eenmalig herstart of start van de geconfigureerde console.
Maak in de virtuele machine het bestand /etc/init/ttyS0.conf aan en voorzie het van de volgende inhoud:
# ttyS0 - getty # # This service maintains a getty on ttyS0 from the point the system is # started until it is shut down again. start on stopped rc RUNLEVEL=[2345] stop on runlevel [!2345] respawn exec /sbin/getty -L 115200 ttyS0 xterm
Herstart de virtuele machine, of geef het volgende commando:
root@sauron:~# start ttyS0
Verbind daarna vanf de dom0 met:
root@sauron:~# virsh console <virtuele machine>
Geef nog een <enter> voor een login prompt als de virtuele console zonder login verschijnt.
Documentatie van Ubuntu: https://help.ubuntu.com/community/KVM/Access
Zie ook kvm test.
Reset root password
- Start de kvm machine
- Grub: esc om het boot proces te onderbreken
- e voor edit van de machine
- voeg aan het eind toe aan de linux regel init=/bin/bash
- crtl x
- in de machine mount -o remount,rw /
- passwd voor een nieuw password
- reboot
Weeggooien domU
Een domU verdwijnt met het commando:
root@sauron:~# virsh undefine <domU>
Verhuizen domU
root@hostA:~# dd if=/dev/vg/domU | gzip -1 - | ssh -i /home/jan/.ssh/id_rsa jan@hostB.webhuis.nl dd of=/media/migratie/domU.tgz gunzip -c svn-disk.tgz | dd of=/mnt/groot/svn-disk.tar
Cloneren domU
Het cloneren van een machine is op zich een eenvoudig proces, maar er is een voozorgsmaatregel noodzakelijk. Zet een hekje in het bestand /etc/udev/rules.d/70-persistent-net.rules voor de volgende regel:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:36:5e:11:af", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Let op, bij een reboot van de clone machine zet udev de regel er doorleuk weer achteraan. Start het cloneren met de opdracht:
root@sauron:~# virt-clone -o clone -n server-5 -m 52:54:00:54:1c:b4 --auto-clone -f /dev/dev-kvm/server-5
Via vncviewer is het ip adres te achterhalen en is de login op dat adres mogelijk.
Praktische toepassing virt-clone
- Maak voor LVM eerst het volume aan
- Specificeer het volume bij het clone commando
- Gebruik de --force optie bij herhaald genereren
- Denk erom de gewraakte netwerk regel uit de udev configuratie te halen na elke boot van de cloneer machine
KVM troubleshooting
qemu-system-x86 100% CPU
Soms hangen virtuele machines, terwijl de host gewoon up is, virt-top reageert niet. Dit is het beeld met top:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3049 libvirt- 20 0 1738m 630m 4880 S 101 3.9 4:33.60 qemu-system-x86
Een simpele reboot werkt niet in dit geval. Het volgende moet gebeuren:
root@host:~# rm /var/run/libvirtd.pid root@host:~# killall -9 libvirtd
Controleer of het proces qemu-system-x86 nog steeds 100% CPU heeft. In dat geval doe je een:
root@host:~# kill -9 qemu-system-x86 root@host:~# /etc/init.d/libvirt-bin start root@host:~# top root@host:~# virt-top
qemu-system-x86 moet na korte tijd een normale CPU hebben en virt-top is weer responsief.
pid van vm vinden
ps awx | grep qemu | grep -v grep | sed 's/\s*\([0-9]*\).*-name \(\w*\) .*/\1 \2/'
Terug naar: Webhuis bouwstenen