GNU/Linux >> Tutoriels Linux >  >> Cent OS

Installer et configurer KVM dans le serveur CentOS 8

Ce guide étape par étape explique ce qu'est KVM et comment installer et configurer KVM dans le système d'exploitation CentOS 8 Linux.

Ce guide est officiellement testé dans CentOS 8 édition serveur minimale. Cependant, cela devrait également fonctionner dans RHEL 8 et ses clones comme AlmaLinux 8 et Rocky Linux 8.

Qu'est-ce que KVM ?

KVM , abréviation de K V basé sur ernel M virtuel achine, est un module de noyau FreeBSD et Linux qui permet au noyau d'agir comme un hyperviseur.

À partir de la version 2.6.20 du noyau, KVM est fusionné avec la ligne principale du noyau Linux.

À l'aide de KVM, vous pouvez facilement configurer un environnement de virtualisation dans une machine Linux et déployer une large gamme de systèmes d'exploitation invités, notamment Linux, Windows, BSD, Mac OS et bien d'autres.

Voyons maintenant comment installer et configurer KVM dans CentOS 8 Linux.

Prérequis

Avant d'installer KVM, assurez-vous d'abord que votre système prend en charge la virtualisation matérielle. Nous avons documenté différentes manières d'identifier si un système Linux prend en charge la virtualisation dans le guide suivant.

  • Comment savoir si un processeur prend en charge la technologie de virtualisation (VT)

Si votre système prend en charge la virtualisation matérielle, continuez les étapes suivantes.

1. Installer et configurer KVM dans le serveur CentOS 8

Pour les besoins de ce guide, j'utiliserai le système suivant :

Serveur de virtualisation KVM :

  • SE – Serveur minimal CentOS 8 (pas d'interface graphique)
  • Adresse IP :192.168.225.53/24

Même s'il est testé sur CentOS 8, ce guide devrait également fonctionner correctement sur RHEL 8.

1.1. Installer KVM dans CentOS 8

Remarque : Toutes les commandes données tout au long de ce didacticiel doivent être exécutées en tant que root utilisateur. Si vous êtes connecté en tant qu'utilisateur normal, ajoutez sudo devant toutes les commandes ci-dessous.

Installez Kvm et toutes les dépendances requises pour configurer un environnement de virtualisation sur votre serveur CentOS 8 en utilisant la commande en tant que root utilisateur :

# dnf install qemu-kvm libvirt virt-install

Ici,

  • emu-kvm - Métapaquet QEMU pour la prise en charge de KVM (c'est-à-dire la virtualisation complète QEMU sur du matériel x86),
  • libvirt - des programmes pour la librairie libvirt,
  • virt-installer - des programmes pour créer et cloner des machines virtuelles.

Une fois KVM installé, activez et démarrez libvertd service (s'il n'est pas déjà démarré) :

# systemctl enable libvirtd
# systemctl start libvirtd

Vous pouvez également combiner les deux commandes et les exécuter en une seule ligne comme ci-dessous :

# systemctl enable --now libvirtd

Vérifiez l'état du service libvirtd avec la commande :

# systemctl status libvirtd

Exemple de résultat :

● libvirtd.service - Démon de virtualisationChargé :chargé (/usr/lib/systemd/system/libvirtd.service ; activé ; préréglage fournisseur :enable> Actif :actif (en cours d'exécution) depuis le mer. 2020-07-15 14:27:32 IST ; Il y a 5 s Docs :man:libvirtd(8) https://libvirt.org PID principal :1097 (libvirtd) Tâches :17 (limite :32768) Mémoire :57,0 M CGroup :/system.slice/libvirtd.service └─1097 / usr/sbin/libvirtdJul 15 14:27:28 centos8.ostechnix.lan systemd[1] :Démarrage du démon de virtualisation...Jul 15 14:27:32 centos8.ostechnix.lan systemd[1] :Démarrage du démon de virtualisation. 

Le service libvertd est opérationnel !

Vérifiez si les modules KVM sont chargés :

# lsmod | grep kvm

Exemple de résultat :

kvm_intel 294912 0kvm 786432 1 kvm_intelirqbypass 16384 1 kvm

Génial! Les modules KVM sont chargés. Créons maintenant un pont réseau.

1.2. Configurer la mise en réseau du pont avec KVM dans CentOS

Un réseau ponté partage l'interface réseau réelle de l'ordinateur hôte avec d'autres machines virtuelles pour se connecter au réseau extérieur. Par conséquent, chaque VM peut se lier directement à n'importe quel IPv4 disponible ou IPv6 adresses, tout comme un ordinateur physique.

Par défaut, KVM configure un pont virtuel privé, afin que toutes les machines virtuelles puissent communiquer entre elles, au sein de l'ordinateur hôte.

Il fournit son propre sous-réseau et DHCP pour configurer le réseau de l'invité et utilise NAT pour accéder au réseau hôte.

Regardez l'adresse IP des interfaces virtuelles KVM par défaut en utilisant ip commande :

# ip a

Exemple de résultat :

1 :lo : mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 hôte de portée lo valid_lft pour toujours prefer_lft pour toujours inet6 ::1/128 hôte de portée valid_lft pour toujours prefer_lft pour toujours2:enp0s3: mtu 1500 qdisc fq_codel état UP groupe par défaut qlen 1000 lien/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff:ff inet 192.168.225.52/24 brd 192.168.225.255 portée dynamique globale noprefixroute enp0s3 valid_lft 42217sec prefer_lft 42217sec inet6 2409:4072:918:98cf :ad3b:b969:8ec8:f9c7/64 portée globale noprefixroute valid_lft pour toujours prefer_lft pour toujours inet6 fe80::b404:4d52:8bee:18bf/64 portée lien noprefixroute valid_lft pour toujours prefer_lft pour toujours3:enp0s8: mtu 1500 qdisc fq_codel état groupe UP par défaut qlen 1000 lien/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff4:enp0s9: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff5:virbr0  : mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 portée globale virbr0 valid_lft pour toujours prefered_lft pour toujours6 :virbr0-nic : mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff :ff:ff:ff:ff:ff

Comme vous pouvez le voir, le réseau par défaut KVM virbr0 utilise 192.168.122.1/24 Adresse IP. Toutes les VM utiliseront une adresse IP dans le 192.168.122.0/24 La plage IP et le système d'exploitation hôte seront accessibles à 192.168.122.1 .

Vous devriez pouvoir vous connecter en ssh au système d'exploitation hôte (à 192.168.122.1 ) depuis l'intérieur du système d'exploitation invité et utilisez scp pour copier des fichiers dans les deux sens.

C'est OK si vous accédez uniquement aux machines virtuelles à l'intérieur de l'hôte lui-même. Cependant, vous ne pouvez pas accéder aux machines virtuelles à partir d'autres systèmes distants du réseau.

Parce qu'ils utilisent une plage IP différente, c'est-à-dire 192.168.225.0/24 dans mon cas. Afin d'accéder aux machines virtuelles à partir d'autres hôtes distants, nous devons configurer un pont public qui s'exécute sur le réseau hôte et utilise n'importe quel serveur DHCP externe se trouvant sur le réseau hôte.

Pour le dire en termes simples, nous allons faire en sorte que toutes les machines virtuelles utilisent la même série IP utilisée par le système hôte.

Avant de configurer un réseau ponté public, nous devons désactiver Netfilter pour des raisons de performance et de sécurité . Netfilter est actuellement activé sur les ponts par défaut.

Pour désactiver netfilter, créez un fichier nommé /etc/sysctl.d/bridge.conf :

# vi /etc/sysctl.d/bridge.conf

Ajoutez les lignes suivantes :

net.bridge.bridge-nf-call-ip6tables=0net.bridge.bridge-nf-call-iptables=0net.bridge.bridge-nf-call-arptables=0

Enregistrez et fermez le fichier.

Ensuite, créez un autre fichier appelé /etc/udev/rules.d/99-bridge.rules :

# vi /etc/udev/rules.d/99-bridge.rules

Ajoutez la ligne suivante :

ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", RUN+="/sbin/sysctl -p /etc/sysctl.d/bridge.conf"

Cela définira les indicateurs nécessaires pour désactiver netfilter sur les ponts à l'endroit approprié au démarrage du système. Enregistrez et fermez le fichier. Redémarrez votre système pour prendre en compte ces changements.

Ensuite, nous devons désactiver le réseau par défaut que KVM a installé pour lui-même.

Trouvez le nom des interfaces réseau KVM par défaut à l'aide de la commande "ip link":

# lien IP

Exemple de résultat :

1 :lo : mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00 :002:enp0s3: mtu 1500 qdisc fq_codel state UP mode DEFAULT groupe par défaut qlen 1000 link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff :ff3:enp0s8: mtu 1500 qdisc fq_codel state UP mode DEFAULT groupe par défaut qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff :ff4:enp0s9: mtu 1500 qdisc fq_codel state UP mode DEFAULT groupe par défaut qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff :ff5 :virbr0 : mtu 1500 qdisc noqueue state DOWN mode DEFAULT groupe par défaut qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff6 :virbr0-nic : mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff

Comme vous le voyez dans la sortie ci-dessus, les entrées virbr0 et virbr0-nic sont les réseaux KVM.

Supprimons le réseau KVM par défaut avec la commande :

# virsh net-destroy par défaut

Exemple de résultat :

Réseau par défaut détruit

Annuler la définition du réseau par défaut avec la commande :

# virsh net-undefine par défaut

Exemple de résultat :

Le réseau par défaut n'a pas été défini

Si les commandes ci-dessus ne fonctionnent pas pour une raison quelconque, vous pouvez utiliser ces commandes pour désactiver et annuler la définition du réseau KVM par défaut :

# ip link delete virbr0 type bridge
# lien ip supprimer virbr0-nic

Exécutez maintenant ip link à nouveau pour vérifier si le virbr0 et virbr0-nic les interfaces sont effectivement supprimées :

# lien IP

Exemple de résultat :

1 :lo : mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00 :002:enp0s3: mtu 1500 qdisc fq_codel state UP mode DEFAULT groupe par défaut qlen 1000 link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff :ff3:enp0s8: mtu 1500 qdisc fq_codel state UP mode DEFAULT groupe par défaut qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff :ff4:enp0s9: mtu 1500 qdisc fq_codel state UP mode DEFAULT groupe par défaut qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff :ff

Eh bien, les réseaux KVM par défaut ont disparu.

Maintenant, configurons le pont public KVM à utiliser lors de la création d'une nouvelle machine virtuelle.

Créez une nouvelle interface pontée nommée br0 en utilisant nmcli commande :

# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0

Définir l'adresse IP de l'interface de pont :

# connexion nmcli modifier br0 ipv4.addresses 192.168.225.53/24 ipv4.method manuel

Définissez la passerelle pour l'interface de pont :

# connexion nmcli modifier br0 ipv4.gateway 192.168.225.1

Définissez le DNS pour l'interface de pont :

# connexion nmcli modifier br0 ipv4.dns 192.168.225.1

Ensuite, nous devons retirer l'une de vos cartes d'interface réseau et l'ajouter en tant qu'esclave au pont.

Veuillez noter que si votre serveur n'a qu'une seule carte réseau et que vous accédez au serveur via SSH, votre connexion sera interrompue après la suppression de la carte réseau. Je vous suggère de suivre les étapes suivantes dans la console de votre serveur.

Par exemple, je vais ajouter enp0s8 interface comme esclave de l'interface pont br0 .

Pour supprimer l'interface réseau enp0s8 , exécutez :

# connexion nmcli de enp0s8

Remplacez enp0s8 avec votre propre carte réseau.

Remarque : N'utilisez pas de cartes d'interface réseau sans fil pour les ponts. La plupart des entrelacs sans fil ne prennent pas en charge le pontage. Utilisez toujours des interfaces réseau câblées pour une connectivité transparente !

Ensuite, ajoutez le enp0s8 au pont en utilisant la commande :

# nmcli connection add type bridge-slave autoconnect yes con-name enp0s8 ifname enp0s8 master br0

Ici, l'interface réseau du pont br0 est attaché à l'interface réseau de l'hôte enp0s8 . Remplacez les noms des interfaces réseau ci-dessus qui correspondent à votre réseau.

Redémarrez le gestionnaire de réseau pour appliquer les modifications :

# systemctl redémarrer NetworkManager

Si possible, il est préférable de redémarrer votre système :

# redémarrage

Connectez-vous à votre serveur et vérifiez si l'adresse IP a été attribuée à l'interface du pont :

$ ip a

Exemple de résultat :

1 :lo : mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 hôte de portée lo valid_lft pour toujours prefer_lft pour toujours inet6 ::1/128 hôte de portée valid_lft pour toujours prefer_lft pour toujours2 :enp0s3 : mtu 1500 qdisc fq_codel état groupe DOWN par défaut qlen 1000 lien/ether 08:00 :27:b7:3a:84 brd ff:ff:ff:ff:ff:ff3 :enp0s8 : mtu 1500 qdisc fq_codel master br0 état UP groupe par défaut qlen 1000 lien/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff4:enp0s9: mtu 1500 qdisc fq_codel état UP groupe par défaut qlen 1000 lien/éther 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff5 :br0 : mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff inet  192.168.225.53/24 brd 192.168.225.255 portée globale noprefixroute br0 valid_lft pour toujours prefer_lft pour toujours inet6 2409:4072:6084:198:df03:d9ed:62eb:df34/64 portée globale noprefixroute valid_lft pour toujours prefer_lft pour toujours inet6 fe80::e8c8:e98b:7fef:5874/64 lien de portée noprefixroute valid_lft pour toujours prefer_lft pour toujours

Comme vous le voyez dans la sortie ci-dessus, l'interface réseau pontée br0 est attribué avec l'adresse IP 192.168.225.53 et le enp0s8 l'entrée a maintenant master br0 entrée. Cela signifie que enp0s8 appartient au pont.

Vous pouvez également utiliser bridge commande pour afficher l'état du pont :

# lien de pont afficher br0 3 :enp0s8 : mtu 1500 master br0 state forwarding priority 32 cost 100

Nous avons créé avec succès une interface de pont et elle est active. Nous devons faire une dernière chose.

Nous devons configurer KVM pour utiliser cette interface de pont comme interface par défaut. Pour cela, créez un XML fichier appelé host-bridge.xml :

# vi host-bridge.xml

Ajoutez les lignes suivantes :

 host-bridge  

Exécutez les commandes suivantes pour démarrer le pont nouvellement créé et en faire le pont par défaut pour les VM :

# virsh net-define host-bridge.xml
# virsh net-start host-bridge
# virsh net-autostart host-bridge

Vérifiez si le pont est actif et démarré à l'aide de la commande :

# virsh net-list --all

Exemple de résultat :

Démarrage automatique de l'état du nom persistant ------------------------------------------------ ----- host-bridge actif oui oui

Toutes nos félicitations! Nous avons installé et configuré avec succès KVM dans le serveur sans tête CentOS 8.

2. Créer et gérer des machines invitées KVM

Nous pouvons créer et gérer des machines virtuelles à partir de la ligne de commande ou à l'aide de n'importe quel outil de gestion KVM comme Cockpit et Virt-manager. Reportez-vous aux guides suivants pour plus de détails.

  • Comment gérer les machines virtuelles KVM avec le programme Virsh
  • Gérer les machines virtuelles KVM à l'aide de la console Web Cockpit
  • Comment gérer les machines virtuelles KVM avec Virt-Manager

3. Activer l'accès à la console Virsh pour les machines virtuelles

Après avoir créé les invités KVM, je peux y accéder via SSH, le client VNC, Virt-viewer, Virt-manager et la console Web Cockpit, etc. Mais je ne pouvais pas y accéder en utilisant la virsh console commande. Pour accéder aux invités KVM à l'aide de "virsh console", reportez-vous au guide suivant :

  • Comment activer l'accès à la console Virsh pour les invités KVM

Autres guides liés à KVM sur ce blog

  • Installer et configurer KVM dans le serveur sans tête Ubuntu 20.04
  • Installer et configurer KVM dans OpenSUSE Tumbleweed
  • Créer une machine virtuelle KVM à l'aide de l'image Qcow2 sous Linux
  • Comment migrer des VM Virtualbox vers des VM KVM sous Linux
  • Activer la prise en charge UEFI pour les machines virtuelles KVM sous Linux
  • Comment activer la virtualisation imbriquée dans KVM sous Linux
  • Afficher les statistiques des systèmes de virtualisation avec Virt-top sous Linux
  • Comment trouver l'adresse IP d'une machine virtuelle KVM
  • Comment renommer la machine virtuelle invitée KVM
  • Accéder et modifier des images de disque de machine virtuelle avec Libguestfs
  • Créer rapidement des images de machines virtuelles avec Virt-builder
  • Comment sauver des machines virtuelles avec Virt-rescue
  • Comment étendre la taille du disque de la machine virtuelle KVM sous Linux
  • Configurer un dossier partagé entre l'hôte KVM et l'invité
  • Comment modifier l'emplacement du pool de stockage par défaut KVM Libvirt
  • [Résolu] Impossible d'accéder au fichier de stockage, erreur d'autorisation refusée dans KVM Libvirt
  • Comment exporter et importer des machines virtuelles KVM sous Linux

Conclusion

Dans ce guide, nous avons expliqué comment installer et configurer KVM dans l'édition serveur CentOS 8.

Nous avons également examiné comment créer et gérer des machines virtuelles KVM à partir de la ligne de commande à l'aide de virsh tool et en utilisant des outils GUI nommés Cockpit et Virt-manager.

Enfin, nous avons vu comment activer l'accès à la console virsh pour les machines virtuelles KVM.

À ce stade, vous devriez avoir un environnement de virtualisation entièrement fonctionnel sur votre serveur CentOS 8.


Cent OS
  1. Installer et configurer HAProxy sur RHEL 8 / CentOS 8 Linux

  2. Comment installer et configurer VNC sur CentOS 7

  3. Installer et configurer le serveur FTP sur CentOS 7 / RHEL 7 - (vsftpfd)

  4. Comment installer et configurer Gitlab sur CentOS 8

  5. Comment installer et configurer Postgres 13 sur Centos 8

Comment installer et configurer Zimbra Multi Server sur CentOS 7

Comment installer et configurer le serveur VNC dans CentOS 7 / RHEL 7

Installer le serveur PXE et configurer le client PXE sur CentOS 7

Installer et configurer Check_MK Server sur CentOS 7

Comment installer et configurer Memcached sur CentOS 8

Comment installer et configurer le serveur DHCP sur Centos 8