![]()
(Laatst bijgewerkt op 10 juli 2011; zie onderaan artikel voor meer informatie)
In het artikel ‘Ubuntu: de perfecte server – Minimale server installeren‘ heb ik beschreven hoe je een minimale server moet installeren. Dit artikel beschrijft hoe je in deze minimale server een of meerdere virtuele server machines kan installeren. Dit doen we met behulp van Oracle’s Virtualbox. De minimale server is de gastheer en de virtuele server machine de gast. Deze virtuele machines, geïnstalleerd zoals hieronder beschreven, werken perfect in de minimale server.
Elke virtuele machine heeft de volgende functies:
- Maakt gebruik van het fysieke netwerk.
Dit doen we door gebruik te maken van de industriestandaard virtio netwerkdriver, die standaard in de kernel van Ubuntu zit. - Optimaal geheugenbeheer.
Het beheren van het geheugen doet VirtualBox met behulp van een aantal specifieke functies:- Nested Paging: dit zorgt er voor dat een aantal geheugenbeheeractiviteiten door de hardware wordt uitgevoerd in plaats van door VirtualBox. Dit hoeft de hypervisor niet meer te regelen en deze virtualisatieslag kan dus overgeslagen worden. Dit geeft een enorm performancevoordeel.
- Ballooning, wat wil zeggen dat het toegewezen geheugen aan een virtuele machine gewijzigd kan worden terwijl deze actief is. Dit werkt door het geheugen van een virtuele machine te verkleinen en dit vrijgekomen geheugen te alloceren aan een andere virtuele machine. VirtualBox beheert dit automatisch en het vrijgekomen geheugen wordt niet teruggegeven aan de gastheer, maar blijft alleen beschikbaar voor VirtualBox.
- Page Fusion voorkomt geheugen duplicatie tussen een of meerdere virtuele machines met exact hetzelfde besturingssysteem (incl. de patches).
Dit functioneert alleen op een 64-bit besturingssysteem.
Voor zowel Ballooning als Page Fusion moet de VirtualBox Guest Additions geïnstalleerd zijn.
- USB gebruik.
- Optimaal IO door virtuele machine.
VirtualBox, draaiende in de gastheer, opent zijn image-bestand als elk normaal programma. Bij het open van het bestand wordt deze door het besturingssysteem van de gastheer gecached. Het voordeel is performance. Er zijn echter ook een aantal nadelen:- Het image-bestand van een virtuele machine kan behoorlijk groot worden en kan daardoor veel geheugenruimte in beslag nemen. Geheugen wat je graag ter beschikking hebt voor de server.
- Als de gastheer uitgesteld schrijven hanteert (disk write caching), dan veronderstelt VirtualBox dat na een schrijfactie deze actie ook daadwerkelijk is uitgevoerd, ook al is dit niet zo. Dit kan verlies van data veroorzaken bij een crash of het plotseling uitvallen van de computer. Linux (en dus ook Ubuntu) maakt standaard gebruik van dit feature en schrijft elke 30 seconden de cache terug naar schijf. Deze terugschrijfactie wordt ook bij het uitzetten van Linux uitgevoerd. Ook Windows kent een dergelijk disk write caching.
- Zowel de gastheer als de gast hebben hun eigen caching en wordt de data tweemaal gecached, terwijl eenmaal voldoende is.
Het is dus aan te bevelen om de optie ‘Gebruik gastheer I/O cache’ uit te vinken. Het schrijven wordt dan uitgevoerd door VirtualBox in een eigen buffer op de gastheer en het lezen wordt uitgevoerd door de gast. SCSI, SATA en SAS controllers ondersteunen dit asynchroon lezen en schrijven. Let op: IDE ontbreekt hier en wordt dus niet ondersteund voor asynchroon lezen en schrijven.