19 mars 2024

Tuto Virtualisation avec KVM, partie I : Installation et préparation du réseau

Dans cette première partie de la série sur KVM, nous allons procéder à l’installation de KVM (/Qemu) et mettre en place un début de réseau avec Openvswitch.

Suivez le guide !

 

I – KVM

A – Installation

On commence par les bases :

# apt install qemu-kvm libvirt-clients libvirt-daemon-system --no-install-recommends

Dans le cadre d’un serveur headless, le –-no-install-recommends est, justement, recommandé …

A la différence de Xen, KVM ne nécessite pas de booter sur un noyau particulier, donc rien d’autre à faire.

Pour  voir si ça tourne :

# service libvirtd status

A y est, c’est prêt… 🙂

B – Management de KVM

Pour le management des VMs, on trouve deux solutions :

  • En mode graphique, avec virt-manager. Je ne traite pas ceci dans mes articles car d’une, c’est déjà fort bien documenté, de deux, je suis en headless, de trois, si vous savez le faire en ligne de de commande, vous saurez le faire dans une GUI 😉
  • En mode ligne de commande donc, avec virsh.

Virsh, c’est un peu l’équivalent de la commande xl de Xen et ça se lance ainsi :

# virsh

On arrive alors dans la console virsh.

On peut taper par exemple :

virsh# help

Et pour quitter :

virsh# exit

Et on peut aussi passer le tout en une ligne :

# virsh node-info

Vous affiche les infos de l’host.

# virsh list

Cette commande vous affiche les VMs qui tournent.

Pour voir à la fois celles qui tournent et celles à l’arrêt, ce sera :

# virsh list --all

On reviendra de toute façon sur virsh en temps et en heure. Pour les impatients  :  https://linux.die.net/man/1/virsh

 

II – Réseau

A – Openvswitch

Pour le réseau, comme à mon habitude, j’utilise Openvswitch car c’est le bien.

# apt install openvswitch-switch

Et on va ajouter le premier bridge

# ovs-vsctl add-br br0

Nous allons modifier le fichier interfaces /etc/network/interfaces de l’hyperviseur :

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

#allow-hotplug eno1
#iface eno1 inet dhcp
auto br0
allow-ovs br0
allow-br0 eno1

iface br0 inet static
 address AAA.BBB.CCC.DDD
 netmask 255.255.255.0
 gateway IP.GATEWAY
 ovs_type OVSBridge
 ovs_ports eno1

iface eno1 inet manual
 ovs_bridge br0
 ovs_type OVSPort

ceci afin de le brancher directement sur le br0, etc…

Si votre port est nommé autrement (avec le nouveau système de Debian), vous adaptez, bien évidement.

Un p’tit reboot (on pourrait faire sans, mais ainsi, je valide que mon fichier est sans erreurs)

# reboot

Et voila, l’hyperviseur est connecté sur le bridge br0 pour sortir, et ce bridge permettra à d’autres machines de sortir directement.

 

B – KVM

On va confier la gestion du réseau des VMs au système de pools de KVM. C’est optionnel, mais pratique.

Pour voir ce qu’il y a en place :

# virsh net-list --all

Et ce truc par défaut, on le supprime :

# virsh net-undefine default

On va maintenant lui dire de prendre en compte notre tout nouveau switch br0.

Cela se fait en le définissant dans un fichier xml, nommé, par exemple, front.xml :

<network>
<name>ovs-front</name>
<forward mode='bridge'/>
<bridge name='br0'/>
<virtualport type='openvswitch'/>
</network>

Il faut ensuite l’insérer et l’activer :

# virsh net-define front.xml
# virsh net-start ovs-front
# virsh net-autostart ovs-front

Pour voir si tout est ok :

# virsh net-list

Voila, c’est prêt !

 

III – Conclusion

KVM/Qemu est en place, le réseaux est prêt. Il ne reste plus qu’a créer nos VMS et vous allez voir que par rapport à Xen où je n’expliquais qu’une seule façon de faire (je reviendrais d’ailleurs dessus), ici, on va balayer plusieurs méthodes et comprendre ainsi un peu mieux les arcanes du boot de linux.

Et pour commencer, on va se faire une petite VM en partant d’une ISO de Debian, la méthode la plus simple

2 réflexions sur « Tuto Virtualisation avec KVM, partie I : Installation et préparation du réseau »

    1. Avec un peu de retard, Merci Thierry !
      Et pour info, je reprends un peu la rédaction des articles…, ça devrait avancer !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *