Redhat Kernel Virtual Machine

advertisement
3 juni 2009
Willem-Geert Nijboer |
[VIRTUALISATIE]
1
3 juni 2009
[VIRTUALISATIE]
Geschiedenis
Document eigenaar: Willem-Geert Nijboer
Datum
Revisie
Editor
Wijzigingen
03-06-2009
Versie 0.1
Willem-Geert Nijboer
Eerste uitgave
Willem-Geert Nijboer |
2
3 juni 2009
[VIRTUALISATIE]
Inhoudsopsgave
Willem-Geert Nijboer |
3
3 juni 2009
[VIRTUALISATIE]
Voorwoord
Tijdens mijn stage heb ik mij bezig gehouden met Kernel-Based Virtual Machine of ook KVM
genoemd.
Dankzij deze technologie is het mogelijk om te besparen op energie verbruik en Servers.
Dit document bevat informatie over verschillende Open Source Virtualisatie technieken die ook in de
Open Source community worden gebruikt maar het doel van dit document gaat echter over KVM.
Dit document is gemaakt door Willem-Geert Nijboer te Groningen, student aan het Noorderpoort
College.
Willem-Geert Nijboer |
4
3 juni 2009
[VIRTUALISATIE]
Verschillende soorten virtualisatie
Hardware emulatie
Dit is de meest complexe virtualisatie die door de hardware wordt geëmuleerd.
In deze methode wordt er een hardwarematige Virtual Machine (VM) gemaakt op een Host Systeem
om de hardware te emuleren.
Helaas zit hier ook een nadeel aanvast, hardware emulatie kan extreem langzaam zijn.
Dit komt omdat elke instructie die wordt uitgevoerd moet worden geemuleerd op de Host Systeem.
Voor grote emulaties dat een Cycle Accuracy gebruikt moet een gesimuleerde CPU Pipelines en
Cacheing, dit gedrag kan de echte snelheid nog vele malen trager worden dan dat het op een fysieke
machine zou zijn.
Full Virtualization
Full Virtualization ook wel bekend als Native Virtualization en is een andere methode virtualisatie.
Dit model maakt gebruik van een Virtual Machine dat hangt tussen de Gast Operating System en de
Native Hardware.
Bepaalde instructies zijn beschermd en moeten binnen de Hypervisor worden behandeld.
Dit komt omdat de Operating System niet directe toegang heeft tot de Hardware.
Hij communiceert namelijk via de Hypervisor en de Hardware wordt ook met de Hypervisor gedeeld.
Willem-Geert Nijboer |
5
3 juni 2009
[VIRTUALISATIE]
Full Virtualization is sneller dan Hardware Emulation maar de performance is uiteraard minder dan
op een fysieke machine dit komt door de Hypervisor Mediation.
Het grootste voordeel wat je uit Full Virtualization haalt is dat er een ongemodificeerd Operating
System kan worden gedraaid.
Het nadeel is dan wel weer dat de Operating System de hardware moet ondersteunen anders zal het
echter niet werken.
Paravirtualization
Paravirtualization is een veel gebruikte techniek en is vrij populair.
Toch heeft Paravirtualization veel weg van Full Virtualization, deze methode maakt gebruik van
Hypervisor om gedeelde toegang te krijgen tot het onderliggende hardware maar integreert de
Virtualation-aware code in de Operating System zelf.
Door deze benadering ondervangt hij de behoefte om een Recompliation uit te voeren of te
opsluiten zodat de werkende Systemen in de virtualisatie process gaan samenwerken.
Paravirtualization vereist van de Operating System om gemodificieerd te zijn voor de Hypervisor.
Wat uiteraard een nadeel is, maar Paravirtualizaiton biedt wel de Performance die het dichts bij een
fysieke machine komt.
Net zoals Full Virtualization is het ook mogelijk om met Paravirtualization meerdere Operating
Systems te draaien.
Willem-Geert Nijboer |
6
3 juni 2009
[VIRTUALISATIE]
Operating System-Level Virtualization
Operating System-Level Virtualization maakt gebruik van een andere techniek dan de vorige die hier
boven staan beschreven.
Deze techniek draait de virtualisatie boven op de Operating System zelf.
Deze methode ondersteunt een Operating System vervolgens isoleert hij de Virtuale Machines.
Operating System-Level Virtualization vereist dat er veranderdingen worden gedaan aan het System
Kernel, maar dit heeft wel zijn voordeel zo heb je bij een Virtual Machine een Native Performance.
Lijst Open Source Virtualisatie projecten
Hieronder bevindt zich een lijst over de net genoemde technologieën welk product wat gebruikt.
Uiteraard zijn alle producten geschikt voor Open Source gebruik.
Project
Bochs
QEMU
VMware
z/VM
Xen
UML
Linux-VServer
OpenVZ
Type
Emulation
Emulation
Full Virtualization
Full Virtualization
Para Virtualization
Para Virtualization
Operating System Virtualization
Operating System Virtualization
License
LGPL
LGPL/GPL
Propietary
Propietary
GPL
GPL
GPL
GPL
Hier onder volgt een beschrijving over de genoemde programmas.
Willem-Geert Nijboer |
7
3 juni 2009
[VIRTUALISATIE]
Bochs (Emulatie)
Bochs is een x86 computer simulator, de images kunnen worden geëmigreerd en draait op
verschillende platforms inclusief PowerPC, Alpha, Sparc en MIPS.
Wat Bochs zo interessant maakt is dat deze programma niet alleen de Processor emuleert.
Hij emuleert de hele systeem inclusief de rand apparatuur.
Bochs kan worden geïnstalleerd en geconfigureerd op ouwe systemen die niet echt meer van deze
tijd zijn, de Intel 386 Processor of zijn grote broer de 486, Pentium, Pentium Pro of een 64bit variant.
Bochs kon ook grafische instructies emuleren zoals MMX of 3DNow.
Bochs is makkelijke te gebruiken als Emulator en het draait op elke Linux distributie of op Windows.
QEMU (Emulatie)
QEMU is een andere Emulator net zoals Bochs, er zijn wel een aantal verschillen tussen deze twee
emulators maar het is niet de moeite waard om deze te noemen.
QEMU heeft ondersteuning van twee modus om te draaien.
De eerste modus is de Full System Emulation Mode, deze modus komt vrijwel overeen met Bochs
omdat het ook een complete systeem emuleert.
Dankzij deze modus ondersteund het ook aantal processor architecturen zoals, x86, x86_64, ARM,
SPARC, PowerPC en MIPS.
Deze emulaties werden op redelijke snelheid gedaan dit is te danken aan de dynamische vertaling
tussen het systeem en de hardware.
Uiteraard is het mogelijk om een Windows of Linux Operating System te draaien in deze modus en zo
zijn er nog een aantal meer.
QEMU geeft ook ondersteuning aan de tweede modus, deze modus word de User Mode Emulation
genoemd.
Deze modus kan alleen gedraaid worden op een Linux machine, dit komt omdat een Binary die via
een andere architectuur kan worden gestart.
Dankzij deze Binary zou het mogelijk kunnen zijn om in Linux een MIPS architectuur te laten draaien.
Zo zijn er natuurlijk ook andere architectuur onderstuurd zoals ARM, SPARC en PowerPC uiteraard is
nog meer in ontwikkeling.
Willem-Geert Nijboer |
8
3 juni 2009
[VIRTUALISATIE]
VMware (Full Virtalization)
VMware is een commerciële oplossing voor Full Virtualization.
VMware werkt met een Hypervisor die tussen de Gast Operating System en Hardware zit als een
abstractielaag.
De abstractielaag zorgt ervoor dat elke Operating System op de Hardware draait zonder ervan te
weten dat er meerdere machines zijn.
VMware virtualiseert ook de beschikbare I/O hardware en zorgt ervoor dat de Hypervisor goed loopt.
Het gehele virtuele omgeving wordt opgeslagen als een bestand, met de bedoeling dat een bestand
snel kan worden geëmigreerd of over gekopieerd.
z/VM (Full Virtualization)
De z/VM is een Operating System Hypervisor voor System z dit is gemaakt door IBM.
Bij de kern is er een Controleprogramma (CP), die zorgt voor de virtualisatie en dat de virtuele
machine de middelen krijgt zodat het werkt. Dit geeft de toegang tot meerdere processoren en
andere bronnen om te worden gevirtualiseerd.
Z/VM kan ook een LAN virtualiseren dit is gedaan zodat Virtual Machines gewoon met elkaar kunnen
communiseren. Dit wordt allemaal geemuleerd in de Hypervisor en is hoog beveiligd.
Willem-Geert Nijboer |
9
3 juni 2009
[VIRTUALISATIE]
Xen (Paravirtualization)
Xen is een open source oplossing voor Operating system-level paravirtualization van XenSource.
Dankzij de samenwerking tussen de Paravirtualization en de Hypervisor zal de Operating System
bijna op Native Performance draaien.
Xen vereist ook dat de Guest Operating System moet worden gemodificeerd, Operating Systems die
al zijn gepatched kunnen dus per direct functioneren.
Uiteraard uit de perspectief van Linux is het heel leuk want alles is Open Source en dit is opzich wel
een leuke comprimie want het levert een betere Perfomance dan Full Virtualization.
Dan komen we op het perspectief van Support en daar zit uiteraard het probleem in, dat is er haast
niet.
Het is mogelijk om Windows als een Guest in Xen te draaien maar het nadeel hieraan is dat alleen de
Hardware het een klein beetje laat afweten, alleen Intel Vanderpool of AMD Pacifica werken ermee.
De Operating Systems die Xen ondersteunen zijn als volgt: Minix, Plan 0, NetBSD, FreeBSD en Open
Solaris.
User-Mode Linux (Paravirtualization)
User-Mode Linux(UML) geeft je toegang om naast een Linux Operating System nog een Linux
Operating System te draaien in de User-Space.
Elke Linux Guest Operating System bestaat in de processen van de Linux Host Operating System.
Dit geeft de toegang dat je meerdere Linux Kernels kan draaien op 1 Linux Kernel.
In Linux Kernel 2.6 zit nog steeds wel UML in de Main Kernel Tree, maar het moet wel worden
aangevinkt, gerecompiled om te kunnen gebruiken.
Dit zorgt ervoor dat de Virtual Machine de Harware deelt wat beschikbaar is.
Willem-Geert Nijboer |
10
3 juni 2009
[VIRTUALISATIE]
Linus-VServer (Operatin System-Level Virtualization)
Linux-VServer is de oplossing voor operating System-Level Virtaulization.
Linux-VServer virtualiseert de Linux Kernel zodat er meerdere User-Space omgevingen komen, deze
omgevingen worden ook genoemd als Virtual Private Servers (VPS), deze VPS draaien afhankelijk van
elkaar en weten niet date r meerdere Virtual Machines draaien.
Dit isoleert de de User-Space van elkaar, je begint met een concept van de Context.
In Linux-VServer is een Context een Container voor de processen die aan de VPS worden gegeven, dit
is zodat een Tooltje als ps alleen weet van de Processen van VPS.
Tijdens de Boot zal de Kernel een Default Context selecteren, zo zal er ook een Spectator Context
draaien, hier in kan je zo kijken wel processen in de VPS worden gedraaid.
Zoals je kan lezen de Kernel en het interne data structuur zijn gemodificeerd om Virtualization te
ondersteunen.
Linux-VServer maakt ook gebruik van de vorm Chroot om de Root Directory to isoleren van elke VPS.
Chroot creeert een nieuwe Root Directory, dan wordt er een Chroot-Barrier uitgevoerd zodat de VPS
in de Root Directory blijft, dit zorgt er voor dat elke Virtual Machine zijn eigen Root en User list heeft.
Linux-VServer biedt ondersteuning met Linux Kernel 2.4 en 2.6 en functioneerde onder verschillende
platformen zoals de x86, x86-64, SPARC, MIPS, ARM en PowerPC.
OpenVZ (Operating System-Level Virtualization)
OpenVZ is ook een Operating System-Level Virtualization oplossing, net zoals Linux-VServer maar
OpenVZ heeft wat interessante verschillen tegen over Linux-VServer.
OpenVZ is virtualization-aware Kernel day ondersteuning biedt aan geïsoleerde User-Spaces, VPS met
een set gebruikers programma’s voor management.
Het creëren van een VPS gaat makkelijk via de Command-Line.
Alhier een kleine voorbeeld ervan.
$ vzctl create 42 --ostemplate fedora-core-4
Creating VPS private area
VPS private area was created
$ vzctl start 42
Starting VPS ...
VPS is mounted
Willem-Geert Nijboer |
11
3 juni 2009
[VIRTUALISATIE]
Zo is het ook mogelijk om de lijst van VPS op te roepen door in de Command-Line vzlist in te typen.
Deze commando komt er veel overheen met het ps commando wat vaak wordt gebruikt.
OpenVZ kan processen plannen dit is erg handig want OpenVZ heeft een level twee CPU planner.
De eerste planning kijkt welke VPS de processor krijgt, nadat dat klaar is zal de 2e planner het process
uitkiezen en uitvoeren.
OpenVZ heeft ook Beancounters, een Beancounter bestaat uit een aantal parameters die de bronnen
voor een VPS bepalen.
Dit geeft toch een level van controle over de VPS want zo wordt er bepaald hoeveel geheugen de VPS
mag hebben en wat uiteraard beschikbaar is.
OpenVZ heeft ook nog een unieke functie zo kunnen er Checkpoints worden aangemaakt en kan het
worden geemigreerd naar een andere server. Onder Checkpoint wordt verstaan dat de VPS op pauze
kan wordne gezet en kan worden overgeplaatst en dan weer worden gerunned vanaf de nieuwe
server. OpenVZ biedt ondersteuning aan de volgende platformen x86, x86-64 en PowerPC.
Linux KVM
Het meeste nieuwe nieuws is KVM dat uit het Linux kamp is gekomen. Het werkt pas vanaf Linux
Kernel 2.6.20.
KVM is ook een Full-Virtualization oplossing dat uniek is want het maakt van de Linux Kernel een
Hypervisor die gebruikt maakt van een Kernel Module.
Deze Module geeft toegang dat Guest Operating Systems te draaien in de User-Space van de Host
Linux Kernel. De KVM Module in de Kernel stelt de gevirtualiseerde Hardware bloot in de map
/dev/kvm en dan het apparaat naam. De Guest Operating-System heeft toegang tot the KVM Module
door het gebruik te maken van een gemodificeerde QEMU Process voor Hardware emulatie.
De KVM Module introduceert een uitvoerings mode in de Kernel. Waar Vanilla Kernels ondersteuning
biedt voor Kernel Mode en user Mode, KVM introduceert een Guest Mode. De Guest Mode wordt
Willem-Geert Nijboer |
12
3 juni 2009
[VIRTUALISATIE]
gebruikt om alle niet I/O codes uit te voeren, Normal User Mode geeft dan wel weer ondersteuning
aan I/O voor de Guest Operating System.
De introductie van KVM is echt een meilpaal voor Linux want dit presenteert de eerste virtualisatie
technology dat in de Linux Kernel zit.
Het is ook pas vanaf de Linux kernel 2.6.20 te installeren, als Kernel Module wordt 2.6.19 gebruikt.
Als KVM wordt gedraaid op hardware dat virtualisatie ondersteund dan kan het gemakkelijk Linux 32
en 64 Bits draaien en als laatste Windows 32 Bits.
Hypervisor
HyperVisor wordt ook genoemd als Virtual Machine Monitor zorgt ervoor dat je meerdere Operating
Systems kan draaien op 1 machine.
Zo zijn er een aantal verschillende HyperVisors.
Type 1 Hypervisor
Deze type Hypervisor wordt ook Bare Metal of Native genoemd.
Dit houdt in dat de Hypervisor direct op het Hardware draait zonder een Operating System er tussen
draait.
Willem-Geert Nijboer |
13
3 juni 2009
[VIRTUALISATIE]
Type 2 Hypervisor
Deze type Hypervisor draait op de Operating System en is dus softwarematig. Dit houdt ook in dat de
Hypervisor laag een software laag is.
Processor
Het gebruik van KVM is er vereist dat de processor de instructie set Intel-VT of AMD-V ondersteunt.
Dit is van belang, bevat de processor deze set niet dan zal het echter ook niet goed functioneren.
Problemen die erbij komen is dat de Virtual Machine niet geheel geisolleerd is, en niet op Bare Metal
zal draaien.
Intel-VT
Intel VT is een instructie set voor Intel Processoren, Intel VT staat ook bekend als Vanderpool.
Deze technology lijkt blijken als of er meerdere Processoren in het systeem zitten.
Dit is echter uiteraard niet waar, maar het voordeel is hieruit dat per Kern een Operating System kan
draaien.
Intel Virtualization Technology, virtualisatie is uiteraard niets nieuws zo kunnen we ook gewoon
VMware draaien op elke pc.
Maar om op een Single Proccessor meerdere Operating Systems te draaien is niet handig.
Dankzij deze technology lijkt het als of er meerdere Processoren aanwezig zijn.
Willem-Geert Nijboer |
14
3 juni 2009
[VIRTUALISATIE]
Dit ziet er erg naar uit dat gewoon weg het zelfde is als Multitasking of zelfs HyperThreading, maar
hier is echter degelijk wel verschil.
Multitasking zorgt er eigenlijk voor dat er op 1 Operating System en een aantal programma’s parallel
draaien.
Met virtualisatie is het mogelijk om meerdere Operating Systems te draaien en uiteraard per
Operating System dat zijn eigen programma’s draait.
Elke Vituele Operating System draait dan op een Virtual Processor.
HyperThreading simuleert dat er 2 Processoren zijn terwijl er eigenlijk maar 1 fysieke Processor
aanwezig is.
Bij HyperThreading komt er dan ook nog SMP bij (Symmetric Multi Processing) voor de Performance
te balancen.
Zo is het ook mogelijk dat je Processoren tegen komt die HyperThreading en Virtualization
Technology ondersteunen.
Waarom dit erin zit is puur voor meer Performance betere stabiliteit dit is de enige reden waarom
een Processor dit ondersteund.
Willem-Geert Nijboer |
15
3 juni 2009
[VIRTUALISATIE]
De werking ervan is best wel apart en uiteraard voor een betere Performance doen mensen het
graag.
Virtualization Technology heeft in zich een extra instructie set zoals al hierboven was beschreven in
Virtualization Technology een instructie set, maar de instructie set die verborgen zit is Virtual
Machine Extension of ook kort genoemd VMX.
Dankzij VMX zijn er extra instructies bij gekomen, VMPTRLD, VMPTRST, VMCLEAR, VMREAD,
VMWRITE, VMCALL, VMLAUNCH, VMRESUME, VMXOFF en VMXON.
Er zijn 2 modus om onder de virtualisatie te draaien hebben we Root en Non-Root.
Meestal de virtualisatie software of wat ook de Virtual machine Monitor wordt genoemd draait
onder Root. Terwijl de Operating Systems dat wordt gevirtualiseerd draaien onder Non-Root.
Om in 1 van deze modus te komen moet de Software kunnen beschikken om de instructie set aan te
kunnen spreken dit gebeurt met VMXON.
Nu volgt er nog een lijst met de type Processoren van Intel die Virtualizaiton Techonolgy
ondersteunen.
Merk lijn
Pentium 4
Pentium Extreme Edition
Pentium D
Core 2 Duo E
Core 2 Duo E
Core 2 Quad Q
Core 2 Quad Q
Core 2 Extreme X
Core 2 Extreme QX
Core 2 Extreme QX
Xeon series
Intel Atom Z
Intel Core i7
Willem-Geert Nijboer |
Type
662 & 672
955 & 965
920 & 960
63/64/632/642/654/655/675/68500
82/83/84/85/8600
6600 & 6700
93/9400S/945/955/9550S/9650
X6800
6700/6800/6850
9650/9770/9775
3000/5000/7000
520/530/540/550/515
920/940/950/965/975
Kern
Prescott 2M
Presler
Presler
Conroe
Wolfdale
Kentsfield
Yorkfield
Conroe_XE
Kentsfield_XE
Yorkfield_XE
Conroe/Dempsey/Paxville MP
Silverthorne
Bloomfield
16
3 juni 2009
[VIRTUALISATIE]
AMD-V
De tegenhanger van Intel heeft uiteraard ook zo zijn dingen in petto.
Zo heeft AMD de technologie ontwikkelt die AMD-V heet (Advanced Micro Devies
VirtualizationTechonolgy) uiteraard beweert AMD dat hun Processoren beter zijn dan die van Intel.
AMD vertelt zo ook dat hun Processor beschikt over een Virtualisatie laag, en dat dan daar boven op
de Guest Operating System draait.
AMD biedt dan ook dat de Virtualisatie direct contact heeft met de Architectuur van de Processor.
Hierdoor heeft de Processor sneller contact met elkaar, geheugen en de I/O Hub.
Dit resulteert dan in betere Performance en stabiliteit dankzij dat de Processoren van AMD 64 Bits
standaard zijn is er complete ondersteuning voor applicaties die 32 Bits zijn.
Willem-Geert Nijboer |
17
3 juni 2009
[VIRTUALISATIE]
Uiteraard waar het tegenwoordig allemaal nog om draait is energie besparing, de AMD Processoren
hebben ook nog de PowerNow! Erin zitten dit zorgt ervoor dat de Processor niet de hele nacht
onnodig stroom staat te gebruiken.
Helaas valt er weinig technische informatie te vinden over AMD-V maar het zal voornamlijke
ongetwijfeld de zelfde verhaal zijn als die van Intel
Merklijk
Athlon 64
Athlon 64 LE
Athlon 64
Athlon 64
Athlon 64
Athlon 64 X2
Athlon 64 X2
AMD Athlon 64X2
Athlon 64
Athlon 64 Quad
AMD Opteron
AMD Opteron
AMD Opteron Quad
AMD Opteron Quad
AMD Opteron Quad
AMD Opteron Quad
AMD Opteron Quad
AMD Opteron Quad
Willem-Geert Nijboer |
Type
30/32/35/35F3/38/38F3/4000
16/162/1640
3500+
35+/38+/LE01640B/LE1640/LE1660
20/26/3100+
38/40/42/44/46/48/50/50F52/52/54/56/60/6400
36/38/38/40/42/44/46/46/48/50/5200+
36/40/42/44/46/48/50/52/54/56/58/6000
FX-62
FX70/FX72/FX74
1200 Series
2200 Series
1352/1354/1356
2300 Series
2300 Series
8300 Series
8300 Series
2400 Series
Kern
Orleans
Orleans
Orleans
Lima
Lima
Windsor
Windsor
Brisbane
Windsor
Windsor
Santa Ana
Santa Rosa
Budapest
Barcelona
Shanghai
BarcelonaA
Shangai
Istanbul
18
3 juni 2009
[VIRTUALISATIE]
Ubuntu KVM installatie
KVM kan ook worden geïnstalleerd op een Open Source producten.
Dit is uiteraard goedkoper en makkelijker voor de mensen die het
thuis willen proberen.
Zoals in dit document valt te lezen zijn er een aantal eisen voor het
gebruik van KVM.
Zo moet de Processor minimaal ondersteuning bieden aan Intel-VT
of AMD-V.
Controle Processor Hardware Virtualisatie
Als eerst gaan wij kijken of de Processor hier ondersteuning aanbiedt dit doen wij door de volgende
commando uittevoeren in de Terminal van Ubuntu.
egrep '(vmx|svm)' --color=always /proc/cpuinfo
Wordt er niks getoond, dan houdt dit in dat de Processor geen ondersteuning biedt aan Intel-VT of
AMD-V.
Weetje toch echt zeker dat het systeem wel ondersteuning ervoor biedt, moet er echter even
gekeken worden in de Bios.
Wordt er wel wat getoond, dan is er ondersteuning voor deze technologie.
Controle Processor 64 Bits ondersteuning
Wordt er meer geheugen gebruikt dan 3Gb dan is het verstandig om de 64 Bits versie van de
Operating System te installeren.
Dit geval maken we gebruik van de 64 Bits editie van Ubuntu , om te controleren of de Processor ook
64 Bits ondersteuning heeft tikken we de volgende commando in de Terminal.
grep ' lm ' /proc/cpuinfo
Wordt er niks getoond dan heeft de Processor geen ondersteuning voor 64 Bits, dit is niet erg want
KVM valt ook te installeren onder 32 Bits.
Het enige nadeel van 32 Bits gebruik is de kans op weinig geheugen erg groot.
Willem-Geert Nijboer |
19
3 juni 2009
[VIRTUALISATIE]
Controle Kernel
Nu gaan we controleren welke Kernel we draaien, dit doen we door de volgende commando in de
Terminal in te typen.
uname -m
Nu wordt er getoond welke Kernel is geïnstalleerd is het de x86_64 dan draait het systeem een 64
Bits versie.
Komt er echter i386, i486, i 586 of i 686 dan draait er een 32 Bits Kernel.
KVM installatie
Nu gaan we KVM installeren en VMbuilder dit is een Tool waardoor je dus de Virtual Machines kan
maken.
aptitude install ubuntu-virt-server python-vm-builder
Daarna moeten we nog een ons zelf toevoegen dit doen we door de volgende code in te voeren.
adduser `id -un` libvirtd
Nu moeten we ons eerst afmelden en dan weer aanmelden om ons tot de Group toe te voegen.
Nu gaan we controleren of KVM is geïnstalleerd.
Dit doe je door de volgende code in te typen.
virsh -c qemu:///system list
Daarna zal je iets moeten zien wat hier op lijkt.
root@server1:~# virsh -c qemu:///system list
Connecting to uri: qemu:///system
Id Name
State
---------------------------------root@server1:~#
Krijg je echter niets dan is KVM niet geïnstalleerd.
Willem-Geert Nijboer |
20
3 juni 2009
[VIRTUALISATIE]
Netwerk bridge creëren
Nu gaan we een Netwerk Bridge maken zodat de Virtual Machines naar buiten kunnen
communiceren.
Dit doen we door het pakket Bridge-utils te installeren we voeren de volgende Commando in.
aptitude install bridge-utils
Nadat het installeren klaar is gaan we de configuratie bestand editen in /etc/network/interfaces.
Dit doen we door de volgende Commando te doen.
vi /etc/network/interfaces
Het configuratie bestand zal er zo uit zien.
# 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
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
Dit moeten we wijzigen naar het volgende.
# 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
# The primary network interface
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.100
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
Willem-Geert Nijboer |
21
3 juni 2009
[VIRTUALISATIE]
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
Zorg ervoor dat de gegevens wel kloppen en sla het op.
We moeten nu de netwerk service herstarten anders functioneert het niet, we voeren de volgende
Commando in.
/etc/init.d/networking restart
Vervolgens om te controleren, voeren we de commando ifconfig uit.
root@server1:~# ifconfig
br0
Link encap:Ethernet HWaddr 00:1e:90:f3:f0:02
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:816 (816.0 B) TX bytes:2228 (2.2 KB)
eth0
Link encap:Ethernet HWaddr 00:1e:90:f3:f0:02
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:24824 errors:0 dropped:0 overruns:0 frame:0
TX packets:14734 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:35463147 (35.4 MB) TX bytes:1301112 (1.3 MB)
Interrupt:251 Base address:0xa000
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
virbr0
Link encap:Ethernet HWaddr ae:74:45:cf:4f:d2
inet addr:192.168.122.1 Bcast:192.168.122.255
Mask:255.255.255.
0
inet6 addr: fe80::ac74:45ff:fecf:4fd2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
Willem-Geert Nijboer |
22
3 juni 2009
[VIRTUALISATIE]
RX bytes:0 (0.0 B)
TX bytes:468 (468.0 B)
root@server1:~#
Zo zou het er nu uitmoeten zien en er is nu een bridge gemaakt.
Maken van een VM
Nu dat we net alles hebben ingesteld kunnen we nu onze eerste Virtual Machine maken.
Zal de Virtual Machine echter toch heel erg worden belast, dan wordt er aangeraden om gebruik te
maken van LVM.
We gaan eerst een aantal mappen maken die gewoon simpel vm1, vm2, vm3 heten.
Het probleem is dat alle Virtual Machines niet in 1 map kunnen.
We voeren dus even deze Comando uit zodat de map wordt gemaakt en de Libvirt template wordt
overgezet.
mkdir -p ~/vm1/mytemplates/libvirt
cp /etc/vmbuilder/libvirt/* ~/vm1/mytemplates/libvirt/
Nu moeten we nog de Virtual machine partitioneren.
We maken eerst een text bestand die vmbuilder.partition heet deze plaatsten we in de map /vm1/.
Vervolgens openen we het bestand en maken we de volgende regels erin aan.
root 8000
swap 4000
--/var 20000
Dit geeft aan dat de de Root schijf uit 8Gb betaat de Swap uit 4Gb en dat Var uit 20Gb bestaat.
Uiteraard kun je dit aanpassen naar eigen wensen.
We gaan nu een script maken die noemen we Boot.sh deze zal moeten worden opgestart wanneer
een Virtual Machine voor het eerst wordt opgestart.
We gaan ervoor zorgen dat er een SSH Server op de Virtual Machine gaat draaien. Hierdoor heeft het
zijn eigen unieke sleutel, als Default staat er Administrator als username dit kan je vervangen.
Het volgende moet in de script staan.
Willem-Geert Nijboer |
23
3 juni 2009
[VIRTUALISATIE]
# This script will run the first time the virtual machine boots
# It is ran as root.
# Expire the user account
passwd -e administrator
# Install openssh-server
apt-get update
apt-get install -qqy --force-yes openssh-server
Gezien dat elke VM pakketen moet downloaden van het internet is het uiterst handig om even een
Proxy Server te installerne.
We voeren de volgende commando in
aptitude install apt-proxy
Nu openen we de configuratie bestand
vi /etc/apt-proxy/apt-proxy-v2.conf
We vervangen dan de het HTTP adres naar een adres wat dicht bij je in de buurt is.
[...]
[ubuntu]
;; Ubuntu archive
backends = http://nl.archive.ubuntu.com/ubuntu
min_refresh_delay = 15m
[...]
Nadat dit is gedaan gaan we de Proxy herstarten dit doen we door de volgende Commando in te
voeren.
/etc/init.d/apt-proxy restart
Nu dat de Proxy is geinstalleerd gaan we nu kijken wat we allemaal kunnen met VMbuilder.
We tikken de volgende commando in.
vmbuilder kvm ubuntu --help
Zo kunnen we zien voor nog meer opties.
Nu gaan we onze eerste Virtual Machine maken, we gaan naar VM1.
cd ~/vm1/
Willem-Geert Nijboer |
24
3 juni 2009
[VIRTUALISATIE]
Nu gaan we dan VMbuilder opstarten en dat doen we als volgt.
vmbuilder kvm ubuntu --suite=intrepid --flavour=virtual --arch=amd64 -mirror=http://192.168.0.100:9999/ubuntu -o --libvirt=qemu:///system --tmpfs=- --ip=192.168.0.101 -part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator -pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid -firstboot=boot.sh --mem=256 --hostname=vm1 --bridge=br0
Dit zijn erg lange codes gelukkig op deze website kan je doormiddel van selecteren de code klaar
maken. Klik hier
Nadat het bouw process klaar is kan je een configuratie bestand vinden in /etc/libvirt/qemu en dan
zal er een VM1.xml aanwezig moeten zijn.
Dus we gaan eerst even kijken of hij aan is gemaakt in die map.
ls -l /etc/libvirt/qemu/
Al ser dus wel 1 is aangemaakt dan zal het er zo uitzien.
root@server1:~/vm1# ls -l /etc/libvirt/qemu/
total 8
drwxr-xr-x 3 root root 4096 2009-05-07 12:50 networks
-rw------- 1 root root 1030 2009-05-07 14:28 vm1.xml
root@server1:~/vm1#
Uiteraard voor controle waar de Images van de Virtual Machines staan.
ls -l ~/vm1/ubuntu-kvm/
root@server1:~/vm1# ls -l ~/vm1/ubuntu-kvm/
total 389608
-rw-r--r-- 1 root root 235438080 2009-05-07 14:27 disk0.qcow2
-rw-r--r-- 1 root root 163119104 2009-05-07 14:28 disk1.qcow2
root@server1:~/vm1#
Willem-Geert Nijboer |
25
3 juni 2009
[VIRTUALISATIE]
Beheren van een VM
Virtual Machines worden beheerd met Virsh dit staat voor Virtual Shell, om te connecten naar een
Virtual Shell draaien we de volgende commando.
virsh --connect qemu:///system
Als het goed is zal je dan ongeveer het soort gelijke op het scherm krijgen.
root@server1:~/vm2# virsh --connect qemu:///system
Connecting to uri: qemu:///system
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh #
Uiteraard gaan we eerst kijken welke Commandos er zijn in Virsh.
We typen de help commando in.
virsh # help
Commands:
help
print help
attach-device attach device from an XML file
attach-disk attach disk device
attach-interface attach network interface
autostart
autostart a domain
capabilities capabilities
connect
(re)connect to hypervisor
console
connect to the guest console
create
create a domain from an XML file
start
start a (previously defined) inactive domain
destroy
destroy a domain
detach-device detach device from an XML file
detach-disk detach disk device
detach-interface detach network interface
define
define (but don't start) a domain from an XML file
domid
convert a domain name or UUID to domain id
domuuid
convert a domain name or id to domain UUID
dominfo
domain information
domname
convert a domain id or UUID to domain name
Willem-Geert Nijboer |
26
3 juni 2009
[VIRTUALISATIE]
domstate
domain state
domblkstat get device block stats for a domain
domifstat
get network interface stats for a domain
dumpxml
domain information in XML
edit
edit XML configuration for a domain
find-storage-pool-sources discover potential storage pool sources
find-storage-pool-sources-as find potential storage pool sources
freecell
NUMA free memory
hostname
print the hypervisor hostname
list
list domains
migrate
migrate domain to another host
net-autostart autostart a network
net-create create a network from an XML file
net-define define (but don't start) a network from an XML file
net-destroy destroy a network
net-dumpxml network information in XML
net-edit
edit XML configuration for a network
net-list
list networks
net-name
convert a network UUID to network name
net-start
start a (previously defined) inactive network
net-undefine undefine an inactive network
net-uuid
convert a network name to network UUID
nodeinfo
node information
nodedev-list enumerate devices on this host
nodedev-dumpxml node device details in XML
nodedev-dettach dettach node device its device driver
nodedev-reattach reattach node device its device driver
nodedev-reset reset node device
pool-autostart autostart a pool
pool-build build a pool
pool-create create a pool from an XML file
pool-create-as create a pool from a set of args
pool-define define (but don't start) a pool from an XML file
pool-define-as define a pool from a set of args
pool-destroy destroy a pool
pool-delete delete a pool
pool-dumpxml pool information in XML
pool-edit
edit XML configuration for a storage pool
pool-info
storage pool information
pool-list
list pools
pool-name
convert a pool UUID to pool name
pool-refresh refresh a pool
pool-start start a (previously defined) inactive pool
pool-undefine undefine an inactive pool
pool-uuid
convert a pool name to pool UUID
Willem-Geert Nijboer |
27
3 juni 2009
[VIRTUALISATIE]
quit
quit this interactive terminal
reboot
reboot a domain
restore
restore a domain from a saved state in a file
resume
resume a domain
save
save a domain state to a file
schedinfo
show/set scheduler parameters
dump
dump the core of a domain to a file for analysis
shutdown
gracefully shutdown a domain
setmem
change memory allocation
setmaxmem
change maximum memory limit
setvcpus
change number of virtual CPUs
suspend
suspend a domain
ttyconsole tty console
undefine
undefine an inactive domain
uri
print the hypervisor canonical URI
vol-create create a vol from an XML file
vol-create-as create a volume from a set of args
vol-delete delete a vol
vol-dumpxml vol information in XML
vol-info
storage vol information
vol-list
list vols
vol-path
convert a vol UUID to vol path
vol-name
convert a vol UUID to vol name
vol-key
convert a vol UUID to vol key
vcpuinfo
domain vcpu information
vcpupin
control domain vcpu affinity
version
show version
vncdisplay vnc display
virsh #
We voeren nu de Commando list uit dit zal dan de draaiende virtuele machines laten zien.
list –all
shows all VMs, running and inactive:
virsh # list --all
Id Name
State
---------------------------------- vm1
shut off
- vm2
shut off
virsh #
Willem-Geert Nijboer |
28
3 juni 2009
[VIRTUALISATIE]
Voordat we als eerst de Virtual Machine opstarten moet je eerst zijn .xml bestand aanwijzen die zich
bevindt in /etc/libvirt/qemu/.
Dit doe je met de Define Commando.
define /etc/libvirt/qemu/vm1.xml
Onthoud wel dat elke keer als er iets wordt gewijzigd in de vm1.xml dan moet je hem elke keer de
Define commando uitvoeren.
Nu dat dit is gedaan gaan we de Virtual Machine starten.
We typen nu de commando in om hem te starten.
start vm1
Na een paar momenten dan zou je via een SSH client moeten kunnen connecten.
Meld je aan met de Default Username en wachtwoord en uiteraard na 1e keer aanmelden moet je
die direct wijzigen.
We gaan nu kijken of hij ook echt draait.
We typen de Comando list in.
virsh # list
Id Name
State
---------------------------------3 vm1
running
virsh #
Zo zijn er nog een aantal Commando’s die uiteraard wel handig zijn om te weten.
Commando
Start vm1
Shutdown vm1
Destroy vm1
Suspend vm1
Resume vm1
quit
Willem-Geert Nijboer |
Omschrijving
Start Virtual Machine
Sluit Virtual Machine af
Virtual Machine wordt uigezet
Pauzeert vm1
Vm1 draait weer verder
Sluit de Virtual Shell af
29
3 juni 2009
[VIRTUALISATIE]
KVM Verwijderen
Uiteraard is er ook een mogelijkheid om KVM te verwijderen, dit doe je door de volgende
stappen te volgen.
We tikken in de volgende commando’s in.
$ sudo apt-get purge kvm
Dit zal de KVM Module verwijderen, het kan nog wel zijn dat er configuratie bestanden
overblijven in /etc/.
Nadat dit is verwijderd gaan we de laatste Commando uitvoeren voor het verwijderen.
$ sudo dpkg -P kvm
Nu is KVM compleet verwijderd en kan niet meer worden gebruikt.
Willem-Geert Nijboer |
30
3 juni 2009
[VIRTUALISATIE]
Netwerkkaart Bridgen
Zodra KVM is geïnstalleerd is het handig om de netwerkkaart te bridgen.
Zo kan de Virtuele Machine wel verbinding maken met de buiten wereld.
We beginnen met het installeren van de Bridge tools.
We voeren deze Commando in.
sudo apt-get install bridge-utils
Nu gaan we wat dingen aanpassen hier voor moeten we eerst onze netwerk service stoppen dit doen
we door de volgende Commando in te typen.
sudo invoke-rc.d networking stop
Nu gaan we een Bridge Interface toevoegen, dit doen we door de configuratie bestand te wijzigen in
/etc/network/interfaces
We gaan nu dus de configuratie bestand aanpassen met de volgende gegevens.
Dit zijn de wijzegingen voor een Static IP.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Als er toch gebruik wordt gemaakt van een DHCP Server moeten de regels gewijzigd worden naar het
volgende.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
Willem-Geert Nijboer |
31
3 juni 2009
[VIRTUALISATIE]
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Dit zal de Virtual Bridge Interface (br0) maken.
Natuurlijk moeten we ook weten of het werkt, we gaan eerst de netwerk service herstarten.
sudo /etc/init.d/networking restart
Configureer Ubuntu-VM-Builder voor Bridge Guests
De configuratie bestand van van Ubuntu-VM-Builder bestaat uit een .XML bestand hierin kunnen we
de configuratie aanpassen.
Het bestand is te vinden in /usr/share/ubuntu-vm-builder/templates/libvirt.tmpl.
We open het bestand en vervangen de regels naar.
<interface type='bridge'>
<mac address='%MAC%'/>
<source bridge='br0'/>
</interface>
Overzetten van bestaande VMs
Als er al eerder VMs zijn gemaakt en deze moeten ook connectie maken via een Bridge is dit vrij
makkelijk aan te passen.
Dit doe je in /etc/libvirt/qemu/ en dan zal er onwaarschijnlijk het bestand er ongeveer zo uit zien.
<interface type='network'>
<mac address='00:11:22:33:44:55'/>
<source network='default'/>
</interface>
Hier moeten we de volgende dingen in veranderen.
<interface type='bridge'>
<mac address='00:11:22:33:44:55'/>
<source bridge='br0'/>
</interface>
Onthoud wel dat de eerste octet van het Mac adres gelijk is aan alle machines.
Wordt dit echter veranderd dan zullen er problemen optreden voor netwerk connectie.
Willem-Geert Nijboer |
32
3 juni 2009
[VIRTUALISATIE]
Het enige wat je nu nog moet doen is de VM herstarten en klaar.
DNS en DHCP voor Guests
Libvirt maakt gebruik van DNSmasq om de IP adressen uit te delen aan de Virtual Machines die
geconfigureerd zijn om DHCP te gebruiken.
Als de Host machine een IP adres heeft van 192.168.1.100 moet dit adres ook worden toegevoegd
aan in de lijst van Libvirt, zo kan de Host dan als DNS functioneren voor de Virtual Machines.
Gelukkig is DNSmasq slim genoeg om niet naar Libvirt te kijken maar naar /etc/resolv.conf van het
omzetten van niet Libvirt adressen.
Zo zal de configuratie bestand er nu ongeveer uitzien in /etc/resolv.conf.
search example.com
nameserver 10.0.0.1
Dit zal veranderd moeten worden naar het volgende.
search example.com
nameserver 192.168.122.1
nameserver 10.0.0.
Nu gaan we het even testen, wat als er een virtuele machine aanwezig was die de naam test64 had
dit is uiteraard wel met gebruik van een Ubuntu Virtual Machine.
$ host test64
test64 has address <IP address given by dnsmasq>
Nu gaan we nog even een SSH test uitvoeren zodat het wel functioneerd.
$ ssh test64
Als het goed is moet het nu hebben gewerkt.
Willem-Geert Nijboer |
33
3 juni 2009
[VIRTUALISATIE]
Maken van een Virtual Machine
De beste tool om te gebruiken onder Ubuntu is Ubuntu-VM-builder.
Dit gaan we als eerst installeren, we voeren in de Command-Line de volgende commando.
sudo apt-get install ubuntu-vm-builder
Nu gaan we een virtual machine maken,we voeren de volgende Commando in.
sudo ubuntu-vm-builder kvm hardy
De Commando die net is ingevoerd zorgt ervoor dat er een Virtual Machine wordt gemaakt voor
Ubuntu Hardy.
Uiteraard is het mogelijk om extra codes toe te voegen maar al dat getype is erg lang gelukkig heb ik
hier een link die alles makkelijker maakt. Klik hier
Willem-Geert Nijboer |
34
3 juni 2009
[VIRTUALISATIE]
Ubuntu Virtual Machine Builder Advanced
Wat is Ubuntu VMbuilder
De VMbuilder is een Script dat automatisch de processen uitvoert om het maken van een
Virtual Machine.
De JeOS CD is hier niet bij nodig en de Hypervisors die Ubuntu VMbuilder ondersteunt zijn
KVM, Xen en VMware.
VMBuilder is als eerst geïntroduceerd als een Shell Script in Ubuntu 8.04, de VMbuilder is
eigenlijk egonnen als ene Hack voor Developers om hun nieuwe geschreven code te testen in
eenVirtual Machine zonder dat ze elke keer te hoeven herstarten.
Nadat Administrators de Script door hadden gingen ze het verbeteren voor andere doel
einden, vervolgens heeft de auteur van de Script het overnieuw geschreven in Python met de
volgende Design doelen.



Develop zodat het kan worden gebruikt in de distributie
Gebruik van een Plug-In zodat het makkelijk is om contact te maken met andere Open
Source Virtualisatie technieken.
Makkelijke manier via Web Interface als een alternatief dan het Command-Line
Installatie Ubuntu-VMbuilder
We beginnen met het installeren van python-vm-builder, dit pakket hebben we nodig.
sudo apt-get install python-vm-builder
Nu wordt de VMbuilder geïnstalleerd.
Een VM defineren
Het defineren van een Virtual Machine is in Ubuntus VMbuilder vrij simpel.
De VMbuilder Command-Line heeft 2 hoofd parameters die je kan gebruiken.
1e parameter
: de virtualisatie technologie (Hypervisor)
Willem-Geert Nijboer |
35
3 juni 2009
2e parameter
[VIRTUALISATIE]
: de gekozen distributie (distro)
De commando zal er dan ongeveer zo uitzien.
vmbuilder <hypervisor> <distro> --help
We gaan nu een stukje van de Command-Line laten zien zodat er een indruk is hoe het werkt.
sudo vmbuilder kvm ubuntu --suite intrepid --flavour virtual --arch i386
o --libvirt qemu:///system
-
Zo wordt de Command-Line dus gedaan, nu een kleine uitleg waarom bepaalde Commandos er
tussen zaten.
1.
2.
3.
4.
5.
- -suite
- -flavour
- -arch i386
-o
- -libvirt
: defineert de Ubuntu versie.
: specificeert de Virtual Kernel.
: betekent een 32Bit machine.
: vertelt VMbuilder dat de ouwe versie moet worden overschreven.
: vertelt de Virtual Omgeving dat er een nieuwe VM bij komt.
Nu hebben we wel een VM aangemaakt maar kun je er niet mee communiceren met het netwerk.
Door dit wel te kunnen doen moet je tijdens het aanmaken van een VM, hieronder een korte uitleg
over wat de Commando’s doen.
1.
2.
3.
4.
5.
6.
- -ip ADRES
- -mask VALUE
- -net VALUE
- -bcast VALUE
- -gw ADRES
- -dns ADRES
: hier vullen het IP adres in van de machine.
: hier vullen we het Subnet masker in.
:
: hier vullen we het Broadcast nr in.
: hier vullen we het Gateway adres in.
: hier vullen we de DNS Server in.
Een voorbeeld van de regel hoe hij zal moeten worden geschreven.
sudo vmbuilder kvm ubuntu --suite intrepid --flavour virtual --arch i386 -o
--libvirt qemu:///system --ip 192.168.0.100
Nu moeten we nog de Libvirt template veranderen naar Bridging.
Dit is natuurlijk wat handiger want nu kunnen de VMs nergens naar toe.
We maken eerst een map aan die Mytemplates heet daarna kopieeren we Libvirt naar net gemaakte
map.
Willem-Geert Nijboer |
36
3 juni 2009
[VIRTUALISATIE]
Voor het aanpassen van de Libvirt bestand voeren we de volgende Commando’s uit.
mkdir -p mytemplates/libvirt
cp /etc/vmbuilder/libvirt/* mytemplates/libvirt/
Nadat dit is geklaard kunnen we in onze gecreëerde map het gaan toevoegen of we doen het bij de
originele bestand dit is echter de keuze aan u.
Wij hebben gekozen om de bestand in Mytemplates te gaan editen.
We gaan naar de map mytemplatles/libvirt daarna zoeken we naar het bestand libvirtxml.tmpl.
Hier een klein overzicht van wat er in het bestand staat.
<interface type='network'>
<source network='default'/>
</interface>
Nu moet alle gewijzigd worden naar het volgende .
<interface type='bridge'>
<source bridge='br0'/>
</interface>
Om ervoor te zorgen dat een VM de template pakt moeten we wel tijdens het aanmaken van de
regel wel de volgende code toevoegen.
--templates mytemplates
Wordt dit echter niet ingevoerd dan zal er ook niet naar de script worden gekeken.
Overigens wordt er tijdens het creëren van een VM wel gekeken naar /etc/vmbuilder/.
Partitionering
Tijdens het partitioneren van een Virtual Machine is het natuurlijk handig dat je zelf de grote ervan
mag bepalen en dat alles los van elkaar staat.
Dit kun je gelukkig ook met VMbuilder doen.
Hiervoor is de - -part commando.
--part PATH
Allows to specify a partition table in partfile each line of partfile
should specify
(root first):
mountpoint size
where size is in megabytes. You can have up to 4 virtual disks, a new
disk starts on a
line with '---'. ie :
root 1000
/opt 1000
Willem-Geert Nijboer |
37
3 juni 2009
[VIRTUALISATIE]
swap 256
--/var 2000
/log 1500
In onze geval zoeken we naar een tekst bestandje die vmbuilder.partition heet en dan gaan we
vervolgens de volgende regels vervangen.
root 8000
swap 4000
--/var 20000
De kans kan zijn dat de Virtual Machine Image groter is dan dat er is aangegeven.
Nu dat als het goed is alle codes zijn ingevoerd zal de Command-Line er ongeveer nu zo uit zien.
sudo vmbuilder kvm ubuntu --suite intrepid --flavour virtual --arch i386 -o
--libvirt qemu:///system --ip 192.168.0.100 --part vmbuilder.partition -templates mytemplates
Users en wachtwoorden
Zoals altijd met Linux moeten we ook eerst een standaard Gebruiker worden aanmaakt met
wachtwoord.
Dit is uiteraard uiterst verstanding om te noteren in de documentatie.
Hieronder de commando’s met beschrijving.
1. - -user NAME
2. - -name FULLNAME
3. - -pass PASSWORD
: vul hier de naam van de gebruiker in.
: vul hier de volle naam in.
: vul hier de wachtwoord in.
De Command-Line zal er dan zo uit komen te zien.
sudo vmbuilder kvm ubuntu --suite intrepid --flavour virtual --arch i386 -o
--libvirt qemu:///system --ip 192.168.0.100 --part vmbuilder.partition -user user --name user --pass default
Willem-Geert Nijboer |
38
3 juni 2009
[VIRTUALISATIE]
Installeren van extra pakketen
We gaan nu extra pakketen installeren zodat we de Server kunnen benaderen via een Web Interface.
Dit doen we met het pakket LimeSurvey, daarom moet ook de andere programmas worden
geïnstalleerd.
We moeten we de volgende pakketen installeren.
1.
2.
3.
4.
5.
Apache 2
PHP
MySQL
OpenSSH Server
LimeSurvey
Uiteraard wordt dit ook weer gedaan met de
Willem-Geert Nijboer |
39
Download