Virtualisation

Cloisonnement, conteneur, (para-)virtualisation, émulation…

Licence Creative Commons

Vocabulaire

  • Machine hôte (host) : machine qui héberge des conteneurs/machines virtuelles
  • Machine invitée (guest) : machine hébergée sur un hôte (virtualisée, contenues, etc…)

Cloisonnement

Buts recherchés :

  • Isoler un processus dans une sous-partie du système de fichiers

Fonctionnement :

  • Isoler du processus père dans une partie de l'arborescence
  • Si le processus tombe, il ne peut faire de « dégâts » que sur une partie limitée du système

Outils :

  • chroot (Linux)
  • jail (*BSD)

Limitations :

  • Pas de limite de mémoire
  • Pas de limite de processus
  • Pas de limite de CPU
  • Pas véritablement de garantie d'isolation

Sandbox

Buts recherchés :

  • Isoler des processus et applications complexes (contexte de méfiance)
  • Limiter la mémoire consommée
  • Appliquer un contexte de sécurité
  • Réserver des ressources à l'OS (pour empêcher le débordement, l'exhaustion de ressources)

Fonctionnement :

  • Allouer (allocation dure) de ressources au système
  • Répliquer d'un contexte de sécurité et appliquer de ce dernier

Outils :

  • OS Mobile : Android, iOS, Boot2Gecko
  • À partir de la 7ème génération de console de jeux : Xbox 360, PS3.

Limitations :

  • Réservé aux environnements « hostiles »
  • On cherche toujours à protéger l'OS et ses ressources (rares)

Conteneurs/system-wide virtualisation/virtualisation d'applications

Buts recherchés :

  • Faire tourner des applications dans des environnements hétéroclites
  • Multiplier les instances d'un même environnement
  • Limiter les ressources système (CPU, mémoire)
  • Limiter et isoler les ressources réseaux

Fonctionnement :

  • Process init supplémentaire
  • Utilisation du noyau hôte
  • Différents conteneurs avec différentes distributions

Outils :

  • Docker
  • LXC
  • OpenVZ

Limitations :

  • Utilisation du noyau hôte (donc potentiel problème de compatibilité)
  • Configuration réseau limitée
  • Impossible de mixer les OS invités (seulement des variantes de l'OS hôte)
  • On est toujours dans une sous-arborescence de l'OS hôte

Niveau d'exécution d'un processeur (1)

Protection Ring

Niveau d'exécution d'un processeur (2)

  • Protéger la machine
  • Les applications ne peuvent pas accéder aux fonctions avancées…
  • …celle-ci sont réservées pour des niveau d'exécution plus élevés
  • Problème : les OS invités pensent pouvoir accéder au RING 0
  • Plus gros problème : les OS invités sont de simples applications de l'OS hôte

Para-virtualisation

Buts recherchés :

  • Résoudre le problème d'accès au RING 0
  • Multi-OS invités sur le même hôte
  • Économie de ressources système (CPU, mémoire, disque)
  • …et réseau !
  • Niveau d'abstraction supplémentaire par rapport à l'hôte

Fonctionnement :

  • Le système invité a « conscience » d'être virtualisé typiquement les opérations privilégiées (RING 0) sont exécutés par l'hôte.
  • Premières « vraies » machines virtuelles : disques virtuels et interfaces réseaux virtuelles
  • Allocation de ressources systèmes (CPU, RAM) plutôt qu'une limitation de ressources
  • Les pilotes disques et réseaux sont optimisés dans cette optique

Outils :

  • Xen
  • Microsoft Hyper-V (en mode Windows)
  • VmWare (jusqu'à un certain point)

Limitations :

  • Nécessité de modifier l'OS invité
  • Tous les OS ne sont pas modifiés pour tous les para-virtualiseurs !

Niveau d'exécution d'un processeur (3)

Tout de suite, c'est plus simple…

Virtualisation

Buts recherchés :

  • Isoler le plus possible l'hôte et des invités
  • Multi-OS sans modification des OS
  • Aucun moyen (ou presque) pour les invités de savoir qu'ils sont invités

Fonctionnement :

  • Reprend les bases de la para-virtualisation (disques virtuels, interfaces virtuelles, mémoire dédiée, etc…)
  • Exécution de l'hyperviseur (hôte) sur le Ring -1 du CPU

Outils :

  • KVM (intégré au noyau Linux)
  • VmWare
  • Xen
  • VirtualBox

Limitations :

  • Isolation réseau limitée dans la plupart des cas (switches virtuels basiques)
  • Pour des raisons de performances, on utilise quand même des pilotes optimisés
  • Impossible de virtualiser/émuler tous les composants d'une machine(matériel spécial, dongle de verrouillage, etc…)
  • Compliqué de virtualiser un GPU
  • Impossible de faire tourner des OS avec des architectures matérielles différentes (ARM, PPC, etc…)

Émulation

Buts recherchés :

Buts recherchés :

  • Plus aucune possibilité pour le système invité de savoir que c'est un invité
  • Émulation matérielle complète

Fonctionnement :

  • Re-création en software de composants hardware (y compris les plus critiques)
  • aussi précisément que possible…
  • …ou pas

Outils :

  • QEMU
  • IT Guru
  • Dolphin, BizHawk, Mupen64+, GENS, MAME, etc…

Limitations :

  • Performance
  • Connaissance du matériel de base (hardware) et connaissance des micrologiciels implantés (firmware)
  • Rétro-ingénierie fastidieuse (voire très fastidieuse)
  • Aucune garantie sur la précision de l'émulation (à part quelques projets comme tas-videos.org)