logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
atelier:chantier:virtualisation-avec-libvirt [08/05/2020 16:49]
framend [Création du bridge réseau]
atelier:chantier:virtualisation-avec-libvirt [22/05/2023 21:50] (Version actuelle)
lagrenouille [Virtualisation avec qemu/KVM et libvirt]
Ligne 2: Ligne 2:
  
   * Objet : Création de machines virtuelles avec libvirt (qemu/kvm) en mode bridge   * Objet : Création de machines virtuelles avec libvirt (qemu/kvm) en mode bridge
-  * Niveau requis : {{{tag> avisé}}+  * Niveau requis : {{tag>débutant ​avisé}}
   * Commentaires : La virtu c'est cool, sans interface graphique encore plus…   * Commentaires : La virtu c'est cool, sans interface graphique encore plus…
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>en-chantier}}+  * Suivi : {{tag>à-placer}}
     * Création par [[user>​framend]] 08/05/2020     * Création par [[user>​framend]] 08/05/2020
     * Testé par <...> le <...>     * Testé par <...> le <...>
Ligne 19: Ligne 19:
 Voici donc une méthode utilisant l'​hyperviseur KVM/qemu. J'ai choisi la techno libvirt/​KVM,​ pour son coté «full-virtualization» apportant, en principe, de meilleures performances. Voici donc une méthode utilisant l'​hyperviseur KVM/qemu. J'ai choisi la techno libvirt/​KVM,​ pour son coté «full-virtualization» apportant, en principe, de meilleures performances.
  
-En effet, lorsqu'​un CPU emule un CPU virtuel (vCPU) l'​hyperviseur doit «traduire » les instructions de l'un vers l'​autre. Ce qui implique un impact conséquent en terme de performances. Pour éviter ceci les technologies du type Intel VT-x et AMD-V permettent un transfert plus direct des instructions. Ce qui signifie que les instructions données au vCPU peuvent-être directement exécutés sur une partie du CPU physique.+En effet, lorsqu'​un CPU emule un CPU virtuel (vCPU) l'​hyperviseur doit «traduire» ​les instructions de l'un vers l'​autre. Ce qui implique un impact conséquent en terme de performances. Pour éviter ceci les technologies du type Intel VT-x et AMD-V permettent un transfert plus direct des instructions. Ce qui signifie que les instructions données au vCPU peuvent-être directement exécutés ​directement ​sur une partie du CPU physique.
  
-Je considère ​donc qemu comme l'​hyperviseur des machines virtuelles, KVM comme un agent accélérateur d'​instructions et libvirt (et tous ses composants),​ comme un gestionnaire de VM.+Considérons ​donc ici qemu comme l'​hyperviseur des machines virtuelles, KVM comme un agent accélérateur d'​instructions et libvirt (et tous ses composants),​ comme un gestionnaire de VM.
  
 Il faut, avant toute installation vérifier que le CPU de la machine hôte supporte la virtualisation. Il faut, avant toute installation vérifier que le CPU de la machine hôte supporte la virtualisation.
Ligne 29: Ligne 29:
 ===== Installation ===== ===== Installation =====
 Pour installer le minimum requis de dépendances:​ Pour installer le minimum requis de dépendances:​
-<code root>apt install --no-install-recommends ​qemu-kvm ​libvirt-clients libvirt-daemon-system ​bridge-utils ​virtinst dnsmasq</​code>​+<code root>apt install --no-install-recommends libvirt-clients libvirt-daemon bridge-utils ​virt-manager</​code>​
  
 Puis vérifier l'​état du système libvirtd (le daemon de libvirt): Puis vérifier l'​état du système libvirtd (le daemon de libvirt):
Ligne 49: Ligne 49:
 À partir de là le démon libvirtd est bien lancé. À partir de là le démon libvirtd est bien lancé.
  
-===== Préparation du profil réseau ​===== +===== Création des utilisateurs ​===== 
-Pour pouvoir utiliser des VM via virsh (l'​outil en ligne de commande permettant la gestion de libvirt) en user non privilégié (pas root, donc) il va falloir ajouter cet user dans les groupes libvirt ​et libvirt-qemu.+Pour pouvoir utiliser des VM via virsh (l'​outil en ligne de commande permettant la gestion de libvirt) en user non privilégié (pas root, donc) il va falloir ajouter cet user dans les groupes libvirt. Il n’est pas nécessaire d’ajouter l’utilisateur au groupe ​libvirt-qemu, seul l’utilisateur libvirt-qemu a besoin d’y être (ce qui est fait à l’installation).
  
-<code root>​adduser <​nom_d'​user>​ libvirt +<code root>​adduser <​nom_d'​user>​ libvirt</​code>​
-adduser <​nom_d'​user>​ libvirt-qemu</​code>​+
  
-Puisajouter le groupe au groupset de l'​utilisateur:​ +Une fois cela réalisési vous souhaitez pouvoir créer et gérer des VM en simple ​user, il est nécessaire d’éditer le fichier /etc/libvirt/libvirtd.conf 
-<code root>​newgrp <userlibvirt +et de décommenter la ligne suivante:
-newgrp <​user>​ libvirt-qemu<​/code>+
  
-Il va maintenant s'agir de lancer le profil réseau de libvirt. Pour des VM créées en user non privilégié,​ il faudra utiliser sudo, sinon passer root via:<​code>​su -l</​code>​. +<file config /​etc/​libvirt/​libvirtd.conf>​ 
-Libvirt utilise un profil déja enregistré sous le nom de « default». On va donc le lancer et le passer en auto-start afin d'​éviter d'​avoir à le faire à chaque utilisation:​+unix_sock_group = "​libvirt"​ 
 +</​file>​ 
 + 
 +===== Préparation du profil réseau ===== 
 +Il va maintenant s'agir de lancer le profil réseau de libvirt. Pour des VM créées en user non privilégié,​ il faudra utiliser sudo, sinon passer root via:<​code ​user>su -l</​code>​. 
 +Libvirt utilise un profil déja enregistré sous le nom de «default». On va donc le lancer et le passer en auto-start afin d'​éviter d'​avoir à le faire à chaque utilisation:​
 <code user>​sudo virsh net-start default <code user>​sudo virsh net-start default
 sudo virsh net-autostart default sudo virsh net-autostart default
 </​code>​ </​code>​
 <note warning>​Attention:​ Avant d'​éditer un profil réseau il est impératif de le stopper!</​note>​ <note warning>​Attention:​ Avant d'​éditer un profil réseau il est impératif de le stopper!</​note>​
-En cas de besoin, vous pouvez stopper le profil réseau via: +Vous pouvez stopper le profil réseau via: 
-<code user>​sudo virsh net-destroy ​default</​code>​+<code user>​sudo virsh net-stop default</​code>​
 La liste des profil réseau existants s'​obtient via: La liste des profil réseau existants s'​obtient via:
 <code user>​sudo virsh net-list --all</​code>​ <code user>​sudo virsh net-list --all</​code>​
Ligne 80: Ligne 83:
 Plusieurs possiblités,​ via network-manager ou via le fichier /​etc/​network/​interfaces. Plusieurs possiblités,​ via network-manager ou via le fichier /​etc/​network/​interfaces.
  
-Ici, j'ai éliminé l'​usage de network-manager que je n'​utilise que sur des machines disposants d'une connection wifi. Un tuto sur son usage est cependant disponible ici: https://​debian-facile.org/​doc:​reseau:​network-manager+Ici, j'ai éliminé l'​usage de network-manager que je n'​utilise que sur des machines disposants d'une connection wifi. Un tuto sur son usage est cependant disponible ici:   
 +  * https://​debian-facile.org/​doc:​reseau:​network-manager
  
 Donc, pour un bridge réseau, éditer le fichier /​etc/​network/​interfaces de la manière suivante, en remplaçant évidemment le nom des interfaces par les votres: Donc, pour un bridge réseau, éditer le fichier /​etc/​network/​interfaces de la manière suivante, en remplaçant évidemment le nom des interfaces par les votres:
Ligne 113: Ligne 117:
 Doit renvoyer quelque chose de cet ordre: Doit renvoyer quelque chose de cet ordre:
 <file > <file >
 +[…]
 2: enp0s7: <​BROADCAST,​MULTICAST,​UP,​LOWER_UP>​ mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000 2: enp0s7: <​BROADCAST,​MULTICAST,​UP,​LOWER_UP>​ mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
     link/ether 00:​1c:​25:​02:​43:​50 brd ff:​ff:​ff:​ff:​ff:​ff     link/ether 00:​1c:​25:​02:​43:​50 brd ff:​ff:​ff:​ff:​ff:​ff
Ligne 128: Ligne 133:
  
 ===== Installation de la machine virtuelle ===== ===== Installation de la machine virtuelle =====
-Je préfére mettre les images des machines virtuelles dans un repertoire que je maitrise ​plutôt que l'​espace de stockage par default ​alloué par libvirt. Donc il faut les créer:<​code user>​mkdir -p $HOME/​Virtu/​vm</​code>​ +Je préfére mettre les images des machines virtuelles dans un repertoire que je choisis ​plutôt que l'​espace de stockage par defaut ​alloué par libvirt. Donc il faut les créer:<​code user>​mkdir -p $HOME/​Virtu/​vm</​code>​ 
-Ou tout autre chemin que vous souhaitez. +Ou tout autre chemin que vous souhaitez… 
-Une dernière étape avant l'​installation proprement dite de la VM est de mettre un bit setuid sur un script de qemu dans /​usr/​lib/​qemu/​qemu-bridge-helper:​+ 
 +Une dernière étape avant l'​installation proprement dite de la VM est de mettre un bit setuid sur un script de qemu dans /​usr/​lib/​qemu/​qemu-bridge-helper. Il s'agit de bits de contrôle d'​accès appliqués aux fichiers et répertoires d'un système d'​exploitation UNIX. Grâce à eux, un processus exécutant un tel fichier peut s'​exécuter au nom d'un autre utilisateur (wikipedia). En d'​autres terme elle permet la création et l'​administration de machines virtuelles par un user non-privilégié:
 <code root>​chmod u+s /​usr/​lib/​qemu/​qemu-bridge-helper</​code>​ <code root>​chmod u+s /​usr/​lib/​qemu/​qemu-bridge-helper</​code>​
-Ne reste plus qu'a installer la VM proprement dite. En l'​occurence je prends l'​exemple d'un guest (la VM) Debian buster auquel j'​alloue ​10Go d'​espcace disque, 1Go de RAM et un seul vCPU. Remplacez évidemment <​nom_VM>​ par le nom que vous souhaitez lui donner.+Ne reste plus qu'a installer la VM proprement dite. En l'​occurence je prends l'​exemple d'un guest (la VM) Debian buster auquel j'​alloue ​50Go d'​espcace disque, 1Go de RAM et un seul vCPU. Remplacez évidemment <​nom_VM>​ par le nom que vous souhaitez lui donner.
 <code user> <code user>
 virt-install \ virt-install \
Ligne 144: Ligne 150:
 --extra-args '​console=ttyS0,​115200n8 serial'​ \ --extra-args '​console=ttyS0,​115200n8 serial'​ \
 --location http://​deb.debian.org/​debian/​dists/​stable/​main/​installer-amd64/​ \ --location http://​deb.debian.org/​debian/​dists/​stable/​main/​installer-amd64/​ \
---disk ~/​Virtu/​vm/<​nom_VM>​.img,​device=disk,​size=10,​format=qcow2 ​\+--disk ~/​Virtu/​vm/<​nom_VM>​.img,​device=disk,​size=50,​format=qcow2
 </​code>​ </​code>​
-Une fois l'​installation terminé (je détaille pas, c'est une Debian, donc fastoche), le reboot final se fera seul. Et voilà vous avez une belle Debian dans une Debian !+Une fois l'​installation terminé (je ne détaille pas, c'est une Debian, donc fastoche), le reboot final se fera seul. Et voilà vous avez une belle Debian dans une Debian !
  
 ===== Utilisation de base ===== ===== Utilisation de base =====
Ligne 190: Ligne 196:
 </​code>​ </​code>​
  
-Les fichiers de stockage des vm ne sont pas supprimés automatiquement,​ il faut le faire à la main, en l'​occurence:+Les fichiers de stockage des vm ne sont pas supprimés automatiquement,​ il faut le faire à la main:
 <code user> <code user>
 rm -rf $HOME/​Virtu/​vm/<​nom_VM>​.img rm -rf $HOME/​Virtu/​vm/<​nom_VM>​.img
Ligne 196: Ligne 202:
  
 ===== Documentation ===== ===== Documentation =====
-Les différents manuels sont extrèmement instructifs (normal, c'est leur rôle).+Les commandes man pour ces outils.
 <code user>man virt-install</​code>​ <code user>man virt-install</​code>​
 <code user>man virsh</​code>​ <code user>man virsh</​code>​
  
-Documentations ​supplémentaires:+Documentations ​utilisées pour écrire ce tuto:
  
   * https://​wiki.debian.org/​KVM#​Managing_VMs_from_the_command-line   * https://​wiki.debian.org/​KVM#​Managing_VMs_from_the_command-line
atelier/chantier/virtualisation-avec-libvirt.1588949399.txt.gz · Dernière modification: 08/05/2020 16:49 par framend

Pied de page des forums

Propulsé par FluxBB