Ga naar hoofdinhoud

Wat is een virtuele machine? Typen, voordelen en use-cases

Leer alles over virtuele machines in deze complete gids. Ontdek hoe VM’s werken, hun voordelen, typen en veelvoorkomende use-cases, inclusief hun rol in data science, IT-infrastructuur en cloud computing!
Tim Lu
Tim Lu

Maak je gratis account aan

Oefen en volg je voortgang.

Ga verder met GoogleDoor verder te gaan, accepteer je ons Gebruiksvoorwaarden, onze Privacybeleid en dat je gegevens in de VS worden opgeslagen.

Virtuele machines (VM’s) zijn een kernonderdeel van IT-infrastructuur. Het zijn softwarematige emulaties van fysieke computers die logistieke en computationele flexibiliteit bieden.

In dit artikel leg ik uit wat virtuele machines zijn, hoe ze werken, hun voordelen, veelvoorkomende use-cases en meer!

Wat is een virtuele machine (VM)?

Een virtuele machine is een technologie die complete computersystemen emuleert, van CPU, geheugen, opslag en netwerkinterfaces tot het besturingssysteem.

VM’s lenen resources van de fysieke computer om deze virtuele computers te genereren. Als een computer bijvoorbeeld 8 CPU’s en 16 GB RAM heeft, kunnen we een omgeving virtualiseren met 4 CPU’s en 8 GB RAM, afgesplitst van de fysieke hardware.

We vertrouwen op hypervisors, software die de virtualisatie van hardwarebronnen aanstuurt en meerdere virtuele omgevingen beheert, om meerdere VM’s op één set hardware te beheren.

Virtuele machines vs. fysieke machines

Het is belangrijk om te begrijpen hoe een virtuele machine kan verschillen van een fysieke.

Laten we beginnen met het verschil tussen hardware en software te verduidelijken. Hardware verwijst naar de fysieke componenten van een systeem, zoals het moederbord, de CPU, het geheugen, de GPU en de opslag. Software, zoals het besturingssysteem of andere programma’s, draait op de hardware.

Fysieke machines draaien direct op hardware. VM’s daarentegen draaien software die “gevirtualiseerde” hardware creëert. Zoals we eerder noemden, kan het basissysteem 64 GB RAM hebben, maar we kunnen 32 GB RAM virtualiseren om met de virtuele machine te delen.

Omdat VM’s hardwarebronnen kunnen delen, kunnen we precies de benodigde resources toewijzen die een VM nodig heeft. Als we bijvoorbeeld een krachtige server hebben, kunnen we meerdere VM’s draaien die veel taken parallel uitvoeren met precies de resources die elke VM nodig heeft om zijn taak te volbrengen. Dit kan de algehele resourcebenutting en kosten verbeteren.

De volgende tabel zet virtuele en fysieke machines naast elkaar:

Functie

Virtuele machines (VM’s)

Fysieke machines

Hardwareafhankelijkheid

Draaien op gevirtualiseerde hardware die door software wordt geleverd.

Draaien direct op fysieke hardwarecomponenten.

Resource-allocatie

Delen hardwarebronnen (bijv. RAM, CPU) met andere VM’s.

Volledig toegewijde hardwarebronnen.

Schaalbaarheid

Zeer schaalbaar; meerdere VM’s kunnen op één fysieke machine draaien.

Beperkt door de hardware van de fysieke machine.

Efficiëntie

Maakt betere resourcebenutting mogelijk door alleen noodzakelijke resources toe te wijzen.

Kan leiden tot onderbenutting van hardware.

Flexibiliteit

Eenvoudig te herconfigureren en te repliceren.

Minder flexibel; vereist fysieke aanpassingen of vervangingen.

Kosten

Lagere kosten door het delen van resources.

Hogere kosten omdat elke machine zijn eigen hardware vereist.

Prestaties

Lichte overhead door virtualisatie.

Hogere prestaties door directe hardwaretoegang.

Typen virtuele machines

Er zijn twee hoofdsoorten virtuele machines: systeem en proces. De ene emuleert een volledig besturingssysteem, de andere een enkele applicatie:

Systeem-virtuele machines

Systeem-VM’s zijn waar we het meestal over hebben als we over VM’s spreken. Ze simuleren een compleet besturingssysteem, zoals een volledige Linux-computer. Eén stuk hardware kan op deze manier meerdere OS-instanties simuleren. Dit is handig als we meerdere omgevingen nodig hebben om verschillende dingen te doen.

Cloud-virtuele machines zijn een veelvoorkomend voorbeeld. Daarin worden volledige OS-omgevingen gehost en op afstand via internet benaderd, wat ze ideaal maakt voor schaalbare infrastructuur.

Proces-virtuele machines

Proces-VM’s zijn afzonderlijke processen die op een hostbesturingssysteem draaien. Het zijn geen volledige systemen op zichzelf, maar kleinere omgevingen die elke computer in staat stellen een applicatie te draaien die mogelijk niet native is voor het basismachinesysteem. Zo stelt de Java Virtual Machine elke machine in staat Java-applicaties native te draaien.

Proces-VM’s zijn lichter dan systeem-VM’s en worden veel gebruikt voor het draaien van specifieke, geïsoleerde applicaties, vooral in ontwikkel- en debugscenario’s.

Type VM

Beschrijving

Use-cases

Systeem-virtuele machine

Simuleert een volledige fysieke machine, inclusief hardware en een OS.

Het draaien van meerdere besturingssystemen, serverconsolidatie en testen.

Proces-virtuele machine

Draait één applicatie of proces en biedt een geïsoleerde omgeving.

Platformonafhankelijke applicatie-uitvoering, ontwikkeling en debugging.

Componenten van een virtuele machine

Elke virtuele machine heeft een paar kerncomponenten. Hoewel de exacte implementatie kan verschillen, bevatten ze doorgaans vergelijkbare onderdelen. Laten we ze in deze sectie doornemen.

In het algemeen is een hypervisor de softwarelaag die virtuele machines initialiseert en beheert. Hij regelt de resources tussen de VM en de fysieke machine.

Er zijn twee soorten hypervisors:

  • Type 1-hypervisors draaien rechtstreeks op bare metal en dus op de server zelf. Ze hebben meestal directe toegang tot de bronnen van de server.
  • Type 2-hypervisors worden doorgaans geïnstalleerd op een hostbesturingssysteem. Ze hebben geen volledige controle over de systeembronnen en worden in plaats daarvan door het hostbesturingssysteem beheerd.

De hypervisor wijst virtuele hardware toe aan de VM. Dat betekent dat fysieke resources virtueel van de machine worden gescheiden en aan de virtuele omgeving worden gegeven. Dat kan inhouden dat RAM, CPU-cores en andere rekenbronnen worden opgesplitst zodat de VM processen kan draaien.

Het gastbesturingssysteem draait binnen de VM. Dat hoeft niet hetzelfde besturingssysteem te zijn als de host en kan elk besturingssysteem zijn. Verschillende VM’s op dezelfde hypervisor of server kunnen zelfs verschillende besturingssystemen hebben, afhankelijk van hun use-case.

VM’s hebben vaak virtuele schijven om tijdelijk informatie op te slaan terwijl ze draaien. Soms verplaatsen we gegevens van een virtuele schijf naar het daadwerkelijke opslagsysteem van de hostcomputer, maar dat gebeurt zorgvuldig om schade aan de host te voorkomen.

Architectuurdiagram van een virtuele machine met de belangrijkste componenten

Architectuurdiagram van een server met drie virtuele machines. Beeldbron: DataCamp.

Virtuele machines vs. containers

Een andere populaire vorm van virtualisatie is containerisatie. Hoewel ze vergelijkbare doelen kunnen hebben, verschillen virtuele machines en containers flink in de implementatie. Laten we de verschillen bekijken.

  • Virtuele machines zijn ontworpen om het volledige apparaat te repliceren, inclusief de hardware. Dat betekent dat een VM zaken als een moederbord, CPU en netwerkapparaat repliceert zodat applicaties die op de VM draaien, lijken te draaien op onafhankelijke hardware.
  • Containers zijn daarentegen ontworpen om specifieke softwareapplicaties te draaien, ongeacht de omgeving. Ze initialiseren hun resources niet zelf, maar gebruiken de resources van de hostcomputer.

Architectuurdiagram van een container met de belangrijkste componenten

Architectuurdiagram van een server met drie containers. Beeldbron: DataCamp.

Wanneer VM’s of containers gebruiken

Gebruik VM’s wanneer je meerdere besturingssystemen parallel moet draaien en discrete resourcebeheer nodig hebt. VM’s zijn ook te verkiezen als je een consistente en voorspelbare hoeveelheid resources voor je processen nodig hebt.

Containers zijn daarentegen ideaal voor lichtgewicht applicatie-uitrol. Omdat containers resources delen, is het belangrijk om ervoor te zorgen dat je server meerdere containers tegelijk aankan en resources passend kan toewijzen.

Als je nieuw bent met deze concepten, kun je de cursus over containerisatie- en virtualisatieconcepten handig vinden om hun use-cases te begrijpen. Voor een diepere duik in hoe VM’s en containers verschillen, bekijk de blogpost waarin containers en virtuele machines worden vergeleken.

Voordelen van virtuele machines

Virtuele machines hebben veel voordelen, waaronder een hogere resource-efficiëntie en beveiliging. Het juist inzetten van VM’s kan je technologische infrastructuur eenvoudiger en robuuster maken. Laten we hun voordelen van dichterbij bekijken:

Resource-efficiëntie en kostenbesparing

Omdat VM’s dezelfde hardware delen, kun je veel meer uit je fysieke servers halen door VM’s te gebruiken. Het combineren van verschillende omgevingen vermindert de noodzaak om hardware aan te schaffen voor een specifiek gebruik en maakt gedeeld gebruik van resources en algehele kostenbesparingen mogelijk.

Isolatie en beveiliging

Omdat elke VM onafhankelijk van het hostsysteem draait, is deze van nature geïsoleerd. Dit verhoogt de beveiliging door het risico te minimaliseren dat het crashen of compromitteren van één systeem een groter probleem wordt. Meestal is er geen communicatie tussen VM’s en zijn ze niet van elkaar afhankelijk, waardoor problematische VM’s eenvoudig kunnen worden uitgeschakeld of beveiligingsproblemen snel kunnen worden geïsoleerd.

Flexibiliteit en portabiliteit

VM’s bieden veel flexibiliteit voor IT-infrastructuren omdat ze eenvoudig te repliceren zijn. Dit vereenvoudigt zaken wanneer meerdere omgevingen gelijktijdig moeten worden opgestart, omdat ze dezelfde opstartinstructies kunnen delen. Dit maakt ook eenvoudig testen, back-ups en disaster recovery mogelijk.

Veelvoorkomende use-cases voor virtuele machines

Laten we enkele van de meer gangbare toepassingen van VM’s bespreken. Ze kunnen elke taak uitvoeren die op een normale computer kan worden gedaan en zijn van onschatbare waarde voor allerlei operaties!

Test- en ontwikkelomgevingen

Ontwikkelaars gebruiken VM’s vaak om test- en ontwikkelomgevingen te creëren voor nieuwe software of patches. VM’s maken het gemakkelijk om wijzigingen aan een programma in verschillende ecosystemen grondig te testen zonder de hostmachine te beïnvloeden. Eén script kan worden gebruikt om dezelfde wijziging op uiteenlopende VM’s te deployen voor testen.

Serverconsolidatie

Professionals consolideren meerdere fysieke servers tot minder exemplaren met behulp van VM’s. Dit vermindert de totale hardware-onderhoudskosten en bespaart ruimte in serverruimtes. Het verbetert ook de resourcebenutting, omdat fysieke machines niet langer aan één omgeving of taak vastzitten.

Legacy-applicaties draaien

Naarmate technologie verandert, kunnen moderne besturingssystemen mogelijk geen legacyprocessen meer ondersteunen. Een VM gebruiken kan deze legacy-applicaties in de lucht houden terwijl ze worden gemoderniseerd, zodat de operaties zonder problemen kunnen doorgaan.

Disaster recovery en back-ups

Met het groeiende volume aan data en informatie kunnen VM’s dienen als snelle back-ups van volledige omgevingen om de robuustheid van een systeem te vergroten. Als één VM op een fysieke server crasht, kunnen andere kopieën van dezelfde VM blijven draaien of het overnemen. Dit is een kernonderdeel van cloud computing.

Cloud computing

Het merendeel van de cloud draait op virtualisatie. Cloudplatforms zoals AWS, Azure en Google Cloud kunnen schaalbare en flexibele infrastructuur bieden omdat het eenvoudig is om virtuele machines te starten en te stoppen. Ze kunnen snel virtuele kopieën maken van volledige websites of programma’s om groeiende vraag te ondersteunen en ze vervolgens weer uitschakelen wanneer ze niet meer nodig zijn.

Wil je meer leren over hoe cloud computing virtualisatie benut, bekijk dan de cursus over het begrijpen van cloud computing.

Virtuele machines in data science

Dankzij hun flexibiliteit en nut zijn VM’s uitstekende tools voor data science! Hier zijn enkele van hun vele toepassingen op dit gebied:

Geïsoleerde ontwikkelomgevingen

Net zoals software engineers VM’s kunnen gebruiken voor het bouwen van unieke ontwikkelomgevingen, kunnen data scientists VM’s gebruiken om geïsoleerde omgevingen te creëren voor verschillende dataprojecten.

Je zou bijvoorbeeld één VM kunnen gebruiken om een predictief model in Python te bouwen en een andere om data voor te bewerken met R. Deze scheiding maakt het mogelijk om meerdere rekenintensieve projecten gelijktijdig in verschillende omgevingen te draaien, wat de efficiëntie verhoogt.

Reproduceerbaarheid in data science-experimenten

Data scientists moeten vaak resultaten kunnen reproduceren. Wanneer je bijvoorbeeld een deep learning-model traint, kun je een VM delen met je collega’s die dezelfde versie van TensorFlow, libraries en datasets bevat. Dit zorgt voor consistentie in experimenten en elimineert het risico dat omgevingsverschillen de uitkomsten beïnvloeden.

Schaalbaarheid voor big data-projecten

Naarmate projecten groeien, kunnen meerdere clusters van virtuele machines in de cloud nodig zijn. Stel je voor dat je een natural language processing-model traint op terabytes aan tekstdata; cloudproviders zoals AWS kunnen de workload automatisch over meerdere VM’s verdelen. Tools zoals Apache Spark kunnen bijvoorbeeld virtuele clusters benutten om grootschalige berekeningen efficiënt af te handelen.

Populaire software voor virtuele machines

Er zijn veel tools waarmee je virtuele machines op je computer en in bedrijfsomgevingen kunt draaien. Dit zijn enkele van de populairste:

VMware

VMware is een van de populairste virtualisatietools voor enterprise-omgevingen. Het biedt robuuste ondersteuning en cloudgebaseerde oplossingen. VMware werkt met klanten samen om tools te leveren voor desktop- en servervirtualisatie, afhankelijk van hun behoeften. Hun belangrijkste hypervisor is de VMware ESXi Type 1-hypervisor, die eenvoudige servervirtualisatie mogelijk maakt en een gebruiksvriendelijke HTML5-interface biedt.

Microsoft Hyper-V

Microsofts Hyper-V is een hypervisor die is afgestemd op de Windows Server-omgeving. Dat betekent dat alle virtualisatie een Windows-OS vereist om te draaien en schijfpartities gebruikt. Het maakt eenvoudige virtualisatie van virtuele desktops in de Windows Server-omgeving mogelijk en is een uitstekende oplossing voor wie in het Windows-ecosysteem of zelfs Azure wil blijven.

VirtualBox

VirtualBox is een van de populairste open-source virtualisatiesoftwarepakketten. Het stelt gebruikers in staat om op hun eigen computers virtuele desktops van welke aard dan ook te creëren. Het biedt een eenvoudige interface en kan schijfimages gebruiken voor eenvoudige reproduceerbaarheid. Dit is een geweldige instaptool in de wereld van virtualisatie en sterk aan te raden voor oefening en ervaring.

KVM (Kernel-based Virtual Machine)

De Linux-kernel stelt je in staat om machines te creëren die KVM’s worden genoemd. Elk modern Linux-systeem wordt geleverd met KVM en stelt gebruikers in staat om elk Linux-gebaseerd stuk hardware in een hypervisor te veranderen. Het benut de bestaande hardware en wordt vaak beheerd met virtualisatiesoftware zoals Red Hat.

Conclusie

Virtuele machines zijn een integraal onderdeel van het IT-ecosysteem doordat je snel meerdere virtuele omgevingen vanaf één server kunt creëren. Ze worden vaak beheerd door hypervisorsoftware, die resources naar behoefte creëert en toewijst. Dit zorgt voor betere resourcebenutting, reproduceerbaarheid, veerkracht en efficiëntie, vooral wanneer meerdere processen parallel moeten draaien.

Wil je deze concepten verkennen en begrijpen hoe VM’s zich verhouden tot technologieën zoals containers, bekijk dan de cursus over containerisatie- en virtualisatieconcepten. Het is een geweldige manier om je begrip van deze essentiële technologieën te verdiepen!

FAQs

Kunnen VM’s te veel resources innemen?

Het is mogelijk om te veel resources toe te wijzen aan een VM. Als je dat doet, maak de VM dan opnieuw aan met minder resources via je beheersoftware.

Zijn er beveiligingszorgen bij VM’s?

Omdat VM’s doorgaans volledig zijn geïsoleerd van de rest van het systeem, is er meestal minimaal beveiligingsrisico verbonden aan het gebruik ervan.

Wat zijn de belangrijkste use-cases voor een VM?

We gebruiken VM’s in het algemeen om resources goed toe te wijzen voor uiteenlopende taken, zoals machinelearning-algoritmen, websitemanagement en cloudgebaseerd programmeren. Dit zijn slechts enkele voorbeelden van hoe je een VM kunt gebruiken.

Is er een beste manier om een VM te maken?

Er is niet één optimale VM die voor alle doeleinden geschikt is. Ze zijn ontworpen om op specifieke behoeften te worden afgestemd, en het is beter om je VM op het specifieke doel te richten dan een VM te creëren die alles kan.

Welke populaire VM-software kan ik gebruiken om virtualisatie uit te proberen?

Ik raad sterk aan om VMware te proberen om te beginnen.

Tim Lu

Auteur

Tim Lu

Ik ben een data scientist met ervaring in ruimtelijke analyse, machine learning en datapijplijnen. Ik heb gewerkt met GCP, Hadoop, Hive, Snowflake, Airflow en andere data science- en engineeringprocessen.

Onderwerpen

Gerelateerd