La virtualisation d'ordinateur consiste à faire fonctionner un ou plusieurs systèmes d'exploitation (système invité - Guest) sur un même ordinateur physique (système Hôte - host).
Quand on virtualise un système d'exploitation Serveur, ils sont aussi appelés serveur privé virtuel (Virtual Private Server ou VPS).
Emulation : l'émulation (en informatique) consiste à substituer un élément de matériel informatique – tel un terminal informatique, un ordinateur ou une console de jeux – par un logiciel.
Virtualisation : la virtualisation consiste à faire fonctionner un ou plusieurs systèmes d'exploitation comme un simple logiciel sur un même ordinateur.
Source Wikipedia
Le logiciel de virtualisation est généralement assez lourd, gourmand en ressources et s'exécute sur l'OS hôte. Il permet :
Cette solution isole bien les OS invités, mais elle a un coût en performance.
Plusieurs OS hétérogènes peuvent s'exécuter sur une même machine grâce à une isolation complète.
Les cartes réseaux virtuelles sont émuler sur une seule carte réseau réelle.
Exemples de solution : logiciels Parallels (Parallels Desktop, Parallels Server), Oracle VM VirtualBox (libre), logiciels VMware (VMware Player, VMware Workstation), logiciels libres (QEMU : émulateur de plateformes x86, PPC, Sparc, et bochs : émulateur de plateforme x86).
Ce type de virtualisation est aussi appelé Hyperviseur de type 2 (Hosted).
Il s'agit d'OS spécifiques conçus pour la virtualisation. On les appelle hyperviseur. Ils sont caractérisés par :
Actuellement l’hyperviseur est la méthode de virtualisation d'infrastructure la plus performante en permettant plus de flexibilité dans le cas de la virtualisation dans un DATACENTER.
Exemple de solution : Citrix Xen Server (libre), VMware ESX, Microsoft Hyper-V , Parallels Server Bare Metal, KVM (libre), Proxmox (basé sur KVM)
Remarque : Hyper-V est maintenant intégré à Windows depuis la version 8
Ce type de virtualisation est aussi appelé Hyperviseur de type 1 (Natif).
Une autre solution de virtualisation consiste à utiliser l'isolation comme méthode de cloisonnement au niveau du système d'exploitation de type Linux.
LXC, contraction de l’anglais Linux Containers est un système de virtualisation utilisé pour faire fonctionner des environnements Linux isolés les uns des autres dans des conteneurs :
Proxmox propose la création de conteneurs LXC.
Le logiciel libre Docker s'appuie sur les conteneurs LXC en étendant les fonctionnalités proposées pour automatiser le déploiement d'applications dans des conteneurs logiciels. Docker permet d'empaqueter une application et ses dépendances dans un conteneur isolé, qui pourra être exécuté sur n'importe quel serveur Linux.
Docker permet de réaliser une architecture en microservices. Cela consiste à concevoir une application serveur sous la forme d’un ensemble de petits services :