Container of virtuele machine: het verschil in één zin en de vier gevolgen
De keuze wordt meestal uit gewoonte over hulpbronnen gemaakt. Toch zit het verschil in één zin, en al het andere volgt daaruit.
AtlasPVE ·
Dit artikel beantwoordt
- proxmox lxc of vm
- proxmox container of virtuele machine
- proxmox lxc voordelen
- proxmox wat moet ik kiezen
- is proxmox lxc veilig
Je gaat iets nieuws draaien op Proxmox en er zijn twee mogelijkheden. Beide draaien een Linux, beide staan naast elkaar in het paneel, beide lijken hetzelfde werk te doen.
De keuze wordt meestal uit gewoonte over hulpbronnen gemaakt: "een container is lichter". Waar, maar dat hoort niet de doorslag te geven.
Het verschil zit in één zin: een virtuele machine brengt haar eigen kern mee, een container gebruikt die van de server. Alles wat je moet weten volgt uit die zin.
Eerste gevolg: waar de grens loopt
De grens van de virtuele machine wordt door de hardware getrokken. Die van de container door de kern van de server.
Dat betekent niet dat een container "zwak" is; het zegt waar de grens loopt. Wil een fout in software binnen een container de server bereiken, dan moet die langs de eigen kern van de server. In een virtuele machine moet die langs een muur op hardwareniveau.
De praktische vraag luidt: hoeveel vertrouw je wat je gaat draaien? Voor een dienst die je zelf schreef of al jaren gebruikt, is een container prima. Voor iets gedownloads dat je niet helemaal doorziet, is een virtuele machine de betere plek.
Tweede gevolg: niet alles draait in een container
Niets wat een eigen kern nodig heeft, draait in een container. Software die een andere kernversie wil, gereedschap dat kernmodules laadt, een besturingssysteem dat geen Linux is: ze eisen allemaal een virtuele machine.
Dat is geen kwestie van voorkeur, het is een rechtstreeks gevolg van de zin hierboven. Gebruikt een container de kern van de server, dan kun je hem niet vragen die kern te veranderen.
Derde gevolg: onderhoud raakt ze verschillend
Dit is het minst bekende gevolg en het gevolg dat het meest pijn kan doen.
Werk je de motor voor virtuele machines bij, dan worden draaiende machines niet geraakt. De nieuwe motor geldt voor machines die na die update starten. Een onderhoudsnacht kan dus stilletjes over je draaiende machines heen gaan.
Werk je de uitvoeringslaag van containers bij, dan kunnen draaiende containers wel geraakt worden, want ze delen die laag allemaal. Tijdens de update kan de gedeelde bestandslaag opnieuw worden aangekoppeld en kunnen binnen de containers kortstondige toegangsfouten verschijnen.
Dit is geen productmening, het is het rechtstreekse gevolg van diezelfde ene zin: werk je iets gedeelds bij, dan voelt iedereen die het deelt het.
Vierde gevolg: bewegingsvrijheid
Een virtuele machine kan draaiend naar een ander knooppunt verhuizen. Een container niet: die wordt afgesloten, verplaatst en opnieuw gestart.
Staat werk dat geen onderbreking verdraagt dus in een container, dan valt dat werk op onderhoudsnachten stil. Dat hoort mee te wegen bij het bepalen van de plek.
De praktische regel
Kies een container wanneer wat je draait een gewone Linux-dienst is die je anders ook op de server zou draaien, wanneer je hem vertrouwt en wanneer hij een korte onderbreking aankan.
Kies een virtuele machine wanneer een eigen kern nodig is, wanneer ze tijdens onderhoud niet onderbroken mag worden, of wanneer je wat je draait niet helemaal vertrouwt.
Het verschil in hulpbronnen komt na die drie toetsen. Dat een container minder geheugen gebruikt is waar, maar de kosten van een container op de verkeerde plek overtreffen die besparing vele malen.
Wat Atlas doet
Atlas draagt dit onderscheid niet als leus maar als gedrag.
In de beoordeling van updates worden de motor voor virtuele machines en de uitvoeringslaag van containers apart behandeld. Wordt de motor bijgewerkt, dan blijft het antwoord voor draaiende machines op informatieniveau: ze worden niet geraakt, de nieuwe motor geldt voor later gestarte. Wordt de containerlaag bijgewerkt, dan stijgt het niveau naar waarschuwing en wordt de reden uitgeschreven: de gedeelde laag kan opnieuw worden aangekoppeld, overweeg kritieke containers kort te stoppen.
Hetzelfde onderscheid duikt op in de verhuisplanning: voor containers wordt verplaatsen tijdens het draaien niet als keuze aangeboden, in plaats daarvan wordt de keten afsluiten, verplaatsen, starten genoemd.
Het product stelt de twee dus niet voor als "twee smaken van hetzelfde". Ze gedragen zich verschillend, dus worden ze verschillend beschreven.
Bronnen
De eigen documentatie van Proxmox. In het Engels, en die heeft over dit onderwerp het laatste woord.