Qu’est-ce qu’une machine virtuelle ?
Une machine virtuelle souvent abrégé VM est un conteneur logiciel qui consiste a émuler une machine physique au travers de différentes technologies de virtualisation.
- L’émulation complète
- La para-virtualisation
- La virtualisation assisté par le matériel Intel VT et AMD-SVM
Une machine virtuelle est donc une « boite » qui contient son propre matériel physique.
Le gestionnaire de cette « boite », doit également émuler les accès aux périphériques, accès mémoire, interruptions, …
A l’instar d’une machine physique, une VM a ses limitations matériels. On ne peut pas installer 50 contrôleur USB !
Comment est représenté ce conteneur ?
Une VM de type VMware Wokstation/ESXI est un répertoire contenant des fichiers qui représente
- La configuration de la VM : .VMX
- Le disque : .VMDK , flat.VMDK : Thin provisionning
- Le Bios de la machine : .NVRAM
On trouve également d’autres fichiers :
- Les snapshot (clichés) : .VMSN
- Les métadonnées des snapshot : .VMSD
- Les journaux d’activités : .LOG
Plusieurs types de machines virtuelles
- Complètement virtualisé
La totalité du matériel est traduit logiciellement, les cartes réseaux, les ports série, .., mais aussi les interruptions, l’accès a la mémoire et les changement de contexte par exemple.
La machine virtuelle est vu comme tout logiciel qui s’exécute sur le système d’exploitation.
- Para-virtualisé
Le système d’exploitation contenue dans la machine virtuelle est modifié. Des pilotes sont installés pour améliorer les performances de la vm. Les VMware Tools pour VMware Workstation/ESXI
- La virtualisation assisté par le matériel
Le CPU possède des instructions dédiés a la virtualisation, INTEL VT, AMD-SVM.
Ces instructions crée un nouvel anneau de protection (cf. Mode User/noyau). L’anneau -1 ou « monitor mode » , puisque les CPU ajoute une structure de contrôle a la virtualisation.
Ces instructions font basculer le processeur dans un mode invité et la vm s’exécute en mode privilégié, les CPU et les accès mémoire (Extended Page Tables :EPT et Rapid Virtualization Indexing RVI) par exemple ne sont pas émulés par l’hyperviseur (VMware Workstation)
Conclusion
Une machine virtuelle est un conteneur qui émule du matériel pour un système d’exploitation, dit OS invité. La machine est un contenue dans un répertoire sur le disque local de la machine hôte (VMware Workstation), peut être un stockage distant (NAS, SAN).
Des technologies permettent d’accélérer grandement la virtualisation des VMs.