KVM, acte III : Le stockage
Suite de la série d’articles sur KVM :
- Présentation et installation
- Manipulation des VMs
- Gestion du stockage
- Gestion du réseau
- Jongler avec ses VMs comme le manchot du logo
Aujourd’hui on parle du stockage :
Les pools
Les pools sont des espaces de stockage accessibles par KVM (idéalement en réseau mais pas obligatoirement).
Les types de stockage les plus courants sont :
- Système de fichier de l’hôte (ext4 ou autre)
- LVM (particulièrement bien géré avec KVM)
- NFS : système de fichier réseau du monde *n*x
- iSCSI : Utilisé sur les serveurs de stockage (SAN). C’est le plus adapté mais aussi le plus coûteux.
Pools en système de fichier
En admettant que vous avez créé un dossier /data/vms avec beaucoup d’espace libre :
# Création du pool, démarrage, démarrage automatique virsh pool-define-asdir --target /data/vms virsh pool-start virsh pool-autostart
Pools en NFS
Vous devez d’abord disposer d’un montage NFS (admettons sur /nfs/vms)
# Création du pool, démarrage, démarrage auto virsh pool-define-asnfs --target /nfs/vms virsh pool-start virsh pool-autostart
Pools LVM
Pour faire vite, LVM est un système de gestion des partitions très souple. D’autres que moi l’ont déjà bien expliqué.
En admettant que ayez une partition /dev/sda2 de libre sur l’hyperviseur :
# Création d'un volume physique puis d'un groupe de volumes pvcreate /dev/sda2 vgcreate/dev/sda2 # Création d'un Pool, démarrage et démarrage automatique virsh pool-define-as logical --source-name --target /dev/ --source-format lvm2 virsh pool-start virsh pool-autostart
Pools iSCSI
Pour créer un pool iSCSI, il vous faut un serveur iSCSI (un SAN) et il vous faut connaître l’IQN (le nom de la cible iSCSI).
iscsiadm est le client iSCSI sous Linux.
# Recherche de cible à partir de l'adresse du serveur iscsi iscsiadm -m discovery -t sendtargets -p# Création du pool, démarrage, démarrage auto pool-define-as iscsi --target /dev/disk/by-path --source-host --source-dev virsh pool-start virsh pool-autostart
Les volumes
Les volumes sont les disques virtuels qu’on va affecter plus tard aux VMs.
Deux formats sont vraiment natifs chez KVM : QCow2 vs raw
Row : Un volume de type données brutes. Si vous créez un volume de 80Go, il utilise 80Go d’espace. Impossible de faire des snapshots (on peut utiliser les snapshots LVM si ont a LVM).
QCow : Excellent. Permet les snapshots et ne réserve que l’espace disque réellement utilisé. Utilise la technique très performante du copy on write.
Opérations basiques :
Créer un volume :
vol-create-as--format qcow2
Cloner un volume :
vol-clone --pool
Etendre un volume (en filesystem puis en LVM) :
vol-resize--pool VMs 2G lvextend /dev/ / -L+1G
Cloner un volume d’un pool à un autre :
Il faut télécharger le volume d’un pool en local puis uploader le fichier local sur l’autre volume :
vol-download --poolvol-create-as --format qcow2 vol-upload --pool