kvm
libvirt
rocky
tutos
virtualization
KVM/QEMU sur Rocky Linux 9
Installation et configuration de KVM pour la virtualisation sur Rocky Linux 9.
Composant
Version
Rocky Linux
9.x
QEMU-KVM
7.x
Libvirt
9.x
Durée estimée : 45 minutes
Prérequis
Vérifier le support CPU
# Vérifier les extensions de virtualisation
grep -E '(vmx|svm)' /proc/cpuinfo
# vmx = Intel VT-x
# svm = AMD-V
# Vérifier le module KVM
lsmod | grep kvm
1. Installation
# Packages de virtualisation
dnf install -y @virtualization-host-environment
# Ou installation minimale
dnf install -y qemu-kvm libvirt virt-install virt-viewer
# Outils supplémentaires
dnf install -y libguestfs-tools virt-top bridge-utils
Démarrer les services
systemctl enable --now libvirtd
systemctl status libvirtd
# Vérifier
virsh version
2. Configuration réseau
Bridge réseau
# Créer un bridge
nmcli connection add type bridge con-name br0 ifname br0
nmcli connection add type ethernet slave-type bridge con-name br0-port1 ifname eth0 master br0
# Configurer IP
nmcli connection modify br0 ipv4.addresses "192.168.1.10/24"
nmcli connection modify br0 ipv4.gateway "192.168.1.1"
nmcli connection modify br0 ipv4.dns "192.168.1.1"
nmcli connection modify br0 ipv4.method manual
# Activer
nmcli connection up br0
Réseau NAT par défaut
# Le réseau 'default' est créé automatiquement
virsh net-list --all
virsh net-start default
virsh net-autostart default
Créer un réseau isolé
cat > /tmp/isolated-net.xml << 'EOF'
<network>
<name>isolated</name>
<bridge name="virbr1"/>
<ip address="10.10.10.1" netmask="255.255.255.0">
<dhcp>
<range start="10.10.10.10" end="10.10.10.100"/>
</dhcp>
</ip>
</network>
EOF
virsh net-define /tmp/isolated-net.xml
virsh net-start isolated
virsh net-autostart isolated
3. Stockage
Pool par défaut
# Le pool 'default' utilise /var/lib/libvirt/images
virsh pool-list --all
virsh pool-start default
virsh pool-autostart default
Créer un pool personnalisé
mkdir -p /data/vms
cat > /tmp/data-pool.xml << 'EOF'
<pool type="dir">
<name>data</name>
<target>
<path>/data/vms</path>
</target>
</pool>
EOF
virsh pool-define /tmp/data-pool.xml
virsh pool-build data
virsh pool-start data
virsh pool-autostart data
4. Créer une VM
Télécharger une ISO
cd /var/lib/libvirt/images
wget https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9-latest-x86_64-minimal.iso
Installation interactive
virt-install \
--name rocky9-vm \
--ram 2048 \
--vcpus 2 \
--disk path = /var/lib/libvirt/images/rocky9-vm.qcow2,size= 20 \
--os-variant rocky9 \
--network network = default \
--graphics vnc,listen= 0 .0.0.0 \
--cdrom /var/lib/libvirt/images/Rocky-9-latest-x86_64-minimal.iso
Installation automatisée (kickstart)
virt-install \
--name rocky9-auto \
--ram 2048 \
--vcpus 2 \
--disk path = /var/lib/libvirt/images/rocky9-auto.qcow2,size= 20 \
--os-variant rocky9 \
--network network = default \
--graphics none \
--console pty,target_type= serial \
--location /var/lib/libvirt/images/Rocky-9-latest-x86_64-minimal.iso \
--extra-args "console=ttyS0,115200n8 inst.ks=http://kickstart.example.com/rocky9.ks"
Import depuis qcow2 existant
virt-install \
--name imported-vm \
--ram 2048 \
--vcpus 2 \
--disk path = /var/lib/libvirt/images/existing.qcow2 \
--os-variant rocky9 \
--network network = default \
--graphics vnc \
--import
5. Gestion des VMs
Commandes de base
# Lister les VMs
virsh list --all
# Démarrer / Arrêter
virsh start rocky9-vm
virsh shutdown rocky9-vm
virsh destroy rocky9-vm # Force stop
virsh reboot rocky9-vm
# Autostart
virsh autostart rocky9-vm
virsh autostart --disable rocky9-vm
# Supprimer
virsh undefine rocky9-vm
virsh undefine --remove-all-storage rocky9-vm
Console
# Console graphique
virt-viewer rocky9-vm
# Console série
virsh console rocky9-vm
# VNC
virsh vncdisplay rocky9-vm
# Détails VM
virsh dominfo rocky9-vm
# Configuration XML
virsh dumpxml rocky9-vm
# Adresse IP
virsh domifaddr rocky9-vm
6. Snapshots
# Créer un snapshot
virsh snapshot-create-as rocky9-vm snap1 "Before update"
# Lister
virsh snapshot-list rocky9-vm
# Restaurer
virsh snapshot-revert rocky9-vm snap1
# Supprimer
virsh snapshot-delete rocky9-vm snap1
7. Clonage
# Cloner une VM (doit être arrêtée)
virt-clone \
--original rocky9-vm \
--name rocky9-clone \
--file /var/lib/libvirt/images/rocky9-clone.qcow2
8. Modifier une VM
Ajouter de la RAM
virsh setmaxmem rocky9-vm 4G --config
virsh setmem rocky9-vm 4G --config
Ajouter des vCPUs
virsh setvcpus rocky9-vm 4 --config --maximum
virsh setvcpus rocky9-vm 4 --config
Ajouter un disque
# Créer le disque
qemu-img create -f qcow2 /var/lib/libvirt/images/data-disk.qcow2 50G
# Attacher
virsh attach-disk rocky9-vm /var/lib/libvirt/images/data-disk.qcow2 vdb --persistent
Ajouter une interface réseau
virsh attach-interface rocky9-vm network default --model virtio --persistent
9. Templates
Préparer une image template
# Installer la VM, puis :
virt-sysprep -d rocky9-template
# Ou manuellement dans la VM :
# - Supprimer /etc/ssh/ssh_host_*
# - Supprimer /etc/machine-id
# - Nettoyer les logs
Déployer depuis template
# Copier le disque
cp /var/lib/libvirt/images/rocky9-template.qcow2 /var/lib/libvirt/images/new-vm.qcow2
# Créer la VM
virt-install \
--name new-vm \
--ram 2048 \
--vcpus 2 \
--disk path = /var/lib/libvirt/images/new-vm.qcow2 \
--os-variant rocky9 \
--network network = default \
--import
10. Migration
Migration à froid
# Exporter la config
virsh dumpxml rocky9-vm > rocky9-vm.xml
# Copier le disque
rsync -av /var/lib/libvirt/images/rocky9-vm.qcow2 target-host:/var/lib/libvirt/images/
# Sur le serveur cible
virsh define rocky9-vm.xml
Migration live
# Prérequis : stockage partagé (NFS, iSCSI)
virsh migrate --live rocky9-vm qemu+ssh://target-host/system
11. Monitoring
# Stats
virt-top
# Ressources
virsh domstats rocky9-vm
# CPU
virsh cpu-stats rocky9-vm
# I/O
virsh domblkstat rocky9-vm vda
virsh domifstat rocky9-vm vnet0
12. Firewall
firewall-cmd --permanent --add-port= 5900 -5910/tcp # VNC
firewall-cmd --reload
Vérification
virsh version
virsh list --all
virsh net-list --all
virsh pool-list --all
virt-host-validate
Dépannage
# Logs libvirt
journalctl -u libvirtd -f
# Logs VM
cat /var/log/libvirt/qemu/rocky9-vm.log
# Vérifier config
virsh validate rocky9-vm.xml
# Problèmes de permissions
ls -la /var/lib/libvirt/images/
Problème
Solution
Cannot access storage
Vérifier permissions, SELinux
Network not starting
virsh net-start default
VM won't start
Vérifier logs, ressources
Changelog
Date
Modification
2024-12
Création initiale