Présentation de la formation
KVM
(Kernel Base Virtual Machine)
Formation KVM (Kernel Virtual Based Machine)
Plan
• Présentation du formateur
• Le plan de formation
• Publics concernés
• Connaissances requises
• Présentation du Lab
• Liens des ressources logicielles
• Autres liens utiles
Formation KVM (Kernel Virtual Based Machine)
Le plan de formation
• Introduction • Virsh le shell de virtualisation
• Concept de la virtualisation • Introduction
• KVM Kernel Base Virtual Machine • Gérer les machines virtuelles
• LibVirt La librairie universelle pour la • Manipulation des stockages
virtualisation • Manipulation avancée des machines virtuelles
• Migration des machines virtuelles
• Mieux Comprendre KVM
• Installation de KVM • Virt-manager
• Petite configuration réseau ponté rapide • Installation d'une machine
• gérer le matériel des machines virtuelles
• Les machines virtuelles • Migration des machies virtuelles
• Décortiquer la boite virtuelle • Mise en place des pilotes Virtio MS Windows®
• Installation d'une machine
• Gestion des Machines Virtuelles
• Le stockage en environnement virtualisé • clonage et modèle
• Le LVM Logical Volume Manager • Les Snapshot
• Le NAS NFS
• Le SAN ISCSI • Le réseau en environnement virtualisé
• Les FS distribues – Glusterfs • Comprendre le réseau virtualisé, bridge,
macvtap
• Channel bonding
• OpenVswitch
Formation KVM (Kernel Virtual Based Machine)
Publics concernés
• Techniciens
• Ingénieurs
• Administrateurs Systèmes
• Ingénieurs Systèmes
• Personne désirant avoir une bonne connaissance de kvm avant d’ aller plus loin
• Toute personne désirant gérer et maintenir un système virtualisé
Formation KVM (Kernel Virtual Based Machine)
Connaissances requises
• Bonnes connaissances sur la gestion et la maintenance des systèmes
d’exploitation Linux
• Connaissances (de base) sur l’administration des systèmes
d’exploitation Windows
• Connaissances (de base) sur : TCP/IP, Adressage IP, matériels réseaux
• Connaissance souhaitée ☺ :
• Bonne maitrise du Shell Linux
• Un autre produit de virtualisation
Formation KVM (Kernel Virtual Based Machine)
Présentation du Lab
• Schéma du Lab
• Infos techniques du Lab
• Nom DNS du domaine
• [Link]
• DHCP activé
• oui
• Nom des hyperviseurs
• [Link]
• Adresse IP du réseau (Net ID)
• [Link] /24 ([Link])
Formation KVM (Kernel Virtual Based Machine)
Liens des ressources utiles
• KVM : [Link]
• Qemu : [Link]
• Libvirt : [Link]
• Libguestfs : [Link]
Formation KVM (Kernel Virtual Based Machine)
Autres liens utiles
• Inetdoc : [Link]
• Turnkey appliance : [Link]
Formation KVM (Kernel Virtual Based Machine)
Are you ready ? ☺
Formation KVM (Kernel Virtual Based Machine)
Introduction a KVM
Concept de
Virtualisation
Formation KVM (Kernel Virtual Based Machine)
Plan
• La full virtualisation – Émulation complète
• La Paravirtulisation
• La virtualisation matérielle – HVM
• La notion de conteneurs – containers
Formation KVM (Kernel Virtual Based Machine)
La full virtualisation – Émulation complète
• Translation Binaire
Ne requiert aucune modification
au niveau du système
d'exploitation
N'a pas "conscience" de la
virtualisation
Demande une charge importante
au CPU
Formation KVM (Kernel Virtual Based Machine)
La Paravirtulisation
• Pilotes spécifique
Le système d'exploitation requiert
une modification au niveau du noyau
Communication entre l’hyperviseur
et le guest au travers de « backend »
PCI passthrough – DirectPass I/O
Très bonne performance
Formation KVM (Kernel Virtual Based Machine)
La virtualisation matérielle – HVM
• Accès direct au CPU de l’hôte
Modification matérielle sur les CPU
Technologies :
• Intel-VT-x (VT-d, VT-c)
• AMD SVM
Le noyau de l’hôte est modifié pour
ajouter les fonctions de virtualisation
matérielles
Formation KVM (Kernel Virtual Based Machine)
La notion de conteneurs - containers
• Guest OS sans noyau
Utilise le noyau de l’hôte, isolation
du guest OS
Pas de virtualisation au sens
émulation du matériel
Excellente performance, très léger,
uniquement disponible sur Unix-
Linux
Formation KVM (Kernel Virtual Based Machine)
Ce qu’on a couvert
• La full virtualisation
• La virtualisation matérielle – HVM
• La Paravirtulisation
• La notion de conteneurs - containers
Formation KVM (Kernel Virtual Based Machine)
Introduction
KVM
(Kernel Base Virtual Machine)
Plan
• Historique
• Fonctionnalitées
• Architecture
• Outils
Formation KVM (Kernel Virtual Based Machine)
Historique
• KVM est une solution de Full virtualisation assistée par le matériel
• Avi Kivity a commencé le développement de KVM en 2006 comme module
noyau au travers d’une startup nommé Qumranet
• KVM est intégré au noyau Linux 2.6 à partir de février 2007.
• Red Hat rachète Qumranet en 2008
• KVM a été choisi par OpenVirtualization Alliance comme hyperviseur.
• OpenVirtualization Alliance fait parti du projet Linux Foundation
Formation KVM (Kernel Virtual Based Machine)
Historique
KVM est la base de beaucoup de solution de virtualisation
oVirt/Redhat Virtualization
Openstack
OpenNebula
Proxmox Ve
Formation KVM (Kernel Virtual Based Machine)
Fonctionnalitées
• Virtualisation matérielle
• Paravirtualisation :
Réseau
Bloc
PCI Passthrough
Balloning memory
• OS invité Linux, FreeBSD, MS Windows, Mac OSX, nested hypervisor
• Live Migration
• Kernel Samepage Merging, Huges Pages, CPU pinning
• S’interface avec Libvirt
Formation KVM (Kernel Virtual Based Machine)
Architecture
KVM module noyau !!
Crée un périphérique /dev/kvm
QEMU-KVM s’occupe de l’émulation
des périphériques (usb, réseau,
disques, cpu ... )
Les outils permettant de créer et
utiliser des machines virtuelles KVM
interagissent avec ce périphérique
Une architecture virtualisée kvm,
repose sur le /dev/kvm et sur qemu
pour l’émulation
Formation KVM (Kernel Virtual Based Machine)
Architecture
Le périphérique /dev/kvm
permet au noyau de fonctionner
dans un mode « guest » qui permet
à chaque machine virtuelle de
posséder son propre espace
d’adressage, différent de celui du
noyau mais résidant dans l’espace
utilisateur
Formation KVM (Kernel Virtual Based Machine)
Architecture
Les processeurs virtuels (VCPU)
Périphériques paravirutalisés,
périphériques virutalisés et backend
des drivers
Tâches internes au processus qemu-kvm
Formation KVM (Kernel Virtual Based Machine)
Outils
• L’utilisateur ne va pas directement discuter avec les ioctl et le
périphérique KVM /dev/kvm.
qemu-system-{x86_64,i386, arm, ...}, qemu-img
Libvirt : virsh, virt-install, virt-clone, virt-manager (GUI)
Ovirt, proxmox, Openstack
Formation KVM (Kernel Virtual Based Machine)
Ce qu’on a couvert
• Historique
• Fonctionnalitées
• Architecture
• Le couple qemu/kvm
• Outils
Formation KVM (Kernel Virtual Based Machine)
Introduction
LibVirt
(La librairie universelle
pour la virtualisation)
Formation KVM (Kernel Virtual Based Machine)
Plan
• Libvirt – API de virtualisation
• Architecture
• Fonctionnalitées
Formation KVM (Kernel Virtual Based Machine)
Libvirt – API de virtualisation
• Une API, un démon et des outils de gestion pour la plupart des
plateformes de virtualisation
Formation KVM (Kernel Virtual Based Machine)
Architecture – espace noms
Formation KVM (Kernel Virtual Based Machine)
Architecture
Formation KVM (Kernel Virtual Based Machine)
Fonctionnalitées
• Gestion distante sécurisée, sasl, kerberos, TLS, certificat x509
• Gestion distante des Dom0, DomU
• Gestion distante des réseaux virtuels et interfaces, du stockage
• Monitoring des hyperviseurs(Dom0) et machines virtuelles (DomU)
Formation KVM (Kernel Virtual Based Machine)
Ce qu’on a couvert
• Libvirt – API de virtualisation
• Architecture
• Fonctionnalitées
Formation KVM (Kernel Virtual Based Machine)
Mieux Comprendre KVM
Installer KVM
Formation KVM (Kernel Virtual Based Machine)
Plan
• Installation de KVM
Formation KVM (Kernel Virtual Based Machine)
Installation de KVM
# yum install kvm qemu-kvm libvirt virsh virt-install libguestfs-tools
# yum groupinstall "Virtualisation Tools" "Virtualization Platform"
# yum install python-virtinst
Formation KVM (Kernel Virtual Based Machine)
Ce qu’on a couvert
• Installation de KVM
Formation KVM (Kernel Virtual Based Machine)
Mieux Comprendre KVM
configuration
réseau pontée rapide
Formation KVM (Kernel Virtual Based Machine)
Plan
• Schéma
• Configuration Centos/Debian
Formation KVM (Kernel Virtual Based Machine)
Schéma
Mode bridge
Permet aux DomU (vm)
Noyau d’héberger des services
réseaux dhcp, dns, ...
TCP/IP
Utilise Bridge-utils
br0
Commande brctl
Bridge
eth0 eth1
Formation KVM (Kernel Virtual Based Machine)
Configuration Centos/Debian
# yum install bridge-utils | #apt-get install bridge-utils
CentOS/Red hat Debian/Ubuntu
/etc/sysconfig/network-scripts/ifcfg-
br0 /etc/network/interfaces
DEVICE=br0 Auto lo br0
TYPE=Bridge Iface etho inet manual
ONBOOT=yes Iface br0 inet static
DELAY=0 bridge_ports eth0
BOOTPROTO=static address [Link]
IPADDR=[Link] netmask [Link]
NETMASK=[Link]
GATEWAY=[Link]
/etc/sysconfig/network-scripts/ifcfg-
eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
Formation KVM (Kernel Virtual Based Machine)
Ce qu’on a couvert
• Schéma
• Configuration Centos/Debian
Formation KVM (Kernel Virtual Based Machine)
Les machines virtuelles
Décortiquer la
boite virtuelle
Formation KVM (Kernel Virtual Based Machine)
Plan
• C’est quoi une machine virtuelle ?
• Fichier de configuration d’une vm
• Les disques
• Les cartes réseaux
• Le graphique
• La mémoire, les vCPU
• Ou se trouve ces paramètres ?
Formation KVM (Kernel Virtual Based Machine)
C’est quoi une machine virtuelle ?
• La représentation “logiciel” d’une machine physique
Formation KVM (Kernel Virtual Based Machine)
Fichier de configuration d’une vm
<name>ad-samba</name>
<uuid>bc3d9faf-59c8-4d7e-ee80-6a516f9c7225</uuid>
<memory unit='KiB'>536576</memory>
<currentMemory unit='KiB'>536576</currentMemory>
• Un fichier xml <vcpu placement='static'>4</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-
trusty'>hvm</type>
<boot dev='hd'/>
• Un fichier de disques </os>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm-spice</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/nfs/images/[Link]'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x05' function='0x0'/>
</disk>
Formation KVM (Kernel Virtual Based Machine)
C’est quoi une machine virtuelle ?
Formation KVM (Kernel Virtual Based Machine)
Les disques
• Les disques IDE, SCSI, VIRTIO, VIRTIO SCSI
Formation KVM (Kernel Virtual Based Machine)
Des cartes réseaux
• Des cartes réseaux virtualisés et para-virtualisés
Formation KVM (Kernel Virtual Based Machine)
Des périphériques graphiques
• Différents serveurs d’affichage
Formation KVM (Kernel Virtual Based Machine)
De la mémiore, de vCPUs
Formation KVM (Kernel Virtual Based Machine)
Ou se trouve ces paramètres ?
• Dans différents répertoires :
Les fichiers de configuration dans /etc/libvirt/qemu/[Link]
Les disques sont généralement partagés entre les hôtes sur du NAS et/ou sur
du SAN
Par défault dans /var/lib/libvirt/images
Formation KVM (Kernel Virtual Based Machine)
Ce qu’on a couvert
• C’est quoi une machine virtuelle ?
• Fichier de configuration d’une vm
• Les disques
• Les cartes réseaux
• Le graphique
• La mémoire, les vCPU
• Ou se trouve ces paramètres ?
Formation KVM (Kernel Virtual Based Machine)
Les machines virtuelles
Installation d'une
machine virtuelle
Formation KVM (Kernel Virtual Based Machine)
Plan
• Installation avec qemu-system
• Installation avec virt-install
Formation KVM (Kernel Virtual Based Machine)
Installation avec qemu-system
• Création d’une image de disque
#qemu-img create -f qcow2 centos.qcow2 10G
• Installation d’un domU
#qemu-kvm –name centos6 -cdrom CentOS-6.6-x86_64-[Link] –m 512 –cpu 2 -hda
centos.qcow2 -boot d
Formation KVM (Kernel Virtual Based Machine)
Installation avec virt-install
• Installation d’une Vm avec virt-install
#virt-install \
--name centos6 \
--os-type linux --os-variant rhel6\
--vcpus 4 --ram 1024 \
--disk path=/var/lib/libvirt/images/centos6.qcow2 \
--network bridge=br0 \
--graphics vnc | --nographics --extra-args='console=ttyS0' -v \
--location '[Link]
#virt-install --prompt
Formation KVM (Kernel Virtual Based Machine)
Ce qu’on a couvert
• Installation avec qemu-system
• Installation avec virt-install
Formation KVM (Kernel Virtual Based Machine)
Virsh
Introduction
Formation KVM (Kernel Virtual Based Machine)
Plan
• Introduction
• Mappe des commandes
• Se connecter et un petit tour
Formation KVM (Kernel Virtual Based Machine)
Introduction
• Outils en mode cli
• Toutes les opérations sur les guest, le stockage, les hyperviseurs, les
réseaux,
• Simple d’utilisation,
• Bien documenté
• La complétion des commandes et options !!
• En mode interactive et en mode shell
• Permet le script des commandes
Formation KVM (Kernel Virtual Based Machine)
Mappe des commandes
Formation KVM (Kernel Virtual Based Machine)
Se connecter et un petit tour
• Outils en mode cli
#virsh –-connect qemu:///system
• Connexion distante avec ssh
#virsh –c qemu+ssh:///hote/system
• Faisons un petit tour rapide
Formation KVM (Kernel Virtual Based Machine)
Ce qu’on a couvert
• Introduction
• Mappe des commandes
• Se connecter et un petit tour
Formation KVM (Kernel Virtual Based Machine)
Virsh
Gérer les machines
virtuelles
Formation KVM (Kernel Virtual Based Machine)
Plan
• Lister les VMs
• Démarrer, arrêter, suspendre, relancer les machines virtuelles
• Obtenir des infos sur les DomU
Stats, matériel, mémoire
• Modifier quelques paramètres à chaud
Mémoire, vCPU, block IO, Network IO
Formation KVM (Kernel Virtual Based Machine)
Lister les Vms
Se connecter sur l’hyperviseur
# virsh –connect qemu:///system
Virsh#
Lister les machines les vms actives
# virsh list
virsh#list
Lister toutes les machines
Virh#list --all
Formation KVM (Kernel Virtual Based Machine)
Démarrer, arrêter, suspendre, relancer…
Se connecter sur l’hyperviseur Forcer l’arrêt d’un guest
# virsh –connect qemu:///system Virh#destroy machine00
Virsh#
Forcer le reboot d’une machine virtuelle
Démarrer une vm Virh#reset machine00
#virsh start machine00
virsh#start machine00 Mise en pause d’un guest
Virh#suspend machine00
Arrêter proprement une vm
Virh#shutdown machine00 Réactiver une machine virtuelle
Virh#resume machine00
Redémarrage d’un DomU
Virh#reboot machine00
Formation KVM (Kernel Virtual Based Machine)
Obtenir des infos sur les DomU
Lister les stats mémoire Info sur les disques
virsh # dommemstat SAMBA4 virsh # domblkinfo SAMBA4 vda
actual 614400 Capacity: 5368709120
rss 362480 Allocation: 1830817792
Physical: 1830817792
Les info d’une vm
#virsh dominfo machine00 Lister les cartes réseaux
virsh#dominfo machine00 Virsh#domiflist SAMBA4
Interface Type Source Model MAC
Récupérer l’état des vm -------------------------------------------------------
Virh#domstats machine00 vnet0 bridge br0 virtio [Link]
Lister les disques Stats sur carte réseau
virsh # domblklist SAMBA4 Virsh#domifstat SAMBA4 vnet0
Target Source vnet0 rx_bytes 50129
------------------------------------------------ vnet0 rx_packets 929
hdc - vnet0 rx_errs 0
vda /var/lib/libvirt/images/NFS-IMAGES/samba vnet0 rx_drop 0
Formation KVM (Kernel Virtual Based Machine)
Modifier quelques paramètres a chaud
Modifer la mémoire
# virsh –connect qemu:///system Lister la bande passantes d’une vm
Virsh#setmem SAMBA4 786432 --config –live virsh#blkiotune SAMBA4
weight : 1000
Modifier les vcpu device_weight :
#virsh vcpuinfo SAMBA4
virsh# setvcpus --count 2 SAMBA4 Modifier la bande passante d’un disque d’une vm
virsh # blkiotune SAMBA4 --weight 1000
Positionner 1MB/s sur une carte
virsh#domiftune SAMBA4 vnet0 --live –inbound \ Modifier la bande passante d’un disque d’une vm
1000,1000,1000 --outbound 1000,1000,1000 Virsh# blkdeviotune SAMBA4 vda --
--config --live --read-bytes-sec --
Lister la bande passante sur une carte read-iops-sec --total-bytes-sec --total-iops-sec --
virsh # domiftune SAMBA4 vnet0 write-bytes-sec --write-iops-sec
[Link]: 1000 --current --read_bytes_sec --read_iops_sec -
[Link] : 1000 -total_bytes_sec --total_iops_sec --write_bytes_sec
[Link] : 1000 --write_iops_sec
[Link]: 1000
[Link] : 1000
[Link] : 1000
Formation KVM (Kernel Virtual Based Machine)
Ce qu’on a couvert
• Lister les Vms
• Démarrer, arrêter, suspendre, relancer les machines virtuelles
• Obtenir des infos sur les DomU
Stats, matériel, mémoire
• Modifier quelques paramètres à chaud
Mémoire, vCPU, block IO, Network IO
Formation KVM (Kernel Virtual Based Machine)