Redhat Kernel Virtual Machine

Document Sample
Redhat Kernel Virtual Machine Powered By Docstoc
					                3 juni 2009   [VIRTUALISATIE]




Willem-Geert Nijboer |                          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                           Type                              License
Bochs                             Emulation                         LGPL
QEMU                              Emulation                         LGPL/GPL
VMware                            Full Virtualization               Propietary
z/VM                              Full Virtualization               Propietary
Xen                               Para Virtualization               GPL
UML                               Para Virtualization               GPL
Linux-VServer                     Operating System Virtualization   GPL
OpenVZ                            Operating System Virtualization   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                      Type                                    Kern
Pentium 4                      662 & 672                               Prescott 2M
Pentium Extreme Edition        955 & 965                               Presler
Pentium D                      920 & 960                               Presler
Core 2 Duo E                   63/64/632/642/654/655/675/68500         Conroe
Core 2 Duo E                   82/83/84/85/8600                        Wolfdale
Core 2 Quad Q                  6600 & 6700                             Kentsfield
Core 2 Quad Q                  93/9400S/945/955/9550S/9650             Yorkfield
Core 2 Extreme X               X6800                                   Conroe_XE
Core 2 Extreme QX              6700/6800/6850                          Kentsfield_XE
Core 2 Extreme QX              9650/9770/9775                          Yorkfield_XE
Xeon series                    3000/5000/7000                          Conroe/Dempsey/Paxville MP
Intel Atom Z                   520/530/540/550/515                     Silverthorne
Intel Core i7                  920/940/950/965/975                     Bloomfield




Willem-Geert Nijboer |                                                                         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                 Type                                              Kern
Athlon 64                30/32/35/35F3/38/38F3/4000                        Orleans
Athlon 64 LE             16/162/1640                                       Orleans
Athlon 64                3500+                                             Orleans
Athlon 64                35+/38+/LE01640B/LE1640/LE1660                    Lima
Athlon 64                20/26/3100+                                       Lima
Athlon 64 X2             38/40/42/44/46/48/50/50F52/52/54/56/60/6400       Windsor
Athlon 64 X2             36/38/38/40/42/44/46/46/48/50/5200+               Windsor
AMD Athlon 64X2          36/40/42/44/46/48/50/52/54/56/58/6000             Brisbane
Athlon 64                FX-62                                             Windsor
Athlon 64 Quad           FX70/FX72/FX74                                    Windsor
AMD Opteron              1200 Series                                       Santa Ana
AMD Opteron              2200 Series                                       Santa Rosa
AMD Opteron Quad         1352/1354/1356                                    Budapest
AMD Opteron Quad         2300 Series                                       Barcelona
AMD Opteron Quad         2300 Series                                       Shanghai
AMD Opteron Quad         8300 Series                                       BarcelonaA
AMD Opteron Quad         8300 Series                                       Shangai
AMD Opteron Quad         2400 Series                                       Istanbul




Willem-Geert Nijboer |                                                                       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                                               Omschrijving
Start vm1                                              Start Virtual Machine
Shutdown vm1                                           Sluit Virtual Machine af
Destroy vm1                                            Virtual Machine wordt uigezet
Suspend vm1                                            Pauzeert vm1
Resume vm1                                             Vm1 draait weer verder
quit                                                   Sluit de Virtual Shell af



Willem-Geert Nijboer |                                                                       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   [VIRTUALISATIE]

2e parameter    : 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.   - -suite         : defineert de Ubuntu versie.
   2.   - -flavour       : specificeert de Virtual Kernel.
   3.   - -arch i386     : betekent een 32Bit machine.
   4.   -o               : vertelt VMbuilder dat de ouwe versie moet worden overschreven.
   5.   - -libvirt       : 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.   - -ip ADRES             : hier vullen het IP adres in van de machine.
   2.   - -mask VALUE           : hier vullen we het Subnet masker in.
   3.   - -net VALUE            :
   4.   - -bcast VALUE          : hier vullen we het Broadcast nr in.
   5.   - -gw ADRES             : hier vullen we het Gateway adres in.
   6.   - -dns ADRES            : 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            : vul hier de naam van de gebruiker in.
    2. - -name FULLNAME        : vul hier de volle naam in.
    3. - -pass PASSWORD        : 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.   Apache 2
   2.   PHP
   3.   MySQL
   4.   OpenSSH Server
   5.   LimeSurvey



Uiteraard wordt dit ook weer gedaan met de




Willem-Geert Nijboer |                                                                   39

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:15
posted:11/6/2011
language:Dutch
pages:39