3.1 KiB
3.1 KiB
Rappels & historique
Rappels sur la virtualisation classique
Prémices
Au départ
Exécuter simultanément plusieurs environnements distinct sur un mainframe IBM.
IBM System/370
- Virtualisation grâce au système CP/CMS ;
- permis par la présence d'une MMU et par l'ajout d'un mode supervisor au processeur.
Vocabulaire
- Machine hôte/host machine
- Machine invité/guest machine
Virtualisation vs. émulation
- Émulation : simulation logiciel de matériel (potentiellement une architecture différente) : pas d'accès direct au matériel ;
- Virtualisation : accès direct, mais restrint, au matériel.
Technologies de virtualisation matérielle
- Intel VT-x/AMD-V/ARM Virtualization Extensions
- partitionne le processeur pour exécuter plusieurs système d'exploitation via le même processeur.
Comment virtualiser ?
- Full virtualisation : hyperviseurs ;
- Paravirtualisation ;
- Isolateurs/conteneurs ;
- Conteneurs applicatifs.
Hyperviseurs
Hyperviseurs
Contrôlent l'utilisation faite des ressources de la machine hôte par les machines virtuelles.
Type 1
-
L'hyperviseur contrôle directement le matériel ;
-
Tous les systèmes lancés par la suite passent par l'hyperviseur.
-
Microsoft Hyper-V, XenServer, VMware ESX, ...
Type 2
-
L'hyperviseur s'appuie sur le système d'exploitation déjà lancé pour accéder au matériel ;
-
Linux KVM, VirtualBox, BHyVe, ...
Paravirtualisation
Caractéristiques
- Nécessite un noyau patché ;
- l'hôte expose une API accessible aux invités ;
- les invités accèdent au matériel via l'API de l'hôte.
Exemple
- Xen
Virtualisation légère
Conteneur
Conteneur
Caractéristiques
- Isolation faite par le noyau de l'hôte ;
- le noyau est partagé entre tous les invités ;
- les périphériques sont déjà en place (pas besoin d'en émuler) ;
- l'invité démarre à partir de
/sbin/init
.
Conteneurs applicatifs
Conteneurs applicatifs
Caractéristiques
- Noyau est partagé avec l'hôte ;
- on utilise tout en place : fs, sockets, périphériques ;
- lance directement une application, pas
init
.
Versus chroot
- Simple isolation d'une partie du système de fichiers ;
- pas de limitation sur les ressources utilisés ;
- pas d'isolation de l'arbre des processus ;
- implémentations douteuses (GrSecurity !).
Différentes implémentations
Points communs
Environnement virtualisé
- Arborescence de fichiers séparée ;
- arbre de processus isolé ;
- comptes utilisateurs distincts ;
- pile réseau et nom de machine propre.
Diversité
Unix
- FreeBSD : Jails lancées en 1998 ;
- Solaris : Zones lancées en 2005 ;
GNU/Linux
- OpenVZ : 2005, nécessite de patcher son kernel ;
- Linux Containers (LXC) : 2008, basé sur les namespaces et les cgroups ;
- Docker : 2013, en pleine croissance !
Et Windows ?
Isolation
- Parallels Virtuozzo Containers ;
- Sandboxie.
Dérivés
- Boot2Docker : Docker dans une VM.