Version : 2023.01

Dernière mise-à-jour :

LCF704 - Gestion de KVM et des VMs

Contenu du Module

LCF704 - Gestion des VMs et KVM

Contenu du Module

LAB #1 - Augmentation de la Taille du Disque

1.1 - Augmenter la Taille du Disque avec la Commande qemu-img

Augmenter la Taille du Disque de la VM

Augmenter la Taille de la Partition Système de la VM

Augmenter la Taille du Système de Fichiers

1.2 - Augmenter la Taille du Disque avec la Commande virsh

Augmenter la Taille du Disque de la VM

LAB #2 - Réparation d'un Filesystem Corrompu

2.1 - Préparation

2.2 - La Commande guestfish

LAB #3 - Gestion de la VM

3.1 La Commande shutdown

3.2 La Commande reboot

3.3 La Commande suspend

3.4 La Commande resume

3.5 La Commande dominfo

3.6 La Commande autostart

3.7 La Commande domuuid

3.8 La Commande undefine

3.9 La Commande destroy

LAB #4 - Gestion des Ressources

4.1 - Augmenter les VCPUs et la Mémoire

4.2 - Ajouter et Supprimer un Disque Dur

LAB #5 - Journalisation

5.1 - Le Répertoire /var/log/libvirt/qemu/

5.2 - Le Fichier /var/log/messages

LAB #6 - Gestion de KVM avec Cockpit

6.1 - Installation et Démarrage

6.2 - Connexion à l'Interface

6.3 - Visualisation de la Configuration de la VM testvm1

6.4 - Démarrage de la VM testvm1

6.5 - Connexion à la VM testvm1

LAB #7 - Gestion des Machines Virtuelles avec Cockpit

7.1 - Créer un Clone de la VM testvm1

7.2 - Création d'une VM en Mode Graphique à partir d'un ISO

7.3 - Création et Suppression d'un Snapshot de la vm testvm2

7.4 - Augmentation des Ressources de la VM testvm2

7.5 - Ajout et Suppression d'un Disque Dur à la VM testvm2

LAB #8 - Gestion de KVM avec virt-manager

8.1 - Installation

8.2 - Connexion à l'Interface

8.3 - Démarrage de la VM testvm1

8.4 - Connexion à la VM testvm1

8.5 - Visualisation de la Configuration de la VM testvm1

LAB #9 - Gestion des Machines Virtuelles avec virt-manager

9.1 - Créer un Clone de la VM testvm1

9.2 - Création d'une VM en Mode Graphique à partir d'un ISO

9.3 - Création et Suppression d'un Snapshot de la vm testvm2

9.4 - Augmentation des Ressources de la VM testvm2

9.5 - Ajout et Suppression d'un Disque Dur à la VM testvm2

LAB #10 - oVirt

10.1 - Procédure d'Installation

10.2 - Configuration d'oVirt

10.3 - Configuration du Stockage

10.4 - Création d'un Machine Virtuelle

LAB #1 - Augmentation de la Taille du Disque

1.1 - Augmenter la Taille du Disque avec la Commande qemu-img

Augmenter la Taille du Disque de la VM

Les images des VMs sont stockées dans le pool kvm-storagepool :

[root@centos8 ~]# virsh pool-list
Name State Autostart
---------------------------------------
isos active yes
kvm-storagepool active yes
root active yes

Consultez le contenu du pool kvm-storagepool :

[root@centos8 ~]# virsh vol-list kvm-storagepool
Name Path
--------------------------------------------------------------
testvm1-os.qcow2 /var/lib/libvirt/images/testvm1-os.qcow2
testvm2.qcow2 /var/lib/libvirt/images/testvm2.qcow2

Consultez ensuite les informations concernant l'image testvm1-os.qcow2 :

[root@centos8 ~]# virsh vol-info /var/lib/libvirt/images/testvm1-os.qcow2
Name: testvm1-os.qcow2
Type: file
Capacity: 5.00 GiB
Allocation: 1.70 GiB

Pour pouvoir redimensionner la taille de l'image il convient d'utiliser la commande qemu-img resize :

[root@centos8 ~]# qemu-img resize /var/lib/libvirt/images/testvm1-os.qcow2 +2G
Image resized.

Vérifiez ensuite la prise en charge de la modification :

[root@centos8 ~]# virsh vol-info /var/lib/libvirt/images/testvm1-os.qcow2
Name: testvm1-os.qcow2
Type: file
Capacity: 7.00 GiB
Allocation: 1.70 GiB

Augmenter la Taille de la Partition Système de la VM

Démarrez la VM testvm1 :

[root@centos8 ~]# virsh start testvm1

Connectez-vous à la VM grâce à la commande virsh console :

[root@centos8 ~]# virsh console testvm1
Connected to domain testvm1
Escape character is ^]
[Return]
CentOS Linux 8
Kernel 4.18.0-305.12.1.el8_4.x86_64 on an x86_64
testvm1 login: root
Mot de passe : fenestros
Dernière connexion : Fri Sep 3 16:45:59 sur ttyS0

Constatez la taille de la partition /dev/vda3 :

[root@testvm1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 7G 0 disk
├─vda1 253:1 0 1G 0 part /boot
├─vda2 253:2 0 512M 0 part [SWAP]
└─vda3 253:3 0 3,5G 0 part /

Important : Notez que, pour le système d'exploitation de la VM, la taille du disque est toujours 5 Go (1G + 512M +3,5G).

Constatez ensuite l'espace disponible sur /dev/vda3 :

[

[root@testvm1 ~]# df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
devtmpfs 891M 0 891M 0% /dev
tmpfs 909M 0 909M 0% /dev/shm
tmpfs 909M 8,5M 901M 1% /run
tmpfs 909M 0 909M 0% /sys/fs/cgroup
/dev/vda3 3,5G 1,5G 2,1G 42% /
/dev/vda1 976M 153M 756M 17% /boot
tmpfs 182M 0 182M 0% /run/user/0

La partition /dev/vda3 est la partition système de la VM. Pour modifier sa taille nous avons besoin d'installer les paquets cloud-utils-growpart et gdisk :

root@testvm1 ~]# dnf -y install cloud-utils-growpart gdisk

Le paquet cloud-utils-growpart fournit la commande growpart qui permet d'étendre la partition système jusqu'à la limite de l'espace disque disponible. La commande prend deux arguments :

le nom du fichier spécial - /dev/vda,

le numéro de la partition à augmenter en taille - 3.

[root@testvm1 ~]# growpart /dev/vda 3
/usr/bin/growpart: ligne 242: 7516192768 octets, : erreur de syntaxe : opérateur arithmétique non valable (le symbole erroné est « octets, »)

Important : Notez que cette commande retourne une erreur. En effet, elle ne comprend l'unité de mesure octets. Autrement dit, cette commande n'est compatible qu'avec des systèmes Linux en anglais.

Pour palier à ce problème, il convient simplement d'effacer le contenu de la variable système $LANG. De cette façon, la langue par défaut sera utilisée, à savoir l'anglais américain :

[root@testvm1 ~]# echo $LANG
fr_FR.UTF-8
[root@testvm1 ~]# unset LANG
[root@testvm1 ~]# echo $LANG

En exécutant de nouveau la commande growpart, aucune erreur n'est apparente :

[root@testvm1 ~]# growpart /dev/vda 3
CHANGED: partition=3 start=3147776 old: size=7337984 end=10485760 new: size=11532255 end=14680031

L'utilisation de la commande lsblk démontre clairement l'augmentation de la taille de la partition /dev/vda3 :

[root@testvm1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 7G 0 disk
|-vda1 253:1 0 1G 0 part /boot
|-vda2 253:2 0 512M 0 part [SWAP]
`-vda3 253:3 0 5.5G 0 part /

Important : Notez que, pour le système d'exploitation de la VM, la taille du disque est maintenant de 7 Go (1G + 512M +5,5G).

Par contre, l'exécution de la commande df démontre que le système ne voit toujours un filesystem qu'une taille 5 Go :

[root@testvm1 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 934M 0 934M 0% /dev
tmpfs tmpfs 953M 0 953M 0% /dev/shm
tmpfs tmpfs 953M 8.9M 944M 1% /run
tmpfs tmpfs 953M 0 953M 0% /sys/fs/cgroup
/dev/vda3 xfs 3.8G 1.6G 2.2G 42% /
/dev/vda1 ext4 1.1G 161M 793M 17% /boot
tmpfs tmpfs 191M 0 191M 0% /run/user/0

Augmenter la Taille du Système de Fichiers

Pour augmenter la taille du système de fichiers se trouvant sur /dev/vda3, il conveint d'utiliser la commande xfs_growfs :

[root@testvm1 ~]# xfs_growfs /
meta-data=/dev/vda3 isize=512 agcount=4, agsize=229312 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=917248, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 917248 to 1441531

Cette fois-ci la sortie de la commande df démontre bien l'augmentation de la taille du système de fichiers :

[root@testvm1 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 934M 0 934M 0% /dev
tmpfs tmpfs 953M 0 953M 0% /dev/shm
tmpfs tmpfs 953M 8.9M 944M 1% /run
tmpfs tmpfs 953M 0 953M 0% /sys/fs/cgroup
/dev/vda3 xfs 5.9G 1.6G 4.4G 27% /
/dev/vda1 ext4 1.1G 161M 793M 17% /boot
tmpfs tmpfs 191M 0 191M 0% /run/user/0
[root@testvm1 ~]# [ALT GR]+[CTRL]+[)]
[root@centos8 ~]#

1.2 - Augmenter la Taille du Disque avec la Commande virsh

Augmenter la Taille du Disque de la VM

La VM testvm2 est en cours d'exécution :

[root@centos8 ~]# virsh list --all
Id Name State
-------------------------
5 testvm2 running
- testvm1 shut off

Utilisez la commande virsh domblklist pour afficher l'emplacement de l'image de la VM testvm2 :

[root@centos8 ~]# virsh domblklist testvm2
Target Source
-------------------------------------------------
vda /var/lib/libvirt/images/testvm2.qcow2
sda -

Cette fois, utilisez la commande virsh blockresize pour redimensionner la taille de l'image :

[root@centos8 ~]# virsh blockresize --domain testvm2 --path /var/lib/libvirt/images/testvm2.qcow2 --size 7G
Block device '/var/lib/libvirt/images/testvm2.qcow2' is resized

Important : Notez que la commande qemu-img resize nécessite la spécification de l'augmentation de la taille tandis que la commande virsh blockresize nécessite la spécification de la taille.

Vérifiez ensuite la prise en charge de la modification :

[root@centos8 ~]# virsh vol-info /var/lib/libvirt/images/testvm2.qcow2
Name: testvm2.qcow2
Type: file
Capacity: 7.00 GiB
Allocation: 2.14 GiB

Connectez-vous à la VM grâce à la commande virsh console :

[root@centos8 ~]# virsh console testvm2
Connected to domain testvm2
Escape character is ^]

Ré-exécutez les mêmes commandes que la dernière fois :

[root@testvm1 ~]# dnf -y install cloud-utils-growpart gdisk
...
[root@testvm1 ~]# unset LANG
[root@testvm1 ~]# growpart /dev/vda 3
CHANGED: partition=3 start=3147776 old: size=7337984 end=10485760 new: size=11532255 end=14680031
[root@testvm1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 7G 0 disk
|-vda1 253:1 0 1G 0 part /boot
|-vda2 253:2 0 512M 0 part [SWAP]
`-vda3 253:3 0 5.5G 0 part /
[root@testvm1 ~]# xfs_growfs /
meta-data=/dev/vda3 isize=512 agcount=4, agsize=229312 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=917248, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 917248 to 1441531
[root@testvm1 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 934M 0 934M 0% /dev
tmpfs tmpfs 953M 0 953M 0% /dev/shm
tmpfs tmpfs 953M 8.9M 944M 1% /run
tmpfs tmpfs 953M 0 953M 0% /sys/fs/cgroup
/dev/vda3 xfs 5.9G 1.6G 4.4G 27% /
/dev/vda1 ext4 1.1G 161M 793M 17% /boot
tmpfs tmpfs 191M 0 191M 0% /run/user/0
[root@testvm1 ~]# [ALT GR]+[CTRL]+[)]
[root@centos8 ~]#

LAB #2 - Réparation d'un Filesystem Corrompu

En cas de défaillance de la procédure d'augmentation de la taille du système de fichiers de l'image, il peut être nécessaire de procéder à la réparation du celui-ci.

2.1 - Préparation

La réparation est effectuée grâce à l'utilisation de la commande guestfish. Cette commande est fourni par le paquet libguestfs-tools. Si ce paquet n'est pas déjà installé, il faut procéder à son installation :

[root@centos8 ~]# dnf install -y libguestfs-tools
Last metadata expiration check: 2:14:42 ago on Sat 04 Sep 2021 02:21:59 EDT.
Package libguestfs-tools-1:1.40.2-27.module_el8.4.0+783+f8734d30.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!

Arrêtez la VM testvm1 :

[root@centos8 ~]# virsh shutdown testvm1
Domain testvm1 is being shutdown

2.2 - La Commande guestfish

Commencez par fixer la valeur de la variable LIBGUESTFS_BACKEND à direct :

[root@centos8 ~]# export LIBGUESTFS_BACKEND=direct

Ajoutez l'image à réparer à guestfish grâce à l'utilisation de l'option –a :

[root@centos8 ~]# guestfish -a /var/lib/libvirt/images/testvm1-os.qcow2
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.
Type: ‘help’ for help on commands
‘man’ to read the manual
‘quit’ to quit the shell
><fs>

Initialisez guestfish avec la commande run :

[root@centos8 ~]# guestfish -a /var/lib/libvirt/images/testvm1-os.qcow2
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.
Type: ‘help’ for help on commands
‘man’ to read the manual
‘quit’ to quit the shell
><fs> run

Listez ensuite les systèmes de fichiers de la VM :

[root@centos8 ~]# guestfish -a /var/lib/libvirt/images/testvm1-os.qcow2
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.
Type: ‘help’ for help on commands
‘man’ to read the manual
‘quit’ to quit the shell
><fs> run
><fs> list-filesystems
/dev/sda1: ext4
/dev/sda2: swap
/dev/sda3: xfs

Procédez ensuite à la réparation des systèmes de fichiers avec la commande fsck :

[root@centos8 ~]# guestfish -a /var/lib/libvirt/images/testvm1-os.qcow2
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.
Type: ‘help’ for help on commands
‘man’ to read the manual
‘quit’ to quit the shell
><fs> run
><fs> lisf-filesystems
lisf-filesystems: unknown command
><fs> list-filesystems
/dev/sda1: ext4
/dev/sda2: swap
/dev/sda3: xfs
><fs> fsck xfs /dev/sda3
0
><fs> fsck ext /dev/sda1
0

Important : Notez que le code retour de 0 indique qu'aucune erreur n'a été trouvée. Dans le cas contraire, fdisk tentera de réparer le système de fichiers.

Quittez guestfish à l'aide de la touche q :

[root@centos8 ~]# guestfish -a /var/lib/libvirt/images/testvm1-os.qcow2
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.
Type: ‘help’ for help on commands
‘man’ to read the manual
‘quit’ to quit the shell
><fs> run
><fs> lisf-filesystems
lisf-filesystems: unknown command
><fs> list-filesystems
/dev/sda1: ext4
/dev/sda2: swap
/dev/sda3: xfs
><fs> fsck xfs /dev/sda3
0
><fs> fsck ext /dev/sda3
0
><fs> q

Après la réparation du système de fichiers, démarrez le VM testvm1 :

[root@centos8 ~]# virsh start testvm1
Domain testvm1 started
[root@centos8 ~]#

LAB #3 - Gestion de la VM

3.1 La Commande shutdown

Comme il a déjà été expliqué, pour arrêter une VM, il convient d'utiliser la commande virsh shutdown :

[root@centos8 ~]# virsh shutdown testvm1
Domain testvm1 is being shutdown
[root@centos8 ~]# virsh list
Id Name State
-------------------------
5 testvm2 running
[root@centos8 ~]# virsh list --all
Id Name State
--------------------------
5 testvm2 running
- testvm1 shut off

3.2 La Commande reboot

La commande virsh reboot permet de re-démarrer une VM :

[root@centos8 ~]# virsh reboot 5
Domain 5 is being rebooted
[root@centos8 ~]# virsh list --all
Id Name State
--------------------------
5 testvm2 running
- testvm1 shut off

3.3 La Commande suspend

La commande virsh suspend permet de mettre en pause une VM. Bien évidement, une VM ne peut être mise en pause que quand celle-ci est en cours de fonctionnement :

[root@centos8 ~]# virsh suspend testvm1
error: Failed to suspend domain testvm1
error: Requested operation is not valid: domain is not running
[root@centos8 ~]# virsh start testvm1
Domain testvm1 started
[root@centos8 ~]# virsh list --all
Id Name State
-------------------------
5 testvm2 running
11 testvm1 running
[root@centos8 ~]# virsh suspend testvm1
Domain testvm1 suspended
[root@centos8 ~]# virsh list --all
Id Name State
-------------------------
5 testvm2 running
11 testvm1 paused

3.4 La Commande resume

La commande virsh resume permet d'annuler l'effet de la commande virsh suspend :

[root@centos8 ~]# virsh resume testvm1
Domain testvm1 resumed
[root@centos8 ~]# virsh list --all
Id Name State
-------------------------
5 testvm2 running
11 testvm1 running

3.5 La Commande dominfo

La commande virsh dominfo permet de consulter les informations relatives à un domaine donné :

[root@centos8 ~]# virsh dominfo 11
Id: 11
Name: testvm1
UUID: d436a2df-78b0-474c-833b-3f7af8681052
OS Type: hvm
State: running
CPU(s): 1
CPU time: 28.7s
Max memory: 2097152 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: system_u:system_r:svirt_t:s0:c31,c201 (permissive)

3.6 La Commande autostart

La commande virsh autostart permet de configurer la VM de façon à ce que celle-ci démarre automatiquement :

[root@centos8 ~]# virsh autostart d436a2df-78b0-474c-833b-3f7af8681052
Domain d436a2df-78b0-474c-833b-3f7af8681052 marked as autostarted
[root@centos8 ~]# virsh dominfo 11
Id: 11
Name: testvm1
UUID: d436a2df-78b0-474c-833b-3f7af8681052
OS Type: hvm
State: running
CPU(s): 1
CPU time: 29.0s
Max memory: 2097152 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: enable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: system_u:system_r:svirt_t:s0:c31,c201 (permissive)

Pour annuler l'effet de la commande précédente, il convient d'utiliser l'option –disable :

[root@centos8 ~]# virsh autostart --disable 11
Domain 11 unmarked as autostarted
[root@centos8 ~]# virsh dominfo 11
Id: 11
Name: testvm1
UUID: d436a2df-78b0-474c-833b-3f7af8681052
OS Type: hvm
State: running
CPU(s): 1
CPU time: 29.2s
Max memory: 2097152 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: system_u:system_r:svirt_t:s0:c31,c201 (permissive)

3.7 La Commande domuuid

La commande virsh domuuid permet d'obtenir l'UUID du domaine :

[root@centos8 ~]# virsh domuuid testvm1
d436a2df-78b0-474c-833b-3f7af8681052

3.8 La Commande undefine

La commande virsh undefine permet de supprimer la configuration d'une VM :

[root@centos8 ~]# virsh undefine 5
Domain 5 has been undefined
[root@centos8 ~]# virsh list --all
Id Name State
-------------------------
5 testvm2 running
11 testvm1 running

Important : Notez que si la VM est en cours d'exécution au moment de l'exécution de la commande, la VM est msie en mode transient. La suppression effective de la configuration a lieu quand la VM est arrêtée.

3.9 La Commande destroy

La commande virsh destroy permet d'arrêter une VM. Cette commande est l'équivalente d'un init 0. Par conséquent il est conseillé d'ajouter l'option –graceful de façon à nettoyer le cache de l'image disque avant l'arrêt :

[root@centos8 ~]# virsh list --all
Id Name State
-------------------------
5 testvm2 running
11 testvm1 running
[root@centos8 ~]# virsh destroy 5
Domain 5 destroyed
[root@centos8 ~]# virsh list --all
Id Name State
-------------------------
11 testvm1 running
[root@centos8 ~]# ls -lh /var/lib/libvirt/images/
total 3.9G
-rw-------. 1 qemu qemu 5.1G Sep 4 06:21 testvm1-os.qcow2
-rw-------. 1 root root 2.2G Sep 4 06:18 testvm2.qcow2
[root@centos8 ~]# du -sh /var/lib/libvirt/images/*
1.8G	/var/lib/libvirt/images/testvm1-os.qcow2
2.2G	/var/lib/libvirt/images/testvm2.qcow2

LAB #4 - Gestion des Ressources

4.1 - Augmenter les VCPUs et la Mémoire

La façon de modifier les ressources d'une VM en ligne de commande est d'éditer le fichier de configuration de la VM. Actuellement, la VM testvm1 a 2097152 KiB de mémoire et 1 vCPU :

[root@centos8 ~]# virsh list --all
Id Name State
-------------------------
11 testvm1 running
[root@centos8 ~]# virsh dominfo 11
Id: 11
Name: testvm1
UUID: d436a2df-78b0-474c-833b-3f7af8681052
OS Type: hvm
State: running
CPU(s): 1
CPU time: 36.5s
Max memory: 2097152 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: system_u:system_r:svirt_t:s0:c31,c201 (permissive)

Comme détaillé précédemment, ces informations se trouvent dans le fichier de configuration au format XML de la VM :

[root@centos8 ~]# cat /etc/libvirt/qemu/testvm1.xml
...
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>1</vcpu>
...

Pour modifier la configuration, il convient d'arrêter la VM :

[root@centos8 ~]# virsh shutdown 11
Domain 11 is being shutdown

Editez ensuite les valeurs suivantes dans le fichier de configuration en utilisant la commande virsh edit :

[root@centos8 ~]# virsh edit testvm1
...
<memory unit='KiB'>4194304</memory>
<vcpu placement='static'>4</vcpu>
...

Lors de votre sauvegarde du fichier, le système vous indiquera que le fichier a été modifié :

[root@centos8 ~]# virsh edit testvm1
Domain testvm1 XML configuration edited.

L'application de l'augmentation du nombre de vCPUs est immédiate. Par contre ceci n'est pas le cas pour la mémoire.

Consultez la valeur de la mémoire dans le fichier /etc/libvirt/qemu/testvm1.xml :

...
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
...

Démarrez maintenant la VM testvm1 :

[root@centos8 ~]# virsh start testvm1
Domain testvm1 started
[root@centos8 ~]# virsh list --all
Id Name State
-------------------------
1 testvm1 running
[root@centos8 ~]# virsh dominfo 1
Id: 1
Name: testvm1
UUID: d436a2df-78b0-474c-833b-3f7af8681052
OS Type: hvm
State: running
CPU(s): 4
CPU time: 41.6s
Max memory: 4194304 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: system_u:system_r:svirt_t:s0:c242,c376 (permissive)

Pour accorder à la VM le droit d'utiliser la totalité de la mémoire qui lui a été réservée, il est nécessaire d'utiliser la commande virsh setmem :

[root@centos8 ~]# virsh setmem testvm1 4194304

Vérifiez ensuite la prise en compte de l'augmentation de la mémoire :

[root@centos8 ~]# virsh dominfo 1
Id: 1
Name: testvm1
UUID: d436a2df-78b0-474c-833b-3f7af8681052
OS Type: hvm
State: running
CPU(s): 4
CPU time: 47.5s
Max memory: 4194304 KiB
Used memory: 4194304 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: system_u:system_r:svirt_t:s0:c242,c376 (permissive)

4.2 - Ajouter et Supprimer un Disque Dur

Pour ajouter un disque à une VM, il convient d'abord de créer ce disque. Placez-vous donc dans le répertoire cd /var/lib/libvirt/images/ :

[root@centos8 ~]# cd /var/lib/libvirt/images/

Créez un disque d'une taille de 10 Go au format raw :

[root@centos8 images]# qemu-img create -f raw testvm1-disk2.img 10G
Formatting 'testvm1-disk2.img', fmt=raw size=10737418240

Attachez ensuite ce disque à la VM testvm1 :

[root@centos8 images]# virsh attach-disk testvm1 --source /var/lib/libvirt/images/testvm1-disk2.img --target vdb --persistent
Disk attached successfully

Connectez-vous à la VM avec la commande virsh console :

[root@centos8 images]# virsh console testvm1
Connected to domain testvm1
Escape character is ^]

Contrôlez la présence du disque ajouté :

[root@testvm1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 7G 0 disk
├─vda1 253:1 0 1G 0 part /boot
├─vda2 253:2 0 512M 0 part [SWAP]
└─vda3 253:3 0 5,5G 0 part /
vdb 253:16 0 10G 0 disk

Créez une partition sur le disque :

[root@testvm1 ~]# fdisk /dev/vdb
Bienvenue dans fdisk (util-linux 2.32.1).
Les modifications resteront en mémoire jusqu'à écriture.
Soyez prudent avant d'utiliser la commande d'écriture.
Le périphérique ne contient pas de table de partitions reconnue.
Création d'une nouvelle étiquette pour disque de type DOS avec identifiant de disque 0xcde64a28.
Commande (m pour l'aide) : n
Type de partition
p primaire (0 primaire, 0 étendue, 4 libre)
e étendue (conteneur pour partitions logiques)
Sélectionnez (p par défaut) :
Utilisation de la réponse p par défaut.
Numéro de partition (1-4, 1 par défaut) :
Premier secteur (2048-20971519, 2048 par défaut) :
Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (2048-20971519, 20971519 par défaut) :
Une nouvelle partition 1 de type « Linux » et de taille 10 GiB a été créée.
Commande (m pour l'aide) : w
La table de partitions a été altérée.
Appel d'ioctl() pour relire la table de partitions.
[ 1518.252446] vdb: vdb1
Synchronisation des disques.

Créez un système de fichiers de type ext4 sur la partition :

[root@testvm1 ~]# mkfs.ext4 /dev/vdb1
mke2fs 1.45.6 (20-Mar-2020)
Rejet des blocs de périphérique : complété
En train de créer un système de fichiers avec 2621184 4k blocs et 655360 i-noeuds.
UUID de système de fichiers=805d3a53-4f8f-43f1-8b2a-bf1c493f33ee
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocation des tables de groupe : complété
Écriture des tables d'i-noeuds : complété
Création du journal (16384 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Montez le disque et vérifiez que vous pouvez y écrire :

[root@testvm1 ~]# mount /dev/vdb1 /mnt
[ 1581.199551] EXT4-fs (vdb1): mounted filesystem with ordered data mode. Opts: (null)
[root@testvm1 ~]# cd /mnt
[root@testvm1 mnt]# touch test
[root@testvm1 mnt]# ls
lost+found test

Détachez-vous de la VM :

[root@testvm1 ~]# [ALT GR]+[CTRL]+[)]
[root@centos8 images]#

Détachez ensuite le disque vdb de la VM :

[root@centos8 images]# virsh detach-disk testvm1 vdb
Disk detached successfully

Reconnectez-vous à la VM et exécutez la commande lsblk. Notez que celle-ci génère des erreurs dues au fait que le disque n'a pas été démonté avant d'avoir été détaché :

[root@testvm1 mnt]# lsblk
[ 1879.523849] EXT4-fs error (device vdb1): ext4_find_entry:1446: inode #2: comm lsblk: reading directory lblock 0
[ 1879.536586] EXT4-fs error (device vdb1): ext4_find_entry:1446: inode #2: comm lsblk: reading directory lblock 0
[ 1879.550137] EXT4-fs error (device vdb1): ext4_find_entry:1446: inode #2: comm lsblk: reading directory lblock 0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 7G 0 disk
├─vda1 253:1 0 1G 0 part /boot
├─vda2 253:2 0 512M 0 part [SWAP]
└─vda3 253:3 0 5,5G 0 part /

Démontez donc le disque :

[root@testvm1 mnt]# cd ..
[root@testvm1 /]# umount /mnt
[ 1921.363728] Buffer I/O error on dev vdb1, logical block 1081344, lost sync page write
[ 1921.372593] JBD2: Error -5 detected when updating journal superblock for vdb1-8.
[ 1921.381098] Aborting journal on device vdb1-8.
[ 1921.386369] Buffer I/O error on dev vdb1, logical block 1081344, lost sync page write
[ 1921.395319] JBD2: Error -5 detected when updating journal superblock for vdb1-8.

Exécutez de nouveau la commande lsblk. Vous verrez qu'il n'y a plus d'erreurs :

[root@testvm1 /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 7G 0 disk
├─vda1 253:1 0 1G 0 part /boot
├─vda2 253:2 0 512M 0 part [SWAP]
└─vda3 253:3 0 5,5G 0 part /
[root@testvm1 /]# [ALT GR]+[CTRL]+[)]
[root@centos8 images]#

LAB #5 - Journalisation

5.1 - Le Répertoire /var/log/libvirt/qemu/

Le répertoire /var/log/libvirt/qemu/ contient les journaux des VMs KVM :

[root@centos8 images]# cd /var/log/libvirt/qemu/
[root@centos8 qemu]# ls -l
total 56
-rw-------. 1 root root 4037 Sep 4 04:51 guestfs-7w7bnjy7ro65665z.log
-rw-------. 1 root root 4005 Sep 4 04:40 guestfs-xt170t6ii8uce35y.log
-rw-------. 1 root root 37531 Sep 4 07:04 testvm1.log
-rw-------. 1 root root 7179 Sep 4 06:18 testvm2.log
[root@centos8 qemu]# more testvm1.log
2021-09-03 12:32:14.206+0000: starting up libvirt version: 6.0.0, package: 35.1.
module_el8.4.0+885+5e18b468 (CentOS Buildsys <bugs@centos.org>, 2021-08-10-20:56
:57, ), qemu version: 4.2.0qemu-kvm-4.2.0-48.module_el8.4.0+783+f8734d30, kernel
: 4.18.0-305.7.1.el8.i2tch.x86_64, hostname: centos8.ittraining.loc
LC_ALL=C \
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin \
HOME=/var/lib/libvirt/qemu/domain-1-testvm1 \
XDG_DATA_HOME=/var/lib/libvirt/qemu/domain-1-testvm1/.local/share \
XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain-1-testvm1/.cache \
XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain-1-testvm1/.config \
QEMU_AUDIO_DRV=none \
/usr/libexec/qemu-kvm \
-name guest=testvm1,debug-threads=on \
-S \
-object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-test
vm1/master-key.aes \
-machine pc-q35-rhel8.2.0,accel=kvm,usb=off,dump-guest-core=off \
-cpu Broadwell-IBRS,vme=on,ss=on,vmx=on,f16c=on,rdrand=on,hypervisor=on,arat=on,
tsc-adjust=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaveopt
=on,pdpe1gb=on,abm=on,ibpb=on,ibrs=on,amd-stibp=on,amd-ssbd=on,skip-l1dfl-vmentr
y=on,pschange-mc-no=on \
-m 3072 \
-overcommit mem-lock=off \
--More--(3%)
[root@centos8 qemu]# cat guestfs-7w7bnjy7ro65665z.log
2021-09-04 08:47:50.774+0000: starting up libvirt version: 6.0.0, package: 35.1.module_el8.4.0+885+5e18b468 (CentOS Buildsys <bugs@centos.org>, 2021-08-10-20:56:57, ), qemu version: 4.2.0qemu-kvm-4.2.0-48.module_el8.4.0+783+f8734d30, kernel: 4.18.0-305.7.1.el8.i2tch.x86_64, hostname: centos8.ittraining.loc
LC_ALL=C \
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin \
HOME=/var/lib/libvirt/qemu/domain-9-guestfs-7w7bnjy7ro65 \
XDG_DATA_HOME=/var/lib/libvirt/qemu/domain-9-guestfs-7w7bnjy7ro65/.local/share \
XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain-9-guestfs-7w7bnjy7ro65/.cache \
XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain-9-guestfs-7w7bnjy7ro65/.config \
QEMU_AUDIO_DRV=none \
TMPDIR=/var/tmp \
/usr/libexec/qemu-kvm \
-name guest=guestfs-7w7bnjy7ro65665z,debug-threads=on \
-S \
-object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-9-guestfs-7w7bnjy7ro65/master-key.aes \
-machine pc-i440fx-rhel7.6.0,accel=kvm,usb=off,dump-guest-core=off \
-cpu host \
-m 1280 \
-overcommit mem-lock=off \
-smp 1,sockets=1,cores=1,threads=1 \
-uuid e6a0f63c-b33e-4ba0-bf03-9e4b9c9dd6a2 \
-display none \
-no-user-config \
-nodefaults \
-chardev socket,id=charmonitor,fd=39,server,nowait \
-mon chardev=charmonitor,id=monitor,mode=control \
-rtc base=utc,driftfix=slew \
-global kvm-pit.lost_tick_policy=delay \
-no-hpet \
-no-reboot \
-no-acpi \
-boot strict=on \
-kernel /var/tmp/.guestfs-0/appliance.d/kernel \
-initrd /var/tmp/.guestfs-0/appliance.d/initrd \
-append 'panic=1 console=ttyS0 edd=off udevtimeout=6000 udev.event-timeout=6000 no_timer_check printk.time=1 cgroup_disable=memory usbcore.nousb cryptomgr.notests tsc=reliable 8250.nr_uarts=1 root=/dev/sdb selinux=0 quiet TERM=xterm-256color' \
-device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x2 \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x3 \
-blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/testvm1-os.qcow2","node-name":"libvirt-2-storage","cache":{"direct":false,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-2-format","read-only":false,"cache":{"direct":false,"no-flush":false},"driver":"qcow2","file":"libvirt-2-storage","backing":null}' \
-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,device_id=drive-scsi0-0-0-0,drive=libvirt-2-format,id=scsi0-0-0-0,bootindex=1,write-cache=on \
-blockdev '{"driver":"file","filename":"/var/tmp/.guestfs-0/appliance.d/root","node-name":"libvirt-3-storage","cache":{"direct":false,"no-flush":true},"auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-3-format","read-only":true,"cache":{"direct":false,"no-flush":true},"driver":"raw","file":"libvirt-3-storage"}' \
-blockdev '{"driver":"file","filename":"/tmp/libguestfsxtKWVr/overlay1.qcow2","node-name":"libvirt-1-storage","cache":{"direct":false,"no-flush":true},"auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-1-format","read-only":false,"cache":{"direct":false,"no-flush":true},"driver":"qcow2","file":"libvirt-1-storage","backing":"libvirt-3-format"}' \
-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=1,lun=0,device_id=drive-scsi0-0-1-0,drive=libvirt-1-format,id=scsi0-0-1-0,write-cache=on \
-chardev socket,id=charserial0,path=/tmp/libguestfsNzMNMr/console.sock \
-device isa-serial,chardev=charserial0,id=serial0 \
-chardev socket,id=charchannel0,path=/tmp/libguestfsNzMNMr/guestfsd.sock \
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.libguestfs.channel.0 \
-object rng-random,id=objrng0,filename=/dev/urandom \
-device virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.0,addr=0x4 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
2021-09-04 08:47:50.775+0000: Domain id=9 is tainted: custom-argv
2021-09-04 08:47:50.775+0000: Domain id=9 is tainted: host-cpu
2021-09-04T08:51:54.913380Z qemu-kvm: terminating on signal 15 from pid 7495 (/usr/sbin/libvirtd)
2021-09-04 08:51:55.113+0000: shutting down, reason=destroyed

5.2 - Le Fichier /var/log/messages

Dans le fichier /var/log/messages sont consignés les messages de KVM :

[root@centos8 qemu]# cat /var/log/messages | grep kvm | more
Sep 1 05:47:57 centos8 kernel: kvm-clock: Using msrs 4b564d01 and 4b564d00
Sep 1 05:47:57 centos8 kernel: kvm-clock: cpu 0, msr b3801001, primary cpu cloc
k
Sep 1 05:47:57 centos8 kernel: kvm-clock: using sched offset of 369654777578829
1 cycles
Sep 1 05:47:57 centos8 kernel: clocksource: kvm-clock: mask: 0xffffffffffffffff
max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
Sep 1 05:47:57 centos8 kernel: kvm-guest: stealtime: cpu 0, msr 13bc2c080
Sep 1 05:47:57 centos8 kernel: kvm-guest: PV spinlocks enabled
Sep 1 05:47:57 centos8 kernel: kvm-clock: cpu 1, msr b3801041, secondary cpu cl
ock
Sep 1 05:47:57 centos8 kernel: kvm-guest: stealtime: cpu 1, msr 13bc6c080
Sep 1 05:47:57 centos8 kernel: kvm-clock: cpu 2, msr b3801081, secondary cpu cl
ock
Sep 1 05:47:57 centos8 kernel: kvm-guest: stealtime: cpu 2, msr 13bcac080
Sep 1 05:47:57 centos8 kernel: kvm-clock: cpu 3, msr b38010c1, secondary cpu cl
ock
Sep 1 05:47:57 centos8 kernel: kvm-guest: stealtime: cpu 3, msr 13bcec080
Sep 1 05:47:57 centos8 kernel: kvm-clock: cpu 4, msr b3801101, secondary cpu cl
ock
Sep 1 05:47:57 centos8 kernel: kvm-guest: stealtime: cpu 4, msr 13bd2c080
Sep 1 05:47:57 centos8 kernel: kvm-clock: cpu 5, msr b3801141, secondary cpu cl
ock
--More--

LAB #6 - Gestion de KVM avec Cockpit

6.1 - Installation et Démarrage

Cockpit est la nouvelle interface de gestion du serveur de RHEL8 / CentOS8. Celui-ci est installé par défaut. Par contre, le module supplémentaire pour gérer des machines virtuelles ne l'est pas. Installez donc le paquet cockpit-machines :

[root@centos8 ~]# dnf install cockpit-machines
Last metadata expiration check: 0:34:02 ago on Thu 09 Sep 2021 01:47:52 EDT.
Dependencies resolved.
======================================================================================
Package Arch Version Repository Size
======================================================================================
Installing:
cockpit-machines noarch 238.2-1.el8 appstream 735 k
Installing dependencies:
libvirt-dbus x86_64 1.3.0-2.module_el8.4.0+547+a85d02ba appstream 90 k
Transaction Summary
======================================================================================
Install 2 Packages
Total download size: 825 k
Installed size: 995 k
Is this ok [y/N]: y

Activez-et démarrez le socket cockpit :

[root@centos8 ~]# systemctl start --now cockpit.socket
[root@centos8 ~]# systemctl status cockpit.socket
● cockpit.socket - Cockpit Web Service Socket
Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; disabled; vendor preset: d>
Active: active (listening) since Thu 2021-09-09 02:24:42 EDT; 9s ago
Docs: man:cockpit-ws(8)
Listen: [::]:9090 (Stream)
Process: 19235 ExecStartPost=/bin/ln -snf active.motd /run/cockpit/motd (code=exite>
Process: 19227 ExecStartPost=/usr/share/cockpit/motd/update-motd localhost (code=e>
Tasks: 0 (limit: 100949)
Memory: 632.0K
CGroup: /system.slice/cockpit.socket
Sep 09 02:24:42 centos8.ittraining.loc systemd[1]: Starting Cockpit Web Service Socke>
Sep 09 02:24:42 centos8.ittraining.loc systemd[1]: Listening on Cockpit Web Service S>
[q]

Le cas échéant, ajoutez une règle dans le pare-feu afin de pouvoir utiliser cockpit :

[root@centos8 ~]# firewall-cmd --add-service=cockpit --permanent
Warning: ALREADY_ENABLED: cockpit
success

6.2 - Connexion à l'Interface

Ouvrez la connexion CentOS8_VNC_10.0.2.46 dans l'interface de Guacamole. Connectez-vous en tant que trainee et ouvrez le navigateur web. Saisissez l'adresse https://10.0.2.46:9090 :

Cliquez sur le bouton Advanced :

Cliquez sur le bouton Accept the Risk and Continue :

Entrez les coordonnées de connexion root / fenestros et cliquez sur le bouton Log in :

La section Overview vous donne des informations sur le système d'exploitation de votre hôte KVM :

6.3 - Visualisation de la Configuration de la VM testvm1

Cliquez ensuite sur Virtual Machines dans la colonne de gauche :

Cliquez maintenant sur le lien 3 Storage pools :

Pour consulter les informations concernant le storage pool kvm-storagepool, cliquez sur celui-ci :

Cliquez ensuite sur les liens Virtual machines > Networks :

En cliquant sur le lien default vous obtiendrez des informations concernant le pont configuré :

6.4 - Démarrage de la VM testvm1

Cliquez ensuite sur le lien Virtual machines :

Cliquez sur le lien testvm1 :

Cliquez sur le bouton Run pour démarrer la VM :

6.5 - Connexion à la VM testvm1

Descendez la fenêtre et cliquez sur le lien Console :

A l'issu du démarrage, connectez-vous à la VM :

LAB #7 - Gestion des Machines Virtuelles avec Cockpit

7.1 - Création d'un Clone de la VM testvm1

A l'aide de l'interface cockpit, créez puis supprimez un clone testvm3 de la machine virtuelle testvm1 :

7.2 - Création d'une VM en Mode Graphique à partir d'un ISO

A l'aide de l'interface cockpit, installez une nouvelle machine virtuelle, testvm2 ayant 2vCPUs et 2Go de RAM, à partir de l'ISO et procédez à sa configuration.

7.3 - Création et Suppression d'un Snapshot de la vm testvm2

A l'aide de l'interface cockpit, créez puis supprimez un snapshot de la machine virtuelle, testvm2,

7.4 - Augmentation des Ressources de la VM testvm2

A l'aide de l'interface cockpit, augmentez le nombre de vCPUs de la machine virtuelle testvm2 à 4 puis augmentez la mémoire allouée à la machine virtuelle à 4 Go.

7.5 - Ajout et Suppression d'un Disque Dur à la VM testvm2

A l'aide de l'interface cockpit, ajoutez un disque dur de 20 Go à la machine virtuelle testvm2.

A Faire : Supprimez la machine virtuelle testvm2. Assurez-vous que votre machine virtuelle testvm1 soit arrêtée.

LAB #8 - Gestion de KVM avec virt-manager

8.1 - Installation

L'exécutable virt-manager n'est pas installée par défaut. Cherchez donc le paquet pouvant servir à l'installation de l'exécutable et installez-la :

[root@centos8 ~]# dnf provides virt-manager
Last metadata expiration check: 1:14:32 ago on Thu 09 Sep 2021 11:19:54 CEST.
virt-manager-2.2.1-4.el8.noarch : Desktop tool for managing virtual machines via
: libvirt
Repo : appstream
Matched from:
Provide : virt-manager = 2.2.1-4.el8
[root@centos8 ~]# dnf install virt-manager

8.2 - Connexion à l'Interface

Exécutez ensuite virt-manager. Vous verrez une liste des machines virtuelles :

Cliquez sur testvm1 :

8.3 - Démarrage de la VM testvm1

Cliquez sur l'icône pour démarrer la machine virtuelle :

8.4 - Connexion à la VM testvm1

A l'issu du démarrage, connectez-vous à la machine virtuelle :

8.5 - Visualisation de la Configuration de la VM

Cliquez sur l'icône de l'ampoule pour visualiser la configuration de la machine virtuelle :

Cliquez ensuite sur CPUs dans la colonne de gauche pour visualiser les détails des vCPUs de la machine virtuelle :

LAB #9 - Gestion des Machines Virtuelles avec virt-manager

9.1 - Création d'un Clone de la VM testvm1

A l'aide de l'interface virt-manager, créez puis supprimez un clone testvm3 de la machine virtuelle testvm1 :

9.2 - Création d'une VM en Mode Graphique à partir d'un ISO

A l'aide de l'interface virt-manager, installez une nouvelle machine virtuelle, testvm2 ayant 2vCPUs et 2Go de RAM, à partir de l'ISO et procédez à sa configuration.

9.3 - Création et Suppression d'un Snapshot de la vm testvm2

A l'aide de l'interface virt-manager, créez puis supprimez un snapshot de la machine virtuelle, testvm2,

9.4 - Augmentation des Ressources de la VM testvm2

A l'aide de l'interface virt-manager, augmentez le nombre de vCPUs de la machine virtuelle testvm2 à 4 puis augmentez la mémoire allouée à la machine virtuelle à 4 Go.

9.5 - Ajout et Suppression d'un Disque Dur à la VM testvm2

A l'aide de l'interface virt-manager, ajoutez un disque dur de 20 Go à la machine virtuelle testvm2.

A Faire : Supprimez la machine virtuelle testvm2. Assurez-vous que votre machine virtuelle testvm1 soit arrêtée.

LAB #10 - oVirt

10.1 - Procédure d'Installation

Cette procédure prend 60 minutes.

Connectez-vous à la VM 10.0.2.46 :

root@computeXX:~# ssh -l trainee 10.0.2.46
trainee@10.0.2.46's password: trainee
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Thu Feb 16 14:15:27 2023 from 10.0.2.1
[trainee@centos8 ~]$

Devenez root et mettez à jour les paquets installés :

[trainee@centos8 ~]$ su -
Password: fenestros
[root@centos8 ~]# dnf update -y

Téléchargez et installez le paquet ovirt-release44.rpm afin de configurer le dépôt des paquets :

[root@centos8 ~]# dnf -y install https://resources.ovirt.org/pub/yum-repo/ovirt-release44.rpm

Activez le module javapackages-tools :

[root@centos8 ~]# dnf module -y enable javapackages-tools
CentOS-$stream - Ceph Pacific 583 kB/s | 478 kB 00:00
CentOS Linux 8 - PowerTools 1.7 MB/s | 2.3 MB 00:01
determining the fastest mirror (13 hosts).. done.674 B --:-- ETA
Latest oVirt 4.4 Release 380 kB/s | 2.7 MB 00:07
Extra Packages for Enterprise Linux 8 2.4 MB/s | 13 MB 00:05
CentOS-8 - Gluster 8 60 kB/s | 42 kB 00:00
virtio-win builds roughly matching what will be shipped in upcoming RHEL 80 kB/s | 205 kB 00:02
Copr repo for EL8_collection owned by sbonazzo 252 kB/s | 246 kB 00:00
Copr repo for gluster-ansible owned by sac 10 kB/s | 7.3 kB 00:00
CentOS-8 - Advanced Virtualization 31 kB/s | 207 kB 00:06
CentOS-8 - oVirt 4.4 496 kB/s | 1.2 MB 00:02
CentOS-8 - OpsTools - collectd 19 kB/s | 41 kB 00:02
CentOS-8 - OpsTools - collectd - vault 340 kB/s | 149 kB 00:00
CentOS-8 - NFV OpenvSwitch 236 kB/s | 207 kB 00:00
CentOS-8 - OpenStack victoria 1.3 MB/s | 3.3 MB 00:02
Dependencies resolved.
============================================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================================
Enabling module streams:
javapackages-tools 201801
Transaction Summary
============================================================================================================================================================================
Complete!

Activez le module pki-deps :

[root@centos8 ~]# dnf module -y enable pki-deps
Last metadata expiration check: 0:02:46 ago on Thu 16 Feb 2023 14:46:17 CET.
Dependencies resolved.
============================================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================================
Enabling module streams:
pki-deps 10.6
Transaction Summary
============================================================================================================================================================================
Complete!

Dernièrement, activez le module postgresql:12 :

[root@centos8 ~]# dnf module -y enable postgresql:12
Last metadata expiration check: 0:03:45 ago on Thu 16 Feb 2023 14:46:17 CET.
Dependencies resolved.
============================================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================================
Enabling module streams:
postgresql 12
Transaction Summary
============================================================================================================================================================================
Complete!

Procédez de nouveau à une mise-à-jour des paquets :

[root@centos8 ~]# dnf -y update

Installez maintenant les paquets vim, tmux et ovirt-engine :

[root@centos8 ~]# dnf -y install vim tmux ovirt-engine

Dernièrement, activez le Nested Virtualisation dans la VM CentOS8 :

[root@centos8 ~]# echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf

10.2 - Configuration d'oVirt

La configuration prend 60 minutes.

Lancez un terminal tmux :

[root@centos8 ~]# tmux

Dans le terminal tmux, exécutez la commande engine-setup et répondez aux questions en suivant l'exemple ci-dessous :

[root@centos8 ~]# engine-setup
[ INFO ] Stage: Initializing
[ INFO ] Stage: Environment setup
Configuration files: /etc/ovirt-engine-setup.conf.d/10-packaging-jboss.conf, /etc/ovirt-engine-setup.conf.d/10-packaging.conf
Log file: /var/log/ovirt-engine/setup/ovirt-engine-setup-20230216161933-jm69ke.log
Version: otopi-1.9.6 (otopi-1.9.6-1.el8)
[ INFO ] Stage: Environment packages setup
[ INFO ] Stage: Programs detection
[ INFO ] Stage: Environment setup (late)
[ INFO ] Stage: Environment customization
--== PRODUCT OPTIONS ==--
Configure Cinderlib integration (Currently in tech preview) (Yes, No) [No]: No
Configure Engine on this host (Yes, No) [Yes]: Yes
Configuring ovirt-provider-ovn also sets the Default cluster's default network provider to ovirt-provider-ovn.
Non-Default clusters may be configured with an OVN after installation.
Configure ovirt-provider-ovn (Yes, No) [Yes]: Yes
Configure WebSocket Proxy on this host (Yes, No) [Yes]: Yes
* Please note * : Data Warehouse is required for the engine.
If you choose to not configure it on this host, you have to configure
it on a remote host, and then configure the engine on this host so
that it can access the database of the remote Data Warehouse host.
Configure Data Warehouse on this host (Yes, No) [Yes]: Yes
Configure VM Console Proxy on this host (Yes, No) [Yes]: Yes
Configure Grafana on this host (Yes, No) [Yes]: Yes
--== PACKAGES ==--
[ INFO ] Checking for product updates...
[ INFO ] No product updates found
--== NETWORK CONFIGURATION ==--
Host fully qualified DNS name of this server [centos8.ittraining.loc]: centos8.ittraining.loc
[WARNING] Failed to resolve centos8.ittraining.loc using DNS, it can be resolved only locally
Setup can automatically configure the firewall on this system.
Note: automatic configuration of the firewall may overwrite current settings.
Do you want Setup to configure the firewall? (Yes, No) [Yes]: Yes
[ INFO ] firewalld will be configured as firewall manager.
--== DATABASE CONFIGURATION ==--
Where is the DWH database located? (Local, Remote) [Local]: Local
Setup can configure the local postgresql server automatically for the DWH to run. This may conflict with existing applications.
Would you like Setup to automatically configure postgresql and create DWH database, or prefer to perform that manually? (Automatic, Manual) [Automatic]: Automatic
Where is the Engine database located? (Local, Remote) [Local]:
Setup can configure the local postgresql server automatically for the engine to run. This may conflict with existing applications.
Would you like Setup to automatically configure postgresql and create Engine database, or prefer to perform that manually? (Automatic, Manual) [Automatic]: Automatic
--== OVIRT ENGINE CONFIGURATION ==--
Engine admin password: fenestros
Confirm engine admin password: fenestros
[WARNING] Password is weak: The password fails the dictionary check - it is based on a dictionary word
Use weak password? (Yes, No) [No]: Yes
Application mode (Virt, Gluster, Both) [Both]: Both
Use default credentials (admin@internal) for ovirt-provider-ovn (Yes, No) [Yes]: Yes
--== STORAGE CONFIGURATION ==--
Default SAN wipe after delete (Yes, No) [No]: No
--== PKI CONFIGURATION ==--
Organization name for certificate [ittraining.loc]: ittraining.loc
--== APACHE CONFIGURATION ==--
Setup can configure the default page of the web server to present the application home page. This may conflict with existing applications.
Do you wish to set the application as the default page of the web server? (Yes, No) [Yes]: Yes
Setup can configure apache to use SSL using a certificate issued from the internal CA.
Do you wish Setup to configure that, or prefer to perform that manually? (Automatic, Manual) [Automatic]: Automatic
--== SYSTEM CONFIGURATION ==--
--== MISC CONFIGURATION ==--
Please choose Data Warehouse sampling scale:
(1) Basic
(2) Full
(1, 2)[1]: 1
Use Engine admin password as initial Grafana admin password (Yes, No) [Yes]:
--== END OF CONFIGURATION ==--
[ INFO ] Stage: Setup validation
[WARNING] Less than 16384MB of memory is available
--== CONFIGURATION PREVIEW ==--
Application mode : both
Default SAN wipe after delete : False
Host FQDN : centos8.ittraining.loc
Firewall manager : firewalld
Update Firewall : True
Set up Cinderlib integration : False
Configure local Engine database : True
Set application as default page : True
Configure Apache SSL : True
Engine database host : localhost
Engine database port : 5432
Engine database secured connection : False
Engine database host name validation : False
Engine database name : engine
Engine database user name : engine
Engine installation : True
PKI organization : ittraining.loc
Set up ovirt-provider-ovn : True
Grafana integration : True
Grafana database user name : ovirt_engine_history_grafana
Configure WebSocket Proxy : True
DWH installation : True
DWH database host : localhost
DWH database port : 5432
DWH database secured connection : False
DWH database host name validation : False
DWH database name : ovirt_engine_history
Configure local DWH database : True
Configure VMConsole Proxy : True
Please confirm installation settings (OK, Cancel) [OK]: OK
[ INFO ] Stage: Transaction setup
[ INFO ] Stopping engine service
[ INFO ] Stopping ovirt-fence-kdump-listener service
[ INFO ] Stopping dwh service
[ INFO ] Stopping vmconsole-proxy service
[ INFO ] Stopping websocket-proxy service
[ INFO ] Stage: Misc configuration (early)
[ INFO ] Stage: Package installation
[ INFO ] Stage: Misc configuration
[ INFO ] Upgrading CA
[ INFO ] Initializing PostgreSQL
[ INFO ] Creating PostgreSQL 'engine' database
[ INFO ] Configuring PostgreSQL
[ INFO ] Creating PostgreSQL 'ovirt_engine_history' database
[ INFO ] Configuring PostgreSQL
[ INFO ] Creating CA: /etc/pki/ovirt-engine/ca.pem
[ INFO ] Creating CA: /etc/pki/ovirt-engine/qemu-ca.pem
[ INFO ] Updating OVN SSL configuration
[ INFO ] Updating OVN timeout configuration
[ INFO ] Creating/refreshing DWH database schema
[ INFO ] Setting up ovirt-vmconsole proxy helper PKI artifacts
[ INFO ] Setting up ovirt-vmconsole SSH PKI artifacts
[ INFO ] Configuring WebSocket Proxy
[ INFO ] Creating/refreshing Engine database schema
[ INFO ] Creating a user for Grafana
[ INFO ] Creating/refreshing Engine 'internal' domain database schema
[ INFO ] Creating default mac pool range
[ INFO ] Adding default OVN provider to database
[ INFO ] Adding OVN provider secret to database
[ INFO ] Setting a password for internal user admin
[ INFO ] Install selinux module /usr/share/ovirt-engine/selinux/ansible-runner-service.cil
[ INFO ] Generating post install configuration file '/etc/ovirt-engine-setup.conf.d/20-setup-ovirt-post.conf'
[ INFO ] Stage: Transaction commit
[ INFO ] Stage: Closing up
[ INFO ] Starting engine service
[ INFO ] Starting dwh service
[ INFO ] Starting Grafana service
[ INFO ] Restarting ovirt-vmconsole proxy service
--== SUMMARY ==--
[ INFO ] Restarting httpd
Please use the user 'admin@internal' and password specified in order to login
Web access is enabled at:
http://centos8.ittraining.loc:80/ovirt-engine
https://centos8.ittraining.loc:443/ovirt-engine
Internal CA 00:CC:F6:2F:F4:C6:C8:C5:D3:BD:56:5B:7A:F4:B4:FB:38:93:B1:DD
SSH fingerprint: SHA256:Qe5Fxe7wE2lpGRQWt6TGDEAoXQ4mdQBHPtCI9qqGzo8
[WARNING] Less than 16384MB of memory is available
Web access for grafana is enabled at:
https://centos8.ittraining.loc/ovirt-engine-grafana/
Please run the following command on the engine machine centos8.ittraining.loc, for SSO to work:
systemctl restart ovirt-engine
--== END OF SUMMARY ==--
[ INFO ] Stage: Clean up
Log file is located at /var/log/ovirt-engine/setup/ovirt-engine-setup-20230216161933-jm69ke.log
[ INFO ] Generating answer file '/var/lib/ovirt-engine/setup/answers/20230216163544-setup.conf'
[ INFO ] Stage: Pre-termination
[ INFO ] Stage: Termination
[ INFO ] Execution of setup completed successfully

Notez les deux URLs :

Please use the user 'admin@internal' and password specified in order to login
Web access is enabled at:
http://centos8.ittraining.loc:80/ovirt-engine
https://centos8.ittraining.loc:443/ovirt-engine

Web access for grafana is enabled at:
https://centos8.ittraining.loc/ovirt-engine-grafana/

Re-démarrez le service ovirt-engine :

[root@centos8 ~]# systemctl restart ovirt-engine

Dans votre Gateway, éditez le fichier /etc/hosts :

trainee@gateway:~$ su -
Password: Fenestr0$
root@gateway:~# vi /etc/hosts
root@gateway:~# cat /etc/hosts
127.0.0.1	localhost
10.0.2.40	gateway.ittraining.loc	gateway
10.0.2.46	centos8.ittraining.loc	centos8
10.0.2.47	windows10.ittraining.loc	windows10
10.0.2.50	kubemaster.ittraining.loc	kubemaster
10.0.2.51	kubenode01.ittraining.loc	kubenode01
10.0.2.52	kubenode02.ittraining.loc	kubenode02
10.0.2.53	ansible.ittraining.loc	ansible
10.0.2.54	targeta.ittraining.loc	targeta
10.0.2.55	targetb.ittraining.loc	targetb
10.0.2.56	manager.ittraining.loc	manager
10.0.2.57	worker01.ittraining.loc	worker01
10.0.2.58	worker02.ittraining.loc	worker02
10.0.2.59	puppetmaster.ittraining.loc	puppetmaster
10.0.2.60	puppetslave01.ittraining.loc	puppetslave01
10.0.2.61	puppetslave02.ittraining.loc	puppetslave02
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

En utilisant le navigateur de votre Gateway, allez à l'adresse http://centos8.ittraining.loc/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA pour télécharger le certificat du CA d'oVirt. Ce fichier s'appelle pki-resource.

Entrez dans les Settings du navigateur web et recherchez la chaine cert :

Cliquez ensuite sur View Certificates puis sur Authorities :

Cliquez sur le bouton Import et importez le fichier pki-resource. Cochez les deux options et cliquez sur le bouton OK :

Re-démarrez le navigateur web puis allez à l'adresse https://centos8.ittraining.loc:443/ovirt-engine :

Cliquez sur Not logged in et ensuite Log in :

Connectez-vous avec admin et fenestros :

Cliquez sur Administration Portal dans Portals :

Editez le fichier /etc/hosts :

[root@centos8 ~]# vi /etc/hosts
[root@centos8 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.2.46 centos8.ittraining.loc centos8

Naviguez à Compute > Hosts et ajoutez centos8.ittraining.loc

10.3 - Configuration du Stockage

Vérifiez que le serveur NFS soit installé :

[root@centos8 ~]# systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Active: inactive (dead)

Vérifiez ensuite la présence du groupe kvm et de l'utilisateur vdsm :

[root@centos8 ~]# getent group kvm
kvm:x:36:qemu
[root@centos8 ~]# getent passwd vdsm
vdsm:x:36:36:Node Virtualization Manager:/var/lib/vdsm:/sbin/nologin

Créez les répertoires /nfs/exports/ovirt/data, /nfs/exports/ovirt/iso et /nfs/exports/ovirt/export :

[root@centos8 ~]# mkdir -p /nfs/exports/ovirt/{data,iso,export}

Modifiez le propriétaire et le groupe des répertoires :

[root@centos8 ~]# chown -R 36:36 /nfs/exports/ovirt/data
[root@centos8 ~]# chown -R 36:36 /nfs/exports/ovirt/iso
[root@centos8 ~]# chown -R 36:36 /nfs/exports/ovirt/export

Modifiez les permissions des répertoires :

[root@centos8 ~]# chmod 0755 /nfs/exports/ovirt/data
[root@centos8 ~]# chmod 0755 /nfs/exports/ovirt/iso
[root@centos8 ~]# chmod 0755 /nfs/exports/ovirt/export

CRéez ensuite le fichier /etc/exports :

[root@centos8 ~]# vi /etc/exports
[root@centos8 ~]# cat /etc/exports
/nfs/exports/ovirt/data *(rw,anonuid=36,anongid=36,all_squash)
/nfs/exports/ovirt/iso *(rw,anonuid=36,anongid=36,all_squash)
/nfs/exports/ovirt/export *(rw,anonuid=36,anongid=36,all_squash)

Activez et démarrez le serveur NFS :

[root@centos8 ~]# systemctl enable --now nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

Vérifiez l'exportation des trois répertoires :

[root@centos8 ~]# exportfs -rvv
exporting *:/nfs/exports/ovirt/export
exporting *:/nfs/exports/ovirt/iso
exporting *:/nfs/exports/ovirt/data

Ajoutez les règles du pare-feu :

[root@centos8 ~]# firewall-cmd --add-service={nfs,nfs3,rpc-bind} --permanent
success
[root@centos8 ~]# firewall-cmd --reload
success
[root@centos8 ~]# firewall-cmd --permanent --zone public --add-port 80/tcp
success
[root@centos8 ~]# firewall-cmd --permanent --zone public --add-port 443/tcp
success
[root@centos8 ~]# firewall-cmd --reload
success

Naviguez à Storage > Domains > New Domain et ajoutez /nfs/exports/ovirt/data :

Ajoutez ensuite les exports NFS /nfs/exports/ovirt/iso et /nfs/exports/ovirt/export :

Patientez jusqu'à ce que tout soit activé :

10.4 - Création d'un Machine Virtuelle

Retournez dans votre Gateway et téléchargez une image iso de la distribution Debian :

trainee@gateway:~$ wget https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-11.6.0-amd64-xfce.iso

Cliquez ensuite sur Storage > Disks > Upload > Start :

Choisissez l'image iso de Debian :

Constatez la présence de l'iso dans la liste :

Cliquez sur Compute > Virtual Machines > New :

Remplissez le formulaire en suivant l'exemple :

Cliquez sur le bouton Create, remplisez la taille et cliquez sur le bouton OK :

Cliquez sur le bouton Show Advanced Options puis System et modifiez Memory Size à 2048 MB :

Cliquez sur Boot Options et cochez Attach CD et cliquez sur le bouton OK :

Cliquez sur la flèche à droite de Run et cliquez sur Run Once :

Développez Console et cochez VNC. Choisissez le clavier fr et cliquez sur le bouton OK :

Copyright © 2023 Hugh Norris