Monter un répertoire extérieur au sein d’une VM :

Etape n°1 :

Dans l’hyperviseur KVM, pour une VM : Ajouter un matériel de type « Système de fichiers » puis renseigner les valeur suivantes :

Etape n°2, côté VM :

Pour monter le partage :

sudo mount -t 9p -o trans=virtio,version=9p2000.L,rw iso /mnt/iso/

La ligne fstab pour automatiser le montage à chaque démarrage :

iso   /mnt/iso   9p  trans=virtio,rw,_netdev 0   0

Augmenter la taille d’un disque d’une VM :

Coté Hyperviseur :

xavior@mon_pc:/var/lib/libvirt/images$ sudo qemu-img resize kvm1.qcow2 60G
Image resized.

Côté VM :

Augmenter la taille de la partition souhaitée. Ici nous allons le faire via l’outil graphique « Disques » d’Ubuntu :

Dans un premier temps : augmentation de la taille de la partition étendue :

Puis dans un deuxième temps, faire de même avec la partition du système de fichiers

Pour arriver à ce type d’effet :

Réduire la taille du disque qcow2 de la VM

En utilisant virt-manager, la création d’un disque qcow2 prend la même taille physique que l’espace virtuel désiré. Alors que le disque virtuel n’est pas plein.

xavior@mon_pc:/var/lib/libvirt/images$ sudo ls -alh
total 34G
drwx--x--x 2 root root 4,0K avril  9 10:07 .
drwxr-xr-x 7 root root 4,0K avril  3 16:54 ..
-rw------- 1 root root  17G avril  9 09:40 kvm1.qcow2
-rw------- 1 root root  26G avril  4 19:23 ubuntu20.04-2.qcow2
-rw------- 1 root root  26G avril  4 21:20 ubuntu20.04.qcow2

Vérifier écart taille disque physique et taille du contenu virtuel :

xavior@mon_pc:/var/lib/libvirt/images$ sudo qemu-img info ubuntu20.04.qcow2
image: ubuntu20.04.qcow2
file format: qcow2
virtual size: 25 GiB (26843545600 bytes)
disk size: 8.12 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true
    refcount bits: 16
    corrupt: false

Pour réduire la taille du disque et passer en mode « thin provisionned » :

xavior@mon_pc:/var/lib/libvirt/images$ sudo virt-sparsify -v ubuntu20.04.qcow2 ubuntu20.04-sparsi.qcow2
libguestfs: command: run: qemu-img --help | grep -sqE -- '\binfo\b.*-U\b'
libguestfs: command: run: qemu-img
libguestfs: command: run: \ info
libguestfs: command: run: \ -U
libguestfs: command: run: \ --output json
...
qemu-img convert -f qcow2 -O 'qcow2' '/tmp/sparsify41377f.qcow2' './ubuntu20.04-sparsi.qcow2'
[  37.5] Sparsify operation completed with no errors.
virt-sparsify: Before deleting the old disk, carefully check that the 
target disk boots and works correctly.
libguestfs: closing guestfs handle 0x559a65188a30 (state 0)
libguestfs: closing guestfs handle 0x559a65188200 (state 0)
libguestfs: closing guestfs handle 0x559a65187c30 (state 0)

On vérifie :

xavior@xavior-Latitude-7490:/var/lib/libvirt/images$ sudo ls -alh
total 40G
drwx--x--x 2 root root 4,0K avril  9 10:13 .
drwxr-xr-x 7 root root 4,0K avril  3 16:54 ..
-rw------- 1 root root  17G avril  9 09:40 kvm1.qcow2
-rw------- 1 root root  26G avril  4 19:23 ubuntu20.04-2.qcow2
-rw------- 1 root root  26G avril  4 21:20 ubuntu20.04.qcow2
-rw-r--r-- 1 root root 5,6G avril  9 10:13 ubuntu20.04-sparsi.qcow2

xavior@mon_pc:/var/lib/libvirt/images$ sudo qemu-img info ubuntu20.04-sparsi.qcow2
image: ubuntu20.04-sparsi.qcow2
file format: qcow2
virtual size: 25 GiB (26843545600 bytes)
disk size: 5.57 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

Ensuite il faudra réaffacter le disque à la machine virtuelle, vérifier le bon fonctionnement puis supprimer l’ancien fichier qcow2.

Il est également possible de faire cette réduction de taille directement sur le fichier source, mais c’est plus risqué car pas de possibilité de retour en arrière si erreur :

sudo virt-sparsify -v --in-place ubuntu20.04.qcow2

Après lancement de la commande, le résultat n’est pas probant …

Il est également possible de compresser le disque qcow2 :

xavior@mon_pc:/var/lib/libvirt/images$ sudo ls -alh
total 42G
drwx--x--x 2 root root 4,0K avril  9 10:37 .
drwxr-xr-x 7 root root 4,0K avril  3 16:54 ..
-rw------- 1 root root  17G avril  9 09:40 kvm1.qcow2
-rw------- 1 root root  26G avril  4 19:23 ubuntu20.04-2.qcow2
-rw------- 1 root root  26G avril  9 10:25 ubuntu20.04.qcow2
-rw-r--r-- 1 root root 5,6G avril  9 10:43 ubuntu20.04-sparsi.qcow2

xavior@mon_pc:/var/lib/libvirt/images$ sudo virt-sparsify -v --compress ubuntu20.04.qcow2 ubuntu20.04-compress-sparsi.qcow2
...


xavior@mon_pc:/var/lib/libvirt/images$ sudo ls -alh
total 42G
drwx--x--x 2 root root 4,0K avril  9 10:37 .
drwxr-xr-x 7 root root 4,0K avril  3 16:54 ..
-rw------- 1 root root  17G avril  9 09:40 kvm1.qcow2
-rw------- 1 root root  26G avril  4 19:23 ubuntu20.04-2.qcow2
-rw-r--r-- 1 root root 3,1G avril  9 10:41 ubuntu20.04-compress-sparsi.qcow2
-rw------- 1 root root  26G avril  9 10:25 ubuntu20.04.qcow2
-rw-r--r-- 1 root root 5,6G avril  9 10:43 ubuntu20.04-sparsi.qcow2

xavior@mon_pc:/var/lib/libvirt/images$ sudo qemu-img info ubuntu20.04-compress-sparsi.qcow2
image: ubuntu20.04-compress-sparsi.qcow2
file format: qcow2
virtual size: 25 GiB (26843545600 bytes)
disk size: 3.02 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

Le fait de compresser fait augmenter le temps de l’opération (plusieurs minutes)

Pour aller plus loin : https://libguestfs.org/virt-sparsify.1.html

Connexion à distance à virt-manager :

Cela s’effectue via une connexion SSH. Donc sur le serveur il va falloir installer un serveur SSH ainsi que ssh-askpass-gnome (boite de dialogue pour demander lepassphrase)

sudo apt install openssh-server
sudi apt install ssh-askpass-gnome
sudo apt install ssh-askpass-gnome

Une fois fait, bien vérifier que vos comptes utilisateurs peuvent ouvrir une session ssh (non vu ici).

Ensuite, pour que le flux image de la vm soit visible à distance il faut modifier cette valeur dans les paramètres « SPICE » de la VM : mettre ‘Toutes les interfaces » en lieu et place « Localhost seulement » :

Une fois fait, il est possible de se connecter à distance d’un hyperviseur KVM :

Une fenêtre apparaît :

Remplir son mot de passe :

Et voila, il est possible de manipuler l’hyperviseur hôte distant :

Mise en œuvre NFS (pour migration VM entre Hyperviseur KVM)

Installation sur un serveur différent du service de stockage NFS sur lequel sera stocké les disques qcow2 des VM.

Installation du service :

sudo apt install nfs-kernel-server

Préparation du répertoire de stockage :

cd /var
sudo mkdir kvm_qcow2

Déclaration du partage NFS :

Modifier le fichier /etc/exports et ajouter la ligne suivante :

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

/var/kvm_qcow2  192.168.150.0/24(rw,sync,all_squash)

Relancer le service pour prise en compte :

sudo systemctl reload nfs-server.service

Vérification :

xavior@SRVCOMMUN:~$ showmount -e
Export list for SRVCOMMUN:
/var/kvm_qcow2 198.168.150.0/24

Sur le PC client, installation du client NFS :

sudo apt install nfs-common

Lecture des partages NFS disponibles :

xavior@KVM1:~$ showmount -e 192.168.150.10
Export list for 192.168.150.10:
/var/kvm_qcow2 198.168.150.0/24

Montage du partage NFS :

cd /mnt
sudo mkdir nfs
sudo mount  192.168.150.10:/var/kvm_qcow2/ /mnt/nfs/

Rendre persitent le montage via /etc/fstab :

192.168.150.10:/var/kvm_qcow2/ /mnt/nfs/  nfs   defaults                      0 0

Ne pas hésiter à faire « man nfs » pour voir toutes les options de montage pour le NFS.

KVM : quelques notes …

Laisser un commentaire

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