Ceci est une ancienne révision du document !
Table des matières
Version : 2024.01
Dernière mise-à-jour : 2024/10/27 08:39
RH13407 - Gestion des Machines Virtuelles avec KVM
Contenu du Module
- RH13407 - Gestion des Machines Virtuelles avec KVM
- Contenu du Module
- Présentation
- LAB #1 - Installation de KVM
- 1.1 - Installation des Paquets Requis
- 1.2 - Activation et Démarrage du Service libvirtd
- 1.3 - Modules du Noyau
- LAB #2 - Configuration de KVM
- 2.1 - Configuration du Pare-feu
- 2.2 - Configuration du Réseau des VMs
- 2.3 - Configuration du Stockage
- LAB #3 - Installation d'une Machine Virtuelle Red Hat 9
- 3.1 - Identification du Short ID
- 3.2 - Configuration du Stockage des ISOs
- 3.3 - Installation du Domaine
- Format des Images
- Convertir le Format de l'Image
- 3.4 - Configuration de l'Installation de l'OS Invité
- Language Settings
- Network configuration
- Time settings
- Root password
- Installation source
- Software selection
- Installation Destination
- Démarrer l'Installation
- Démarrer la VM
- 3.5 - Vérification de la VM Invitée
- Réseau
- Internet
- LAB #4 - Gestion des Clones
- 4.1 - Création d'une VM à partir d'un Clone
- LAB #5 - Gestion des Snapshots
- 5.1 - Création d'un Snapshot - VM Arrêtée
- 5.2 - Création d'un Snapshot - VM en Cours d'Exécution
- 5.3 - Restauration d'un Snapshot
- 5.4 - Suppression de Snapshots
- LAB #6 - Gestion des Sauvegardes
- 6.1 - Création d'une Copie du Disque de la VM
- 6.2 - Création d'une Copie de la Configuration de la VM
- 6.3 - Sauvegarder les Copies
- LAB #7 - Augmentation de la Taille du Disque
- 7.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
- 7.2 - Augmenter la Taille du Disque avec la Commande virsh
- Augmenter la Taille du Disque de la VM
- LAB #8 - Réparation d'un Filesystem Corrompu
- 8.1 - Préparation
- 8.2 - La Commande guestfish
- LAB #9 - Gestion de la VM
- 9.1 La Commande shutdown
- 9.2 La Commande reboot
- 9.3 La Commande suspend
- 9.4 La Commande resume
- 9.5 La Commande dominfo
- 9.6 La Commande autostart
- 9.7 La Commande domuuid
- 9.8 La Commande undefine
- 9.9 La Commande destroy
- LAB #10 - Gestion des Ressources
- 10.1 - Augmenter les VCPUs et la Mémoire
- 10.2 - Ajouter et Supprimer un Disque Dur
- LAB #11 - Journalisation
- 11.1 - Le Répertoire /var/log/libvirt/qemu/
- 11.2 - Le Fichier /var/log/messages
- LAB #12 - Gestion de KVM avec Cockpit
- 12.1 - Installation et Démarrage
- 12.2 - Connexion à l'Interface
- 12.3 - Visualisation de la Configuration de la VM testvm1
- 12.4 - Démarrage de la VM testvm1
- 12.5 - Connexion à la VM testvm1
- LAB #13 - Gestion des Machines Virtuelles avec Cockpit
- 13.1 - Créer un Clone de la VM testvm1
- 13.2 - Création d'une VM en Mode Graphique à partir d'un ISO
- 13.3 - Création et Suppression d'un Snapshot de la VM testvm2
- 13.4 - Augmentation des Ressources de la VM testvm2
- 13.5 - Ajout et Suppression d'un Disque Dur à la VM testvm2
- LAB #14 - Création d'une Machine Virtuelle avec Kickstart
- 14.1 - Créer un fichier Kickstart
- 14.2 - Création d'une VM avec Kickstart
- LAB #15 - Gestion du Serveur NFS
- Présentation
- Les Services et Processus du Serveur NFSv3
- Les Services RPC
- Options d'un Partage NFS
- Commandes de Base
- Installation
- Mise en Place
- Configuration du Serveur
- Configuration du Client
- Surveillance du Serveur
- La Commande rpcinfo
- La Commande nfsstat
Présentation
La Virtualisation
Le système de base hébergeant les machines virtuelles est appelé l'hôte tandis que les machines virtuelles sont appelées les invités.
Il existe différentes méthodes de virtualisation :
- Virtualisation au niveau du système d'exploitation ou L'Isolation
- Description : Les systèmes invités utilisent le même noyau et une partie du système de fichiers de l'hôte.
- L'avantage principal : Économise des ressources.
- L'inconvénient principal : Les OS des invités ont besoin d'être modifiés pour fonctionner en tant que machine virtuelle. L'hôte et les invités doivent utiliser le même OS.
- Logiciels concernés : OpenVZ, Linux VServer, BSD Jails, LXC (Linux Containers), Solaris Zones, Docker.
- Paravirtualisation ou Hyperviseur de type 1
- Description : Le système hôte met à disposition une machine virtuelle dans laquelle les autres invités s'exécutent. Les systèmes invités sont modifiés et communiquent directement avec l'hyperviseur.
- L'avantage principal : Efficacité.
- L'inconvénient principal : Les OS des invités ont besoin d'être modifiés pour fonctionner en tant que machine virtuelle.
- Logiciels concernés : Xen, VMWare™ ESX, Microsoft™ Hyper-V.
- Virtualisation complète ou Hyperviseur de type 2
- Description : Le programme simule du matériel virtuel qui apparaît du point de vue de l'invité comme du matériel réellement existant. Un hyperviseur ou VMM ( Virtual Machine Manager ) contrôle l'invité et remplace certaines opérations par d'autres afin de gérer le processeur, le disque dur, la mémoire, les processus etc..
- L'avantage principal : Les OS des invités n'ont pas besoin d'être modifiés pour fonctionner en tant que machine virtuelle.
- L'inconvénient principal : La lenteur.
- Logiciels concernés : VMWare™ Fusion, VMWare™ Player, VMWare™ Server, VMWare™ Fusion, Parallels Desktop, Parallels Server, Sun/Oracle VirtualBox, Microsoft™ VirtualPC, Microsoft™ VirtualServer, QEMU, BOCHS.
- Paravirtualisation avec prise en charge de matériel
- Description : Les processeurs Intel-VT et AMD-V contiennent des instructions matérielles pour faciliter la virtualisation. Pour déterminer si le processeur dispose des fonctionnalités de virtualisation matérielles, soit Intel-VT, soit AMD-V, lancez la commande # egrep '^flags.*(vmx|svm)' /proc/cpuinfo [Entrée]. Dans le cas où vous ne voyez rien, le processeur ne dispose pas de fonctionnalités de virtualisation matérielles. Par contre, même dans le cas de la prise en charge, vérifiez que les fonctionnalités soient activées dans le BIOS de la machine.
- L'avantage principal : Efficacité liée au fait que la plupart des OS des invités n'ont pas besoin d'être modifiés pour fonctionner en tant que machine virtuelle.
- L'inconvénient principal : Nécessite un processeur spécial.
- Logiciels concernés : Xen, KVM
Xen
- Xen a vu le jour en 2001 à l'Université de Cambridge,
- Xen est un produit en licence GPL,
- Il existe des systèmes de virtualisation commerciaux à base de Xen dont le plus connu est actuellement Citrix XenServer,
- Xen est un système de virtualisation principalement destiné à la virtualisation de serveurs,
- Xen est un système de paravirtualisation qui nécessite un noyau Linux modifié,
- Xen ne peut pas lancé donc un système non-modifié tel Windows™ en mode paravirtualisation,
- Xen peut lancer des systèmes non modifiés dans des HVM ( Hardware Virtual Machine ) depuis sa version 3 en utilisant une partie du code de QEMU combinée avec l'utilisation d'un processeur de virtualisation
KVM
KVM ou Kernel based Virtual Machine :
- est un hyperviseur libre sous Linux,
- ne fonctionne que sur les architectures x86 disposant des extensions Intel-VT ou AMD-V,
- est un projet issu de QEMU.
Important : Le module KVM est intégré dans le noyau Linux depuis la version 2.6.20 et permet la paravirtualisation depuis le noyau 2.6.25.
KVM appartient à la société Red Hat.
KVM permet de virtualiser :
- Windows™ à partir de Windows™ 2000,
- Toutes les distributions Linux,
- La majorité des Unix BSD,
- Solaris™ et openSolaris,
- Minux, Hurd, QNX,
- MSDOS.
KVM offre un support du matériel suivant :
- USB,
- Ethernet,
- PCI Hotplug,
- Carte Son,
- Virtuo - un périphérique disque paravirtualisé.
Les avantages de KVM par rapport à Xen sont :
- l’utilisation de noyaux non-modifiés au niveaux des invités,
- l'intégration direct dans le noyau Linux.
LAB #1 - Installation de KVM
1.1 - Installation des Paquets Requis
Avant d'installer KVM, il convient de savoir si le processeur de l'hôte supporte les extensions de virtualisation. Les extensions necessaires sont soit vmx soit svm selon que le processeur du système hôte soit de la marque Intel™ ou AMD™ :
[root@redhat9 ~]# egrep '(vmx|svm)' /proc/cpuinfo | wc -l 8
Installez les paquets nécessaires pour la virtualisation sous KVM :
[root@redhat9 ~]# dnf install qemu-kvm libvirt virt-install virt-viewer -y
Le paquet bridge-utils est requis pour la gestion des bridges réseau. Installez donc celui-ci :
[root@redhat9 ~]# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm -y [root@redhat9 ~]# /usr/bin/crb enable Enabling CRB repo Repository 'codeready-builder-for-rhel-9-x86_64-rpms' is enabled for this system. CRB repo is enabled and named: codeready-builder-for-rhel-9-x86_64-rpms [root@redhat9 ~]# dnf install bridge-utils -y
Dernièrement, les outils dont vous aurez besoin se trouvent dans les paquets virt-top et libguestfs-tools :
[root@redhat9 ~]# dnf install virt-top libguestfs-tools -y
Démarrez lesservices de virtualisation installés :
[root@redhat9 ~]# for drv in qemu network nodedev nwfilter secret storage interface; do systemctl start virt${drv}d{,-ro,-admin}.socket; done
1.2 - Activation et Démarrage du Service libvirtd
Activez et démarrez le service libvirtd pour démarrer KVM. Notez l'utilisation de l'option –now qui permet de faire les deux actions en une seule ligne de commande :
[root@redhat9 ~]# systemctl enable --now libvirtd
Vérifiez le statut du service avant de poursuivre :
[root@redhat9 ~]# systemctl status libvirtd ● libvirtd.service - libvirt legacy monolithic daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; preset: disabled) Active: active (running) since Thu 2024-10-24 13:28:00 CEST; 29s ago TriggeredBy: ● libvirtd-ro.socket ● libvirtd.socket ● libvirtd-admin.socket Docs: man:libvirtd(8) https://libvirt.org/ Main PID: 22191 (libvirtd) Tasks: 21 (limit: 32768) Memory: 41.2M CPU: 404ms CGroup: /system.slice/libvirtd.service ├─22191 /usr/sbin/libvirtd --timeout 120 ├─22293 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper └─22294 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper Oct 24 13:28:00 redhat9.ittraining.loc systemd[1]: Started libvirt legacy monolithic daemon. Oct 24 13:28:01 redhat9.ittraining.loc dnsmasq[22293]: started, version 2.85 cachesize 150 Oct 24 13:28:01 redhat9.ittraining.loc dnsmasq[22293]: compile time options: IPv6 GNU-getopt DBus no-UBus no-i18n IDN2 DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth cryptohash DNSSEC loop-detect inotify dump> Oct 24 13:28:01 redhat9.ittraining.loc dnsmasq-dhcp[22293]: DHCP, IP range 192.168.122.2 -- 192.168.122.254, lease time 1h Oct 24 13:28:01 redhat9.ittraining.loc dnsmasq-dhcp[22293]: DHCP, sockets bound exclusively to interface virbr0 Oct 24 13:28:01 redhat9.ittraining.loc dnsmasq[22293]: reading /etc/resolv.conf Oct 24 13:28:01 redhat9.ittraining.loc dnsmasq[22293]: using nameserver 8.8.8.8#53 Oct 24 13:28:01 redhat9.ittraining.loc dnsmasq[22293]: read /etc/hosts - 2 addresses Oct 24 13:28:01 redhat9.ittraining.loc dnsmasq[22293]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses Oct 24 13:28:01 redhat9.ittraining.loc dnsmasq-dhcp[22293]: read /var/lib/libvirt/dnsmasq/default.hostsfile
1.3 - Modules du Noyau
Votre VM présente aux système hôte un processeur de type Intel™. Pour que KVM puisse fonctionner dans cet environnement il a besoin que deux modules soient chargés :
- kvm
- kvm-intel
Vérifiez donc le bon chargement des modules concernés :
[root@redhat9 ~]# modinfo kvm filename: /lib/modules/5.14.0-427.37.1.el9_4.x86_64/kernel/arch/x86/kvm/kvm.ko.xz license: GPL author: Qumranet rhelversion: 9.4 srcversion: 053F7739965CA8A1C952115 depends: irqbypass retpoline: Y intree: Y name: kvm vermagic: 5.14.0-427.37.1.el9_4.x86_64 SMP preempt mod_unload modversions sig_id: PKCS#7 signer: Red Hat Enterprise Linux kernel signing key sig_key: 4D:3D:C9:6B:F5:79:B7:1B:B3:57:61:F4:F0:80:0F:48:24:E2:77:66 sig_hashalgo: sha256 signature: 81:C8:68:C0:A6:B0:60:3A:6A:9B:1D:9C:53:8D:17:DA:9D:09:3D:F8: 45:C8:C5:E7:71:85:C2:8B:59:D0:0A:74:45:E6:44:AA:B8:7C:8F:6C: C8:C5:0B:7B:DF:D2:7C:D2:CF:E1:C1:C2:F0:51:C1:46:F6:24:A4:06: 6A:79:2E:83:E9:76:58:D1:98:78:4B:6E:95:53:0E:B6:6B:52:01:7B: 9A:5C:E7:9B:60:78:48:70:41:57:6F:00:08:EC:56:F9:15:DC:0C:20: EE:8E:CB:16:A8:E6:A5:F8:F0:1C:15:43:D4:2A:B6:3E:99:5D:4F:8E: 1C:28:44:7C:7D:9F:05:55:9E:4A:04:57:46:02:2D:89:D9:2B:D7:E3: DF:F9:FE:AD:BC:C2:85:F6:7D:6D:D6:DE:A6:59:A9:39:CA:63:97:9F: 13:E4:92:15:F9:45:3D:BE:59:72:8B:91:D3:0E:FF:99:A6:40:30:E0: 79:F5:52:DC:4D:5E:68:EC:6E:BA:0E:F0:46:FA:FF:92:A8:E0:03:87: 87:D8:75:B5:9A:A1:09:42:CB:BD:7A:F2:54:FE:32:71:46:B6:DA:53: 0B:D5:B9:C2:30:45:D3:9C:45:0F:BC:A6:87:B9:26:26:4C:6E:CD:D6: 6F:72:9D:35:E8:C6:65:12:F8:5A:60:14:6A:F8:18:51:B1:07:72:E7: A2:F1:B9:0A:A9:3F:B7:82:CD:93:F3:7B:DA:65:A9:9C:BA:26:57:DB: E2:10:52:72:12:D1:DF:7D:DD:D0:22:72:AA:80:92:9F:84:2F:A1:C4: 50:B5:5E:CF:0C:76:48:EE:DE:CF:5C:97:CF:28:55:94:9F:FF:73:98: 34:E7:DF:DA:54:C6:09:B4:B9:01:27:F0:CA:F1:D3:35:CE:78:93:F7: E4:82:E4:DE:DC:D4:9F:C2:93:50:80:2B:D9:CF:4F:5E:D0:19:10:F9: 61:20:EC:B8:93:C7:4A:96:93:7C:5C:B6:E6:6B:09:0C:51:4B:8A:14: 75:61:DB:E1 parm: mmio_caching:bool parm: nx_huge_pages:bool parm: nx_huge_pages_recovery_ratio:uint parm: nx_huge_pages_recovery_period_ms:uint parm: flush_on_reuse:bool parm: tdp_mmu:bool parm: ignore_msrs:bool parm: report_ignored_msrs:bool parm: min_timer_period_us:uint parm: kvmclock_periodic_sync:bool parm: tsc_tolerance_ppm:uint parm: lapic_timer_advance_ns:int parm: vector_hashing:bool parm: enable_vmware_backdoor:bool parm: force_emulation_prefix:int parm: pi_inject_timer:bint parm: enable_pmu:bool parm: eager_page_split:bool parm: mitigate_smt_rsb:bool parm: halt_poll_ns:uint parm: halt_poll_ns_grow:uint parm: halt_poll_ns_grow_start:uint parm: halt_poll_ns_shrink:uint
[root@redhat9 ~]# modinfo kvm_intel filename: /lib/modules/5.14.0-427.37.1.el9_4.x86_64/kernel/arch/x86/kvm/kvm-intel.ko.xz license: GPL author: Qumranet rhelversion: 9.4 srcversion: F8501721B0E42C0F985E230 alias: cpu:type:x86,ven*fam*mod*:feature:*0085* depends: kvm retpoline: Y intree: Y name: kvm_intel vermagic: 5.14.0-427.37.1.el9_4.x86_64 SMP preempt mod_unload modversions sig_id: PKCS#7 signer: Red Hat Enterprise Linux kernel signing key sig_key: 4D:3D:C9:6B:F5:79:B7:1B:B3:57:61:F4:F0:80:0F:48:24:E2:77:66 sig_hashalgo: sha256 signature: 65:0A:FF:7C:3F:B7:FF:D5:D5:D8:BC:F3:25:B7:5B:CB:2F:E0:65:FE: 41:FD:28:B0:60:AC:03:05:FF:32:F5:F4:EE:46:33:7D:8D:BB:DD:52: 09:A8:66:1D:EA:00:50:94:03:2D:5C:3D:37:8B:79:50:AA:62:2A:0F: AA:F4:1C:82:15:4C:C6:5B:40:C1:66:55:E9:B6:18:B5:D4:9A:AD:63: 2E:4E:F4:54:23:70:0B:86:1F:CB:A3:4E:26:17:7F:97:5E:FB:2E:7F: 74:D1:9A:DE:D1:BE:A4:DB:8A:A7:DE:DA:90:D3:89:2C:D8:AE:C8:55: B8:DE:F4:66:29:95:D7:32:69:69:9C:29:04:03:A7:E6:46:31:4D:04: 50:21:45:4D:98:82:AF:CB:AF:50:80:05:56:EB:70:E7:12:75:BC:44: CB:8D:51:80:EC:0B:62:98:DE:9F:E8:6D:AE:D8:6A:A1:30:83:5A:A6: 3D:11:5C:24:82:2C:03:34:C2:B9:DC:F7:DF:BD:7A:0D:7B:6D:47:83: AE:CB:42:13:19:0C:EF:60:C2:83:F3:B4:AF:F8:E0:79:E2:DB:A3:F3: 12:1D:8E:20:EE:16:FE:5B:81:A9:7E:1F:D2:94:70:EB:32:69:F1:F2: 0E:63:6B:67:C4:07:F3:85:CD:CA:BE:A6:75:9C:9E:7D:C0:CA:E4:A0: 65:CA:5F:1D:1E:77:61:21:12:C4:04:21:EE:3C:B3:D0:14:C1:28:FB: 2B:10:95:F4:4E:04:01:50:F6:F3:4E:3C:DA:50:63:60:31:63:32:BF: D4:43:48:69:F8:83:0C:C1:C6:76:88:0D:D9:0F:90:2E:DD:A1:26:74: 3A:93:6C:D6:04:3C:B6:40:BB:00:15:B4:34:0E:BD:32:E9:17:D7:74: 65:00:E6:22:B7:E6:54:08:DC:33:3B:4E:3D:E2:EA:F4:4D:14:CF:1D: 3A:0C:72:AD:ED:2C:15:AF:EB:6E:40:82:52:89:D0:44:B0:97:F4:20: A2:7E:06:BA parm: sgx:bool parm: enable_shadow_vmcs:bool parm: nested_early_check:bool parm: vpid:bool parm: vnmi:bool parm: flexpriority:bool parm: ept:bool parm: unrestricted_guest:bool parm: eptad:bool parm: emulate_invalid_guest_state:bool parm: fasteoi:bool parm: enable_apicv:bool parm: enable_ipiv:bool parm: nested:bool parm: pml:bool parm: error_on_inconsistent_vmcs_config:bool parm: dump_invalid_vmcs:bool parm: preemption_timer:bool parm: allow_smaller_maxphyaddr:bool parm: ple_gap:uint parm: ple_window:uint parm: ple_window_grow:uint parm: ple_window_shrink:uint parm: ple_window_max:uint parm: pt_mode:int parm: enlightened_vmcs:bool
LAB #2 - Configuration de KVM
2.1 - Configuration du Pare-feu
Si vous souhaitez vous connecter aux machines virtuelles créées sous KVM en utilisant le protocole VNC, vous devez ouvrir le port 5900/tcp dans le système hôte :
[root@redhat9 ~]# firewall-cmd --permanent --add-port=5901/tcp success [root@redhat9 ~]# firewall-cmd --reload success
2.2 - Configuration du Réseau des VMs
Lors de l'installation de KVM un pont a été créé ayant le nom virbr0 et l'adresse IP 192.168.122.1/24 :
- La plage des adresses IP disponible pour les machines virtuelles KVM va de 192.168.122.2/24 à 192.168.122.254/24,
- Ce pont met en place une connectivité de type NAT pour les machines virtuelles,
- Une interface réseau fictive, virbr0-nic et appelée une esclave, a été ajoutée à ce pont principalement pour fournir une adresse MAC stable,
- Normalement au fur et au mesure que d'autres VMs soient créées, d'autres interfaces fictives seraient ajoutées, une par VM.
Les configurations ci-dessus peuvent être visualisées grâce à la commande ip a :
[root@redhat9 ~]# ip a show virbr0 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:9a:ae:36 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever
Dans le cas où on ne souhaite pas ou on ne peut pas utiliser le pont créé par défaut, il convient de créer un autre pont. Dans notre cas, l'hôte KVM possède deux interfaces ens18 et ens19. Nous allons donc dédier l'interface ens19 au trafic réseau des machines virtuelles. Actuellement cette interface ne possède pas d'adresse IP :
[root@redhat9 ~]# ip a show ens19 3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 9e:72:3e:6c:a5:3a brd ff:ff:ff:ff:ff:ff altname enp0s19
Elle n'est pas visible dans la sortie de la commande nmcli c show :
[root@redhat9 ~]# nmcli c show NAME UUID TYPE DEVICE ens18 ea4c8254-6236-3130-8323-8b3f71d807a1 ethernet ens18 lo 29185158-71ea-4021-9337-1c25a463032f loopback lo virbr0 ad1e2979-56c7-4d67-b3df-cd1b20aba5a4 bridge virbr0
Créez donc une adresse IP de 192.168.56.2/24 pour l'interface ens19 :
[root@redhat9 ~]# nmcli connection add con-name ip_kvm ifname ens19 type ethernet ip4 192.168.56.2/24 gw4 192.168.56.1 Connection 'ip_kvm' (02cb55bb-26ca-4d51-8572-7349d67c522d) successfully added. [root@redhat9 ~]# nmcli c show NAME UUID TYPE DEVICE ens18 ea4c8254-6236-3130-8323-8b3f71d807a1 ethernet ens18 ip_kvm 02cb55bb-26ca-4d51-8572-7349d67c522d ethernet ens19 lo 29185158-71ea-4021-9337-1c25a463032f loopback lo virbr0 ad1e2979-56c7-4d67-b3df-cd1b20aba5a4 bridge virbr0
Utilisez la commande ip pour vérifier la prise en compte de la configuration :
[root@redhat9 ~]# ip a show ens19 3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 46:de:37:c0:55:6c brd ff:ff:ff:ff:ff:ff inet 192.168.56.2/24 brd 192.168.56.255 scope global noprefixroute ens19 valid_lft forever preferred_lft forever inet6 fe80::4b01:d543:147:dd6d/64 scope link noprefixroute valid_lft forever preferred_lft forever
Notez que cette configuration a été stockée dans le fichier /etc/NetworkManager/system-connections/ip_kvm.nmconnection :
[root@redhat9 ~]# cat /etc/NetworkManager/system-connections/ip_kvm.nmconnection [connection] id=ip_kvm uuid=02cb55bb-26ca-4d51-8572-7349d67c522d type=ethernet interface-name=ens19 [ethernet] [ipv4] address1=192.168.56.2/24,192.168.56.1 method=manual [ipv6] addr-gen-mode=default method=auto [proxy]
Vérifiez maintenant que vous pouvez communiquer avec la passerelle par défaut 192.168.56.1/24 :
[root@redhat9 ~]# ping 192.168.56.1 PING 192.168.56.1 (192.168.56.1) 56(84) bytes of data. 64 bytes from 192.168.56.1: icmp_seq=1 ttl=64 time=0.457 ms 64 bytes from 192.168.56.1: icmp_seq=2 ttl=64 time=0.156 ms 64 bytes from 192.168.56.1: icmp_seq=3 ttl=64 time=0.149 ms 64 bytes from 192.168.56.1: icmp_seq=4 ttl=64 time=0.119 ms ^C --- 192.168.56.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3112ms rtt min/avg/max/mdev = 0.119/0.220/0.457/0.137 ms
Supprimez maintenant le pont virbr0 :
[root@redhat9 ~]# nmcli c del virbr0 Connection 'virbr0' (ad1e2979-56c7-4d67-b3df-cd1b20aba5a4) successfully deleted.
Créez un nouveau pont au même nom que le précédent :
[root@redhat9 ~]# nmcli connection add type bridge con-name virbr0 ifname virbr0 Connection 'virbr0' (f461de54-837a-4295-88b3-00018611891e) successfully added.
Vérifiez le statut des interfaces réseau :
[root@redhat9 ~]# nmcli device status DEVICE TYPE STATE CONNECTION ens18 ethernet connected ens18 ens19 ethernet connected ip_kvm lo loopback connected (externally) lo virbr0 bridge unmanaged
Configurez la connexion ip_kvm en tant qu'esclave :
-- [root@redhat9 ~]# nmcli connection modify ip_kvm controller virbr0
Consultez les fichiers /etc/NetworkManager/system-connections/ip_kvm.nmconnection et cat /etc/NetworkManager/system-connections/virbr0.nmconnection :
[root@redhat9 ~]# cat /etc/NetworkManager/system-connections/ip_kvm.nmconnection [connection] id=ip_kvm uuid=02cb55bb-26ca-4d51-8572-7349d67c522d type=ethernet controller=virbr0 interface-name=ens19 master=virbr0 port-type=bridge slave-type=bridge timestamp=1729769984 [ethernet] [bridge-port] [root@redhat9 ~]# cat /etc/NetworkManager/system-connections/virbr0.nmconnection [connection] id=virbr0 uuid=f461de54-837a-4295-88b3-00018611891e type=bridge interface-name=virbr0 [ethernet] [bridge] [ipv4] method=auto [ipv6] addr-gen-mode=default method=auto [proxy]
Configurez l'adresse IP du pont :
[root@redhat9 ~]# nmcli connection modify virbr0 ipv4.addresses '192.168.56.2/24' ipv4.gateway '192.168.56.1' ipv4.dns '8.8.8.8' ipv4.dns-search 'ittraining.loc' ipv4.method manual
Important : Notez que le nom du pont est identique au pont existant. Ceci n'a pas d'importance. Notez aussi que l'adresse IP, le masque du réseau ainsi que la passerelle sont configurés dans le fichier décrivant le pont.
Consultez la liste des connexions :
[root@redhat9 ~]# nmcli c show NAME UUID TYPE DEVICE ens18 ea4c8254-6236-3130-8323-8b3f71d807a1 ethernet ens18 ip_kvm 02cb55bb-26ca-4d51-8572-7349d67c522d ethernet ens19 lo 29185158-71ea-4021-9337-1c25a463032f loopback lo virbr0 f461de54-837a-4295-88b3-00018611891e bridge --
Activez le pont virbr0 :
[root@redhat9 ~]# nmcli c up virbr0 Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
Consultez de nouveau la liste des connexions :
[root@redhat9 ~]# nmcli c show NAME UUID TYPE DEVICE ens18 ea4c8254-6236-3130-8323-8b3f71d807a1 ethernet ens18 ip_kvm 02cb55bb-26ca-4d51-8572-7349d67c522d ethernet ens19 virbr0 f461de54-837a-4295-88b3-00018611891e bridge virbr0 lo 29185158-71ea-4021-9337-1c25a463032f loopback lo
Consultez les fichiers /etc/NetworkManager/system-connections/ip_kvm.nmconnection et cat /etc/NetworkManager/system-connections/virbr0.nmconnection :
[root@redhat9 ~]# cat /etc/NetworkManager/system-connections/ip_kvm.nmconnection [connection] id=ip_kvm uuid=02cb55bb-26ca-4d51-8572-7349d67c522d type=ethernet controller=virbr0 interface-name=ens19 master=virbr0 port-type=bridge slave-type=bridge timestamp=1729769984 [ethernet] [bridge-port] [root@redhat9 ~]# cat /etc/NetworkManager/system-connections/virbr0.nmconnection [connection] id=virbr0 uuid=f461de54-837a-4295-88b3-00018611891e type=bridge interface-name=virbr0 [ethernet] [bridge] [ipv4] address1=192.168.56.2/24,192.168.56.1 dns=8.8.8.8; dns-search=ittraining.loc; method=manual [ipv6] addr-gen-mode=default method=auto [proxy]
Pour que la configuration puisse fonctionner, il est nécessaire d'activer le routage entre les interfaces dans l'hôte KVM :
[root@redhat9 ~]# echo net.ipv4.ip_forward = 1 >> /usr/lib/sysctl.d/60-libvirtd.conf [root@redhat9 ~]# cat /usr/lib/sysctl.d/60-libvirtd.conf # The kernel allocates aio memory on demand, and this number limits the # number of parallel aio requests; the only drawback of a larger limit is # that a malicious guest could issue parallel requests to cause the kernel # to set aside memory. Set this number at least as large as # 128 * (number of virtual disks on the host) # Libvirt uses a default of 1M requests to allow 8k disks, with at most # 64M of kernel memory if all disks hit an aio request at the same time. fs.aio-max-nr = 1048576 net.ipv4.ip_forward = 1
En utilisant la commande sysctl, appliquez la nouvelle configuration :
[root@redhat9 ~]# /sbin/sysctl -p /usr/lib/sysctl.d/60-libvirtd.conf fs.aio-max-nr = 1048576 net.ipv4.ip_forward = 1
Dernièrement, il est important de configurer le pare-feu pour le pont :
[root@redhat9 ~]# firewall-cmd --permanent --direct --passthrough ipv4 -I FORWARD -o virbr0 -j ACCEPT success [root@redhat9 ~]# firewall-cmd --permanent --direct --passthrough ipv4 -I FORWARD -i virbr0 -j ACCEPT success [root@redhat9 ~]# firewall-cmd --reload success
La configuration faite, vérifiez la prise en charge en utilisant la commande ip :
[root@redhat9 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 92:86:d7:66:e7:5a brd ff:ff:ff:ff:ff:ff altname enp0s18 inet 10.0.2.101/24 brd 10.0.2.255 scope global noprefixroute ens18 valid_lft forever preferred_lft forever inet6 fe80::9086:d7ff:fe66:e75a/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 9e:72:3e:6c:a5:3a brd ff:ff:ff:ff:ff:ff altname enp0s19 inet 192.168.56.2/24 brd 192.168.56.255 scope global noprefixroute ens19 valid_lft forever preferred_lft forever inet6 fe80::4203:fd8c:9650:cc3e/64 scope link noprefixroute valid_lft forever preferred_lft forever 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:9a:ae:36 brd ff:ff:ff:ff:ff:ff inet 192.168.56.2/24 brd 192.168.56.255 scope global noprefixroute virbr0 valid_lft forever preferred_lft forever
Consultez maintenant la list des réseaux configurés pour KVM :
[root@redhat9 ~]# virsh net-list Name State Autostart Persistent -------------------------------------------- default active yes yes
En utilisant la commande virsh net-dumpxml, il est possible de constater la configuration actuelle du pont :
[root@redhat9 ~]# virsh net-dumpxml default <network> <name>default</name> <uuid>0679ee40-befd-4f48-841e-7fc64885eb49</uuid> <forward mode='nat'> <nat> <port start='1024' end='65535'/> </nat> </forward> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:79:02:66'/> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip> </network>
Important : Notez que la configuration n'as pas été prise en compte. En effet, l'adresse IP de virbr0 est toujours 192.168.122.1.
Il est donc nécessaire d'éditer cette configuration pour refléter les modifications déjà apportées en utilisant la commande virsh net-edit :
[root@redhat9 ~]# virsh net-edit default
A l'issu de votre édition, votre fichier doit correspondre à l'exemple suivant :
<network> <name>default</name> <uuid>56c9de31-d9bd-420a-8f9e-647b45c6c127</uuid> <forward mode='nat'/> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:9a:ae:36'/> <ip address='192.168.56.2' netmask='255.255.255.0'> <dhcp> <range start='192.168.56.11' end='192.168.56.254'/> </dhcp> </ip> </network>
Sortez du mode édition. Vous noterez que la commande vous indique que le fichier a été modifié :
[root@redhat9 ~]# virsh net-edit default Network default XML configuration edited.
Par contre, la simple édition du fichier n'a pas modifiée la configuration en cours :
[root@redhat9 ~]# virsh net-edit default Network default XML configuration not changed. [root@redhat9 ~]# virsh net-dumpxml default <network> <name>default</name> <uuid>56c9de31-d9bd-420a-8f9e-647b45c6c127</uuid> <forward mode='nat'> <nat> <port start='1024' end='65535'/> </nat> </forward> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:9a:ae:36'/> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip> </network>
Notez que même en cas de re-démarrage du service, la configuration actuelle est persistante :
[root@redhat9 ~]# systemctl restart libvirtd [root@redhat9 ~]# systemctl status libvirtd ● libvirtd.service - libvirt legacy monolithic daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; preset: disabled) Active: active (running) since Thu 2024-10-24 14:26:35 CEST; 11s ago TriggeredBy: ● libvirtd.socket ● libvirtd-admin.socket ● libvirtd-ro.socket Docs: man:libvirtd(8) https://libvirt.org/ Main PID: 4512 (libvirtd) Tasks: 21 (limit: 32768) Memory: 40.7M CPU: 321ms CGroup: /system.slice/libvirtd.service ├─2587 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper ├─2588 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper └─4512 /usr/sbin/libvirtd --timeout 120 Oct 24 14:26:35 redhat9.ittraining.loc systemd[1]: Starting libvirt legacy monolithic daemon... Oct 24 14:26:35 redhat9.ittraining.loc systemd[1]: Started libvirt legacy monolithic daemon. Oct 24 14:26:35 redhat9.ittraining.loc dnsmasq[2587]: read /etc/hosts - 2 addresses Oct 24 14:26:35 redhat9.ittraining.loc dnsmasq[2587]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses Oct 24 14:26:35 redhat9.ittraining.loc dnsmasq-dhcp[2587]: read /var/lib/libvirt/dnsmasq/default.hostsfile [root@redhat9 ~]# virsh net-dumpxml default <network> <name>default</name> <uuid>56c9de31-d9bd-420a-8f9e-647b45c6c127</uuid> <forward mode='nat'> <nat> <port start='1024' end='65535'/> </nat> </forward> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:9a:ae:36'/> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip> </network>
Re-démarrez donc votre VM :
[root@redhat9 ~]# reboot
Connectez-vous de nouveau à votre VM et contrôler la sortie de la commande nmcli c show :
[root@redhat9 ~]# nmcli c show NAME UUID TYPE DEVICE ip_fixe 0f48c74d-5d16-4c37-8220-24644507b589 ethernet ens18 virbr0 289e0fdd-2eb5-4dd3-811a-65a878926e56 bridge virbr0 ip_kvm afc8b175-f2cb-47b2-baca-66454058c36f ethernet ens19 ens18 fc4a4d23-b15e-47a7-bcfa-b2e08f49553e ethernet --
Utilisez ensuite la commande ip pour vérifier l'adresse IP de virbr0 :
[root@redhat9 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 92:86:d7:66:e7:5a brd ff:ff:ff:ff:ff:ff altname enp0s18 inet 10.0.2.101/24 brd 10.0.2.255 scope global noprefixroute ens18 valid_lft forever preferred_lft forever inet6 fe80::9086:d7ff:fe66:e75a/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr0 state UP group default qlen 1000 link/ether 9e:72:3e:6c:a5:3a brd ff:ff:ff:ff:ff:ff altname enp0s19 4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 9e:72:3e:6c:a5:3a brd ff:ff:ff:ff:ff:ff inet 192.168.56.2/24 brd 192.168.56.255 scope global noprefixroute virbr0 valid_lft forever preferred_lft forever inet6 fe80::3e23:d3ba:d85d:b02d/64 scope link noprefixroute valid_lft forever preferred_lft forever
Dernièrement, vérifier la connectivité avec la passerelle 192.162.56.1/24 :
[root@redhat9 ~]# ping 192.168.56.1 PING 192.168.56.1 (192.168.56.1) 56(84) bytes of data. 64 bytes from 192.168.56.1: icmp_seq=1 ttl=64 time=0.350 ms 64 bytes from 192.168.56.1: icmp_seq=2 ttl=64 time=0.198 ms 64 bytes from 192.168.56.1: icmp_seq=3 ttl=64 time=0.226 ms 64 bytes from 192.168.56.1: icmp_seq=4 ttl=64 time=0.178 ms 64 bytes from 192.168.56.1: icmp_seq=5 ttl=64 time=0.161 ms ^C --- 192.168.56.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4099ms rtt min/avg/max/mdev = 0.161/0.222/0.350/0.067 ms
2.3 - Configuration du Stockage
KVM a besoin d'un emplacement pour stocker les VMs créées. L'hôte KVM a été configuré avec un disque supplémentaire sde d'une taille de 32 Go à cet effet :
[root@redhat9 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 49G 0 part ├─rhel-root 253:0 0 44G 0 lvm / └─rhel-swap 253:1 0 5G 0 lvm [SWAP] sdb 8:16 0 32G 0 disk ├─sdb1 8:17 0 100M 0 part ├─sdb2 8:18 0 100M 0 part ├─sdb3 8:19 0 100M 0 part ├─sdb4 8:20 0 1K 0 part ├─sdb5 8:21 0 500M 0 part ├─sdb6 8:22 0 200M 0 part │ └─vg0-lv1 253:2 0 104M 0 lvm ├─sdb7 8:23 0 300M 0 part │ └─vg0-lv2 253:3 0 112M 0 lvm ├─sdb8 8:24 0 500M 0 part │ └─md1 9:1 0 996M 0 raid5 ├─sdb9 8:25 0 400M 0 part │ └─vg0-lv2 253:3 0 112M 0 lvm ├─sdb10 8:26 0 500M 0 part │ └─md1 9:1 0 996M 0 raid5 ├─sdb11 8:27 0 500M 0 part └─sdb12 8:28 0 200M 0 part sdc 8:32 0 6G 0 disk sdd 8:48 0 6G 0 disk sde 8:64 0 32G 0 disk sr0 11:0 1 1024M 0 rom
Créez donc sur /dev/sdd un volume physique ainsi qu'un groupe de volumes appelé kvm_storage :
[root@redhat9 ~]# pvcreate /dev/sde Physical volume "/dev/sde" successfully created. [root@redhat9 ~]# vgcreate kvm_storage /dev/sde Volume group "kvm_storage" successfully created
[root@redhat9 ~]# vgs VG #PV #LV #SN Attr VSize VFree kvm_storage 1 0 0 wz--n- <32.00g <32.00g rhel 1 2 0 wz--n- <49.00g 0 vg0 3 2 0 wz--n- 880.00m 664.00m
Créez ensuite un volume logique, dénommé kvm_lv, occupant toute l'espace disponible dans le groupe de volumes :
[root@redhat9 ~]# lvcreate -l +100%FREE -n kvm_lv kvm_storage Logical volume "kvm_lv" created. [root@redhat9 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert kvm_lv kvm_storage -wi-a----- <32.00g root rhel -wi-ao---- <44.00g swap rhel -wi-ao---- 5.00g lv1 vg0 -wi-a----- 104.00m lv2 vg0 -wi-a----- 112.00m
Créez ensuite un système de fichiers de type xfs sur le volume logique kvm_lv :
[root@redhat9 ~]# mkfs.xfs /dev/mapper/kvm_storage-kvm_lv meta-data=/dev/mapper/kvm_storage-kvm_lv isize=512 agcount=4, agsize=2096896 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=1 inobtcount=1 nrext64=0 data = bsize=4096 blocks=8387584, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Discarding blocks...Done.
Éditez ensuite le fichier /etc/fstab afin de monter automatiquement le volume logique sur /var/lib/libvirt/images :
[root@redhat9 ~]# vi /etc/fstab [root@redhat9 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu Oct 19 16:05:58 2023 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # /dev/mapper/rhel-root / xfs defaults 0 0 UUID=6f6c5bb9-30be-4734-bc23-03fed8541616 /boot xfs defaults 0 0 /dev/mapper/rhel-swap none swap defaults 0 0 ## KVM Guest Image Store /dev/mapper/kvm_storage-kvm_lv /var/lib/libvirt/images xfs defaults 0 0
Montez ensuite le volume logique :
[root@redhat9 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 3.8G 0 3.8G 0% /dev/shm tmpfs 1.6G 9.2M 1.5G 1% /run /dev/mapper/rhel-root 44G 7.5G 37G 17% / /dev/sda1 1014M 453M 562M 45% /boot tmpfs 769M 52K 769M 1% /run/user/42 tmpfs 769M 36K 769M 1% /run/user/1000 [root@redhat9 ~]# mount -a mount: (hint) your fstab has been modified, but systemd still uses the old version; use 'systemctl daemon-reload' to reload. [root@redhat9 ~]# systemctl daemon-reload [root@redhat9 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 3.8G 0 3.8G 0% /dev/shm tmpfs 1.6G 9.2M 1.5G 1% /run /dev/mapper/rhel-root 44G 7.5G 37G 17% / /dev/sda1 1014M 453M 562M 45% /boot tmpfs 769M 52K 769M 1% /run/user/42 tmpfs 769M 36K 769M 1% /run/user/1000 /dev/mapper/kvm_storage-kvm_lv 32G 261M 32G 1% /var/lib/libvirt/images
Notez que ce volume est actuellement vide :
[root@redhat9 ~]# ls -l /var/lib/libvirt/images/ total 0
Utilisez la commande virsh pool-list pour voir les pools de stockage déjà configurés. Cette liste devrait être vide :
[root@redhat9 ~]# virsh pool-list Name State Autostart ---------------------------
Définissez le pool de stockage kvm-storagepool dans KVM grâce à la commande virsh pool-define-as :
[root@redhat9 ~]# virsh pool-define-as kvm-storagepool --type=dir --target /var/lib/libvirt/images/ Pool kvm-storagepool defined
Important : Consultez cette page pour connaître les types de pool utilisés par libvirt.
Démarrez maintenant le pool kvm-storagepool :
[root@redhat9 ~]# virsh pool-start kvm-storagepool Pool kvm-storagepool started
Contrôlez l'état du pool kvm-storagepool :
[root@redhat9 ~]# virsh pool-list Name State Autostart --------------------------------------- kvm-storagepool active no
Important : Notez que le pool ne sera pas démarré automatiquement parce que la valeur d'autostart est no.
Fixez la valeur d'autostart à yes grâce à la commande virsh pool-autostart :
[root@redhat9 ~]# virsh pool-autostart kvm-storagepool Pool kvm-storagepool marked as autostarted [root@redhat9 ~]# virsh pool-list Name State Autostart --------------------------------------- kvm-storagepool active yes
Dernièrement, constatez les détails du pool configuré :
[root@redhat9 ~]# virsh pool-list --all --details Name State Autostart Persistent Capacity Allocation Available ------------------------------------------------------------------------------------------ kvm-storagepool running yes yes 31.93 GiB 260.27 MiB 31.68 GiB
[root@redhat9 ~]# df -h /var/lib/libvirt/images/ Filesystem Size Used Avail Use% Mounted on /dev/mapper/kvm_storage-kvm_lv 32G 261M 32G 1% /var/lib/libvirt/images
LAB #3 - Installation d'une Machine Virtuelle Red Hat 9
3.1 - Identification du Short ID
KVM sait virtualiser un grand nombre de systèmes d'exploitations. Pour consulter la liste complète des systèmes, il convient d'utiliser la commande osinfo-query os :
[root@redhat9 ~]# osinfo-query os | more Short ID | Name | Version | ID ----------------------+----------------------------------------------------+----------+----------------------------------------- almalinux8 | AlmaLinux 8 | 8 | http://almalinux.org/almalinux/8 almalinux9 | AlmaLinux 9 | 9 | http://almalinux.org/almalinux/9 alpinelinux3.10 | Alpine Linux 3.10 | 3.10 | http://alpinelinux.org/alpinelinux/3.10 alpinelinux3.11 | Alpine Linux 3.11 | 3.11 | http://alpinelinux.org/alpinelinux/3.11 alpinelinux3.12 | Alpine Linux 3.12 | 3.12 | http://alpinelinux.org/alpinelinux/3.12 alpinelinux3.13 | Alpine Linux 3.13 | 3.13 | http://alpinelinux.org/alpinelinux/3.13 alpinelinux3.14 | Alpine Linux 3.14 | 3.14 | http://alpinelinux.org/alpinelinux/3.14 alpinelinux3.15 | Alpine Linux 3.15 | 3.15 | http://alpinelinux.org/alpinelinux/3.15 alpinelinux3.16 | Alpine Linux 3.16 | 3.16 | http://alpinelinux.org/alpinelinux/3.16 alpinelinux3.17 | Alpine Linux 3.17 | 3.17 | http://alpinelinux.org/alpinelinux/3.17 alpinelinux3.18 | Alpine Linux 3.18 | 3.18 | http://alpinelinux.org/alpinelinux/3.18 alpinelinux3.19 | Alpine Linux 3.19 | 3.19 | http://alpinelinux.org/alpinelinux/3.19 alpinelinux3.5 | Alpine Linux 3.5 | 3.5 | http://alpinelinux.org/alpinelinux/3.5 alpinelinux3.6 | Alpine Linux 3.6 | 3.6 | http://alpinelinux.org/alpinelinux/3.6 alpinelinux3.7 | Alpine Linux 3.7 | 3.7 | http://alpinelinux.org/alpinelinux/3.7 alpinelinux3.8 | Alpine Linux 3.8 | 3.8 | http://alpinelinux.org/alpinelinux/3.8 alpinelinux3.9 | Alpine Linux 3.9 | 3.9 | http://alpinelinux.org/alpinelinux/3.9 alt.p10 | ALT p10 StarterKits | p10 | http://altlinux.org/alt/p10.starterkits alt.p8 | ALT p8 StarterKits | p8 | http://altlinux.org/alt/p8.starterkits alt.p9 | ALT p9 StarterKits | p9 | http://altlinux.org/alt/p9.starterkits alt.sisyphus | ALT regular | sisyphus | http://altlinux.org/alt/sisyphus alt10.0 | ALT 10.0 | 10.0 | http://altlinux.org/alt/10.0 alt10.1 | ALT 10.1 | 10.1 | http://altlinux.org/alt/10.1 alt8.0 | ALT 8 Education | 8.0 | http://altlinux.org/alt/8.0 alt8.1 | ALT 8.1 | 8.1 | http://altlinux.org/alt/8.1 alt8.2 | ALT 8.2 | 8.2 | http://altlinux.org/alt/8.2 alt9.0 | ALT 9.0 | 9.0 | http://altlinux.org/alt/9.0 alt9.1 | ALT 9.1 | 9.1 | http://altlinux.org/alt/9.1 alt9.2 | ALT 9.2 | 9.2 | http://altlinux.org/alt/9.2 altlinux1.0 | Mandrake RE Spring 2001 | 1.0 | http://altlinux.org/altlinux/1.0 altlinux2.0 | ALT Linux 2.0 | 2.0 | http://altlinux.org/altlinux/2.0 altlinux2.2 | ALT Linux 2.2 | 2.2 | http://altlinux.org/altlinux/2.2 altlinux2.4 | ALT Linux 2.4 | 2.4 | http://altlinux.org/altlinux/2.4 altlinux3.0 | ALT Linux 3.0 | 3.0 | http://altlinux.org/altlinux/3.0 altlinux4.0 | ALT Linux 4.0 | 4.0 | http://altlinux.org/altlinux/4.0 altlinux4.1 | ALT Linux 4.1 | 4.1 | http://altlinux.org/altlinux/4.1 altlinux5.0 | ALT Linux 5.0 | 5.0 | http://altlinux.org/altlinux/5.0 altlinux6.0 | ALT Linux 6.0 | 6.0 | http://altlinux.org/altlinux/6.0 altlinux7.0 | ALT Linux 7.0 | 7.0 | http://altlinux.org/altlinux/7.0 android-x86-8.1 | Android-x86 8.1 | 8.1 | http://android-x86.org/android-x86/8.1 android-x86-9.0 | Android-x86 9.0 | 9.0 | http://android-x86.org/android-x86/9.0 archlinux | Arch Linux | | http://archlinux.org/archlinux/rolling asianux-unknown | Asianux unknown | unknown | http://asianux.com/asianux/unknown asianux4.6 | Asianux Server 4 SP6 | 4.6 | http://asianux.com/asianux/4.6 asianux4.7 | Asianux Server 4 SP7 | 4.7 | http://asianux.com/asianux/4.7 asianux7.0 | Asianux Server 7 | 7.0 | http://asianux.com/asianux/7.0 asianux7.1 | Asianux Server 7 SP1 | 7.1 | http://asianux.com/asianux/7.1 asianux7.2 | Asianux Server 7 SP2 | 7.2 | http://asianux.com/asianux/7.2 asianux7.3 | Asianux Server 7 SP3 | 7.3 | http://asianux.com/asianux/7.3 asianux8.0 | Asianux Server 8 | 8.0 | http://asianux.com/asianux/8.0 caasp-unknown | SUSE CaaS Platform Unknown | unknown | http://suse.com/caasp/unknown caasp1.0 | SUSE CaaS Platform 1.0 | 1.0 | http://suse.com/caasp/1.0 caasp2.0 | SUSE CaaS Platform 2.0 | 2.0 | http://suse.com/caasp/2.0 --More--
La liste des versions de Red Hat peut être consultée en recherchant la chaîne Red Hat dans la sortie de la commande précédente :
[root@redhat9 ~]# osinfo-query os | grep "Red Hat" rhel-atomic-7.0 | Red Hat Enterprise Linux Atomic Host 7.0 | 7.0 | http://redhat.com/rhel-atomic/7.0 rhel-atomic-7.1 | Red Hat Enterprise Linux Atomic Host 7.1 | 7.1 | http://redhat.com/rhel-atomic/7.1 rhel-atomic-7.2 | Red Hat Enterprise Linux Atomic Host 7.2 | 7.2 | http://redhat.com/rhel-atomic/7.2 rhel-atomic-7.3 | Red Hat Enterprise Linux Atomic Host 7.3 | 7.3 | http://redhat.com/rhel-atomic/7.3 rhel-atomic-7.4 | Red Hat Enterprise Linux Atomic Host 7.4 | 7.4 | http://redhat.com/rhel-atomic/7.4 rhel-unknown | Red Hat Enterprise Linux Unknown | unknown | http://redhat.com/rhel/unknown rhel2.1 | Red Hat Enterprise Linux 2.1 | 2.1 | http://redhat.com/rhel/2.1 rhel2.1.1 | Red Hat Enterprise Linux 2.1 Update 1 | 2.1.1 | http://redhat.com/rhel/2.1.1 rhel2.1.2 | Red Hat Enterprise Linux 2.1 Update 2 | 2.1.2 | http://redhat.com/rhel/2.1.2 rhel2.1.3 | Red Hat Enterprise Linux 2.1 Update 3 | 2.1.3 | http://redhat.com/rhel/2.1.3 rhel2.1.4 | Red Hat Enterprise Linux 2.1 Update 4 | 2.1.4 | http://redhat.com/rhel/2.1.4 rhel2.1.5 | Red Hat Enterprise Linux 2.1 Update 5 | 2.1.5 | http://redhat.com/rhel/2.1.5 rhel2.1.6 | Red Hat Enterprise Linux 2.1 Update 6 | 2.1.6 | http://redhat.com/rhel/2.1.6 rhel2.1.7 | Red Hat Enterprise Linux 2.1 Update 7 | 2.1.7 | http://redhat.com/rhel/2.1.7 rhel3 | Red Hat Enterprise Linux 3 | 3 | http://redhat.com/rhel/3 rhel3.1 | Red Hat Enterprise Linux 3 Update 1 | 3.1 | http://redhat.com/rhel/3.1 rhel3.2 | Red Hat Enterprise Linux 3 Update 2 | 3.2 | http://redhat.com/rhel/3.2 rhel3.3 | Red Hat Enterprise Linux 3 Update 3 | 3.3 | http://redhat.com/rhel/3.3 rhel3.4 | Red Hat Enterprise Linux 3 Update 4 | 3.4 | http://redhat.com/rhel/3.4 rhel3.5 | Red Hat Enterprise Linux 3 Update 5 | 3.5 | http://redhat.com/rhel/3.5 rhel3.6 | Red Hat Enterprise Linux 3 Update 6 | 3.6 | http://redhat.com/rhel/3.6 rhel3.7 | Red Hat Enterprise Linux 3 Update 7 | 3.7 | http://redhat.com/rhel/3.7 rhel3.8 | Red Hat Enterprise Linux 3 Update 8 | 3.8 | http://redhat.com/rhel/3.8 rhel3.9 | Red Hat Enterprise Linux 3 Update 9 | 3.9 | http://redhat.com/rhel/3.9 rhel4.0 | Red Hat Enterprise Linux 4.0 | 4.0 | http://redhat.com/rhel/4.0 rhel4.1 | Red Hat Enterprise Linux 4.1 | 4.1 | http://redhat.com/rhel/4.1 rhel4.2 | Red Hat Enterprise Linux 4.2 | 4.2 | http://redhat.com/rhel/4.2 rhel4.3 | Red Hat Enterprise Linux 4.3 | 4.3 | http://redhat.com/rhel/4.3 rhel4.4 | Red Hat Enterprise Linux 4.4 | 4.4 | http://redhat.com/rhel/4.4 rhel4.5 | Red Hat Enterprise Linux 4.5 | 4.5 | http://redhat.com/rhel/4.5 rhel4.6 | Red Hat Enterprise Linux 4.6 | 4.6 | http://redhat.com/rhel/4.6 rhel4.7 | Red Hat Enterprise Linux 4.7 | 4.7 | http://redhat.com/rhel/4.7 rhel4.8 | Red Hat Enterprise Linux 4.8 | 4.8 | http://redhat.com/rhel/4.8 rhel4.9 | Red Hat Enterprise Linux 4.9 | 4.9 | http://redhat.com/rhel/4.9 rhel5.0 | Red Hat Enterprise Linux 5.0 | 5.0 | http://redhat.com/rhel/5.0 rhel5.1 | Red Hat Enterprise Linux 5.1 | 5.1 | http://redhat.com/rhel/5.1 rhel5.10 | Red Hat Enterprise Linux 5.10 | 5.10 | http://redhat.com/rhel/5.10 rhel5.11 | Red Hat Enterprise Linux 5.11 | 5.11 | http://redhat.com/rhel/5.11 rhel5.2 | Red Hat Enterprise Linux 5.2 | 5.2 | http://redhat.com/rhel/5.2 rhel5.3 | Red Hat Enterprise Linux 5.3 | 5.3 | http://redhat.com/rhel/5.3 rhel5.4 | Red Hat Enterprise Linux 5.4 | 5.4 | http://redhat.com/rhel/5.4 rhel5.5 | Red Hat Enterprise Linux 5.5 | 5.5 | http://redhat.com/rhel/5.5 rhel5.6 | Red Hat Enterprise Linux 5.6 | 5.6 | http://redhat.com/rhel/5.6 rhel5.7 | Red Hat Enterprise Linux 5.7 | 5.7 | http://redhat.com/rhel/5.7 rhel5.8 | Red Hat Enterprise Linux 5.8 | 5.8 | http://redhat.com/rhel/5.8 rhel5.9 | Red Hat Enterprise Linux 5.9 | 5.9 | http://redhat.com/rhel/5.9 rhel6-unknown | Red Hat Enterprise Linux 6 Unknown | 6-unknown | http://redhat.com/rhel/6-unknown rhel6.0 | Red Hat Enterprise Linux 6.0 | 6.0 | http://redhat.com/rhel/6.0 rhel6.1 | Red Hat Enterprise Linux 6.1 | 6.1 | http://redhat.com/rhel/6.1 rhel6.10 | Red Hat Enterprise Linux 6.10 | 6.10 | http://redhat.com/rhel/6.10 rhel6.2 | Red Hat Enterprise Linux 6.2 | 6.2 | http://redhat.com/rhel/6.2 rhel6.3 | Red Hat Enterprise Linux 6.3 | 6.3 | http://redhat.com/rhel/6.3 rhel6.4 | Red Hat Enterprise Linux 6.4 | 6.4 | http://redhat.com/rhel/6.4 rhel6.5 | Red Hat Enterprise Linux 6.5 | 6.5 | http://redhat.com/rhel/6.5 rhel6.6 | Red Hat Enterprise Linux 6.6 | 6.6 | http://redhat.com/rhel/6.6 rhel6.7 | Red Hat Enterprise Linux 6.7 | 6.7 | http://redhat.com/rhel/6.7 rhel6.8 | Red Hat Enterprise Linux 6.8 | 6.8 | http://redhat.com/rhel/6.8 rhel6.9 | Red Hat Enterprise Linux 6.9 | 6.9 | http://redhat.com/rhel/6.9 rhel7-unknown | Red Hat Enterprise Linux 7 Unknown | 7-unknown | http://redhat.com/rhel/7-unknown rhel7.0 | Red Hat Enterprise Linux 7.0 | 7.0 | http://redhat.com/rhel/7.0 rhel7.1 | Red Hat Enterprise Linux 7.1 | 7.1 | http://redhat.com/rhel/7.1 rhel7.2 | Red Hat Enterprise Linux 7.2 | 7.2 | http://redhat.com/rhel/7.2 rhel7.3 | Red Hat Enterprise Linux 7.3 | 7.3 | http://redhat.com/rhel/7.3 rhel7.4 | Red Hat Enterprise Linux 7.4 | 7.4 | http://redhat.com/rhel/7.4 rhel7.5 | Red Hat Enterprise Linux 7.5 | 7.5 | http://redhat.com/rhel/7.5 rhel7.6 | Red Hat Enterprise Linux 7.6 | 7.6 | http://redhat.com/rhel/7.6 rhel7.7 | Red Hat Enterprise Linux 7.7 | 7.7 | http://redhat.com/rhel/7.7 rhel7.8 | Red Hat Enterprise Linux 7.8 | 7.8 | http://redhat.com/rhel/7.8 rhel7.9 | Red Hat Enterprise Linux 7.9 | 7.9 | http://redhat.com/rhel/7.9 rhel8-unknown | Red Hat Enterprise Linux 8 Unknown | 8-unknown | http://redhat.com/rhel/8-unknown rhel8.0 | Red Hat Enterprise Linux 8.0 | 8.0 | http://redhat.com/rhel/8.0 rhel8.1 | Red Hat Enterprise Linux 8.1 | 8.1 | http://redhat.com/rhel/8.1 rhel8.10 | Red Hat Enterprise Linux 8.10 | 8.10 | http://redhat.com/rhel/8.10 rhel8.2 | Red Hat Enterprise Linux 8.2 | 8.2 | http://redhat.com/rhel/8.2 rhel8.3 | Red Hat Enterprise Linux 8.3 | 8.3 | http://redhat.com/rhel/8.3 rhel8.4 | Red Hat Enterprise Linux 8.4 | 8.4 | http://redhat.com/rhel/8.4 rhel8.5 | Red Hat Enterprise Linux 8.5 | 8.5 | http://redhat.com/rhel/8.5 rhel8.6 | Red Hat Enterprise Linux 8.6 | 8.6 | http://redhat.com/rhel/8.6 rhel8.7 | Red Hat Enterprise Linux 8.7 | 8.7 | http://redhat.com/rhel/8.7 rhel8.8 | Red Hat Enterprise Linux 8.8 | 8.8 | http://redhat.com/rhel/8.8 rhel8.9 | Red Hat Enterprise Linux 8.9 | 8.9 | http://redhat.com/rhel/8.9 rhel9-unknown | Red Hat Enterprise Linux 9 Unknown | 9-unknown | http://redhat.com/rhel/9-unknown rhel9.0 | Red Hat Enterprise Linux 9.0 | 9.0 | http://redhat.com/rhel/9.0 rhel9.1 | Red Hat Enterprise Linux 9.1 | 9.1 | http://redhat.com/rhel/9.1 rhel9.2 | Red Hat Enterprise Linux 9.2 | 9.2 | http://redhat.com/rhel/9.2 rhel9.3 | Red Hat Enterprise Linux 9.3 | 9.3 | http://redhat.com/rhel/9.3 rhel9.4 | Red Hat Enterprise Linux 9.4 | 9.4 | http://redhat.com/rhel/9.4 rhl1.0 | Red Hat Linux 1.0 | 1.0 | http://redhat.com/rhl/1.0 rhl1.1 | Red Hat Linux 1.1 | 1.1 | http://redhat.com/rhl/1.1 rhl2.0 | Red Hat Linux 2.0 | 2.0 | http://redhat.com/rhl/2.0 rhl2.1 | Red Hat Linux 2.1 | 2.1 | http://redhat.com/rhl/2.1 rhl3.0.3 | Red Hat Linux 3.0.3 | 3.0.3 | http://redhat.com/rhl/3.0.3 rhl4.0 | Red Hat Linux 4.0 | 4.0 | http://redhat.com/rhl/4.0 rhl4.1 | Red Hat Linux 4.1 | 4.1 | http://redhat.com/rhl/4.1 rhl4.2 | Red Hat Linux 4.2 | 4.2 | http://redhat.com/rhl/4.2 rhl5.0 | Red Hat Linux 5.0 | 5.0 | http://redhat.com/rhl/5.0 rhl5.1 | Red Hat Linux 5.1 | 5.1 | http://redhat.com/rhl/5.1 rhl5.2 | Red Hat Linux 5.2 | 5.2 | http://redhat.com/rhl/5.2 rhl6.0 | Red Hat Linux 6.0 | 6.0 | http://redhat.com/rhl/6.0 rhl6.1 | Red Hat Linux 6.1 | 6.1 | http://redhat.com/rhl/6.1 rhl6.2 | Red Hat Linux 6.2 | 6.2 | http://redhat.com/rhl/6.2 rhl7 | Red Hat Linux 7 | 7 | http://redhat.com/rhl/7 rhl7.1 | Red Hat Linux 7.1 | 7.1 | http://redhat.com/rhl/7.1 rhl7.2 | Red Hat Linux 7.2 | 7.2 | http://redhat.com/rhl/7.2 rhl7.3 | Red Hat Linux 7.3 | 7.3 | http://redhat.com/rhl/7.3 rhl8.0 | Red Hat Linux 8.0 | 8.0 | http://redhat.com/rhl/8.0 rhl9 | Red Hat Linux 9 | 9 | http://redhat.com/rhl/9
Afin d'installer une machine virtuelle nous avons besoin d'identifier le Short ID de la version à installer. Cette information se trouve dans la première colonne de la sortie de la commande. Les trois autres colonnes indiquent :
- Colonne 2,
- Name,
- Le nom officiel du système d'exploitation,
- Colonne 3,
- Version,
- La version du système d'exploitation,
- Colonne 4,
- ID,
- Un URL censé pointer vers la page officielle de la version de la distribution. Attention : ces URLs sont bien souvent inexactes,
3.2 - Configuration du Stockage des ISOs
Afin d'installer la machine virtuelle il est nécessaire d'avoir accès à l'ISO de celui-ci. Pour des raisons de performances il est souhaitable que cet ISO soit stocké localement ou bien sur un système de fichiers distant sans latence. Un ISO de Rhel 9.4 a été préchargé dans le répertoire /isos de votre VM. Les commandes utilisées étaient donc :
# ls -l | grep rhel -rw-r--r--. 1 trainee trainee 11085742080 Oct 25 16:38 rhel-9.4-x86_64-dvd.iso # chmod 755 rhel-9.4-x86_64-dvd.iso # mkdir /isos # mv rhel-9.4-x86_64-dvd.iso /isos
Afin de créer un dépôt d'installation de Rhel 9.4, le contenu du DVD a été copié vers /var/www/html :
# mkdir /mnt/rhel9-install/ # mount -o loop,ro -t iso9660 /isos/rhel-9.4-x86_64-dvd.iso /mnt/rhel9-install/ # cp -r /mnt/rhel9-install/ /www1
Cet ISO doit être accessible par l'utilisateur et le groupe qemu.
[root@redhat9 ~]# chown -R qemu:qemu /isos
3.3 - Installation du Domain
Démarrez maintenant l'installation d'une machine virtuelle Red Hat 9 grâce à la commande virt-install :
[root@redhat9 ~]# virt-install --network bridge:virbr0 --name testvm1 --os-variant=rhel9.4 --ram=3072 --vcpus=1 --disk path=/var/lib/libvirt/images/testvm1-os.qcow2,bus=virtio,size=5 --graphics none --location=/isos/rhel-9.4-x86_64-dvd.iso --extra-args="console=tty0 console=ttyS0,115200" --check all=off Starting install... Retrieving 'vmlinuz' | 13 MB 00:00:00 Retrieving 'initrd.img' | 102 MB 00:00:02 Allocating 'testvm1-os.qcow2' | 5.0 GB 00:00:03 Creating domain... | 00:00:00 Running text console command: virsh --connect qemu:///system console testvm1 Connected to domain 'testvm1' Escape character is ^] (Ctrl + ]) ... Starting installer, one moment... anaconda 34.25.4.9-1.el9_4 for Red Hat Enterprise Linux 9.4 started. * installation log files are stored in /tmp during the installation * shell is available on TTY2 * if the graphical installation interface fails to start, try again with the inst.text bootoption to start text installation * when reporting a bug add logs from /tmp as separate text/plain attachments ================================================================================ ================================================================================ Text mode provides a limited set of installation options. It does not offer custom partitioning for full control over the disk layout. Would you like to use VNC mode instead? 1) Start VNC 2) Use text mode Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Important : Notez que la quantité de mémoire est automatiquement et provisoirement augmentée à 3072 Mo afin que l'installation se déroule correctement. Notez aussi l'utilisation du mot domain. Un domain sous KVM est un terme utilisé pour décrire une machine virtuelle.
Dans cette commande on peut constater l'utilisation de plusieurs options importantes :
Option | Commentaire |
---|---|
–network bridge: | Fixe la valeur du pont à utiliser par la VM à virbr0 |
–name | Indique le nom de la VM |
–os-variant= | Egal à la valeur du Short ID identifié au-dessus |
–ram= | Fixe la quantité de la RAM de la VM en Mo |
–vcpus= | Fixe le nombre de vCPUs de la VM |
–disk path= | Crée une image pour la VM, au format indiqué et de la taille indiquée en Go, à l'emplacement spécifié |
–graphics | La valeur none indique que l'installation aura lieu en mode texte. Notez que dans le cas d'une VM Windows™, la valeur doit être spice |
–location= | Indique l'emplacement de l'ISO à utiliser pour l'installation |
–extra-args= | Indique les options de la connectivité de la console |
Format des Images
Une image est un disque virtuel. KVM reconnait les formats d'image suivants :
# qemu-img -h | grep Supported Supported formats: blkdebug blklogwrites blkverify compress copy-before-write copy-on-read file ftp ftps host_cdrom host_device http https io_uring luks nbd null-aio null-co nvme nvme-io_uring preallocate qcow2 quorum raw rbd snapshot-access throttle vdi vhdx virtio-blk-vfio-pci virtio-blk-vhost-user virtio-blk-vhost-vdpa vmdk vpc
Convertir le Format de l'Image
Il est possible de convertir un format d'image existante au format qcow2 avec la commande qemu-img convert, notamment les images au format qed, raw, vdi, vhd et vmdk. Par exemple :
# qemu-img convert -f vmdk -O qcow2 myimage.vmdk mynewimage.qcow2
Dans le cas d'une image au format vdi d'Oracle VirtualBox, il est préférable de créer une image au format raw en utilisant la commande VBoxManage :
# VBoxManage clonehd myimage.vdi myrawimage.img --format raw
Ensuite il convient d'utiliser la commande qemu-img convert pour convertir l'image au format raw en qcow2 :
# qemu-img convert -f raw -O qcow2 myrawimage.img mynewimage.qcow2
3.4 - Configuration de l'Installation de l'OS Invité
Language Settings
Commencez par appuyer sur le choix 2 :
Starting installer, one moment... anaconda 34.25.4.9-1.el9_4 for Red Hat Enterprise Linux 9.4 started. * installation log files are stored in /tmp during the installation * shell is available on TTY2 * if the graphical installation interface fails to start, try again with the inst.text bootoption to start text installation * when reporting a bug add logs from /tmp as separate text/plain attachments ================================================================================ ================================================================================ Text mode provides a limited set of installation options. It does not offer custom partitioning for full control over the disk layout. Would you like to use VNC mode instead? 1) Start VNC 2) Use text mode Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 2
Ensuite choisissez le chnoix 1 :
================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (English (United States)) (America/New_York timezone) 3) [!] Installation source 4) [!] Software selection (Processing...) (Processing...) 5) [!] Installation Destination 6) [x] Kdump (Processing...) (Kdump is enabled) 7) [x] Network configuration 8) [!] Root password (Unknown) (Root account is disabled) 9) [!] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: 1 ... 4) Assamese 27) Gujarati 50) Odia 5) Asturian 28) Hebrew 51) Punjabi 6) Belarusian 29) Hindi 52) Polish 7) Bulgarian 30) Croatian 53) Portuguese 8) Bangla 31) Hungarian 54) Romanian 9) Catalan 32) Interlingua 55) Russian 10) Czech 33) Indonesian 56) Sinhala 11) Welsh 34) Icelandic 57) Slovak 12) Danish 35) Italian 58) Albanian 13) German 36) Japanese 59) Serbian 14) Greek 37) Georgian 60) Swedish 15) English 38) Kazakh 61) Tamil 16) Esperanto 39) Khmer 62) Telugu 17) Spanish 40) Kannada 63) Thai 18) Estonian 41) Korean 64) Turkish 19) Basque 42) Lithuanian 65) Ukrainian 20) Persian 43) Latvian 66) Urdu 21) Finnish 44) Malayalam 67) Mandarin Chinese 22) Filipino 45) Marathi 23) French 46) Burmese Please select language support to install ['b' to return to language list, 'c' to continue, 'q' to quit, 'r' to refresh]:
Choisissez l'option 23 puis l'option 1 :
Please select language support to install ['b' to return to language list, 'c' to continue, 'q' to quit, 'r' to refresh]: 23 ================================================================================ ================================================================================ Language settings Available locales 1) French (France) 3) French (Belgium) 5) French (Luxembourg) 2) French (Canada) 4) French (Switzerland) Please select language support to install ['b' to return to language list, 'c' to continue, 'q' to quit, 'r' to refresh]: 1 ================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (America/New_York timezone) 3) [!] Installation source 4) [!] Software selection (Error setting up software (Error checking software source) selection) 5) [!] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 7) [x] Network configuration 8) [!] Root password (Unknown) (Root account is disabled) 9) [!] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]:
Network configuration
Choisissez maintenant l'option 7 :
================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (America/New_York timezone) 3) [!] Installation source 4) [!] Software selection (Error setting up software (Error checking software source) selection) 5) [!] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 7) [x] Network configuration 8) [!] Root password (Unknown) (Root account is disabled) 9) [!] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: 7 ================================================================================ ================================================================================ Network configuration Wired (enp1s0) disconnected Host Name: Current host name: localhost 1) Set host name 2) Configure device enp1s0 Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Choisissez ensuite l'option 1 pour définir le nom d'hôte de la VM :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 1 ================================================================================ ================================================================================ Enter a new value for 'Host Name' and press ENTER: testvm1.ittraining.loc ================================================================================ ================================================================================ Network configuration Wired (enp1s0) disconnected Host Name: testvm1.ittraining.loc Current host name: localhost 1) Set host name 2) Configure device enp1s0 Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Choisissez l'option 2 pour configurer la connexion réseau :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 2 ================================================================================ ================================================================================ Device configuration 1) IPv4 address or "dhcp" for DHCP dhcp 2) IPv4 netmask 3) IPv4 gateway 4) IPv6 address[/prefix] or "auto" for automatic, "dhcp" for DHCP, "ignore" to turn off auto 5) IPv6 default gateway 6) Nameservers (comma separated) 7) [x] Connect automatically after reboot 8) [ ] Apply configuration in installer Configuring device enp1s0. Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Configurez les options ainsi :
================================================================================ ================================================================================ Device configuration 1) IPv4 address or "dhcp" for DHCP 192.168.56.50 2) IPv4 netmask 255.255.255.0 3) IPv4 gateway 192.168.56.1 4) IPv6 address[/prefix] or "auto" for automatic, "dhcp" for DHCP, "ignore" to turn off auto 5) IPv6 default gateway 6) Nameservers (comma separated) 8.8.8.8,8.8.4.4 7) [x] Connect automatically after reboot 8) [ ] Apply configuration in installer Configuring device enp1s0. Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Pour pouvoir installer les paquets logiciels, la configuration réseau doit être appliquée immédiatement. Choisissez donc l'option 8 :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 8 ================================================================================ ================================================================================ Device configuration 1) IPv4 address or "dhcp" for DHCP 192.168.56.50 2) IPv4 netmask 255.255.255.0 3) IPv4 gateway 192.168.56.1 4) IPv6 address[/prefix] or "auto" for automatic, "dhcp" for DHCP, "ignore" to turn off auto 5) IPv6 default gateway 6) Nameservers (comma separated) 8.8.8.8,8.8.4.4 7) [x] Connect automatically after reboot 8) [x] Apply configuration in installer Configuring device enp1s0. Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Validez les configurations actuelles en appuyant sur la touche c :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c ================================================================================ ================================================================================ Network configuration Wired (enp1s0) connected IPv4 Address: 192.168.56.50 Netmask: 255.255.255.0 Gateway: 192.168.56.1 DNS: 8.8.8.8,8.8.4.4 Host Name: testvm1.ittraining.loc Current host name: localhost 1) Set host name 2) Configure device enp1s0 Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Pour retourner au menu principal, appuyez sur la touche c de nouveau :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c ================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (America/New_York timezone) 3) [!] Installation source 4) [!] Software selection (Error setting up software (Error checking software source) selection) 5) [!] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 7) [x] Network configuration 8) [!] Root password (Connected: enp1s0) (Root account is disabled) 9) [!] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]:
Time settings
Choisissez maintenant l'option 2 pour définir le fuseau d'horaire de la VM :
Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: 2 ================================================================================ ================================================================================ Time settings Timezone: America/New_York NTP servers: not configured 1) Change timezone 2) Configure NTP servers Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Choisissez l'option 1 pour modifier le fuseau d'horaire :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 1 ================================================================================ ================================================================================ Timezone settings Available regions 1) Europe 5) Antarctica 9) Indian 2) Asia 6) Pacific 10) Arctic 3) America 7) Australia 11) US 4) Africa 8) Atlantic 12) Etc Please select the timezone. Use numbers or type names directly ['b' to go back to region list, 'c' to continue, 'q' to quit, 'r' to refresh]:
Appuyez sur la touche 1 pour choisir Europe :
Please select the timezone. Use numbers or type names directly ['b' to go back to region list, 'c' to continue, 'q' to quit, 'r' to refresh]: 1 ================================================================================ 1) Amsterdam 21) Kaliningrad 41) San_Marino 2) Andorra 22) Kirov 42) Sarajevo 3) Astrakhan 23) Kyiv 43) Saratov 4) Athens 24) Lisbon 44) Simferopol 5) Belgrade 25) Ljubljana 45) Skopje 6) Berlin 26) London 46) Sofia 7) Bratislava 27) Luxembourg 47) Stockholm 8) Brussels 28) Madrid 48) Tallinn 9) Bucharest 29) Malta 49) Tirane 10) Budapest 30) Mariehamn 50) Ulyanovsk 11) Busingen 31) Minsk 51) Vaduz 12) Chisinau 32) Monaco 52) Vatican 13) Copenhagen 33) Moscow 53) Vienna 14) Dublin 34) Oslo 54) Vilnius 15) Gibraltar 35) Paris 55) Volgograd 16) Guernsey 36) Podgorica 56) Warsaw 17) Helsinki 37) Prague 57) Zagreb 18) Isle_of_Man 38) Riga 58) Zurich 19) Istanbul 39) Rome 20) Jersey 40) Samara Please select the timezone. Use numbers or type names directly ['b' to go back to region list, 'c' to continue, 'q' to quit, 'r' to refresh]:
Puis choisissez l'option 35 pour Paris :
Please select the timezone. Use numbers or type names directly ['b' to go back to region list, 'c' to continue, 'q' to quit, 'r' to refresh]: 35 ================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (Europe/Paris timezone) 3) [!] Installation source 4) [!] Software selection (Error setting up software (Error checking software source) selection) 5) [!] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 7) [x] Network configuration 8) [!] Root password (Connected: enp1s0) (Root account is disabled) 9) [!] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]:
Root password
Pour définir le mot de passe root de la VM, choisissez l'option 8 et indiquez le mot de passe fenestros :
Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: 8 ================================================================================ ================================================================================ Root password Please select new root password. You will have to type it twice. Password: fenestros Password (confirm): fenestros ================================================================================ ================================================================================ Question The password you have provided is weak: The password fails the dictionary check - it is based on a dictionary word Would you like to use it anyway? Please respond 'yes' or 'no': yes ================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (Europe/Paris timezone) 3) [!] Installation source 4) [!] Software selection (Error setting up software (Error checking software source) selection) 5) [!] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 7) [x] Network configuration 8) [x] Root password (Connected: enp1s0) (Root password is set) 9) [ ] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]:
Installation source
Choisissez l'option 3 :
Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: 2 ================================================================================ ================================================================================ Installation source Choose an installation source type. 1) CD/DVD 2) local ISO file 3) Network Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Choisissez donc l'option 3 :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 3 ================================================================================ ================================================================================ Installation source 1) http:// 2) https:// 3) ftp:// 4) nfs Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Choisissez l'option 1 et indiquez l'URL http://192.168.56.2/rhel9-install :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 1 ================================================================================ ================================================================================ Specify Repo Options 1) Repo URL Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 1 ================================================================================ ================================================================================ Enter a new value for 'Repo URL' and press ENTER: http://192.168.56.2/rhel9-install ================================================================================ ================================================================================ Specify Repo Options 1) Repo URL http://192.168.56.2/rhel9-install Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]:
Appuyez sur c pour continuer :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c ================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (Europe/Paris timezone) 3) [x] Installation source 4) [!] Software selection (Processing...) (Processing...) 5) [!] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 7) [x] Network configuration 8) [x] Root password (Connected: enp1s0) (Root password is set) 9) [ ] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]:
Patientez le temps de Processing.
Software selection
Choisissez l'option 4 puis l'option 3 pour indiquer une installation minimale du système :
================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (Europe/Paris timezone) 3) [x] Installation source 4) [!] Software selection (http://192.168.56.2/rhel9-insta (Source changed - please verify) ll) 5) [!] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 7) [x] Network configuration 8) [x] Root password (Connected: enp1s0) (Root password is set) 9) [ ] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: 4 ================================================================================ ================================================================================ Software selection Base environment 1) [x] Server with GUI 4) [ ] Workstation 2) [ ] Server 5) [ ] Custom Operating System 3) [ ] Minimal Install 6) [ ] Virtualization Host Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 3 ================================================================================ ================================================================================ Software selection Base environment 1) [ ] Server with GUI 4) [ ] Workstation 2) [ ] Server 5) [ ] Virtualization Host 3) [x] Minimal Install 6) [ ] Custom Operating System
Appuyez ensuite sur la touche c pour pouvoir éventuellement choisir des installations supplémentaires :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c ================================================================================ ================================================================================ Software selection Additional software for selected environment 1) [ ] Standard 8) [ ] Headless Management 2) [ ] Legacy UNIX Compatibility 9) [ ] Network Servers 3) [ ] Console Internet Tools 10) [ ] RPM Development Tools 4) [ ] Container Management 11) [ ] Scientific Support 5) [ ] Development Tools 12) [ ] Security Tools 6) [ ] .NET Development 13) [ ] Smart Card Support 7) [ ] Graphical Administration Tools 14) [ ] System Tools Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c
Ne choisissez rien dans la liste et appuyez simplement sur la touche c pour revenir au menu principal :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c ================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (Europe/Paris timezone) 3) [!] Installation source 4) [!] Software selection (Processing...) (Processing...) 5) [!] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 7) [x] Network configuration 8) [x] Root password (Connected: enp1s0) (Root password is set) 9) [ ] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: r ================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (Europe/Paris timezone) 3) [x] Installation source 4) [x] Software selection (http://192.168.56.2/rhel9-insta (Minimal Install) ll) 5) [!] Installation Destination 6) [x] Kdump (No disks selected) (Kdump is enabled) 7) [x] Network configuration 8) [x] Root password (Wired (enp1s0) connected) (Password is set.) 9) [ ] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]:
Installation Destination
Choisissez l'option 5 pour définir l'emplacement de l'installation :
================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (Europe/Paris timezone) 3) [x] Installation source 4) [x] Software selection (http://192.168.56.2/rhel9-insta (Minimal Install) ll) 5) [!] Installation Destination 6) [x] Kdump (No disks selected) (Kdump is enabled) 7) [x] Network configuration 8) [x] Root password (Wired (enp1s0) connected) (Password is set.) 9) [ ] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: 5 Probing storage...
Séléctionnez le disque vda et appuyez sur la touche c :
Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: 5 Probing storage... ================================================================================ ================================================================================ Installation Destination 1) [x] DISK: 5 GiB (vda) 1 disk selected; 5 GiB capacity; 5 GiB free Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c
A ce stade il vous est possible de choisir l'option 4 et de créer des partitions spécifiques en termes de points de montage en fonction de l'utilisation prévue pour la VM. Dans le cas de ce LAB, appuyez simplement sur la touche c :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c ================================================================================ ================================================================================ Partitioning Options 1) [ ] Replace Existing Linux system(s) 2) [x] Use All Space 3) [ ] Use Free Space 4) [ ] Manually assign mount points Installation requires partitioning of your hard drive. Select what space to use for the install target or manually assign mount points. Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c
A ce stade il vous est possible de choisir le type d'installation, soit Standard Partition, LVM ou LVM Thin Provisioning. Notez que le choix par défaut proposé est LVM :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c ================================================================================ ================================================================================ Partition Scheme Options 1) [ ] Standard Partition 2) [x] LVM 3) [ ] LVM Thin Provisioning Select a partition scheme configuration. Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 1
Bien que préférable de choisir l'option par défaut pour des VMs en production . Par contre, pour des raisons liées à la suite de ce LAB, choisissez l'option 1 puis sur la touche c :
Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: 1 ================================================================================ ================================================================================ Partition Scheme Options 1) [x] Standard Partition 2) [ ] LVM 3) [ ] LVM Thin Provisioning Select a partition scheme configuration. Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to refresh]: c Generating updated storage configuration Checking storage configuration...
Démarrer l'Installation
De retour au menu principal, choisissez l'option b pour démarrer l'installation :
================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (French (France)) (Europe/Paris timezone) 3) [x] Installation source 4) [x] Software selection (http://192.168.56.2/rhel9-insta (Minimal Install) ll) 5) [x] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 7) [x] Network configuration 8) [x] Root password (Wired (enp1s0) connected) (Password is set.) 9) [ ] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: b
Important : Notez que nous n'avons pas spécifié d'utilisateurs. Cette décision n'est pas bloquante pour la suite de l'installation.
L'installation démarre et se poursuit :
... Performing post-installation setup tasks Configuring filesystem.x86_64 Configuring ca-certificates.noarch Configuring grub2-common.noarch Configuring authselect-libs.x86_64 Configuring kernel-modules-core.x86_64 Configuring kernel-core.x86_64 Configuring kernel-modules.x86_64 Configuring rpm.x86_64 Configuring selinux-policy-targeted.noarch Configuring subscription-manager.x86_64 Configuring sssd-common.x86_64 Configuring crypto-policies-scripts.noarch Configuring kexec-tools.x86_64 Configuring microcode_ctl.noarch ... Verifying rsyslog-logrotate.x86_64 (368/368) . Installing boot loader .. Performing post-installation setup tasks . Configuring Red Hat subscription .... Configuring installed system .............. Writing network configuration . Creating users ..... Configuring addons . Generating initramfs .... Storing configuration files and kickstarts . Running post-installation scripts . Installation complete Use of this product is subject to the license agreement found at: /usr/share/redhat-release/EULA
Démarrer la VM
A l'issu de l'installation, appuyez sur la touche [Enter] pour démarrez la VM :
Installation complete. Press ENTER to quit: ... [ OK ] Stopped System Logging Service. [ OK ] Stopped target Network is Online. [ OK ] Stopped target Network. Stopping Network Manager... [ OK ] Started Show Plymouth Reboot Screen. [ OK ] Stopped Network Manager. [ OK ] Stopped target Preparation for Network. [ OK ] Stopped Generate network units from Kernel command line. [ OK ] Stopped Disk Manager. ..
3.5 - Vérification de la VM Invitée
Au prompt, connectez-vous en tant que root avec le mot de passe fenestros :
Red Hat Enterprise Linux 9.4 (Plow) Kernel 5.14.0-427.13.1.el9_4.x86_64 on an x86_64 testvm1 login: root Mot de passe : fenestros [root@testvm1 ~]#
Réseau
Vérifiez la prise en compte d'une adresse IPv4 dans le réseau 192.168.56.0/24 :
[root@testvm1 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:cf:55:1e brd ff:ff:ff:ff:ff:ff inet 192.168.56.50/24 brd 192.168.56.255 scope global noprefixroute enp1s0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fecf:551e/64 scope link noprefixroute valid_lft forever preferred_lft forever
Internet
Vérifiez la connectivité de la VM :
[root@testvm1 ~]# ping www.free.fr PING www.free.fr (212.27.48.10) 56(84) octets de données. 64 octets de www.free.fr (212.27.48.10) : icmp_seq=1 ttl=47 temps=89.2 ms 64 octets de www.free.fr (212.27.48.10) : icmp_seq=2 ttl=47 temps=89.2 ms 64 octets de www.free.fr (212.27.48.10) : icmp_seq=3 ttl=47 temps=89.2 ms 64 octets de www.free.fr (212.27.48.10) : icmp_seq=4 ttl=47 temps=89.1 ms --- statistiques ping www.free.fr --- 4 paquets transmis, 4 reçus, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 89.129/89.150/89.162/0.012 ms
Détachez-vous de la VM :
[root@testvm1 ~]# [ALT GR]+[CTRL]+[)] [root@redhat9 ~]#
Utilisez la commande virsh pour constater le statut de la machine virtuelle:
[root@redhat9 ~]# virsh list --all Id Name State ------------------------- 2 testvm1 running
Important : Notez que la VM est dans un état de running et que son Id est de 2.
Important : Notez l'utilisation de la séquence de touches [ALT GR]+[CTRL]+[)] sur un clavier français afin de se détacher de la VM. C'est-à-dire, la touche [AltGr] et rester appuyer plus la touche [Ctrl] et rester appuyer plus la touche [)]. Si cela ne fonctionne pas utilisez [CTRL]+[VER MAJ]+[5].
LAB #4 - Gestion des Clones
La création de clones offre une méthode rapide de création de VMs basées sur des configurations déjà existantes.
4.1 - Création d'une VM à partir d'un Clone
Afin de procéder à la création d'un clone, arrêtez la VM avec la commande virsh shutdown. Cette commande peut prendre en argument l'Id de la VM, le nom de la VM ou bien l'UUID de la VM :
[root@redhat9 ~]# virsh shutdown 2 Domain '2' is being shutdown
Vérifiez ensuite que la VM est arrêtée :
[root@redhat9 ~]# virsh list --all Id Name State -------------------------- - testvm1 shut off
Utilisez la commande virsh-clone pour créer une deuxième VM dénommée testvm2 ayant une image au format qcow2 stockée dans le répertoire /var/lib/libvirt/images/ :
[root@redhat9 ~]# virt-clone --original testvm1 --name testvm2 -f /var/lib/libvirt/images/testvm2.qcow2 Allocating 'testvm2.qcow2' | 5.0 GB 00:16:01 Clone 'testvm2' created successfully.
Pour voir la liste des VMs, utilisez la commande suivante :
[root@redhat9 ~]# virsh list --all Id Name State -------------------------- - testvm1 shut off - testvm2 shut off
Le State peut être une des valeurs suivantes :
- running - la machine virtuelle est active,
- blocked ou blocking - la machine virtuelle est en attente d'E/S ou l'hyperviseur,
- paused - la machine virtuelle est suspendue,
- shutdown - la machine virtuelle est en cours d'arrêt,
- shut off - la machine virtuelle est éteinte et elle n'utilise aucune ressource système,
- crashed - la machine virtuelle a crashée et est arrêtée.
LAB #5 - Gestion des Snapshots
La création de snapshots offre une méthode rapide de sauvegarde des VMs.
Il existe deux types de snapshots :
- Internal,
- uniquement possibles avec les images qcow2,
- la VM est mise en pause pendant la création du snapshot,
- ne fonctionne pas avec des pools de stockage de type LVM.
- External,
- sont basés sur le concept COW (Copy On Write),
- l'image de base est mise en mode lecture seule,
- une image de type overlay en mode lecture/écriture et obligatoirement au format qcow2 est créée pour les écritures suivantes,
- est compatible avec n’importe lequel des formats de l'image de base.
5.1 - Création d'un Snapshot - VM Arrêté
Utilisez la commande virsh snapshot-list pour consulter la liste des snapshots déjà présents pour la VM testvm1 :
[root@redhat9 ~]# virsh snapshot-list testvm1 Name Creation Time State -------------------------------
La création d'un snapshot se fait grâce à l'utilisation de la commande virsh snapshot-create-as. Les arguments obligatoires de cette commande sont :
- –domain,
- le domaine à l'origine du snapshot,
- –name,
- le nom attribué au snapshot.
[root@redhat9 ~]# virsh snapshot-create-as --domain testvm1 --name testvm1-snap-`date "+%Y-%m-%d_%H:%M:%S"` Domain snapshot testvm1-snap-2024-10-26_13:10:37 created
Vérifiez que le snapshot a bien été pris en compte :
[root@redhat9 ~]# virsh snapshot-list testvm1 Name Creation Time State ----------------------------------------------------------------------------- testvm1-snap-2024-10-26_13:10:37 2024-10-26 13:10:37 +0200 shutoff
Important : Notez que l'état est shutoff.
Pour obtenir des informations concernant le snapshot, il convient d'utiliser la commande virsh snapshot-info. L'utilisation de l'option –current permet d'obtenir de l'information sur le dernier snapshot effectué pour le domaine en question :
[root@redhat9 ~]# virsh snapshot-info --domain testvm1 --current Name: testvm1-snap-2024-10-26_13:10:37 Domain: testvm1 Current: yes State: shutoff Location: internal Parent: testvm1-snap-date +%Y-%m-%d_%H:%M:%S Children: 0 Descendants: 0 Metadata: yes
5.2 - Création d'un Snapshot - VM en Cours d'Exécution
Il est aussi possible de prendre des snapshot d'une VM en cours d'exécution. Cependant, dans le cas de beaucoup d'activité E/S, il est toutefois recommandée d'arrêter la VM.
Démarrez donc la VM testvm2 avec la commande virsh start :
[root@redhat9 ~]# virsh start testvm2 Domain 'testvm2' started
Vérifiez ensuite l'état de la VM :
[root@redhat9 ~]# virsh list --all Id Name State -------------------------- 1 testvm2 running - testvm1 shut off
Créez un snapshot de testvm2 :
[root@redhat9 ~]# virsh snapshot-create-as --domain testvm2 --name testvm2-snap-`date "+%Y-%m-%d_%H:%M:%S"` Domain snapshot testvm2-snap-2024-10-26_13:14:02 created
Consultez la liste des snapshots pour le domaine testvm2 :
[root@redhat9 ~]# virsh snapshot-list testvm2 Name Creation Time State ------------------------------------------------------------------------- testvm2-snap-2024-10-26_13:14:02 2024-10-26 13:14:02 +0200 running
Pour obtenir des informations concernant le dernier snapshot effectué pour le domaine testvm2, utilisez la commande suivante :
[root@redhat9 ~]# virsh snapshot-info --domain testvm2 --current Name: testvm2-snap-2024-10-26_13:14:02 Domain: testvm2 Current: yes State: running Location: internal Parent: - Children: 0 Descendants: 0 Metadata: yes
Important : Notez que le State est running par rapport au snapshot précédent qui avait rapporté un State de shutoff.
5.3 - Restauration d'un Snapshot
Pour restaurer un snapshot la commande virsh fournit la sous-commande snapshot-revert. Commencez donc par arrêter la VM :
[root@redhat9 ~]# virsh shutdown testvm2 Domain 'testvm2' is being shutdown [root@redhat9 ~]# virsh list --all Id Name State -------------------------- - testvm1 shut off - testvm2 shut off
Restaurez ensuite le snapshot :
[root@centos8 ~]# [root@redhat9 ~]# virsh snapshot-revert --domain testvm2 --snapshotname testvm2-snap-2024-10-26_13:14:02 --running Domain snapshot testvm2-snap-2024-10-26_13:14:02 reverted [root@redhat9 ~]# virsh list --all Id Name State -------------------------- 1 testvm2 running - testvm1 shut off
Important : Notez que le State est running après la restauration du snapshot.
Connectez-vous à la VM grâce à la commande virsh console et vérifiez que celle-ci ne présente pas d’anomalies de fonctionnement :
[root@redhat9 ~]# virsh console 1 Connected to domain 'testvm2' Escape character is ^] (Ctrl + ]) [Enter] testvm1 login: root Mot de passe : fenestros Dernière connexion : Fri Oct 25 17:52:49 sur ttyS0 [root@testvm1 ~]# [root@testvm1 ~]# [CTRL]+[VER MAJ]+[5] [root@redhat9 ~]#
5.4 - Suppression de Snapshots
Les snapshots peuvent être supprimés grâce à l'utilisation de la commande virsh snapshot-delete :
[root@redhat9 ~]# virsh snapshot-list testvm1 Name Creation Time State ------------------------------------------------------------------------- testvm1-snap-2024-10-26_13:10:37 2024-10-26 13:10:37 +0200 shutoff [root@redhat9 ~]# virsh snapshot-delete --domain testvm1 --snapshotname "testvm1-snap-2024-10-26_13:10:37" Domain snapshot testvm1-snap-2024-10-26_13:10:37 deleted [root@redhat9 ~]# virsh snapshot-list testvm1 Name Creation Time State ------------------------------- [root@redhat9 ~]# virsh snapshot-list testvm2 Name Creation Time State ------------------------------------------------------------------------- testvm2-snap-2024-10-26_13:14:02 2024-10-26 13:14:02 +0200 running [root@redhat9 ~]# virsh snapshot-delete --domain testvm2 --snapshotname "testvm2-snap-2024-10-26_13:14:02" Domain snapshot testvm2-snap-2024-10-26_13:14:02 deleted [root@redhat9 ~]# virsh snapshot-list testvm2 Name Creation Time State -------------------------------
LAB #6 - Gestion des Sauvegardes
Pour effectuer une sauvegarde d'une VM en utilisant les outils classiques, il convient simplement de copier le fichier d'image ainsi que le fichier de configuration de la VM à un endroit ailleurs sur le système, voire sur un support externe.
6.1 - Création d'une Sauvegarde du Disque de la VM
Actuellement seule la VM testvm2 est en cours d'exécution :
[root@redhat9 ~]# virsh list Id Name State ------------------------- 1 testvm2 running
Créez donc un répertoire destiné à contenir les copies créées :
[root@redhat9 ~]# mkdir /vm-backups
Placez-vous dans le répertoire des images /var/lib/libvirt/images/ :
[root@redhat9 ~]# cd /var/lib/libvirt/images/ [root@redhat9 images]# ls -l total 4193900 -rw-------. 1 root root 5369757696 Oct 26 13:30 testvm1-os.qcow2 -rw-------. 1 qemu qemu 2402222080 Oct 26 13:32 testvm2.qcow2
Copiez ensuite l'image vers le répertoire /vm-backups :
[root@redhat9 images]# cp -p testvm1-os.qcow2 /vm-backups/testvm1-backup-`date "+%Y-%m-%d_%H:%M:%S"` & [1] 69708
Important : Notez que cette copie est effectuée en arrière plan afin de libérer le prompt en avant plan du terminal.
6.2 - Création d'une Sauvegarde de la Configuration de la VM
La configuration de chaque VM est contenue dans un fichier au format XML dans le répertoire /etc/libvirt/qemu/ :
[root@redhat9 images]# cd /etc/libvirt/qemu/ [root@redhat9 qemu]# ls -lR .: total 16 drwx------. 2 root root 6 Sep 12 12:48 autostart drwx------. 3 root root 42 Oct 24 14:42 networks -rw-------. 1 root root 6741 Oct 25 17:11 testvm1.xml -rw-------. 1 root root 6738 Oct 26 13:23 testvm2.xml ./autostart: total 0 ./networks: total 4 drwx------. 2 root root 25 Oct 24 13:15 autostart -rw-------. 1 root root 574 Oct 24 14:42 default.xml ./networks/autostart: total 0 lrwxrwxrwx. 1 root root 14 Oct 24 13:15 default.xml -> ../default.xml
Si vous consultez le contenu du fichier testvm1.xml, vous vous apercevrez des balises contenant la configuration actuelle de la VM. Par exemple, les deux lignes suivantes démontrent que la VM a 2 Go de RAM et 1 vCPU :
... <currentMemory unit='KiB'>2097152</currentMemory> <vcpu placement='static'>1</vcpu> ...
[root@redhat9 qemu]# cat testvm1.xml <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit testvm1 or other application using the libvirt API. --> <domain type='kvm'> <name>testvm1</name> <uuid>77bb92d1-83a7-4c01-971c-1eb2f9f41c92</uuid> <metadata> <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0"> <libosinfo:os id="http://redhat.com/rhel/9.4"/> </libosinfo:libosinfo> </metadata> <memory unit='KiB'>2097152</memory> <currentMemory unit='KiB'>2097152</currentMemory> <vcpu placement='static'>1</vcpu> <os> <type arch='x86_64' machine='pc-q35-rhel9.4.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> </features> <cpu mode='host-passthrough' check='none' migratable='on'/> <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <pm> <suspend-to-mem enabled='no'/> <suspend-to-disk enabled='no'/> </pm> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' discard='unmap'/> <source file='/var/lib/libvirt/images/testvm1-os.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='sda' bus='sata'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <controller type='usb' index='0' model='qemu-xhci' ports='15'> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </controller> <controller type='pci' index='0' model='pcie-root'/> <controller type='pci' index='1' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='1' port='0x8'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/> </controller> <controller type='pci' index='2' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='2' port='0x9'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='pci' index='3' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='3' port='0xa'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='pci' index='4' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='4' port='0xb'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x3'/> </controller> <controller type='pci' index='5' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='5' port='0xc'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x4'/> </controller> <controller type='pci' index='6' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='6' port='0xd'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x5'/> </controller> <controller type='pci' index='7' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='7' port='0xe'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x6'/> </controller> <controller type='pci' index='8' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='8' port='0xf'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x7'/> </controller> <controller type='pci' index='9' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='9' port='0x10'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/> </controller> <controller type='pci' index='10' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='10' port='0x11'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/> </controller> <controller type='pci' index='11' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='11' port='0x12'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/> </controller> <controller type='pci' index='12' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='12' port='0x13'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/> </controller> <controller type='pci' index='13' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='13' port='0x14'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/> </controller> <controller type='pci' index='14' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='14' port='0x15'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/> </controller> <controller type='sata' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/> </controller> <interface type='bridge'> <mac address='52:54:00:cf:55:1e'/> <source bridge='virbr0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> <serial type='pty'> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <audio id='1' type='none'/> <watchdog model='itco' action='reset'/> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> </memballoon> <rng model='virtio'> <backend model='random'>/dev/urandom</backend> <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/> </rng> </devices> </domain>
Ce fichier doit donc être copié vers le répertoire /vm-backups/ :
[root@redhat9 qemu]# cp -p testvm1.xml /vm-backups/testvm1.xml-backup-`date "+%Y-%m-%d_%H:%M:%S"` [1]+ Done cp -i -p testvm1-os.qcow2 /vm-backups/testvm1-backup-`date "+%Y-%m-%d_%H:%M:%S"` (wd: /var/lib/libvirt/images) (wd now: /etc/libvirt/qemu)
Une fois le processus en arrière plan terminé, vous pouvez constater la présence des deux fichiers dans le répertoire
[root@redhat9 vm-backups]# ls -l total 1939640 -rw-------. 1 root root 5369757696 Oct 26 13:30 testvm1-backup-2024-10-26_13:36:27 -rw-------. 1 root root 6741 Oct 25 17:11 testvm1.xml-backup-2024-10-26_13:42:34
Notez que la taille de l'image de testvm1 est de 5 GiB malgré le fait qu'il n'y ait que 1,76 GiB alloué :
[root@redhat9 vm-backups]# virsh vol-info /var/lib/libvirt/images/testvm1-os.qcow2 Name: testvm1-os.qcow2 Type: file Capacity: 5.00 GiB Allocation: 1.76 GiB
6.3 - Sauvegarder les Copies des Fichiers
Ayant effectué les copies, il est maintenant possible de sauvegarder les fichiers à l'aide d'un outil classique tel tar :
[root@redhat9 vm-backups]# mkdir testvm1 [root@redhat9 vm-backups]# mv *2024* testvm1 [root@redhat9 vm-backups]# ls testvm1 [root@redhat9 vm-backups]# tar cvzf testvm1-backup-`date "+%Y-%m-%d"`.tar.gz testvm1/ testvm1/ testvm1/testvm1-backup-2024-10-26_13:36:27 testvm1/testvm1.xml-backup-2024-10-26_13:42:34 [root@redhat9 vm-backups]# ls -l total 1081932 drwxr-xr-x. 2 root root 94 Oct 26 13:47 testvm1 -rw-r--r--. 1 root root 1107897849 Oct 26 13:58 testvm1-backup-2024-10-26.tar.gz
LAB #7 - Augmentation de la Taille du Disque
7.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@redhat9 vm-backups]# virsh pool-list Name State Autostart --------------------------------------- isos active yes kvm-storagepool active yes root active yes
Consultez le contenu du pool kvm-storagepool :
[root@redhat9 vm-backups]# 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@redhat9 vm-backups]# virsh vol-info /var/lib/libvirt/images/testvm1-os.qcow2 Name: testvm1-os.qcow2 Type: file Capacity: 5.00 GiB Allocation: 1.76 GiB
Pour pouvoir redimensionner la taille de l'image il convient d'utiliser la commande qemu-img resize :
[root@redhat9 vm-backups]# qemu-img resize /var/lib/libvirt/images/testvm1-os.qcow2 +2G Image resized.
Vérifiez ensuite la prise en charge de la modification :
[root@redhat9 vm-backups]# virsh vol-info /var/lib/libvirt/images/testvm1-os.qcow2 Name: testvm1-os.qcow2 Type: file Capacity: 7.00 GiB Allocation: 1.76 GiB
Augmenter la Taille de la Partition Système de la VM
Démarrez la VM testvm1 :
[root@redhat9 vm-backups]# virsh start testvm1 Domain 'testvm1' started
Connectez-vous à la VM grâce à la commande virsh console :
[root@redhat9 vm-backups]# virsh console testvm1 Connected to domain 'testvm1' Escape character is ^] (Ctrl + ]) [ OK ] Finished Network Manager Wait Online. [ OK ] Reached target Network is Online. Starting Crash recovery kernel arming... Starting System Logging Service... [ OK ] Started System Logging Service. [ OK ] Reached target Multi-User System. Starting Record Runlevel Change in UTMP... [ OK ] Finished Record Runlevel Change in UTMP. [ 18.704937] block vda: the capability attribute has been deprecated. [ OK ] Finished Crash recovery kernel arming. Red Hat Enterprise Linux 9.4 (Plow) Kernel 5.14.0-427.13.1.el9_4.x86_64 on an x86_64 testvm1 login: root Mot de passe : fenestros Dernière connexion : Fri Oct 25 17:52:49 sur ttyS0
Constatez la taille de la partition /dev/vda3 :
[root@testvm1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS 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 4,0M 0 4,0M 0% /dev tmpfs 888M 0 888M 0% /dev/shm tmpfs 356M 5,0M 351M 2% /run /dev/vda3 3,5G 1,3G 2,3G 36% / /dev/vda1 960M 216M 745M 23% /boot tmpfs 178M 0 178M 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 Mise à jour des référentiels de gestion des abonnements. Identité du consommateur illisible This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register. Erreur : Il ny a pas de dépôts activés dans « /etc/yum.repos.d", "/etc/yum/repos.d", "/etc/distro.repos.d ».
Notez que le système n'a pas été enregistré auprès de Red Hat. Utilisez donc la commande subscription-manager :
[root@testvm1 ~]# subscription-manager register Inscription sur : subscription.rhsm.redhat.com:443/subscription Nom d'utilisateur : <your_login> Mot de passe : <your_password> Le système a été inscrit avec l'ID : 30c62b0c-3690-4534-9db3-7a4d9308fd46 Le nom du système inscrit est : testvm1.ittraining.loc
Installez 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 CHANGED: partition=3 start=3147776 old: size=7337984 end=10485759 new: size=11532255 end=14680030
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 MOUNTPOINTS 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 Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur devtmpfs devtmpfs 4,2M 0 4,2M 0% /dev tmpfs tmpfs 931M 0 931M 0% /dev/shm tmpfs tmpfs 373M 5,3M 368M 2% /run /dev/vda3 xfs 3,7G 1,5G 2,3G 40% / /dev/vda1 xfs 1,1G 226M 782M 23% /boot tmpfs tmpfs 187M 0 187M 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 bigtime=1 inobtcount=1 nrext64=0 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=16384, 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 Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur devtmpfs devtmpfs 4,2M 0 4,2M 0% /dev tmpfs tmpfs 931M 0 931M 0% /dev/shm tmpfs tmpfs 373M 5,3M 368M 2% /run /dev/vda3 xfs 5,9G 1,5G 4,4G 26% / /dev/vda1 xfs 1,1G 226M 782M 23% /boot tmpfs tmpfs 187M 0 187M 0% /run/user/0 [root@testvm1 ~]# [CTRL]+[VER MAJ]+[5] [root@redhat9 vm-backups]#
7.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@redhat9 vm-backups]# virsh list --all Id Name State ------------------------- 1 testvm2 running 2 testvm1 running
Utilisez la commande virsh domblklist pour afficher l'emplacement de l'image de la VM testvm2 :
[root@redhat9 vm-backups]# 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@redhat9 vm-backups]# 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@redhat9 vm-backups]# virsh vol-info /var/lib/libvirt/images/testvm2.qcow2 Name: testvm2.qcow2 Type: file Capacity: 7.00 GiB Allocation: 2.24 GiB
Connectez-vous à la VM grâce à la commande virsh console :
[root@redhat9 vm-backups]# virsh console testvm2 Connected to domain 'testvm2' Escape character is ^] (Ctrl + ]) [Enter] [root@testvm1 ~]#
Ré-exécutez les mêmes commandes que la dernière fois :
[root@testvm1 ~]# subscription-manager register [root@testvm1 ~]# dnf -y install cloud-utils-growpart gdisk [root@testvm1 ~]# growpart /dev/vda 3 CHANGED: partition=3 start=3147776 old: size=7337984 end=10485759 new: size=11532255 end=14680030 [root@testvm1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS 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 bigtime=1 inobtcount=1 nrext64=0 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=16384, 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 Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur devtmpfs devtmpfs 4,2M 0 4,2M 0% /dev tmpfs tmpfs 931M 0 931M 0% /dev/shm tmpfs tmpfs 373M 5,3M 368M 2% /run /dev/vda3 xfs 5,9G 1,5G 4,4G 26% / /dev/vda1 xfs 1,1G 226M 782M 23% /boot tmpfs tmpfs 187M 0 187M 0% /run/user/0 [root@testvm1 ~]# [CTRL]+[VER MAJ]+[5] [root@redhat9 vm-backups]#
LAB #8 - 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.
8.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 est pas installé :
[root@redhat9 vm-backups]# dnf install -y libguestfs-tools Updating Subscription Management repositories. Last metadata expiration check: 0:17:12 ago on Sat 26 Oct 2024 02:23:02 PM CEST. Package virt-win-reg-1.51.6-3.el9_4.noarch is already installed. Dependencies resolved. Nothing to do. Complete!
Arrêtez la VM testvm1 :
[root@redhat9 vm-backups]# virsh shutdown testvm1 Domain 'testvm1' is being shutdown
8.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@redhat9 vm-backups]# 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 :
><fs> run 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00 ><fs> list-filesystems /dev/sda1: xfs /dev/sda2: swap /dev/sda3: xfs ><fs> fsck xfs /dev/sda3 0 ><fs> fsck ext /dev/sda1 0 ><fs> q [root@redhat9 vm-backups]#
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.
Après la réparation du système de fichiers, démarrez le VM testvm1 :
[root@redhat9 vm-backups]# virsh start testvm1 Domain 'testvm1' started
LAB #9 - Gestion de la VM
9.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@redhat9 vm-backups]# virsh shutdown testvm1 Domain 'testvm1' is being shutdown [root@redhat9 vm-backups]# virsh list Id Name State ------------------------- 1 testvm2 running [root@redhat9 vm-backups]# virsh list --all Id Name State -------------------------- 1 testvm2 running - testvm1 shut off
9.2 La Commande reboot
La commande virsh reboot permet de re-démarrer une VM :
[root@redhat9 vm-backups]# virsh reboot 1 Domain '1' is being rebooted [root@redhat9 vm-backups]# virsh list --all Id Name State -------------------------- 1 testvm2 running - testvm1 shut off
9.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@redhat9 vm-backups]# virsh suspend testvm1 error: Failed to suspend domain 'testvm1' error: Requested operation is not valid: domain is not running [root@redhat9 vm-backups]# virsh start testvm1 Domain 'testvm1' started [root@redhat9 vm-backups]# virsh list --all Id Name State ------------------------- 1 testvm2 running 4 testvm1 running [root@redhat9 vm-backups]# virsh suspend testvm1 Domain 'testvm1' suspended [root@redhat9 vm-backups]# virsh list --all Id Name State ------------------------- 1 testvm2 running 4 testvm1 paused
9.4 La Commande resume
La commande virsh resume permet d'annuler l'effet de la commande virsh suspend :
[root@redhat9 vm-backups]# virsh resume testvm1 Domain 'testvm1' resumed [root@redhat9 vm-backups]# virsh list --all Id Name State ------------------------- 1 testvm2 running 4 testvm1 running
9.5 La Commande dominfo
La commande virsh dominfo permet de consulter les informations relatives à un domaine donné :
[root@redhat9 vm-backups]# virsh dominfo 4 Id: 4 Name: testvm1 UUID: 77bb92d1-83a7-4c01-971c-1eb2f9f41c92 OS Type: hvm State: running CPU(s): 1 CPU time: 29.9s 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:c305,c382 (permissive)
9.6 La Commande autostart
La commande virsh autostart permet de configurer la VM de façon à ce que celle-ci démarre automatiquement :
[root@redhat9 vm-backups]# virsh autostart 77bb92d1-83a7-4c01-971c-1eb2f9f41c92 Domain '77bb92d1-83a7-4c01-971c-1eb2f9f41c92' marked as autostarted [root@redhat9 vm-backups]# virsh dominfo 4 Id: 4 Name: testvm1 UUID: 77bb92d1-83a7-4c01-971c-1eb2f9f41c92 OS Type: hvm State: running CPU(s): 1 CPU time: 30.2s 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:c305,c382 (permissive)
Pour annuler l'effet de la commande précédente, il convient d'utiliser l'option –disable :
[root@redhat9 vm-backups]# virsh autostart --disable 4 Domain '4' unmarked as autostarted [root@redhat9 vm-backups]# virsh dominfo 4 Id: 4 Name: testvm1 UUID: 77bb92d1-83a7-4c01-971c-1eb2f9f41c92 OS Type: hvm State: running CPU(s): 1 CPU time: 30.3s 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:c305,c382 (permissive)
9.7 La Commande domuuid
La commande virsh domuuid permet d'obtenir l'UUID du domaine :
[root@redhat9 vm-backups]# virsh domuuid testvm1 77bb92d1-83a7-4c01-971c-1eb2f9f41c92
9.8 La Commande undefine
La commande virsh undefine permet de supprimer la configuration d'une VM :
[root@redhat9 vm-backups]# virsh undefine 1 Domain '1' has been undefined [root@redhat9 vm-backups]# virsh list --all Id Name State ------------------------- 1 testvm2 running 4 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 mise en mode transient. La suppression effective de la configuration a lieu quand la VM est arrêtée.
9.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@redhat9 vm-backups]# virsh destroy 1 Domain '1' destroyed [root@redhat9 vm-backups]# virsh list --all Id Name State ------------------------- 4 testvm1 running [root@redhat9 vm-backups]# ls -lh /var/lib/libvirt/images/ total 4.2G -rw-------. 1 qemu qemu 5.1G Oct 26 15:01 testvm1-os.qcow2 -rw-------. 1 root root 2.4G Oct 26 15:00 testvm2.qcow2 [root@redhat9 vm-backups]# du -sh /var/lib/libvirt/images/* 1.9G /var/lib/libvirt/images/testvm1-os.qcow2 2.4G /var/lib/libvirt/images/testvm2.qcow2
LAB #10 - Gestion des Ressources
10.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@redhat9 vm-backups]# virsh list --all Id Name State ------------------------- 4 testvm1 running [root@redhat9 vm-backups]# virsh dominfo 4 Id: 4 Name: testvm1 UUID: 77bb92d1-83a7-4c01-971c-1eb2f9f41c92 OS Type: hvm State: running CPU(s): 1 CPU time: 31.3s 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:c305,c382 (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@redhat9 vm-backups]# virsh shutdown 4 Domain '4' is being shutdown
Editez ensuite les valeurs suivantes dans le fichier de configuration en utilisant la commande virsh edit :
[root@centos8 ~]# virsh edit testvm1 ... <currentMemory unit='KiB'>2097152</currentMemory> <vcpu placement='static'>4</vcpu> ...
Lors de votre sauvegarde du fichier, le système vous indiquera que le fichier a été modifié :
[root@redhat9 vm-backups]# 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@redhat9 vm-backups]# virsh start testvm1 Domain 'testvm1' started [root@redhat9 vm-backups]# virsh list --all Id Name State ------------------------- 5 testvm1 running [root@redhat9 vm-backups]# virsh dominfo 5 Id: 5 Name: testvm1 UUID: 77bb92d1-83a7-4c01-971c-1eb2f9f41c92 OS Type: hvm State: running CPU(s): 4 CPU time: 51.7s 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:c149,c153 (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@redhat9 vm-backups]# virsh setmem testvm1 4194304
Vérifiez ensuite la prise en compte de l'augmentation de la mémoire :
[root@redhat9 vm-backups]# virsh dominfo 5 Id: 5 Name: testvm1 UUID: 77bb92d1-83a7-4c01-971c-1eb2f9f41c92 OS Type: hvm State: running CPU(s): 4 CPU time: 53.3s 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:c149,c153 (permissive)
10.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@redhat9 vm-backups]# cd /var/lib/libvirt/images/ [root@redhat9 images]#
Créez un disque d'une taille de 10 Go au format raw :
[root@redhat9 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@redhat9 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@redhat9 images]# virsh console testvm1 Connected to domain 'testvm1' Escape character is ^] (Ctrl + ]) [Enter] testvm1 login: root Mot de passe : Dernière connexion : Sat Oct 26 14:03:04 sur ttyS0 [root@testvm1 ~]#
Contrôlez la présence du disque ajouté :
[root@testvm1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS 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.37.4). 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 0xa45cafa8. 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. [ 296.262232] 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.46.5 (30-Dec-2021) 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=e3c88cb6-a744-440e-bf28-f15d2e9b9760 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 [ 379.363989] EXT4-fs (vdb1): mounted filesystem e3c88cb6-a744-440e-bf28-f15d2e9b9760 r/w with ordered data mode. Quota mode: none. [root@testvm1 ~]# cd /mnt [root@testvm1 mnt]# touch test [root@testvm1 mnt]# ls lost+found test
Détachez-vous de la VM :
[root@testvm1 ~]# [CTRL]+[VER MAJ]+[5] [root@redhat9 images]#
Détachez ensuite le disque vdb de la VM :
[root@redhat9 images]# virsh detach-disk testvm1 vdb Disk detached successfully
Reconnectez-vous à la VM et exécutez la commande lsblk :
[root@redhat9 images]# virsh console testvm1 Connected to domain 'testvm1' Escape character is ^] (Ctrl + ]) [root@testvm1 mnt]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS 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]# mount | grep vdb /dev/vdb1 on /mnt type ext4 (rw,relatime,seclabel) [root@testvm1 mnt]# cd .. [root@testvm1 /]# umount /mnt [root@testvm1 /]# [ 651.428840] EXT4-fs (vdb1): unmounting filesystem e3c88cb6-a744-440e-bf28-f15d2e9b9760. [root@testvm1 ~]# [CTRL]+[VER MAJ]+[5] [root@redhat9 images]#
LAB #11 - Journalisation
11.1 - Le Répertoire /var/log/libvirt/qemu/
Le répertoire /var/log/libvirt/qemu/ contient les journaux des VMs KVM :
[root@redhat9 images]# cd /var/log/libvirt/qemu/ [root@redhat9 qemu]# ls -l total 68 -rw-------. 1 root root 55510 Oct 26 15:06 testvm1.log -rw-------. 1 root root 9786 Oct 26 15:00 testvm2.log [root@redhat9 qemu]# more testvm1.log 2024-10-24 14:01:21.404+0000: starting up libvirt version: 10.0.0, package: 6.7.el9_4 (Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>, 2024-09-12-06:48:10, ), qemu ver sion: 8.2.0qemu-kvm-8.2.0-11.el9_4.6, kernel: 5.14.0-427.37.1.el9_4.x86_64, hostname: redhat9.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 \ /usr/libexec/qemu-kvm \ -name guest=testvm1,debug-threads=on \ -S \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvir t/qemu/domain-1-testvm1/master-key.aes"}' \ -machine pc-q35-rhel9.4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,hpet=off,a cpi=on \ -accel kvm \ -cpu host,migratable=on \ -m size=2097152k \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":2147483648}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --More--(1%)
11.2 - Le Fichier /var/log/messages
Dans le fichier /var/log/messages sont consignés les messages de KVM :
[root@redhat9 qemu]# cat /var/log/messages | grep kvm | more Oct 21 11:55:54 redhat9 kernel: kvm-clock: Using msrs 4b564d01 and 4b564d00 Oct 21 11:55:54 redhat9 kernel: kvm-clock: using sched offset of 7103107620 cycles Oct 21 11:55:54 redhat9 kernel: clocksource: kvm-clock: mask: 0xffffffffffffffff max_c ycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns Oct 21 11:55:54 redhat9 kernel: kvm-guest: KVM setup pv remote TLB flush Oct 21 11:55:54 redhat9 kernel: kvm-guest: setup PV sched yield Oct 21 11:55:54 redhat9 kernel: kvm-guest: PV spinlocks enabled Oct 21 11:55:54 redhat9 kernel: kvm-guest: setup PV IPIs Oct 21 11:55:54 redhat9 kernel: clocksource: Switched to clocksource kvm-clock Oct 21 11:55:54 redhat9 systemd: Detected virtualization kvm. Oct 21 11:56:03 redhat9 systemd: Detected virtualization kvm. Oct 22 11:01:48 redhat9 kernel: kvm-clock: Using msrs 4b564d01 and 4b564d00 Oct 22 11:01:48 redhat9 kernel: kvm-clock: using sched offset of 83160775052787 cycles Oct 22 11:01:48 redhat9 kernel: clocksource: kvm-clock: mask: 0xffffffffffffffff max_c ycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns Oct 22 11:01:48 redhat9 kernel: kvm-guest: KVM setup pv remote TLB flush Oct 22 11:01:48 redhat9 kernel: kvm-guest: setup PV sched yield Oct 22 11:01:48 redhat9 kernel: kvm-guest: PV spinlocks enabled Oct 22 11:01:48 redhat9 kernel: kvm-guest: setup PV IPIs Oct 22 11:01:48 redhat9 kernel: clocksource: Switched to clocksource kvm-clock Oct 22 11:01:48 redhat9 systemd: Detected virtualization kvm. Oct 22 11:01:55 redhat9 systemd: Detected virtualization kvm. Oct 22 15:22:15 redhat9 kernel: kvm-clock: Using msrs 4b564d01 and 4b564d00 --More--
LAB #12 - Gestion de KVM avec Cockpit
12.1 - Installation et Démarrage
Cockpit est la nouvelle interface de gestion du serveur de Red Hat 9. 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@redhat9 qemu]# dnf install cockpit-machines -y
Activez-et démarrez le socket cockpit :
[root@redhat9 qemu]# systemctl start --now cockpit.socket [root@redhat9 qemu]# systemctl status cockpit.socket ● cockpit.socket - Cockpit Web Service Socket Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; disabled; preset: disabl> Active: active (listening) since Sat 2024-10-26 15:26:22 CEST; 16s ago Until: Sat 2024-10-26 15:26:22 CEST; 16s ago Triggers: ● cockpit.service Docs: man:cockpit-ws(8) Listen: [::]:9090 (Stream) Process: 74750 ExecStartPost=/usr/share/cockpit/motd/update-motd localhost (code> Process: 74757 ExecStartPost=/bin/ln -snf active.motd /run/cockpit/motd (code=exi> Tasks: 0 (limit: 48799) Memory: 92.0K CPU: 19ms CGroup: /system.slice/cockpit.socket Oct 26 15:26:22 redhat9.ittraining.loc systemd[1]: Starting Cockpit Web Service Socke> Oct 26 15:26:22 redhat9.ittraining.loc systemd[1]: Listening on Cockpit Web Service S> [root@redhat9 qemu]#
Le cas échéant, ajoutez une règle dans le pare-feu afin de pouvoir utiliser cockpit :
[root@redhat9 qemu]# firewall-cmd --add-service=cockpit --permanent Warning: ALREADY_ENABLED: cockpit success
Ajoutez trainee au group wheel :
[root@redhat9 qemu]# usermod -aG wheel trainee [root@redhat9 qemu]# groups trainee trainee : trainee wheel [root@redhat9 ~]# exit logout [trainee@redhat9 ~]$ groups trainee [trainee@redhat9 ~]$ newgrp trainee [trainee@redhat9 ~]$ groups trainee wheel
12.2 - Connexion à l'Interface
Ouvrez la connexion Debian11_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.101:9090. Cliquez sur le bouton Advanced :
Cliquez sur le bouton Accept the Risk and Continue :
Entrez les coordonnées de connexion trainee / trainee et cliquez sur le bouton Log in :
Cliquez sur le bouton Turn on administrative access :
Entrez le mot de passe trainee et validez :
12.3 - Visualisation de la Configuration de KVM
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 puis sur le lien default :
LAB #13 - Gestion des Machines Virtuelles avec Cockpit
13.1 - 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 :
13.2 - 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,
13.3 - 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.
13.4 - 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 #14 - Création d'une Machine Virtuelle avec Kickstart
14.1 - Créer un fichier Kickstart
Naviguez au site https://access.redhat.com/labsinfo/kickstartconfig :
Cliquez sur le bouton GO TO APPLICATION et connectez-vous avec votre compte Red Hat Developer :
Remplissez le formulaire selon l'exemple qui suit :
Cliquez sur le bouton Show Text :
Téléchargez le fichier kickstart.txt. Renommez ce fichier /root/kickstart.cfg. Votre fichier devrait ressembler à l'exemple qui suit :
lang en_US keyboard --xlayouts='fr' timezone Europe/Paris --utc rootpw $2b$10$bazf6qcwKcbw6mqDcJGaROOkoX3.nRMkEbyyu5OVaWCwNWofqDtju --iscrypted reboot cdrom bootloader --append="rhgb quiet crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M" zerombr clearpart --all --initlabel autopart network --device=enp1s0 --hostname=testvm2.ittraining.loc --bootproto=static --ip=192.168.56.100 --netmask=255.255.255.0 --gateway=192.168.56.1 --nameserver=8.8.8.8 firstboot --disable selinux --enforcing firewall --enabled --http --ssh %post echo "This system was deployed using Kickstart on $(date)" > /etc/motd %end %packages @^minimal-environment @web-server @file-server %end
14.2 - Création d'une VM avec Kickstart
[root@redhat9 ~]# virt-install --name testvm2 --memory=2048 --vcpus=2 --location=/isos/rhel-9.4-x86_64-dvd.iso --disk path=/var/lib/libvirt/images/testvm2-os.qcow2,bus=virtio,size=5 --network bridge=virbr0 --graphics=none --os-variant=rhel9.4 --console pty,target_type=serial --initrd-inject kickstart.cfg --extra-args "inst.ks=file:/kickstart.cfg console=tty0 console=ttyS0,115200n8"
Attendez la fin de l’installation automatique.
LAB #15 - Gestion du Serveur NFS
Présentation
Quand on parle de NFS, on parle d'exportation d'un répertoire sur le serveur afin que celui-ci puisse être vu par des clients sur le réseau. Ces clients peuvent ensuite monter le répertoire et l'utiliser comme si celui-ci faisait partie de son propre filesystem.
Le Network File System (NFS) est le protocole de partage de fichiers historique sur des systèmes Unix. Lors de l'introduction de Samba, NFS a vu sa popularité diminuée, essentiellement parce que la connexion est non-sécurisée :
- le partage ainsi que ses caractéristiques sont configurés par rapport à l'adresse IP du client, or l'IP Spoofing est de plus en plus répandu,
- aucun mot de passe n'est demandé lors de la connexion d'un utilisateur à une ressource car le serveur NFS présume que l'utilisateur jean distant est le même utilisateur du compte jean sur le serveur NFS.
Cependant l'arrivée sur le marché de serveurs NAS domestiques ainsi que l'utilisation de la virtualisation dans le milieu professionnel fait que NFS connait un regain d'intérêt en tant que stockage mutualisé raid, simple à mettre en œuvre.
Il existe actuellement 3 versions de NFS :
Version | Protocole Utilisé | Dépendance |
---|---|---|
NFSv2 | TCP et UDP | portmap |
NFSv3 | TCP et UDP | portmap |
NFSv4 | TCP | Aucune - les fonctions de portmap sont incluses dans NFSv4 |
La version utilisée par défaut sous CentOS/Redhat est NFSv3.
Les Services et Processus du Serveur NFSv3
La version NFSv3 utilise les services suivants :
Services | Fonction |
---|---|
nfs | Démarre le service NFS ainsi que les processus RPC pour recevoir et traiter les demandes des clients |
nfslock | Démarre les processus RPC qui permettent aux clients de verrouiller les fichiers sur le serveur |
portmap | Gestion des réservations des ports pour les services RPC locaux afin que les services RPC distants puissent se connecter |
Les Services RPC
Les services RPC ( Remote Procedure Calls ou appel de procédures distantes ) ont été inventé par SUN Microsystem pour faciliter le travail des développeurs de pous des échanges entre mchines distantes. Les RPC s'appuient sur des numéros de programmes.
Lorsque le client veut faire une requête à un service RPC, il contacte en premier lieu le service rpcbind qui assigne un numéro de port au délà du numéro 32768 à un numéro de programme RPC.
Options d'un Partage NFS
Certaines options, appliquées à un partage, modifient le comportement du serveur NFS pour le partage concerné lors de son démarrage :
Option | Comportement |
---|---|
ro | Accès en lecture seule |
rw | Accès en lecture / écriture |
sync | Ecriture synchrone ( écriture immédiate sur disque ) |
async | Ecriture asynchrone ( écriture sur disque en utilisant une cache ) |
root_squash | Root perd ses prérogatives sur le partage concerné |
no_root_squash | Root garde ses prérogatives sur le partage concerné |
no_lock | Pas de verrous sur les fichiers accédés |
all_squash | Force la mapping de tous les utilisateurs vers l'utilisateur nobody |
anonuid | Fixe l'UID de l'utilisateur anonyme |
anongid | Fixe le GID de l'utilisateur anonyme |
Important : Si plusieurs options sont spécifiées, celles-ci doivent être séparées par des virgules.
Commandes de Base
Plusieurs commandes permettent de gérer et de s'informer sur l'activité du serveur NFS :
Commande | Comportement |
---|---|
exportfs | Affiche les partages actifs sur le serveur courant |
nfsstat | Affiche les statistiques de l'activité NFS |
rpcinfo | Affiche les démons gérés en effectuant une requête RPC sur le serveur courant |
showmount | Affiche les partages actifs sur un serveur distant |
mount | Permet de monter un partage distant sur un répertoire local |
Installation
Installez le serveur et le client NFS en utilisant apt-get :
root@debian8:~# apt-get install nfs-kernel-server nfs-common Reading package lists... Done Building dependency tree Reading state information... Done nfs-common is already the newest version. The following NEW packages will be installed: nfs-kernel-server 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 115 kB of archives. After this operation, 515 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://ftp.fr.debian.org/debian/ jessie/main nfs-kernel-server amd64 1:1.2.8-9 [115 kB] Fetched 115 kB in 0s (318 kB/s) Selecting previously unselected package nfs-kernel-server. (Reading database ... 82450 files and directories currently installed.) Preparing to unpack .../nfs-kernel-server_1%3a1.2.8-9_amd64.deb ... Unpacking nfs-kernel-server (1:1.2.8-9) ... Processing triggers for man-db (2.7.0.2-5) ... Processing triggers for systemd (215-17+deb8u4) ... Setting up nfs-kernel-server (1:1.2.8-9) ... Creating config file /etc/exports with new version Creating config file /etc/default/nfs-kernel-server with new version Processing triggers for systemd (215-17+deb8u4) ...
Mise en Place
Configuration du Serveur
Important : Arrêtez votre VM. Dans la fenêtre de Oracle VM VirtualBox, cliquez sur Fichier > Paramètres > Réseau et créez un réseau NAT appelé NatNetwork. Dans les paramètres de votre VM, cliquez sur Réseau et configurez la Carte 2 en Réseau NAT dans le réseau NatNetwork. Démarrez votre VM.
Configurez votre interface réseau #2 (eth1) :
root@debian8:~# nmcli connection add con-name ip_fixe ifname eth1 type ethernet ip4 10.0.2.16/24 gw4 10.0.2.2 Connection 'ip_fixe' (d61c409c-d334-44db-a2fd-a7456562e63a) successfully added. root@debian8:~# nmcli connection mod ip_fixe ipv4.dns 8.8.8.8 root@debian8:~# nmcli connection up ip_fixe Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2) root@debian8:~# nmcli c show NAME UUID TYPE DEVICE eth1 e9fe77dc-2750-47ba-a3ef-50a8c5c8e22a 802-3-ethernet -- eth0 02dd6b3d-097b-4243-8f86-eeb71ff27736 802-3-ethernet eth0 Ifupdown (eth0) 681b428f-beaf-8932-dce4-687ed5bae28e 802-3-ethernet -- ip_fixe d61c409c-d334-44db-a2fd-a7456562e63a 802-3-ethernet eth1 root@debian8:~# systemctl restart NetworkManager.service root@debian8:~# nmcli c show NAME UUID TYPE DEVICE eth0 e7181c1d-73c3-4c7e-89f2-7902c130ec9e 802-3-ethernet eth0 ip_fixe d61c409c-d334-44db-a2fd-a7456562e63a 802-3-ethernet -- Ifupdown (eth0) 681b428f-beaf-8932-dce4-687ed5bae28e 802-3-ethernet -- eth1 d33363de-a915-4030-8cea-0d64997ae669 802-3-ethernet eth1
Ajoutez une autre adresse IP pour le NFS :
root@debian8:~# nmcli connection mod ip_fixe +ipv4.addresses 192.168.1.2/24
Continuez maintenant par la mise en place du service nfs :
root@debian8:~# systemctl enable nfs-kernel-server Synchronizing state for nfs-kernel-server.service with sysvinit using update-rc.d... Executing /usr/sbin/update-rc.d nfs-kernel-server defaults Executing /usr/sbin/update-rc.d nfs-kernel-server enable
La mise en place d'un partage ponctuel se fait en utilisant la commande exportfs en indiquant en argument le répertoire sous la forme de adresse_ip_du_serveur:chemin_du_partage :
root@debian8:~# exportfs root@debian8:~# exportfs 192.168.1.1:/home/trainee root@debian8:~# exportfs /home/trainee 192.168.1.1
Afin de mettre en place un ou des partages permanents, il est nécessaire d'éditer le fichier /etc/exports :
root@debian8:~# vi /etc/exports root@debian8:~# cat /etc/exports # /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) # /home/trainee 192.168.1.1 /tmp *(fsid=0)
Important : Dans ce cas, nous avons partagé le répertoire /home/trainee pour la seule adresse IP 192.168.1.1.
Démarrez maintenant le service nfs afin que le fichier /etc/exports soit re-lu :
root@debian8:~# systemctl reload nfs-kernel-server root@debian8:~# systemctl start nfs-kernel-server root@debian8:~# systemctl status nfs-kernel-server ● nfs-kernel-server.service - LSB: Kernel NFS server support Loaded: loaded (/etc/init.d/nfs-kernel-server) Active: active (exited) since Thu 2018-03-22 10:04:01 GMT; 22min ago Process: 10475 ExecReload=/etc/init.d/nfs-kernel-server reload (code=exited, status=0/SUCCESS) Mar 22 10:04:01 debian8 nfs-kernel-server[506]: Not starting NFS kernel daemon: no exports. ... (warning). Mar 22 10:25:59 debian8 nfs-kernel-server[10475]: Re-exporting directories for NFS kernel daemon...exportfs: No options for /home/t...warning Mar 22 10:25:59 debian8 nfs-kernel-server[10475]: exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specifi...ainee". Mar 22 10:25:59 debian8 nfs-kernel-server[10475]: Assuming default behaviour ('no_subtree_check'). Mar 22 10:25:59 debian8 nfs-kernel-server[10475]: NOTE: this default has changed since nfs-utils version 1.0.x Mar 22 10:25:59 debian8 nfs-kernel-server[10475]: exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specifi...:/tmp". Mar 22 10:25:59 debian8 nfs-kernel-server[10475]: Assuming default behaviour ('no_subtree_check'). Mar 22 10:25:59 debian8 nfs-kernel-server[10475]: NOTE: this default has changed since nfs-utils version 1.0.x Mar 22 10:25:59 debian8 nfs-kernel-server[10475]: . Hint: Some lines were ellipsized, use -l to show in full.
Puisque aucune option ne soit spécifiée pour les montages, ceux-ci ont été exportés avec des option par défaut. En utilisant l'option -v de la commande exportfs, il est possible de consulter ces options :
root@debian8:~# exportfs -v /home/trainee 192.168.1.1(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,root_squash,no_all_squash) /tmp <world>(ro,wdelay,root_squash,no_subtree_check,fsid=0,sec=sys,ro,root_squash,no_all_squash)
Configuration du Client
Important : Arrêtez votre VM. Créez une clône de votre VM. Démarrez la VM clonée.
Re-configurez ensuite l'interface réseau de votre VM Client :
root@debian8:~# nmcli connection del ip_fixe root@debian8:~# nmcli connection show ip_fixe Error: ip_fixe - no such connection profile. root@debian8:~# nmcli connection add con-name ip_fixe ifname eth1 type ethernet ip4 10.0.2.17/24 gw4 10.0.2.2 Connection 'ip_fixe' (5f81cfd6-9ccb-4828-a9ff-aa610719de31) successfully added. root@debian8:~# nmcli connection mod ip_fixe ipv4.dns 8.8.8.8 root@debian8:~# nmcli connection mod ip_fixe +ipv4.addresses 192.168.1.1/24 root@debian8:~# nmcli connection up ip_fixe Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) root@debian8:~# systemctl restart NetworkManager.service
Important : Démarrez la VM d'origine.
A partir de votre client, consultez les répertoire exportés du serveur :
root@debian8:~# showmount --exports 192.168.1.2 Export list for 192.168.1.2: /tmp * /home/trainee 192.168.1.1
Créez maintenant le répertoire /nfs dans le client et montez le partage 192.168.1.2:/home/trainee :
root@debian8:~# mkdir /nfs root@debian8:~# mount -t nfs 192.168.1.2:/home/trainee /nfs
Surveillance du Serveur
La Commande rpcinfo
La commande rpcinfo permet de faire une requête RPC sur le serveur et de voir les démons gérés :
root@debian8:/# rpcinfo program version netid address service owner 100000 4 tcp6 ::.0.111 portmapper superuser 100000 3 tcp6 ::.0.111 portmapper superuser 100000 4 udp6 ::.0.111 portmapper superuser 100000 3 udp6 ::.0.111 portmapper superuser 100000 4 tcp 0.0.0.0.0.111 portmapper superuser 100000 3 tcp 0.0.0.0.0.111 portmapper superuser 100000 2 tcp 0.0.0.0.0.111 portmapper superuser 100000 4 udp 0.0.0.0.0.111 portmapper superuser 100000 3 udp 0.0.0.0.0.111 portmapper superuser 100000 2 udp 0.0.0.0.0.111 portmapper superuser 100000 4 local /run/rpcbind.sock portmapper superuser 100000 3 local /run/rpcbind.sock portmapper superuser 100024 1 udp 0.0.0.0.203.188 status 107 100024 1 tcp 0.0.0.0.148.150 status 107 100024 1 udp6 ::.169.248 status 107 100024 1 tcp6 ::.161.44 status 107 100003 2 tcp 0.0.0.0.8.1 nfs superuser 100003 3 tcp 0.0.0.0.8.1 nfs superuser 100003 4 tcp 0.0.0.0.8.1 nfs superuser 100227 2 tcp 0.0.0.0.8.1 - superuser 100227 3 tcp 0.0.0.0.8.1 - superuser 100003 2 udp 0.0.0.0.8.1 nfs superuser 100003 3 udp 0.0.0.0.8.1 nfs superuser 100003 4 udp 0.0.0.0.8.1 nfs superuser 100227 2 udp 0.0.0.0.8.1 - superuser 100227 3 udp 0.0.0.0.8.1 - superuser 100003 2 tcp6 ::.8.1 nfs superuser 100003 3 tcp6 ::.8.1 nfs superuser 100003 4 tcp6 ::.8.1 nfs superuser 100227 2 tcp6 ::.8.1 - superuser 100227 3 tcp6 ::.8.1 - superuser 100003 2 udp6 ::.8.1 nfs superuser 100003 3 udp6 ::.8.1 nfs superuser 100003 4 udp6 ::.8.1 nfs superuser 100227 2 udp6 ::.8.1 - superuser 100227 3 udp6 ::.8.1 - superuser 100021 1 udp 0.0.0.0.209.119 nlockmgr superuser 100021 3 udp 0.0.0.0.209.119 nlockmgr superuser 100021 4 udp 0.0.0.0.209.119 nlockmgr superuser 100021 1 tcp 0.0.0.0.197.239 nlockmgr superuser 100021 3 tcp 0.0.0.0.197.239 nlockmgr superuser 100021 4 tcp 0.0.0.0.197.239 nlockmgr superuser 100021 1 udp6 ::.207.89 nlockmgr superuser 100021 3 udp6 ::.207.89 nlockmgr superuser 100021 4 udp6 ::.207.89 nlockmgr superuser 100021 1 tcp6 ::.237.162 nlockmgr superuser 100021 3 tcp6 ::.237.162 nlockmgr superuser 100021 4 tcp6 ::.237.162 nlockmgr superuser 100005 1 udp 0.0.0.0.227.242 mountd superuser 100005 1 tcp 0.0.0.0.225.144 mountd superuser 100005 1 udp6 ::.154.158 mountd superuser 100005 1 tcp6 ::.215.191 mountd superuser 100005 2 udp 0.0.0.0.185.106 mountd superuser 100005 2 tcp 0.0.0.0.212.122 mountd superuser 100005 2 udp6 ::.136.22 mountd superuser 100005 2 tcp6 ::.193.198 mountd superuser 100005 3 udp 0.0.0.0.133.232 mountd superuser 100005 3 tcp 0.0.0.0.232.4 mountd superuser 100005 3 udp6 ::.193.195 mountd superuser 100005 3 tcp6 ::.198.65 mountd superuser
La Commande nfsstat
La Commande nfsstat permet de vérifier l'activité sur le serveur NFS :
root@debian8:/# nfsstat Server rpc stats: calls badcalls badclnt badauth xdrcall 0 0 0 0 0 Client rpc stats: calls retrans authrefrsh 77 0 77 Client nfs v3: null getattr setattr lookup access readlink 0 0% 10 27% 0 0% 2 5% 8 22% 0 0% read write create mkdir symlink mknod 0 0% 0 0% 1 2% 0 0% 0 0% 0 0% remove rmdir rename link readdir readdirplus 0 0% 0 0% 0 0% 0 0% 0 0% 6 16% fsstat fsinfo pathconf commit 0 0% 6 16% 3 8% 0 0% Client nfs v4: null read write commit open open_conf 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% open_noat open_dgrd close setattr fsinfo renew 0 0% 0 0% 0 0% 0 0% 6 16% 0 0% setclntid confirm lock lockt locku access 3 8% 3 8% 0 0% 0 0% 0 0% 3 8% getattr lookup lookup_root remove rename link 3 8% 3 8% 3 8% 0 0% 0 0% 0 0% symlink create pathconf statfs readlink readdir 0 0% 0 0% 3 8% 0 0% 0 0% 0 0% server_caps delegreturn getacl setacl fs_locations rel_lkowner 9 25% 0 0% 0 0% 0 0% 0 0% 0 0% secinfo exchange_id create_ses destroy_ses sequence get_lease_t 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% reclaim_comp layoutget getdevinfo layoutcommit layoutreturn getdevlist 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% (null) 0 0%
Copyright © 2024 Hugh Norris