Hoe werkt een VPS? De geschiedenis van time-sharing
Ontdek de oorsprong van uw VPS in de mainframe-tijdperken van CTSS en Unix. Leer hoe de concepten van isolatie en CPU-scheduling uit 1960 de basis vormen voor moderne cloud-technologie.
Waar uw VPS vandaan komt
De geschiedenis van de informatica, van mainframe tot cloud, draait om één idee dat steeds goedkoper wordt. Dat idee is time-sharing: laat veel mensen tegelijkertijd gebruikmaken van één dure machine en geef ieder van hen een eigen, afgeschermde omgeving. Het werd rond 1960 uitgevonden omdat een computer destijds meer kostte dan de mensen die hem gebruikten. Elk onderdeel van de VPS die u vandaag huurt, is gebouwd om dat probleem op te lossen: de isolatie tussen gebruikers, de scheduler die CPU-tijd toewijst, de hypervisor en de factuur die de uren bijhoudt. Het probleem is nooit verdwenen. De hardware werd goedkoop, waardoor een schijfje rekenkracht dat vroeger een onderzoekssubsidie vereiste, nu slechts enkele dollars per maand kost.
1959 tot 1961: waarom time-sharing werd uitgevonden
Een computer in de jaren 50 werkte in batch-modus. U ponste uw programma op kaarten, overhandigde de stapel aan een operator en kwam later terug voor een afdruk. Eén typefout kostte u een dag. De machine bleef bezet, wat precies de bedoeling was, omdat een machine zoals de IBM 7090 miljoenen dollars kostte en de tijd van de mensen die erop wachtten op geen enkele factuur verscheen.
In januari 1959 verwoordde John McCarthy het tegenovergestelde standpunt in een memo op het MIT. De machine zou op de persoon moeten wachten. Christopher Strachey beschreef in hetzelfde jaar een vorm van time-sharing op een UNESCO-conferentie, al doelde hij op één programmeur die aan het debuggen was terwijl andere taken draaiden, in plaats van veel mensen die tegelijkertijd typten. Tijdens het honderdjarig bestaan van het MIT in 1961 ging McCarthy verder: computerkracht zou als een openbaar nut kunnen worden verkocht, gemeten zoals elektriciteit.
Het bezwaar destijds was dat time-sharing de machine verspilt. Het schakelen tussen gebruikers kost cycli, en cycli waren het dure onderdeel. Het bezwaar was correct, en het hield op relevant te zijn, omdat de prijs van een cyclus zestig jaar lang daalde, terwijl de prijs van een uur menselijke aandacht dat niet deed.
Wat CTSS moest uitvinden
De groep van Fernando Corbató bij het MIT Computation Center bouwde het Compatible Time-Sharing System (CTSS) om de discussie te beslechten. Het werd voor het eerst gedemonstreerd in november 1961 op een IBM 709, waarbij vier gebruikers werden bediend door het werk van elke gebruiker naar een eigen magneetbandstation te swappen. "Compatible" betekende dat de machine nog steeds het oude batchsysteem kon draaien, omdat niemand een computer koopt die alleen het nieuwe kan.
Vier gebruikers is een klein aantal. De lijst met problemen die opgelost moesten worden om dit te bereiken is niet klein, en het is dezelfde lijst die uw kernel op dit moment afwerkt. CTSS had een scheduler nodig, zodat één lange taak niet elke andere terminal kon bevriezen. Het had geheugenbescherming nodig, zodat een crashend programma slechts één gebruiker platlegde in plaats van het hele systeem. Het had opslag nodig die een uitlogactie overleefde, wat de reden is dat CTSS een van de eerste bestandssystemen had die een moderne gebruiker zou herkennen. En het had wachtwoorden nodig, zodat de ene gebruiker de bestanden van de andere gebruiker niet kon lezen.
Geef die onderdelen een andere naam en u heeft een Linux-machine. De scheduler is EEVDF, die CFS verving in Linux 6.6. Geheugenbescherming is de MMU (memory management unit) die elk proces zijn eigen virtuele adresruimte geeft. Opslag die een uitlogactie overleeft, is uw home directory. Het wachtwoordbestand heet nog steeds /etc/passwd.
Multics en de computer-utility
Het volgende systeem van MIT was bedoeld als de utility die McCarthy had beschreven. Project MAC begon in 1963, tekende in augustus 1964 voor een General Electric GE-645 en publiceerde in 1965 de eerste Multics-documenten. De naam bevat het argument: Multiplexed Information and Computing Service. Service, zoals in iets dat u per uur inkoopt.
Multics duurde veel langer dan gepland. Prototype GE-645-machines bereikten MIT en Bell Labs in januari 1967. Bell Labs verliet het project in april 1969. Multics werd op 1 oktober 1969 opengesteld voor klanten van het MIT Information Processing Center en draaide daarna eenendertig jaar lang in productie. Het laatste actieve Multics-systeem, bij het Canadian Department of National Defence in Halifax, Nova Scotia, werd op 30 oktober 2000 uitgeschakeld.
Multics wordt vaak als een mislukking bestempeld omdat het laat arriveerde en traag draaide. Het vocabulaire zegt echter iets anders. Het leverde ons het hiërarchische bestandssysteem van mappen binnen mappen, een access control list op elk bestand, gesegmenteerd virtueel geheugen waarmee een programma een bestand kon adresseren alsof het geheugen was, en protection rings die code rangschikten op basis van de mate van vertrouwen. Rings bevinden zich nog steeds in de siliciumchip voor u. Ring 0 voor de kernel en ring 3 voor gebruikerscode is Multics-vocabulaire, en hardwarevirtualisatie voegde later een modus onder ring 0 toe voor de hypervisor, die mensen informeel ring -1 noemen.
Unix: time-sharing op een machine die u kon betalen
Na het verlaten van Multics bleef Ken Thompson bij Bell Labs achter zonder een systeem dat hij wilde gebruiken. In 1969 begon hij met een veel kleiner systeem op een afgedankte PDP-7. De eerste Unix Programmer's Manual dateert van november 1971, op welk moment het werk was verplaatst naar een PDP-11. In 1973 herschreven Thompson en Dennis Ritchie de kernel in C, zodat het systeem naar nieuwe hardware kon worden verplaatst zonder dat het opnieuw handmatig hoefde te worden geschreven.
Dat is de reden waarom u typt in een afstammeling van Unix en niet in een afstammeling van Multics. Multics vereiste hardware die specifiek voor Multics was gebouwd. Unix draaide op wat goedkoop en beschikbaar was, en dat bleek de doorslaggevende eigenschap te zijn.
"The UNIX Time-Sharing System" door Ritchie en Thompson verscheen in juli 1974 in Communications of the ACM. Het artikel beschrijft uw VPS: processen, één hiërarchisch bestandssysteem, bestanden als eenvoudige bytestromen, fork, gebruikers en groepen met permissiebits, en een shell die een gewoon programma is in plaats van onderdeel van de kernel. Tweeënvijftig jaar later is die interface uitgebreid, maar nooit vervangen.
Draaiden mainframes in 1972 echt virtuele machines?
Ja, en dit is het deel van het verhaal dat de meeste mensen missen. Terwijl MIT aan Multics werkte, benaderde het Cambridge Scientific Center van IBM hetzelfde doel vanuit een andere hoek. In plaats van één besturingssysteem dat vele gebruikers bedient, bouwden Robert Creasy en Les Comeau een controleprogramma dat elke gebruiker een volledige gesimuleerde computer gaf. CP-40 werd in januari 1967 in productie genomen. Elke gebruiker kreeg een virtuele System/360 en draaide daarbinnen een klein besturingssysteem voor één gebruiker, CMS.
CP-40 werd in 1968 CP-67 op de System/360-67 en IBM kondigde op 2 augustus 1972 VM/370 aan. Dat is een commerciële hypervisor, verkocht aan betalende klanten, vierenvijftig jaar geleden. Een controleprogramma multiplexte de echte hardware en gastbesturingssystemen draaiden ongewijzigd binnen virtuele machines die dachten dat zij de eigenaar van de machine waren.
De theorie kwam twee jaar later, in hetzelfde nummer van Communications of the ACM van juli 1974 dat ook het Unix-artikel bevatte. "Formal Requirements for Virtualizable Third Generation Architectures" van Gerald Popek en Robert Goldberg zette uiteen waaraan een processor moet voldoen om virtualiseerbaar te zijn. De kernregel is kort. Elke instructie die de status van de machine kan lezen of wijzigen, moet een trap genereren wanneer een gast deze buiten de kernelmodus uitvoert, zodat de hypervisor de controle overneemt en antwoordt met de eigen privéversie van de status van die gast. Dit wordt trap and emulate genoemd. De hardware van IBM voldeed aan deze regel.
Waarom de minicomputer het model doorbrak
DEC introduceerde de PDP-8 op 22 maart 1965 voor ongeveer $18.000 in 1965-dollars. Dit was de eerste minicomputer met een prijs onder de $20.000, en er werden uiteindelijk meer dan 50.000 eenheden van verkocht. De microprocessor drukte de prijs vervolgens nog verder omlaag. Zodra een afdeling een eigen machine kon kopen, en later zodra een individu dat kon, leek het delen van één centrale computer een opgelost probleem dat geen oplossing meer behoefde. Gedurende de jaren 80 en 90 verschoof computing naar het bureau en naar racks vol kleine x86-servers.
De verspilling keerde terug in een andere vorm. Eén applicatie per server is eenvoudig te overzien, maar laat het merendeel van de hardware onbenut terwijl de stroomkosten en de rackruimte volledig worden betaald. Dat is opnieuw het CTSS-probleem op een nieuwe schaal, waarbij de dure hulpbron nu de ruimte en de elektriciteit is in plaats van de processor. Het antwoord was het oude antwoord. Deel de machine.
Waarom was x86 zo moeilijk te virtualiseren?
Omdat x86 de regel van Popek en Goldberg schond. Tijdens het 9th USENIX Security Symposium in augustus 2000 analyseerden John Scott Robin en Cynthia Irvine de Pentium-instructieset. Zij vonden zeventien instructies die de geprivilegieerde status lezen of wijzigen zonder een foutmelding te genereren wanneer deze in user-mode worden uitgevoerd. popf is het standaardvoorbeeld. Wanneer u dit in user-mode uitvoert, negeert de processor stilletjes de bits die het programma niet mag instellen, in plaats van een trap te genereren. Een hypervisor die gebaseerd is op trap-and-emulate merkt hierdoor niet dat de gastmachine dit probeerde.
Er kwamen twee oplossingen voordat de hardware werd aangepast. VMware, in 1998 opgericht vanuit het Disco-onderzoek van Stanford, inspecteerde de kernelcode van de gastmachine en herschreef de problematische instructies voordat ze werden uitgevoerd; een techniek genaamd binaire translatie. Xen, van het Computer Laboratory van de Universiteit van Cambridge, wijzigde in plaats daarvan de gastmachine. Het artikel "Xen and the Art of Virtualization", gepresenteerd op SOSP in oktober 2003, beschreef paravirtualisatie: een aangepaste gastkernel roept de hypervisor doelbewust aan in plaats van instructies uit te voeren die de hypervisor niet kan onderscheppen.
Vervolgens werd de hardware aangepast, op de manier waarop IBM dit in de jaren 60 al had gedaan. Intel bracht op 14 november 2005 VT-x uit op twee Pentium 4-modellen en AMD bracht in mei 2006 AMD-V uit. Beide voegen een processormodus toe onder die van de gastkernel. Hierdoor draait een gastmachine zijn eigen kernel op volledige snelheid, terwijl de hypervisor de controle behoudt over de gebeurtenissen waar hij om vraagt. Dit maakte een hypervisor klein genoeg om binnen een regulier besturingssysteem te draaien, en Avi Kivity's KVM bij Qumranet deed precies dat: het veranderde de Linux-kernel zelf in de hypervisor. KVM werd samengevoegd in Linux 2.6.20, uitgebracht in februari 2007, en het is de technologie die een groot deel van de huidige VPS-hosts gebruikt.
Hoe de VPS aan zijn naam kwam
Twee ontwikkelingen kwamen begin jaren 2000 samen. De eerste was de volledige virtuele machine op x86, een gast die zijn eigen kernel opstart. De tweede was virtualisatie op besturingssysteemniveau: één gedeelde Linux-kernel opgedeeld in afzonderlijke omgevingen, elk met een eigen root-gebruiker en een eigen procestabel. Linux-VServer en Virtuozzo van SWsoft verschenen beide in 2001, en SWsoft bracht in 2005 een deel van Virtuozzo uit als het open-source OpenVZ. De term "virtual private server" is afkomstig uit die tak van de familie, gevormd naar analogie met het virtual private network.
Amazon veranderde de verhuur in een API-aanroep. S3 werd gelanceerd op 14 maart 2006 en EC2 opende op 25 augustus 2006 als een beperkte publieke bèta met één type instantie, draaiend op Xen. Het inkopen van rekenkracht was niet langer een contract met een servicebureau, maar een verzoek dat binnen een minuut resultaat opleverde.
Beide lijnen bestaan nog steeds, en de splitsing bepaalt nog altijd wat u kunt doen met de server die u huurt. Een KVM VPS start zijn eigen kernel op, waardoor u kernelmodules kunt laden en zelfs een hypervisor binnen uw VPS kunt draaien. Een op containers gebaseerd abonnement deelt de host-kernel en kan dit niet. Zestig jaar geschiedenis gaat schuil achter die ene regel op een prijspagina; daarom is het zinvol om te begrijpen hoe een VPS, een VM en een VPC van elkaar verschillen voordat u een keuze maakt.
Wat is er veranderd tussen de mainframe en uw VPS, en wat niet
Er zijn vier dingen veranderd. De machine staat niet in uw eigen gebouw. De terminal is een programma in plaats van een meubelstuk. De eenheid die u huurt is een volledige computer met een eigen kernel, in plaats van een account op het besturingssysteem van iemand anders. En de prijs is ver genoeg gedaald dat de aankoop een kaartbetaling is in plaats van een inkoopproces.
Het mechanisme is totaal niet veranderd.
- Uw ssh-sessie is een time-sharing terminal. U krijgt een login en een shell, en een scheduler bepaalt wanneer uw proces als volgende draait.
- Isolatie wordt nog steeds afgedwongen door hardware. De MMU en de privileniveaus van de processor doen het werk, precies zoals CP-40 dat in 1967 nodig had.
- U betaalt nog steeds voor een deel van een machine op basis van verstreken tijd, zoals servicebureaus vroeger factureerden voor verbonden uren.
- U merkt nog steeds de aanwezigheid van andere huurders. Wanneer een host overbezet is, wacht uw gast op een fysieke CPU, en Linux rapporteert die wachttijd als CPU steal time door een luidruchtige buur.
Dat laatste punt is de eerlijke samenvatting van de hele geschiedenis. Het delen van een machine is een ruilhandel. Het werd in 1961 geaccepteerd omdat de computer meer kostte dan de mensen, en het wordt in 2026 geaccepteerd omdat een server die op tien procent van zijn capaciteit draait, weggegooid geld is. Als u liever aan de kant van de beheerder van die ruilhandel staat, geeft het draaien van Proxmox op eigen hardware u de hypervisor en de problemen van de beheerder erbij.
Houd de verhouding in gedachten. CTSS bediende vier gebruikers op een machine die miljoenen dollars uit 1961 kostte en een hele kamer vulde. Uw VPS, voor een paar dollar per maand in 2026, is een veel betere computer dan degene die het team van Corbató aan het rantsoeneren was, en u heeft deze voor uzelf. De reden dat u deze überhaupt kunt huren, is een vijfenzestig jaar oud idee dat eindelijk goedkope hardware ontmoette. Als u aan het uitzoeken bent wat u erop wilt zetten, begin dan bij wat een VPS u daadwerkelijk biedt en vervolgens wat mensen erop draaien.
FAQ
Wat was het eerste time-sharing computersysteem?
CTSS, het Compatible Time-Sharing System, gebouwd door de groep van Fernando Corbató bij het MIT Computation Center. Het werd voor het eerst gedemonstreerd in november 1961 op een IBM 709 en bediende vier gebruikers, waarbij elk werd uitgewisseld naar een aparte tape-drive. De eerste time-sharingdienst voor een hele gemeenschap was het Dartmouth Time-Sharing System: op 1 mei 1964 draaiden John Kemeny en een student-programmeur tegelijkertijd BASIC-programma's op twee terminals en beiden kregen correcte antwoorden terug.
Werden virtuele machines echt uitgevonden in de jaren 60?
Ja. Het Cambridge Scientific Center van IBM nam CP-40 in productie in januari 1967, waarbij elke gebruiker een volledige virtuele System/360 kreeg met het CMS-besturingssysteem daarbinnen. CP-67 volgde in 1968 op de System/360-67, en IBM kondigde VM/370 aan op 2 augustus 1972. Dat zijn echte hypervisors die ongewijzigde gastbesturingssystemen draaien, commercieel verkocht, decennia voordat x86-hardware hetzelfde kon doen.
Waarom was x86 moeilijk te virtualiseren terwijl mainframes dat niet waren?
De regel van Popek en Goldberg uit 1974 stelt dat elke instructie die de machinestatus kan lezen of wijzigen, een trap moet genereren wanneer een gast deze buiten de kernelmodus uitvoert. x86 schond die regel. Robin en Irvine telden zeventien Pentium-instructies die stilletjes falen in de gebruikersmodus in plaats van een trap te genereren, waardoor een klassieke trap-and-emulate hypervisor ze nooit ziet, en popf is het gebruikelijke voorbeeld. VMware omzeilde dit met binaire vertaling en Xen met paravirtualisatie, totdat Intel VT-x in november 2005 en AMD-V in mei 2006 een hardwaremodus voor de hypervisor toevoegden.
Is het huren van een VPS hetzelfde als het hebben van een time-sharing account?
Het facturatiemodel en het isolatieprobleem zijn hetzelfde. De eenheid is anders. Een time-sharinggebruiker kreeg een account op een besturingssysteem dat met iedereen werd gedeeld, dus de beheerder was iemand van het rekencentrum. Een KVM VPS geeft u een virtuele machine met uw eigen kernel en uw eigen root-account, dus de beheerder bent u. Een containergebaseerde VPS bevindt zich tussen beide in, omdat deze de host-kernel deelt terwijl u toch root-toegang krijgt binnen uw eigen omgeving.