virli/slides/rappels.md

148 lines
3.1 KiB
Markdown
Raw Normal View History

2015-09-27 13:59:04 +00:00
# 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
![](hyperv.png)
### 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
![](cntnr.png)
### 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
![](cntrapp.png)
### 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.