Virtualisation de systèmes d'exploitation

De OSWiki
Aller à la navigation Aller à la recherche

Introduction

Virtualisation de systèmes d'exploitation :

  • technique qui permet de faire fonctionner en même temps, sur un seul ordinateur (hôte), plusieurs systèmes d'exploitation (invités). Il existe plusieurs types de virtualisation.
  • on parle alors de Virtual Machines (VM) ou Machine Virtuelle.
  • La virtualisation sur Wikipédia

Hyperviseur

Schéma de la virtualisation de type I avec l'hyperviseur KVM
Schéma de la virtualisation de type I avec l'hyperviseur KVM
  • Logiciel de virtualisation installé dans le système d'exploitation de l'hôte et qui permet à plusieurs systèmes d'exploitation de fonctionner sur l'hôte.
  • Crée des environnements clos où sont installé les OS invités.
  • KVM (Kernel-based Virtual Machine) est un hyperviseur libre de type I pour Linux. C'est l'hyperviseur qui sera utilisé dans ce document.





Pourquoi utiliser la virtualisation ?

  • Utiliser plusieurs VM en même temps sur la même machine,
  • Tester différents systèmes d'exploitation,
  • Tester des logiciels dans un environnement contrôlé sans danger pour le système hôte,
  • Copier et utiliser des environnements de test,
  • Utiliser des configurations différentes sur le même serveur comme par exemple Nginx et PostgreSQL sur une VM et Apache2 et MySQL sur une autre.
  • Transporter un OS d'une machine à l'autre.

Description de l'installation et des outils utilisés dans ce document

Le réseau

Réseau correspondant à l'installation de VM décrite dans ce document.
Réseau correspondant à l'installation de VM décrite dans ce document.

Le réseau local est connecté à internet via un modem routeur. Il communique avec l'extérieur (le monde) à l'aide d'une adresse IP publique que nous représenterons par XXX.XXX.XXX.XXX.

Le modem routeur possède 4 prises LAN (réseau local ).Donc, on peut y connecter 4 appareils. Ici,on voit :

  • un PC sur la prise 1 et
  • un serveur sur la prise 2.
  • Les deux autres prises sont libres.

Les appareils du réseau local communiquent l'un avec l'autre à l'aide d'adresses IP privées. Ici, par exemple :

  • le PC a pour adresse IP privée 198.168.0.1
  • le serveur l'adresse IP privée 192.168.0.2.



Les systèmes d'exploitation des machines

Dans ce document il ne sera question que d'OS GNU/Linux. Pour trouver des informations sur l'OS installé tapez dans un terminal la commande :

uname -a  
  • PC :
Linux <nom de la machine> 5.15.0-58-generic #64~20.04.1-Ubuntu SMP Fri Jan 6 16:42:31 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
  • Serveur (machine hôte):
Linux <nom du serveur> 5.4.0-137-generic #154-Ubuntu SMP Thu Jan 5 17:03:22 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

L'hyperviseur KVM

  • Hyperviseur de type I pour une virtualisation complète.
  • Simule un nouvel ordinateur complet pour les le système d'exploitation (OS) invité.
  • KVM est plus facile à mettre en place qu'un hyperviseur de type II.
  • KVM est un logiciel libre.
  • Pour des OS prévus pour la même architecture matériel que le processeur physique.
  • Hyperviseurs : KVM

Est-ce que la machine hôte supporte la virtualisation ?

Envoyer cette commande dans une console de l'hôte où on veut installer une VM:

egrep -c '(svm|vmx)' /proc/cpuinfo

Réponse :

  • si 0  : l'hôte ne supporte pas la virtualisation, l'installation est compromise.
  • si 1 ou + : l'hôte supporte la virtualisation, on peut poursuivre l'installation.

La virtualisation est-elle activée dans le BIOS/UEFI ?

Installer cpu-checker

sudo apt install cpu-checker

Commande

Envoyer cette commande dans une console de l'hôte.

sudo kvm-ok

Réponses

  • Si la virtualisation n'est pas activée et si le processeur prend en charge la virtualisation , cette réponse est envoyée en anglais (ici elle est traduite pour plus de commodité).
INFO : /dev/kvm n'existe pas
ASTUCE : sudo modprobe kvm_intel
INFO : Votre processeur prend en charge les extensions KVM
INFO : KVM (vmx) est désactivé par votre BIOS
ASTUCE : Entrez dans la configuration de votre BIOS et activez la technologie de virtualisation (VT),
puis éteignez ou rallumez votre système.
L'accélération KVM ne peut PAS être utilisée

Il faut entrer dans le BIOS et activez la technologie de virtualisation (VT), puis rebooter le système.

  • Si la virtualisation est activée cette réponse s'affiche en anglais dans la console.
INFO : /dev/kvm existe
L'accélération KVM peut être utilisée

Activation de la Technologie de virtualisation pour l'hôte

Arrêter le serveur

Installer des périphériques sur le serveur hôte

Un écran + un clavier + une souris

Ouvrir le BIOS/UEFI

Redémarrer le serveur hôte et presser la touche qui ouvre le BIOS/UEFI.

Par exemple F2 pour ouvrir ASUS UEFI BIOS Utility.

Chercher comment activer la virtualisation

Par exemple, pour ASUS UEFI BIOS Utility

  • Advanced Mode / Onglet Avancé /
  • Activer Technologie de virtualisation Intel tout en bas de l'écran.
  • Bouton "Quitter "

Enregistrer les modifications et réinitialiser le serveur

Tester la machine

sudo kvm-ok

On devrait obtenir :

INFO: /dev/kvm exists
KVM acceleration can be used

Redémarrer le serveur hôte

  • Arrêter le serveur,
  • Débrancher écran, clavier et souris
  • Redémarrer le serveur hôte

Installation d'une machine virtuelle

Conditions d'installation

Voir les chapitres précédants.

  • le ou les processeurs de la machine hôte destinée à recevoir la VM invitée acceptent la virtualisation
  • la virtualisation est activée dans le BIOS/UEFI.

En plus il faut une connexion à internet ou au moins l'archive iso d'installation du système d'exploitation de la VM.

Installer KVM et annexes sur le serveur hôte

sudo apt-get install qemu-kvm 
  • qemu-kvm - virtualisation complète sur les machines x86 ;

Ajouter l'utilisateur au groupe kvm

sudo adduser $USER kvm

Redémarrer.

Créer un fichier image sur le serveur hôte

Répertoire vm

  • Créer un répertoire vm sur le serveur hôte. Il contiendra l'image disque de la VM. Nous allons, par exemple, créer ce dossier dans le home de l'utilisateur.
mkdir /home/<utilisateur>/vm

Image disque

Moyen pratique de simuler un grand nombre de médias : elles permettent notamment de stocker, sur un seul disque dur physique, de nombreuses images disques virtuelles permettant d'accéder à des données qui pourraient ne pas être compatibles avec le système hôte.[1] Il va contenir le système de fichier virtuels de la VM.

Commande :

qemu-img create -f qcow2 emplacement/vm/du/fichier_image.img 6G
  • Emplacement : emplacement/vm/du/fichier_image.img

- 6G est la taille virtuelle de ce système de fichier virtuel.

Réponse

Formatting 'emplacement/du/vm/fichier_image.img', fmt=qcow2 size=6442450944 cluster_size=65536 lazy_refcounts=off refcount_bits=16

Charger l'archive iso d'Ubuntu server 20.04 sur le serveur hôte

  • Créer un dossier iso , ou placer les fichiers iso des systèmes d'exploitation. Par exemple, pous placerons ce dossier dans le home de l'utilisateur :
mkdir /home/<utilisateur>/iso
  • Lancer la commande suivante depuis le dossier iso
 wget https://releases.ubuntu.com/20.04.5/ubuntu-20.04.5-live-server-amd64.iso

Installation de virt-manager

Présentation

« L'application virt-manager est une interface utilisateur de bureau pour la gestion des machines virtuelles via libvirt. Elle cible principalement les VMs KVM, mais gère également Xen et LXC (conteneurs linux). Elle présente une vue synthétique des domaines en cours d'exécution, leurs performances en direct et les statistiques d'utilisation des ressources. Des assistants permettent la création de nouveaux domaines, ainsi que la configuration et l'ajustement de l'allocation des ressources et du matériel virtuel d'un domaine. Une visionneuse client VNC et SPICE intégrée présente une console graphique complète pour le domaine invité.» [2]

Installation

  • Sur le serveur hôte
sudo apt install libvirt-daemon-system libvirt-clients bridge-utils
  • Sur le client (ssh-askpass-gnome pour utiliser une connexion ssh)  :

Le client est un ordinateur à partir duquel on administre la serveur. Ici c'est le PC du réseau local. Mais, il peut être accessible via un réseau étendu. On va installer une interface graphique sur le client.

 sudo apt install virt-manager ssh-askpass-gnome
 sudo adduser $user libvirt

Créer une machine virtuelle avec le gestionnaire de machines virtuelles

Ajouter une connexion QEMU/KVM vers le serveur hôte

Fenêtre du gestionnaire de machine virtuelle
Fenêtre du gestionnaire de machine virtuelle

Lancer le gestionnaire de machines virtuelles sur la machine cliente [3]
  • soit depuis le gestionnaire d'applications du système d'exploitation
  • soit en utilisant la commande virt-manager dans une console.

La fenêtre du gestionnaire de machines virtuelles s'ouvre.

Aller dans Fichier/Ajouter une connexion. Une fenêtre s'ouvre.

Ajouter une connexion
Ajouter une connexion
  • Cocher la case "Se connecter à l'hôte distant via SSH" si nécessaire.
  • Nom de l'utilisateur : entrer le nom de l'utilisateur du serveur hôte
  • Nom de l'hôte : nom de domaine ou IP du serveur hôte. Dans un réseau local, on utilise l'IP privée du serveur hôte. Si le serveur est distant, c'est à dire qu'il est accessible via internet, on utilisera l'IP publique du serveur hôte.
  • Presser sur le bouton "Connecter"

Affichage de la connexion QEMU/KVM à l'hôte
Affichage de la connexion QEMU/KVM à l'hôte
La connexion QEMU/KVM s'affiche dans le gestionnaire. Elle va nous permettre de créer une nouvelle VM sur le serveur hôte.

Organiser le stockage sur le serveur hôte depuis le gestionnaire de VM

Fenêtre des détails de la connexion Dans le gestionnaire de VM, ouvrir le menu Édition/ Détails de la connexion.

Une nouvelle fenêtre s'ouvre.

Fenêtre de gestion du stockage sur le/les serveur(s) hôte(s) Cliquer sur l'onglet Stockage dans la fenêtre des détails de la connexion pour ouvrir la fenêtre de gestion du stockage sur les serveurs hôtes des VM gérées.

À gauche de la fenêtre on voit une colonne qui contient la liste des stockages disponibles. Normalement, il y a au moins le stockage "default".

En bas de cette colonne, il y a 4 petits boutons, une croix verte, une flèche, une croix blanche dans un rond rouge, et un signe interdit. Il ne faut pas confondre la croix verte de la colonne de gauche et la croix verte de la fenêtre de droite.

Nous allons ajouter deux stockages :

  • le stockage de l'image disque qui va contenir le système de fichier de la VM
  • le stockage de l'archive iso du système d'exploitation qui sera installé sur la VM.

Pour cela cliquer sur la croix verte de la colonne de gauche. Une nouvelle fenêtre s'ouvre.

Fenêtre de création d'un nouveau stockage Cette fenêtre va nous permettre de créer un nouveau stockage.
  • Dans le champ Nom, on indique le nom du stockage. Image disque.
  • Dans Type on laisse dir: Répertoire des fichiers système
  • Dans Chemin Cible, on indique le chemin de l'image disque créée sur le serveur hôte. /home/<utilisateur>/vm/

Remplacer <utilisateur> par le nom de l'utilisateur du serveur hôte.

Presser sur Terminer.

On fait pareil pour l'archive de l'iso ce qui donne :

  • Nom : ISO
  • Type : dir: Répertoire des fichiers système
  • Chemin Cible : /home/<utilisateur>/iso/