| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| utilisation_de_kvm_virtualiser_systemes [2020/09/28 23:12] – [Création d'une machine virtuelle] superadmin | utilisation_de_kvm_virtualiser_systemes [2022/04/11 16:34] (Version actuelle) – modification externe 127.0.0.1 |
|---|
| <code>apt-get install qemu-system libvirt-clients libvirt-daemon-system virt-manager virt-viewer</code> | <code>apt-get install qemu-system libvirt-clients libvirt-daemon-system virt-manager virt-viewer</code> |
| |
| Et ajouter les futurs utilisateurs de KVM au groupe ''libvirt'' (remplacer //admlnx// par l'utilisateur à ajouter au groupe) : | Et ajouter les futurs utilisateurs de KVM au groupe ''libvirt'' (remplacer //admlnx// par un utilisateur à ajouter au groupe) : |
| |
| <code>adduser admlnx libvirt</code> | <code>adduser admlnx libvirt</code> |
| ===== Prise en main de KVM ===== | ===== Prise en main de KVM ===== |
| |
| KVM s'administre avec l'utilitaire ''virsh''. C'est lui qui permettra la gestion des machines virtuelles. On peut aussi se servir de ''virt-viewer'' comme interface graphique mais elle n'est pas aussi complète. Les machines virtuelles dans KVM sont appelées "Domaines". | KVM s'administre avec l'utilitaire ''virsh''. C'est lui qui permettra la gestion des machines virtuelles. On peut aussi se servir de ''virt-manager'' comme interface graphique mais elle n'est pas aussi complète. Les machines virtuelles dans KVM sont appelées "Domaines". |
| |
| Tout d'abord, on peut vérifier la configuration matérielle de l'hyperviseur (processeur & mémoire), avec : | Tout d'abord, on peut vérifier la configuration matérielle de l'hyperviseur (processeur & mémoire), avec : |
| Lorsque l'on souhaite créer un nouveau domaine dans KVM, on utilise le script ''virt-install''. Pour cela, il faut générer un fichier de configuration décrivant la machine virtuelle à générer avec différents paramètres (hardware, disque de boot...). | Lorsque l'on souhaite créer un nouveau domaine dans KVM, on utilise le script ''virt-install''. Pour cela, il faut générer un fichier de configuration décrivant la machine virtuelle à générer avec différents paramètres (hardware, disque de boot...). |
| |
| Par exemple, la commande suivante permet de générer un domaine qui sera nommé "Win10" de type Windows 10, avec un disque dur virtuel de 40Gb et 4096Mb de mémoire, ainsi qu'avec le fichier ''/home/admlnx/ISO/Win10.iso'' en tant que CD-ROM. | Par exemple, la commande suivante permet de générer un domaine qui sera nommé "Win10" de type Windows 10, avec un disque dur virtuel de 40Gb, 4096Mb de mémoire, 1 CPU virtuel, ainsi qu'avec le fichier ''/home/admlnx/ISO/Win10.iso'' en tant que CD-ROM. |
| |
| <code>virt-install --virt-type kvm --name Win10 \ | <code>virt-install --virt-type kvm --name Win10 \ |
| | --description "VM de Test" \ |
| --cdrom "/home/admlnx/ISO/Win10.iso" \ | --cdrom "/home/admlnx/ISO/Win10.iso" \ |
| --os-variant win10 \ | --os-variant win10 \ |
| --disk size=40 --memory 4096</code> | --disk size=40 --memory 4096 --vcpu 1</code> |
| |
| A la place de ''--cdrom'', on peut demander à KVM de télécharger directement le disque sur lequel le système devra démarrer depuis Internet : | A la place de ''- -cdrom'', on peut demander à KVM de télécharger directement le disque sur lequel le système devra démarrer depuis Internet : |
| |
| <code>--location http://deb.debian.org/debian/dists/buster/main/installer-amd64/ \</code> | <code>--location http://deb.debian.org/debian/dists/buster/main/installer-amd64/ \</code> |
| |
| --On peut aussi désactiver l'interface graphique d'un domaine en précisant un terminal qui lui sera associé avec les options suivantes (pratique si on a aucune interface graphique sur l'hyperviseur ou pour les VM Linux) : -- | On peut aussi désactiver l'interface graphique d'un domaine en précisant une console texte qui lui sera associée (pratique si on a aucune interface graphique sur l'hyperviseur ou pour les VM Linux). Il faudra obligatoirement utiliser l'option ''- - location'' à la place de ''- -cdrom'' et préciser la console série virtuelle à utiliser : |
| |
| <code>--graphics none \ | <code>virt-install --virt-type kvm --name Debian10 \ |
| --console pty,target_type=serial \ | --location "/home/admlnx/ISO/deb10.iso" \ |
| --extra-args "console=ttyS0"</code> | --os-variant debian10 \ |
| | --disk size=10 --memory 1024 \ |
| | --graphics none \ |
| | --extra-args console=ttyS0</code> |
| |
| --Ci-dessus, on demande à KVM de lier la VM au terminal série ''ttyS0'' sur la machine physique. Le paquet ''screen'' permet de se connecter au terminal série voulu avec la commande :-- | Ci-dessus, on demande à KVM de lier la VM au terminal série ''ttyS0'' sur la machine physique. Au premier lancement de la VM la console devrait s'ouvrir, pour la fermer faîtes ''CTRL+]'' (//^]//). Pour se reconnecter à la console de la VM, on utilise la commande ''virsh console //X//'' où //X// correspond à un numéro de console, par défaut 1 pour la première. |
| |
| <code>screen /dev/ttyS0</code> | :!: Via SSH il est possible que le combo de touches ''CTRL+]'' ne fonctionne pas. Il faut donc fermer la connexion puis la réouvrir pour revenir au shell de l'hyperviseur. |
| |
| | <code>virsh console 1</code> |
| |
| | Ce qui permet d'afficher la console de ma VM debian, pour effectuer l'installation du système : |
| |
| | {{ ::2020-09-28_23_22_59-debian_kvm_-_vmware_workstation.png?700 |Installation de debian}} |
| ===== Configuration du réseau pour les VM ===== | ===== Configuration du réseau pour les VM ===== |
| |
| Activer les fonctions réseau par défaut pour les domaines KVM avec : | Tout d'abord, il faut commencer par activer les fonctions réseau par défaut pour les domaines KVM : |
| |
| <code>virsh net-start default</code> | <code>virsh net-start default</code> |
| |
| Pour que cela démarre tout seul au lancement de KVM, faire ceci : | Pour que cela démarre tout seul au lancement de KVM, il suffit de faire ceci : |
| |
| <code>virsh net-autostart default</code> | <code>virsh net-autostart default</code> |
| | |
| | Par défaut le réseau des VM est natté, c'est à dire qu'une adresse IP hors réseau local est attribuée par KVM aux domaines et qu'une translation d'adresse opère sur l'hyperviseur pour connecter les VM à Internet. Mais le mieux est d'utiliser la méthode d'accès par pont, qui permet de connecter directement les domaines au réseau local de l'hyperviseur. |
| | |
| | Pour passer un domaine en "Accès par pont", il faut d'abord créer un pont avec la carte réseau physique de l'hyperviseur. Ensuite on modifiera la configuration de la VM afin de lui indiquer la méthode d'accès au réseau à utiliser. On aura besoin pour cette manipulation du paquet ''bridge-utils''. |
| | |
| | Déja, créer le pont et y ajouter l'interface physique que l'on souhaite utiliser : |
| | |
| | <code>brctl addbr br0 |
| | brctl addif br0 ens33</code> |
| | |
| | Ci-dessus, //br0// est le nom du pont créé et //ens33// celui de la carte réseau physique de l'hyperviseur. |
| | |
| | Une fois le pont créé, il faut aller dans la configuration réseau de l'hyperviseur et le paramétrer comme une carte réseau normale (avec une IP dynamique ou non) : |
| | |
| | {{ ::2020-09-29_10_51_45-debian_kvm_-_vmware_workstation.png?300 |Configuration réseau du pont}} |
| | |
| | Puis on relance le service réseau de la machine hôte : |
| | |
| | <code>service networking restart</code> |
| | |
| | Et on modifie alors la configuration du domaine que l'on souhaite "ponter" comme ceci : |
| | |
| | <code>virsh edit debian10 </code> |
| | |
| | :!: La commande ci-dessus permet de modifier le fichier de configuration d'une VM, où //debian10// est à remplacer par le nom de la VM à configurer. Au premier lancement de la commande, il se peut qu'il soit nécessaire de sélectionner un éditeur de texte, dans le cas où plusieurs seraient installés sur l'hôte. |
| | |
| | :!: S'assurer que le domaine en cours de réglage est arrêté, avant de modifier son fichier de configuration, c'est mieux ! |
| | |
| | Dans le fichier de configuration, trouver la partie "réseau" qui doit commencer par //<interface type='network'>// par défaut. |
| | |
| | Remplacer ''type='network' '' par ''type='bridge' '' et ''<source network='default'>'' par ''<source bridge='//br0//'>'' comme ceci : |
| | |
| | {{ ::2020-09-25_18_37_36-debian_kvm_-_vmware_workstation.png?600 |Configuration du domaine pour l'accès au réseau local par le pont br0}} |
| | |
| | Enfin enregistrer et démarrer le domaine concerné afin de vérifier si cela fonctionne avec ''ip a'' : |
| | |
| | {{ ::2020-09-29_11_05_36-debian_kvm_-_vmware_workstation.png?750 |Accès par pont fonctionnel}} |
| | |
| | On constate sur l'exemple au dessus que la VM a pris l'adresse IP //192.168.1.64// sur le même réseau que l'hyperviseur (//192.168.1.60//) à la place de l'adresse //192.168.122.X// attribuée par l'hyperviseur lui-même. C'est fonctionnel ! |
| | |
| | ===== Ajout d'un disque virtuel à un domaine ===== |
| | |
| | |
| | |
| | |
| | |
| | |
| |
| |