SSD Nodes Learn 🎉 VPS dès $5.50/mois
Guides Matt ConnorPar Matt Connor

Histoire du VPS : du mainframe au cloud moderne

Découvrez comment votre VPS actuel hérite directement du time-sharing des années 1960. De CTSS à KVM, comprenez l'évolution technique de l'isolation et de la virtualisation.

D'où vient votre VPS

L'histoire de l'informatique, du mainframe au cloud, est celle d'une idée qui devient de moins en moins coûteuse. Cette idée est le temps partagé : permettre à plusieurs personnes d'utiliser une machine coûteuse simultanément, tout en offrant à chacune une vue privée de celle-ci. Ce concept a été inventé vers 1960, car un ordinateur coûtait plus cher que les personnes qui l'utilisaient. Chaque composant du VPS que vous louez aujourd'hui a été conçu pour résoudre ce problème : l'isolation entre les utilisateurs, l'ordonnanceur qui distribue le temps CPU, l'hyperviseur et la facturation à l'heure. Le problème n'a jamais disparu. Le matériel est devenu bon marché, si bien qu'une tranche de ressources qui nécessitait autrefois une subvention de recherche ne coûte aujourd'hui que quelques dollars par mois.

1959 à 1961 : pourquoi le time-sharing a été inventé

Dans les années 1950, un ordinateur fonctionnait par lots (batch). Vous perforiez votre programme sur des cartes, remettiez le paquet à un opérateur, puis reveniez plus tard chercher une impression. Une seule erreur de frappe vous coûtait une journée. La machine restait occupée, ce qui était l'objectif principal, car une machine comme l'IBM 7090 coûtait des millions de dollars et le temps des personnes qui l'attendaient n'apparaissait sur aucune facture.

En janvier 1959, John McCarthy a exposé le point de vue opposé dans une note au MIT. La machine devrait attendre la personne. Christopher Strachey a décrit une forme de time-sharing lors d'une conférence de l'UNESCO la même année, bien qu'il ait fait référence à un programmeur déboguant son code pendant que d'autres tâches s'exécutaient, plutôt qu'à plusieurs personnes tapant simultanément. S'exprimant lors du centenaire du MIT en 1961, McCarthy est allé plus loin : l'informatique pourrait être vendue comme un service public, facturée à l'usage comme l'électricité.

L'objection à l'époque était que le time-sharing gaspille les ressources de la machine. Basculer entre les utilisateurs consomme des cycles, et les cycles étaient ce qu'il y avait de plus coûteux. L'objection était fondée, mais elle a cessé d'être pertinente, car le prix d'un cycle a chuté pendant soixante ans alors que le prix d'une heure d'attention humaine, lui, n'a pas baissé.

Ce que CTSS a dû inventer

Le groupe de Fernando Corbató au MIT Computation Center a conçu le Compatible Time-Sharing System (CTSS) pour trancher le débat. Il a été démontré pour la première fois en novembre 1961 sur un IBM 709, desservant quatre utilisateurs, en déchargeant le travail de chaque utilisateur sur son propre lecteur de bande magnétique. « Compatible » signifiait que la machine pouvait toujours exécuter l'ancien système de traitement par lots en arrière-plan, car personne n'achète un ordinateur qui ne fait que la nouvelle chose.

Quatre utilisateurs, c'est un petit nombre. La liste des problèmes à résoudre pour y parvenir n'est pas courte, et c'est la même liste que votre noyau traite en ce moment même. CTSS avait besoin d'un ordonnanceur, pour qu'une tâche longue ne puisse pas bloquer tous les autres terminaux. Il avait besoin d'une protection mémoire, pour qu'un programme qui plante n'entraîne qu'un seul utilisateur plutôt que tout le système. Il avait besoin d'un stockage persistant après une déconnexion, c'est pourquoi CTSS possédait l'un des premiers systèmes de fichiers qu'un utilisateur moderne reconnaîtrait. Et il avait besoin de mots de passe, pour qu'un utilisateur ne puisse pas lire les fichiers d'un autre.

Renommez ces composants et vous obtenez une machine Linux. L'ordonnanceur est EEVDF, qui a remplacé CFS dans Linux 6.6. La protection mémoire est assurée par la MMU (memory management unit) qui donne à chaque processus son propre espace d'adressage virtuel. Le stockage qui survit à une déconnexion est votre répertoire personnel. Le fichier de mots de passe s'appelle toujours /etc/passwd.

Multics et l'utilitaire informatique

Le système suivant du MIT devait être l'utilitaire décrit par McCarthy. Le Project MAC a débuté en 1963, a signé pour un GE-645 de General Electric en août 1964 et a publié les premiers documents sur Multics en 1965. Le nom porte l'argument : Multiplexed Information and Computing Service. Service, comme quelque chose que l'on achète à l'heure.

Multics a pris beaucoup plus de temps que prévu. Les prototypes de machines GE-645 sont arrivés au MIT et aux Bell Labs en janvier 1967. Les Bell Labs ont quitté le projet en avril 1969. Multics a ouvert ses portes aux clients de l'Information Processing Center du MIT le 1er octobre 1969, et a ensuite fonctionné en production quelque part pendant trente et un ans. Le dernier système Multics en activité, au ministère de la Défense nationale du Canada à Halifax, en Nouvelle-Écosse, a été arrêté le 30 octobre 2000.

Multics est souvent classé comme un échec car il est arrivé tardivement et fonctionnait lentement. Le vocabulaire dit le contraire. Il nous a légué le système de fichiers hiérarchique avec des répertoires dans des répertoires, une liste de contrôle d'accès sur chaque fichier, une mémoire virtuelle segmentée permettant à un programme d'adresser un fichier comme s'il s'agissait de mémoire, et des anneaux de protection classant le code selon son niveau de confiance. Les anneaux sont toujours présents dans le silicium devant vous. L'anneau 0 pour le kernel et l'anneau 3 pour le code utilisateur sont du vocabulaire Multics, et la virtualisation matérielle a plus tard ajouté un mode sous l'anneau 0 pour l'hyperviseur, que les gens appellent informellement l'anneau -1.

Unix : le temps partagé sur une machine abordable

Le départ de Multics a laissé Ken Thompson chez Bell Labs sans système qu'il souhaitait utiliser. En 1969, il a commencé à en développer un beaucoup plus modeste sur un PDP-7 mis au rebut. Le premier manuel du programmeur Unix est daté de novembre 1971, date à laquelle le travail avait été transféré sur un PDP-11. En 1973, Thompson et Dennis Ritchie ont réécrit le noyau en C, afin que le système puisse être porté sur du nouveau matériel sans avoir à être réécrit manuellement.

C'est pourquoi vous tapez vos commandes dans un descendant d'Unix et non dans un descendant de Multics. Multics nécessitait un matériel conçu spécifiquement pour lui. Unix fonctionnait sur tout ce qui était bon marché et disponible, et cela s'est avéré être l'élément décisif.

"The UNIX Time-Sharing System" par Ritchie et Thompson a été publié dans Communications of the ACM en juillet 1974. L'article décrit votre VPS : des processus, un système de fichiers hiérarchique, des fichiers sous forme de flux d'octets bruts, fork, des utilisateurs et des groupes avec des bits de permission, et un shell qui est un programme ordinaire plutôt qu'une partie du noyau. Cinquante-deux ans plus tard, cette interface a été étendue, mais jamais remplacée.

Les mainframes faisaient-ils vraiment tourner des machines virtuelles en 1972 ?

Oui, et c'est la partie de l'histoire que la plupart des gens ignorent. Alors que le MIT développait Multics, le Cambridge Scientific Center d'IBM abordait le même problème sous un angle différent. Au lieu d'un système d'exploitation servant plusieurs utilisateurs, Robert Creasy et Les Comeau ont conçu un programme de contrôle qui offrait à chaque utilisateur un ordinateur complet simulé. CP-40 est entré en production en janvier 1967. Chaque utilisateur disposait d'un System/360 virtuel et y faisait tourner un petit système d'exploitation mono-utilisateur, CMS.

CP-40 est devenu CP-67 sur le System/360-67 en 1968, et IBM a annoncé VM/370 le 2 août 1972. Il s'agissait d'un hyperviseur commercial, vendu à des clients payants, il y a cinquante-quatre ans. Un programme de contrôle multiplexait le matériel réel, et les systèmes d'exploitation invités tournaient sans modification à l'intérieur de machines virtuelles qui "croyaient" posséder la machine.

La théorie est arrivée deux ans plus tard, dans le même numéro de juillet 1974 de Communications of the ACM qui publiait l'article sur Unix. L'étude de Gerald Popek et Robert Goldberg, "Formal Requirements for Virtualizable Third Generation Architectures", a défini ce qu'un processeur doit faire pour être virtualisable. La règle fondamentale est simple. Chaque instruction capable de lire ou de modifier l'état de la machine doit déclencher un trap lorsqu'un invité l'exécute en dehors du mode noyau, afin que l'hyperviseur reprenne le contrôle et réponde avec la version privée de l'état propre à cet invité. C'est ce qu'on appelle le trap and emulate. Le matériel d'IBM respectait cette règle.

Pourquoi le mini-ordinateur a brisé le modèle

DEC a lancé le PDP-8 le 22 mars 1965 pour environ 18 000 dollars de l'époque. Il s'agissait du premier mini-ordinateur vendu sous la barre des 20 000 dollars, et il s'est écoulé à plus de 50 000 exemplaires. Le microprocesseur a ensuite fait baisser les prix à nouveau. Dès qu'un département a pu acheter sa propre machine, puis plus tard un individu, le partage d'un ordinateur central a semblé être un problème résolu qui ne nécessitait plus de solution. Durant les années 1980 et 1990, l'informatique s'est déplacée vers le bureau et les baies de petits serveurs x86.

Le gaspillage est revenu sous une forme différente. Une application par serveur est simple à gérer, mais cela laisse la majeure partie du matériel inutilisée alors que l'électricité et l'espace en baie sont payés en totalité. Il s'agit à nouveau du problème du CTSS à une nouvelle échelle, la ressource coûteuse étant désormais la salle et l'électricité plutôt que le processeur. La réponse a été l'ancienne réponse. Partager la machine.

Pourquoi la virtualisation x86 était-elle si complexe ?

L'architecture x86 ne respectait pas les conditions de Popek et Goldberg. Lors du 9e USENIX Security Symposium en août 2000, John Scott Robin et Cynthia Irvine ont analysé le jeu d'instructions du Pentium. Ils ont identifié dix-sept instructions qui lisent ou modifient l'état privilégié sans déclencher d'exception lorsqu'elles sont exécutées en mode utilisateur. popf en est l'exemple type. Si vous l'exécutez en mode utilisateur, le processeur ignore silencieusement les bits que le programme n'est pas autorisé à modifier au lieu de provoquer une interruption. Par conséquent, un hyperviseur basé sur le mécanisme de « trap and emulate » ne détecte jamais la tentative de l'invité.

Deux solutions ont émergé avant que le matériel ne soit corrigé. VMware, fondé en 1998 sur la base des travaux de recherche Disco de Stanford, inspectait le code du noyau invité et réécrivait les instructions problématiques avant leur exécution, une technique appelée traduction binaire. Xen, issu du Computer Laboratory de l'Université de Cambridge, a choisi de modifier l'invité. L'article « Xen and the Art of Virtualization », présenté lors du SOSP en octobre 2003, décrivait la paravirtualisation : un noyau invité modifié appelle volontairement l'hyperviseur au lieu d'exécuter des instructions que ce dernier ne peut pas intercepter.

Le matériel a ensuite été corrigé, suivant la méthode utilisée par IBM dans les années 1960. Intel a lancé VT-x sur deux modèles de Pentium 4 le 14 novembre 2005, et AMD a introduit AMD-V en mai 2006. Ces deux technologies ajoutent un mode processeur situé sous le noyau de l'invité. Ainsi, l'invité exécute son propre noyau à pleine vitesse tandis que l'hyperviseur conserve le contrôle sur les événements qu'il a configurés. Cela a permis de concevoir un hyperviseur suffisamment léger pour résider au sein d'un système d'exploitation classique. C'est précisément ce qu'a réalisé Avi Kivity avec KVM chez Qumranet : il a transformé le noyau Linux lui-même en hyperviseur. KVM a été intégré à Linux 2.6.20, publié en février 2007, et constitue aujourd'hui la base utilisée par une grande partie des hébergeurs VPS.

Origine du nom VPS

Deux trajectoires ont convergé au début des années 2000. La première était la machine virtuelle complète sur x86, un invité démarrant son propre noyau. La seconde était la virtualisation au niveau du système d'exploitation : un noyau Linux unique et partagé, segmenté en environnements distincts, chacun disposant de son propre utilisateur root et de sa propre table des processus. Linux-VServer et Virtuozzo de SWsoft sont apparus en 2001, et SWsoft a publié une partie de Virtuozzo sous forme open-source avec OpenVZ en 2005. L'expression "virtual private server" provient de cette branche, formée par analogie avec le virtual private network.

Amazon a transformé la location en appel API. S3 a été lancé le 14 mars 2006, et EC2 a ouvert en bêta publique limitée le 25 août 2006 avec un seul type d'instance, fonctionnant sur Xen. L'achat de ressources de calcul a cessé d'être un contrat avec un bureau de services pour devenir une requête traitée en une minute.

Les deux lignées subsistent, et cette distinction détermine toujours ce que vous pouvez faire avec le serveur que vous louez. Un VPS KVM démarre son propre noyau, ce qui vous permet de charger des modules noyau et même d'exécuter un hyperviseur au sein de votre VPS. Une offre basée sur des conteneurs partage le noyau de l'hôte et ne le permet pas. Soixante ans d'histoire se cachent derrière cette simple ligne sur une page de tarification ; c'est pourquoi il est utile de comprendre les différences entre un VPS, une VM et un VPC avant de faire votre choix.

Ce qui a changé entre le mainframe et votre VPS, et ce qui est resté identique

Quatre éléments ont changé. La machine ne se trouve pas dans vos locaux. Le terminal est un logiciel plutôt qu'un meuble. L'unité que vous louez est un ordinateur complet avec son propre kernel, plutôt qu'un simple compte sur le système d'exploitation d'un tiers. Enfin, le prix a suffisamment baissé pour que l'achat se règle par carte bancaire plutôt que par un processus d'approvisionnement complexe.

Le mécanisme, lui, n'a pas changé du tout.

  • Votre session ssh est un terminal en temps partagé. Vous obtenez un identifiant et un shell, et un ordonnanceur décide quand votre processus s'exécute.
  • L'isolation est toujours appliquée par le matériel. La MMU et les niveaux de privilège du processeur effectuent le travail, exactement comme le CP-40 en avait besoin en 1967.
  • Vous êtes toujours facturé pour une part de machine en fonction du temps écoulé, comme les centres de calcul facturaient les heures de connexion.
  • Vous ressentez toujours la présence des autres locataires. Lorsqu'un hôte est surchargé, votre invité attend un CPU physique, et Linux rapporte cette attente comme du CPU steal time dû à un voisin bruyant.

Ce dernier point est le résumé honnête de toute cette histoire. Partager une machine est un compromis. C'était accepté en 1961 parce que l'ordinateur coûtait plus cher que le personnel, et c'est accepté en 2026 parce qu'un serveur tournant à dix pour cent de sa capacité est de l'argent gaspillé. Si vous préférez vous placer du côté de l'opérateur dans ce compromis, installer Proxmox sur votre propre matériel vous confie l'hyperviseur et les problèmes de l'opérateur par la même occasion.

Gardez ce ratio à l'esprit. Le CTSS servait quatre utilisateurs sur une machine qui coûtait des millions de dollars de 1961 et occupait une pièce entière. Votre VPS, pour quelques dollars par mois en 2026, est un ordinateur bien plus performant que celui que l'équipe de Corbató devait rationner, et vous l'avez pour vous seul. La raison pour laquelle vous pouvez le louer est une idée vieille de soixante-cinq ans qui a fini par rencontrer du matériel bon marché. Si vous cherchez quoi installer dessus, commencez par ce qu'un VPS vous apporte réellement puis ce que les gens font tourner sur un VPS.

FAQ

Quel a été le premier système informatique à temps partagé ?

CTSS, le Compatible Time-Sharing System, conçu par le groupe de Fernando Corbató au MIT Computation Center. Il a été démontré pour la première fois en novembre 1961 sur un IBM 709 et servait quatre utilisateurs, chacun étant basculé sur une unité de bande magnétique distincte. Le premier service à temps partagé pour une communauté entière fut le Dartmouth Time-Sharing System : le 1er mai 1964, John Kemeny et un étudiant programmeur ont exécuté des programmes BASIC simultanément sur deux terminaux et ont tous deux obtenu des réponses correctes.

Les machines virtuelles ont-elles vraiment été inventées dans les années 1960 ?

Oui. Le Cambridge Scientific Center d'IBM a mis le CP-40 en production en janvier 1967, offrant à chaque utilisateur un System/360 virtuel complet avec le système d'exploitation CMS fonctionnant à l'intérieur. Le CP-67 a suivi en 1968 sur le System/360-67, et IBM a annoncé le VM/370 le 2 août 1972. Il s'agissait de véritables hyperviseurs exécutant des systèmes d'exploitation invités non modifiés, commercialisés des décennies avant que le matériel x86 ne puisse faire de même.

Pourquoi le x86 était-il difficile à virtualiser alors que les mainframes ne l'étaient pas ?

La règle de Popek et Goldberg de 1974 stipule que chaque instruction capable de lire ou de modifier l'état de la machine doit provoquer une interruption (trap) lorsqu'un invité l'exécute en dehors du mode noyau. Le x86 enfreint cette règle. Robin et Irvine ont recensé dix-sept instructions Pentium qui échouent silencieusement en mode utilisateur au lieu de provoquer une interruption ; un hyperviseur classique de type trap-and-emulate ne les voit donc jamais, et popf en est l'exemple habituel. VMware a contourné ce problème avec la traduction binaire et Xen avec la paravirtualisation, jusqu'à ce qu'Intel VT-x en novembre 2005 et AMD-V en mai 2006 ajoutent un mode matériel pour l'hyperviseur.

Louer un VPS est-il la même chose qu'avoir un compte à temps partagé ?

Le modèle de facturation et le problème de l'isolation sont identiques. L'unité diffère. Un utilisateur de temps partagé obtenait un compte sur un système d'exploitation partagé avec tout le monde ; l'administrateur était donc quelqu'un du centre informatique. Un VPS KVM vous donne une machine virtuelle avec votre propre noyau et votre propre compte root ; l'administrateur, c'est donc vous. Un VPS basé sur des conteneurs se situe entre les deux, car il partage le noyau de l'hôte tout en vous donnant les droits root au sein de votre propre environnement.

#history#computing#virtualization#mainframe#vps