Virtualisation
La virtualisation permet à plusieurs systèmes d’exploitation de fonctionner en parallèle sur une seule machine physique.
En 1960, IBM introduit le concept de virtualisation avec son système CP-40 🔗 en 1964, suivi du CP-67 en 1966. Ces systèmes permettaient de partitionner les mainframes (ordinateurs capables de traiter des milliards de calculs et de transactions en temps réel, de manière sécurisée et fiable) en plusieurs machines virtuelles, chacune exécutant son propre système d’exploitation.
1970-1980, la virtualisation est moins utile puisque les PCs se démocratisent;
1990, croissance d'internet et des besoins;
1998 création de VMWare;
2003 création de Xen (open source) mort depuis;
2007 KVM (Kernel-based Virtual Machine) est intégré au noyau linux;
2010… virtualisation « partout »;
2024 VMWare est racheté par Broadcom qui met fin aux licences « éducation ».
Source IBM. Photo promotionnelle (1964) pour l'IBM 360
Avantages :
- efficacité : meilleure utilisation des ressources matérielles.
- flexibilité : facilité de déploiement et de gestion.
- sécurité : isolation entre les systèmes.
- économie : réduction des coûts d’achat et de maintenance.
Un hyperviseur est une plateforme de virtualisation.
Hyperviseur de type 1 (natif)
Un hyperviseur de Type 1, natif, voire « bare metal » est un logiciel qui s'exécute directement sur une plateforme matérielle.
L'hyperviseur de type 1 est un noyau hôte allégé et optimisé.
Exemples :
- CP, développé par IBM (obsolète)
- Xen (obsolète)
- Microsoft Hyper-V
- ESXI Server (VMware)
- propriétaire
- support professionnel
- KVM
- Proxmox (utilise KVM et LXC (LinuX Container))
- open source basée sur Debian
(Source : Wikipedia - Hyperviseur de type 1)
Hyperviseur de type 2 (hosted)
Un hyperviseur de type 2 est un logiciel qui s'exécute à l'intérieur d'un autre système d'exploitation. Un système d'exploitation invité s'exécutera donc en troisième niveau au-dessus du matériel. Les systèmes d'exploitation invités n'ayant pas conscience d'être virtualisés, ils n'ont pas besoin d'être adaptés. On peut parler d'émulation.
Exemples :
- VMware Workstation
- QEMU
- Virtual PC
- VirtualBox d'Oracle
(Source : Wikipedia - Hyperviseur de type 2)
Une machine virtuelle (VM virtual machine) est une machine physique simulée de manière logicielle. Une machine virtuelle exécute un OS (operating system) complet, isolé des autres.
🙃 virtualisation versus émulation.
Un émulateur hardware est un programme qui va émuler — c'est-à-dire imiter — le comportement d'un autre programme ou d'un périphérique (device). L'émulateur imite le comportement de tous les composants de la machine. Cette émulation a un coût. Dans le cas de la virtualisation, c'est également un programme qui va imiter le comportement de la machine et utiliser une sous-couche matérielle (hardware) permettant de faire directement des appels matériels.
Cas particulier de QEmu et KVM
Dans son rôle d'émulateur de machine, QEmu émule une machine sur une autre. Il est capable d'émuler une machine 32 bits sur une 64 bits et vice versa ou encore d'émuler une architecture ARM sur une architecture x86. Il est peu efficace à cause du surcout occasionné par l'émulation du matériel.
QEmu peut être un émulateur de machine ou faire de la virtualisation.
Couplé à KVM, QEmu peut-être un hyperviseur — élément logiciel, hardware ou firmware permettant de créer et faire fonctionner des machines virtuelles — et permettre la création et l'exécution de machines virtuelles de même architectures que l'hôte. Ces vm bénéficieront alors de l'accélération matérielle fournie par KVM.
libvirtd, virsh et virt-manager permettent d'offrir une couche d'abstraction supplémentaire en virtualisation. virt-manager est une interface graphique permettant de gérer les machines virtuelles. virsh une sorte de shell.
KVM convertit Linux en un hyperviseur de type 1 en intégrant dans le noyau : gestionnaire de mémoire, ordonnanceur, pile d'entrées/sorties (E/S), pilotes de périphériques, gestionnaire de sécurité, pile réseau, etc. Chaque machine virtuelle est mise en œuvre comme un processus Linux standard.
Exemples
gitesi et poesi
Les machines hébergeant le serveur Gitlab de l'école (gitesi) et la plateforme pédagogique Moodle (poesi) sont (actuellement) deux machines virtuelles sur un serveur physique et virtualisée grâce à QEMU-KVM et virt-manager.
Le réseau pédagogique
Le réseau pédagogique offre les services suivants (Pouvons nous les reconnaitre ? ) :
La virtualisation se fait avec QEMU-KVM avec virt-manager comme surcouche graphique.
Un laboratoire virtuel
Pour les besoins d'un cours (et because COVID19), je veux proposer à chaque étudiant et étudiante une machine linux sur laquelle elle [1] pourra faire ses manipulations. J'ai deux contraintes (fortes) :
- cette machine doit être accessible de l'extérieure;
- je ne dispose que de 2 IP publiques
Voici le schéma de l'organisation.
Outils
VMWare
VMWare fait partie de Broadcom. Broadcom ne propose plus de licence éducation ni de licence de test.
Proxmox
Proxmox VE (virtual environment) est une plateforme open-source pour la virtualisation. Proxmox VE est basé sur Debian et utilise — entre autre — KVM. Il propose une interface web pour la gestion des machines virtuelles et des conteneurs.
Accord de proximité. ↩︎