Virtualisation · 7 min read · Jan 07, 2026

Virtualisation avec KVM sur un serveur Fedora 17

Virtualisation avec KVM sur un serveur Fedora 17

Version 1.0
Auteur : Falko Timme
Suivez-moi sur Twitter

Ce guide explique comment vous pouvez installer et utiliser KVM pour créer et exécuter des machines virtuelles sur un serveur Fedora 17. Je vais montrer comment créer des machines virtuelles basées sur des images et aussi des machines virtuelles qui utilisent un volume logique (LVM). KVM est l’abréviation de Kernel-based Virtual Machine et utilise la virtualisation matérielle, c’est-à-dire que vous avez besoin d’un processeur qui prend en charge la virtualisation matérielle, par exemple Intel VT ou AMD-V.

Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

J’utilise un serveur Fedora 17 avec le nom d’hôte server1.example.com et l’adresse IP 192.168.0.100 ici comme mon hôte KVM.

J’avais désactivé SELinux sur mon système Fedora 17. Je n’ai pas testé avec SELinux activé ; cela pourrait fonctionner, mais sinon, il vaut mieux désactiver SELinux également :

vi /etc/selinux/config

Définissez SELINUX=disabled…

| # Ce fichier contrôle l'état de SELinux sur le système. # SELINUX= peut prendre l'une de ces trois valeurs : # enforcing - La politique de sécurité SELinux est appliquée. # permissive - SELinux imprime des avertissements au lieu d'appliquer. # disabled - Aucune politique SELinux n'est chargée. SELINUX=disabled # SELINUXTYPE= peut prendre l'une de ces deux valeurs : # targeted - Les processus ciblés sont protégés, # mls - Protection Multi Level Security. SELINUXTYPE=targeted |

… et redémarrez :

reboot

Nous avons également besoin d’un système de bureau où nous installons virt-manager afin que nous puissions nous connecter à la console graphique des machines virtuelles que nous installons. J’utilise ici un bureau Fedora 17.

2 Installation de KVM

Hôte KVM Fedora 17 :

Vérifiez d’abord si votre processeur prend en charge la virtualisation matérielle - si c’est le cas, la commande

egrep '(vmx|svm)' --color=always /proc/cpuinfo

devrait afficher quelque chose, par exemple comme ceci :

[root@server1 ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
[root@server1 ~]#

Si rien n’est affiché, alors votre processeur ne prend pas en charge la virtualisation matérielle, et vous devez vous arrêter ici.

Maintenant, nous importons les clés GPG pour les paquets logiciels :

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Pour installer KVM et virtinst (un outil pour créer des machines virtuelles), nous exécutons

yum install kvm libvirt python-virtinst qemu-kvm

Créez les liens de démarrage du système pour le démon libvirt et démarrez-le :

systemctl enable libvirtd.service  
systemctl start libvirtd.service

Pour vérifier si KVM a été installé avec succès, exécutez

virsh -c qemu:///system list

Cela devrait afficher quelque chose comme ceci :

[root@server1 ~]# virsh -c qemu:///system list  
 Id Name                 State  
----------------------------------  
  
[root@server1 ~]#

Si cela affiche une erreur à la place, alors quelque chose a mal tourné.

Ensuite, nous devons configurer un pont réseau sur notre serveur afin que nos machines virtuelles puissent être accessibles depuis d’autres hôtes comme si elles étaient des systèmes physiques dans le réseau.

Pour ce faire, nous installons le paquet bridge-utils…

yum install bridge-utils

… et configurons un pont.

Je désactive le NetworkManager de Fedora et active le réseau “normal”. Le NetworkManager est bon pour les bureaux où les connexions réseau peuvent changer (par exemple LAN vs WLAN), mais sur un serveur, vous ne changez généralement pas les connexions réseau :

systemctl disable NetworkManager.service  
systemctl enable network.service  
systemctl restart network.service  
systemctl stop NetworkManager.service

Vérifiez votre /etc/resolv.conf s’il liste tous les serveurs de noms que vous avez précédemment configurés :

cat /etc/resolv.conf

Si des serveurs de noms manquent, exécutez

system-config-network

et ajoutez à nouveau les serveurs de noms manquants.

Ensuite, découvrez votre interface réseau principale en exécutant

ifconfig

Dans mon cas, elle s’appelle em1 - c’est important pour s’assurer que vous modifiez le bon fichier de configuration réseau - dans mon cas /etc/sysconfig/network-scripts/ifcfg-em1.

Pour configurer le pont, créez le fichier /etc/sysconfig/network-scripts/ifcfg-br0 (veuillez utiliser les valeurs DNS1 (plus tous les autres paramètres DNS, le cas échéant), GATEWAY, IPADDR, NETMASK et SEARCH du fichier /etc/sysconfig/network-scripts/ifcfg-em1) :

vi /etc/sysconfig/network-scripts/ifcfg-br0

| DEVICE=br0 TYPE=Bridge BOOTPROTO=static DNS1=8.8.8.8 GATEWAY=192.168.0.1 IPADDR=192.168.0.100 NETMASK=255.255.255.0 ONBOOT=yes DNS2=8.8.4.4 SEARCH="example.com" |

Modifiez /etc/sysconfig/network-scripts/ifcfg-em1 comme suit (commentez BOOTPROTO, DNS1 (et tous les autres serveurs DNS, le cas échéant), GATEWAY, IPADDR, NETMASK et SEARCH, définissez NM_CONTROLLED sur no, et ajoutez BRIDGE=br0) :

vi /etc/sysconfig/network-scripts/ifcfg-em1

| UUID="e8a818cc-0e23-47b8-88f3-013567828572" NM_CONTROLLED=no #BOOTPROTO=none HWADDR=00:1e:90:f3:f0:02 ONBOOT=yes #IPADDR=192.168.0.100 #NETMASK=255.255.255.0 #DNS2=8.8.4.4 TYPE=Ethernet #GATEWAY=192.168.0.1 #DNS1=8.8.8.8 IPV6INIT=no USERCTL=no PREFIX=24 BRIDGE=br0 |

Ensuite, redémarrez le système :

reboot

Après le redémarrage, exécutez

ifconfig

Cela devrait maintenant afficher le pont réseau (br0) :

[root@server1 ~]# ifconfig  
br0: flags=4163  mtu 1500  
        inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255  
        inet6 fe80::21e:90ff:fef3:f002  prefixlen 64  scopeid 0x20  
        ether 00:1e:90:f3:f0:02  txqueuelen 0  (Ethernet)  
        RX packets 70  bytes 7511 (7.3 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 76  bytes 10847 (10.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
em1: flags=4163  mtu 1500  
        ether 00:1e:90:f3:f0:02  txqueuelen 1000  (Ethernet)  
        RX packets 117  bytes 15163 (14.8 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 92  bytes 12899 (12.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
lo: flags=73  mtu 16436  
        inet 127.0.0.1  netmask 255.0.0.0  
        inet6 ::1  prefixlen 128  scopeid 0x10  
        loop  txqueuelen 0  (Local Loopback)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
virbr0: flags=4099  mtu 1500  
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255  
        ether ce:18:6f:2a:7f:0b  txqueuelen 0  (Ethernet)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
[root@server1 ~]#

3 Installation de virt-viewer ou virt-manager sur votre bureau Fedora 17

Bureau Fedora 17 :

Nous avons besoin d’un moyen de nous connecter à la console graphique de nos invités - nous pouvons utiliser virt-manager pour cela. Je suppose que vous utilisez un bureau Fedora 17.

Devenez root…

su

… et exécutez…

yum install virt-manager libvirt qemu-system-x86 openssh-askpass

… pour installer virt-manager.

(Si vous utilisez un bureau Ubuntu 12.04, vous pouvez installer virt-manager comme suit :

sudo apt-get install virt-manager

)

4 Création d’un invité Debian Squeeze (basé sur une image) depuis la ligne de commande

Hôte KVM Fedora 17 :

Revenons maintenant à notre hôte KVM Fedora 17.

Jetez un œil à

man virt-install

pour apprendre à utiliser virt-install.

Nous allons créer nos machines virtuelles basées sur des images dans le répertoire /var/lib/libvirt/images/ qui a été créé automatiquement lorsque nous avons installé KVM au chapitre deux.

Pour créer un invité Debian Squeeze (en mode pont) avec le nom vm10, 512 Mo de RAM, deux CPU virtuels, et l’image disque /var/lib/libvirt/images/vm10.img (avec une taille de 12 Go), insérez le CD d’installation Netinstall de Debian Squeeze dans le lecteur CD et exécutez

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Bien sûr, vous pouvez également créer une image ISO du CD d’installation Netinstall de Debian Squeeze (veuillez la créer dans le répertoire /var/lib/libvirt/images/ car plus tard, je vais montrer comment créer des machines virtuelles via virt-manager depuis votre bureau Fedora, et virt-manager cherchera des images ISO dans le répertoire /var/lib/libvirt/images/)…

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso

… et utilisez l’image ISO dans la commande virt-install :

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

La sortie est la suivante :

[root@server1 ~]# virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm  


Démarrage de l'installation...  
Allocation de 'vm10.img'              |  12 Go     00:00  
Création de domaine...                |    0 B     00:00  
L'installation du domaine est toujours en cours. Vous pouvez vous reconnecter à  
la console pour terminer le processus d'installation.  
[root@server1 ~]#
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.