GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer Linux KVM et créer une machine virtuelle invitée avec des exemples

KVM signifie Kernel-based Virtual Machine.

Comme son nom l'indique, il s'agit d'une technologie de virtualisation basée sur le noyau pour le système d'exploitation Linux sur du matériel prenant en charge la virtualisation.

Les systèmes d'exploitation invités peuvent être entièrement virtualisés ou para-virtualisés.

La para-virtualisation permet à plusieurs systèmes d'exploitation de s'exécuter sur un ensemble de matériel en utilisant efficacement des ressources telles que les processeurs et la mémoire. Dans la virtualisation Para, le système d'exploitation est modifié pour fonctionner avec une machine virtuelle, ce qui minimisera le temps d'exécution requis pour effectuer les opérations qui sont autrement difficiles à exécuter dans un environnement virtuel.

Ceci est le 1er article d'une série continue d'articles sur KVM.

1. Outils pour gérer la VM

Le package KVM fournit qemu-kvm, un outil spécifique à l'hyperviseur pour gérer les machines virtuelles.

Au lieu de cet outil, vous pouvez utiliser le progiciel connu sous le nom de libvirt qui est un moyen plus pratique et recommandé pour gérer les machines virtuelles. Ce logiciel comprend une bibliothèque d'API, un démon (libvirtd) et un utilitaire de ligne de commande (virsh).

Vous pouvez utiliser cet outil libvirt pour gérer toutes les machines virtuelles existantes fonctionnant sur KVM, Xen, VMWARE ESX, etc. La liste complète des hyperviseurs pris en charge est répertoriée sur libvirt.

Il existe peu d'autres outils disponibles que vous pouvez utiliser pour gérer votre machine virtuelle invitée.

  • virt-manager (Virtual Machine Manager) :un outil de gestion graphique pour les invités VM.
  • vm-install :un utilitaire piloté par un menu basé sur un script qui définit un invité VM et installe son système d'exploitation.
  • virt-viewer :un client de visualisation X pour les invités VM qui prend en charge le chiffrement TLS/SSL de l'authentification par certificat x509 et l'authentification SASL.

2. Vérifier la prise en charge de la virtualisation sur votre matériel

Pour vérifier si votre CPU prend en charge la virtualisation matérielle, exécutez la commande suivante.

# egrep '(vmx|svm)' /proc/cpuinfo

Si vous voyez vmx ou svm dans la sortie sous la section des indicateurs, votre matériel (CPU) prend en charge la virtualisation.

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov 
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm 
constant_tsc archrfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni 
dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 
popcnt lahf_lm tpr_shadow vnmi flexprioritpt vpid
.

3. Installer les packages KVM

Installez les packages KVM à l'aide de l'outil de gestion de packages spécifique à votre distribution (par exemple, yum sur RedHat et CentOS).

# yum install kvm

Une fois que vous avez installé le package kvm principal, installez les packages KVM suivants qui vous aideront à gérer les machines virtuelles sur votre système.

# yum install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools

Voici les packages liés à KVM qui sont installés sur ma machine. Le numéro de version de votre système peut varier légèrement.

# rpm -qa | egrep "virt|kvm|qemu"
python-virtinst-0.600.0-18.el6.noarch
qemu-img-0.12.1.2-2.415.el6.x86_64
libvirt-0.10.2-29.el6.x86_64
virt-viewer-0.5.6-8.el6.x86_64
qemu-kvm-0.12.1.2-2.415.el6.x86_64
libvirt-python-0.10.2-29.el6.x86_64
virt-manager-0.9.0-19.el6.x86_64
virt-top-1.0.4-3.15.el6.x86_64
libvirt-client-0.10.2-29.el6.x86_64
gpxe-roms-qemu-0.9.7-6.10.el6.noarch
virt-what-1.11-1.2.el6.x86_64

Une fois les packages installés, il est recommandé de redémarrer votre machine pour charger tous les modules KVM et libvirt, même si vous pouvez le recharger à l'aide de la commande modprobe.

Vous pouvez installer le système d'exploitation invité à l'aide du gestionnaire de machines virtuelles qui vm-install (pour SUSE Linux) et virt-install (pour RedHat).

Lorsque votre affichage est défini (par dépassement, reflectionX ou d'autres gestionnaires d'affichage), il fournit une interface graphique pour créer un assistant de machine virtuelle qui vous guide tout au long du processus d'installation. Si l'affichage n'est pas défini, c'est-à-dire lors de la connexion de la machine à l'aide de ssh sans transfert X11, vm-install propose un assistant de ligne de commande pour configurer de manière interactive un invité VM pour l'installation.

4. Pré-requis réseau pour créer une VM invitée

Par défaut, les VM n'auront accès au réseau qu'aux autres VM sur le même serveur (et à l'hôte lui-même). Si vous souhaitez que les VM aient accès à votre VLAN, vous devez créer un pont réseau sur l'hôte comme expliqué ici.

Modifiez /etc/sysconfig/network-scripts/ifcfg-eth0 et ajoutez la ligne "BRIDGE=br0" (assurez-vous de supprimer toutes les adresses IP statiques).

Créez le fichier /etc/sysconfig/network-scripts/ifcfg-br0 et ajoutez les entrées comme indiqué ci-dessous. Vous pouvez utiliser statique ou DHCP. J'ai utilisé une adresse IP statique dans ce cas.

DEVICE="br0"
BOOTPROTO="static"
IPADDR="xxx.xxx.xxx.xxx"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"

Si vous utilisez un pare-feu (comme iptables), créez une règle pour autoriser le trafic ponté.

5. Prérequis supplémentaires pour créer une VM invitée

L'emplacement par défaut des fichiers d'image VM est sous /var/lib/libvirt/images. Veuillez vous assurer qu'un espace suffisant est disponible dans ce répertoire. Sinon, vous pouvez faire pointer le fichier image vers un autre répertoire lors de la création de la VM.

Activez le transfert IP dans /etc/sysctl.conf en ajoutant la ligne suivante :

inet.ipv3.ip_forward=1

Pendant la phase de test, si vous avez SELinux en cours d'exécution, désactivez-le en réglant SELinux en mode permissif.

Redémarrez le système une fois les modifications ci-dessus effectuées.

6. Créer une nouvelle VM invitée à l'aide de virt-install

L'outil virt-install est utilisé pour créer la machine virtuelle. Cet outil peut être utilisé en mode interactif ou non interactif.

Dans l'exemple suivant, j'ai transmis toutes les valeurs requises pour créer une machine virtuelle en tant que paramètres de ligne de commande à la commande virt-install.

# virt-install \
 -n myRHELVM1 \
 --description "Test VM with RHEL 6" \
 --os-type=Linux \
 --os-variant=rhel6 \
 --ram=2048 \
 --vcpus=2 \
 --disk path=/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 \
 --graphics none \
 --cdrom /var/rhel-server-6.5-x86_64-dvd.iso \
 --network bridge:br0

Dans la commande virt-install ci-dessus :

  • n Nom de votre machine virtuelle
  • description Une description valide de votre machine virtuelle. Par exemple :serveur d'application, serveur de base de données, serveur Web, etc.
  • type os Le type de système d'exploitation peut être Linux, Solaris, Unix ou Windows.
  • variante du système d'exploitation Type de distribution pour le type de système d'exploitation ci-dessus. Par exemple, pour Linux, cela peut être rhel6, centos6, ubuntu14, suse11, fedora6 , etc. Pour Windows, cela peut être win2k, win2k8, win8, win7
  • bélier Mémoire pour la VM en Mo
  • vcpu Nombre total de processeurs virtuels pour la VM.
  • chemin du disque =/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 Chemin où les fichiers d'image VM sont stockés. Taille en Go. Dans cet exemple, ce fichier image de machine virtuelle fait 10 Go.
  • graphiques aucun Cela indique à virt-install d'utiliser une console texte sur le port série de la machine virtuelle au lieu de la fenêtre graphique VNC. Si vous avez configuré xmanager, vous pouvez ignorer ce paramètre.
  • cdrom Indique l'emplacement de l'image d'installation. Vous pouvez spécifier l'emplacement d'installation NFS ou http (au lieu de –cdrom). Par exemple, –location=http://.com/pub/rhel6/x86_64/
  • pont réseau :br0 Cet exemple utilise l'adaptateur ponté br0. Il est également possible de créer votre propre réseau sur n'importe quel port spécifique au lieu d'un adaptateur ponté. Si vous souhaitez utiliser le NAT, utilisez quelque chose comme ci-dessous pour le paramètre réseau avec le nom de réseau virtuel connu sous le nom de VMnetwork1. Tous les fichiers de configuration réseau se trouvent sous /etc/libvirt/qemu/networks/ pour les machines virtuelles. Par exemple :–network network=VMnetwork1

7. Lister les machines virtuelles

Vous pouvez modifier le menu grub avec "console=tty0 console=ttyS0,115200" pour afficher la console pour votre écran pendant le processus d'installation sur votre fenêtre SSH. Cela vous permettra d'installer le système d'exploitation via l'installation guidée. Sinon, vous pouvez utiliser le serveur X pour l'affichage.

La commande suivante affichera toutes les machines virtuelles installées sur votre système d'exploitation. Dans cet exemple, nous avons deux machines virtuelles installées sur ce système.

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     dev-dev-vm                     running
 2     myRHELVM1                      running

8. Modifier le fichier de configuration de la machine virtuelle

Une fois la machine virtuelle créée, vous verrez le fichier de configuration de la machine virtuelle à l'emplacement suivant. Le nom du fichier de configuration sera le nom de la VM avec l'extension .xml.

# ls -l /etc/libvirt/qemu/myRHELVM1.xml
-rw-------. 1 root root 2109 Oct 15 12:30 /etc/libvirt/qemu/myRHELVM1.xml

Vous devez éviter de modifier ce fichier manuellement et utiliser à la place la commande virsh edit. Pour modifier le domaine (machine virtuelle), procédez comme suit :

virsh edit myRHELVM1

9. Connectez-vous à la console de VM

Pour vous connecter à la console de la machine virtuelle, utilisez la commande suivante. Vous pouvez utiliser "ctrl + ]" pour quitter la console VM.

virsh console myRHELVM1

Si vous n'avez pas de serveur X en cours d'exécution sur votre hôte, la connexion à une console série de VM peut être le seul moyen de se connecter à une VM si le réseau n'est pas disponible.

La configuration de l'accès à la console d'une machine virtuelle n'est pas différente de celle d'un serveur physique, où vous ajoutez simplement les paramètres de démarrage du noyau appropriés à la machine virtuelle.

Par exemple, pour une machine virtuelle RHEL (ou une machine virtuelle CentOS), ajoutez les paramètres suivants à la ligne de démarrage du noyau dans /etc/grub.conf, puis redémarrez la machine virtuelle.

console=tty0 console=ttyS0,115200

Alternativement, vous pouvez également ajouter les entrées suivantes au fichier /etc/grub.conf.

serial --unit=0 --speed=115200
terminal --timeout=5 serial console

10. Afficher les informations sur la machine virtuelle

Pour afficher les informations de la VM, utilisez la commande suivante :

# virsh dominfo myRHELVM1
Id:             5
Name:           myRHELVM1
UUID:           58083ae7-51db-50c3-64d8-bc4c49f642d0
OS Type:        Linux
State:          running
CPU(s):         2
CPU time:       207.6s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c698,c788 (permissive)

11. Afficher l'utilisation du processeur et de la mémoire de la VM

Pour afficher l'utilisation du processeur et de la mémoire de la machine virtuelle, utilisez la commande virt-top comme indiqué ci-dessous.

# virt-top
virt-top 07:14:44 - x86_64 8/8CPU 1600MHz 32094MB
3 domains, 2 active, 2 running, 0 sleeping, 0 paused, 1 inactive D:0 O:0 X:0
CPU: 0.1%  Mem: 4096 MB (4096 MB by guests)
   ID S RDRQ WRRQ RXBY TXBY %CPU %MEM    TIME   NAME
    5 R    0    0 1546    0  0.0  6.0   3:29.55 dev-dev-vm
    8 R    0    0 1546    0  0.0  6.0   1:42.17 myRHELVM2
    -

12. Arrêter, redémarrer ou démarrer la machine virtuelle à l'aide de virsh

Pour arrêter la VM, procédez comme suit :

# virsh shutdown myRHELVM1
Domain myRHELVM1 is being shutdown

Pour redémarrer la VM, procédez comme suit :

# virsh reboot myRHELVM1

Pour démarrer ou mettre sous tension la machine virtuelle, procédez comme suit. Une fois la machine virtuelle démarrée, exécutez "virsh list -all" pour afficher toutes les machines virtuelles en cours d'exécution.

# virsh start myRHELVM1
Domain myRHELVM1 started

Dans le prochain article de la série KVM, nous couvrirons plus de détails sur la façon de modifier et de manipuler les configurations sur une machine virtuelle individuelle.


Linux
  1. Comment utiliser les commandes 'cat' et 'tac' avec des exemples sous Linux

  2. Comment installer et tester Ansible sur Linux

  3. Flatpak sur Linux :qu'est-ce que c'est et comment installer des applications avec ?

  4. Comment compresser des fichiers et des répertoires sous Linux (avec exemples)

  5. Comment installer et utiliser Flatpak sous Linux

Créer et modifier des polices sous Linux avec BirdFont

Comment sauvegarder et restaurer le système Linux avec Timeshift

Comment installer et utiliser Alpine avec Gmail IMAP sous Linux

Comment installer et utiliser la commande Ack sous Linux avec des exemples

Comment installer Dig sous Linux avec des exemples de ligne de commande

Comment installer et configurer KVM sur Ubuntu Linux