Linuxbabbel - Izegem
Native hypervisors: KVM, Xen, VMWare VSphere
Containers: LXC, OpenVZ, Linux-Vserver, FreeVPS
= dit is een soort chroot; dezelfde hardware, afgeschermde omgeving.
Emulation: Qemu, draaien van bv ARM-software op i368-hardware:
= softwarematig nabootsing van de hardware.
kvm = Kernel Based Virtual Machine
Een volledige virtualisatie oplossing voor Linux op x86 hardware (64-bit) door gebruik te maken van de virtualisatie extenties in de cpu's van Intel VT or AMD-V.
Eigenlijk is kvm = qemu + hardware-versnelling via de cpu.
Soorten virtualisaties:
Open source: QEMU, KVM, XEN, vserver, OpenVZ, LXC
Closed: VirtualBox, vmware, hyper-v
Installatie van kvm
Hoe detecteren of je systeem kvm ondersteunt?
egrep --color '(vmx|svm)' /proc/cpuinfo
Deze is ook goed ;-)
egrep '^flags.*(vmx|svm)' /proc/cpuinfo >/dev/null && echo OK || echo KO
Installeren debian-ubuntu:
sudo apt-get install kvm libvirt-bin virt-manager
Installatie van kvm
Controle of de kvm-kernelmodule geladen is:
lsmod | grep kvm
kvm_amd 51180 0 of kvm_intel
kvm 268970 1 kvm_amd
De libvirt-daemon automatisch laten opstarten bij het booten.
In "/etc/default/libvirt-bin" wijzig:
# Start libvirtd to handle qemu/kvm:
start_libvirtd="yes"
Installatie van kvm
Na installatie van libvirt-bin moet de gebruiker van kvm lid zijn van de groep, debian 'libvirt' en ubuntu 'libvirtd'.
DEBIAN : sudo adduser $USER libvirt
UBUNTU : sudo adduser $USER libvirtd
Beheren van virtuele images:
libvirt-bin: comment-line beheer van kvm (virsh).
virt-manager: grafisch beheer van kvm:
Momenteel ondersteunt libvirt-bin Xen, QEmu, KVM, LXC,
Voordelen:
Echte en vrije virtualisatie,
Zit in de distro-kernel, dus geen extra compilatie van extra kernel-modules (vmware, virtualbox),
Updates volgen de normale update-strategie,
Geen extra commando's te leren:
df -h, kill, htop, ... blijven werken,
KVM werkt op alle pc-types, servers, desktops, laptops, embedded, met dezelfde configuratie-tools,
Alle filesystemen, ondersteund door de kernel, kunnen gebruikt worden <-> VSphere,
Life migratie en klonen.
Nadelen:
Soms nog command-line nodig (maken van images),
Grafisch zitten hier en daar wel wat bugs tussen (raw - qcow2),
Zit in de gewone updates.
Networking
Er bestaan 3 mogelijkheden:
Bridging: de virtuele nic (vnet0) wordt doorgesluisd naar een fysieke nic (eth0),
NAT: de virtuele machines krijgen een virtueel netwerk (virbr0), zoals een router je eigen netwerk masqeert,
Fysieke nic: een fysieke nic wordt toegewezen aan een virtuele machine.
1. Bridging
Install software:
aptitude install bridge-utils
Configuratie in "/etc/network/interfaces"
#iface eth0 inet dhcp
# Set up interfaces manually, avoiding conflicts with, e.g., network manager
iface eth0 inet manual
# Bridge setup
auto br0
iface br0 inet static
#iface br0 inet dhcp
# er was een probleem met de oudere igb-module
pre-up rmmod igb
pre-up modprobe igb
address 172.26.254.16
netmask 255.255.0.0
network 172.26.254.0
broadcast 172.26.254.255
gateway 172.26.254.1
bridge_ports eth0
bridge_stp off
bridge_maxwait 5
bridge_fd 9
bridge_hello 2
dns-nameservers 192.168.0.1 208.67.222.123
dns-search VTI
Reboot de pc.
sudo /etc/init.d/networking restart
sudo invoke-rc.d networking restart
Controleer de bridge br0
/sbin/ifconfig
br0 Link encap:Ethernet HWaddr 00:26:2d:08:70:f9
inet addr:172.26.254.16 Bcast:172.26.254.255 Mask:255.255.0.0
inet6 addr: fe80::226:2dff:fe08:70f8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:277734 errors:0 dropped:0 overruns:0 frame:0
TX packets:223035 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16474265 (15.7 MiB) TX bytes:35099972 (33.4 MiB)
eth0 Link encap:Ethernet HWaddr 00:26:2d:08:70:f9
inet6 addr: fe80::226:2dff:fe08:70f8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4867773 errors:0 dropped:0 overruns:0 frame:0
TX packets:1575647 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
Wanneer een virtuele machine draait, komt er een virtuele netwerkkaart bij:
/sbin/ifconfig vnet0
vnet0 Link encap:Ethernet HWaddr fe:54:00:47:cd:e1
inet6 addr: fe80::fc54:ff:fe47:cde1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:72 errors:0 dropped:0 overruns:0 frame:0
TX packets:267 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:6633 (6.4 KiB) TX bytes:36645 (35.7 KiB)
Alle netwerkverkeer wordt via vnet0 doorgesluisd naar br0 en vandaar naar eth0.
2. NAT
Kies NAT bij 'NIC' voor het maken van een afzonderlijk netwerk.
Virt-manager stelt dit automatisch in.
ifconfig
virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:43 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:5870 (5.8 KB)
3. Fysieke NIC
In virt-manager kies je voor een bepaalde driver voor een NIC.
Images [-f fmt]
Ondersteunde formaten:
raw: Raw disk image format (default), simpel maar neemt veel ruimte in beslag,
qcow2: Meest gebruikt; gecomprimeerde kleinere, aangroeiende images,
qcow: oud, niet meer gebruikt,
vdi: formaat van VirtualBox,
vmdk: formaat van VMware,
... , zie man qemu-img
Aanmaken van een qcow2 image:
Steeds via commandline doen, virt-manager ondersteunt enkel 'raw',
qemu-img create -f qcow2 VMName.qcow2 10G
Deze image importeren in virt-manager,
Pas op met oudere versies, zoals virt-manager 0.8.4-8 op debian-squeeze!
Telkens je iets verandert aan de virtuele disken in de configuratie van virt-manager (image verwijderen of toevoegen), moet je de volgende commando's uitvoeren.
Virt-manager slaat elke image op als 'raw'-type.
Met de unstable-versie en bij ubuntu kan je kiezen welk formaat je image is dat je toevoegd in virt-manager.
Waar plaats je de images?
Ik zet ze onder een map "/virtual-servers/images":
ll /virtual-servers/images/
total 0
drwxr-xr-x 2 ic ic 92 Aug 23 18:52 ltsp-debian
drwxr-xr-x 2 ic ic 47 Aug 23 14:44 win2008-oud
Wijzigen van 'raw' naar 'qcow2' formaat:
Bepaal de vm-naam:
sudo virsh -c qemu:///session list --all
Id Name State
----------------------------------
- VMName shut off
Hiervoor moet je root zijn, omdat deze xml-bestanden niet leesbaar zijn in '/etc/libvirt/qemu/'.
ll /etc/libvirt/qemu/
-rw------- 1 root root 2112 2011-08-24 15:08 VMName.xml
Exporteer de vm-instellingen naar een xml-file:
virsh -c qemu:///session dumpxml VMName > /tmp/VMName.xml
Pas het hard-disk formaat aan in de xml-file:
<driver name='qemu' type='raw'/>
to
<driver name='qemu' type='qcow2'/>>
Importeren van de gewijzigde xml-file:
sudo virsh -c qemu:///session define /tmp/VMName.xml
user.group-permissies terug goedzetten na virsh-gebruik:
sudo chown ic.ic VMName.qcow2
Bronnen:
Bron code presentatie: http://kwlug.org/node/690