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 →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
atelier:chantier:virtualisation-avec-libvirt [08/05/2020 16:36] framend |
atelier:chantier:virtualisation-avec-libvirt [08/05/2020 16:54] framend [Introduction] |
||
---|---|---|---|
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. | 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. | ||
Ligne 66: | Ligne 66: | ||
<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: | En cas de besoin, vous pouvez stopper le profil réseau via: | ||
- | <code user>sudo virsh net-autostart default</code> | + | <code user>sudo virsh net-destroy 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 109: | Ligne 109: | ||
Ceci fait, un redémarrage du service networking sera de mise: | Ceci fait, un redémarrage du service networking sera de mise: | ||
<code root>systemctl restart networking.service</code> | <code root>systemctl restart networking.service</code> | ||
- | Une vérification du fait qu'une adresse IP est obtenue par le bridge (et non plus l'interface physique), via: | + | Une vérification du fait qu'une adresse IP est obtenue par le bridge (et non plus par l'interface physique), via: |
<code user>ip a</code> | <code user>ip a</code> | ||
Doit renvoyer quelque chose de cet ordre: | Doit renvoyer quelque chose de cet ordre: | ||
- | <file ip a> | + | <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 147: | Ligne 147: | ||
</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 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 ===== | ||
+ | |||
+ | Lister les VM's | ||
+ | <code user> | ||
+ | virsh list --all | ||
+ | </code> | ||
+ | |||
+ | Lancer une VM | ||
+ | <code user> | ||
+ | virsh start --domain <vm_name> | ||
+ | </code> | ||
+ | |||
+ | Se connecter à la console d'une VM | ||
+ | <code user> | ||
+ | virsh console <vm_name> | ||
+ | </code> | ||
+ | |||
+ | Suspendre une VM | ||
+ | <code user> | ||
+ | virsh suspend <vm_name> | ||
+ | </code> | ||
+ | |||
+ | Reprendre après suspension | ||
+ | <code user> | ||
+ | virsh resume <vm_name> | ||
+ | </code> | ||
+ | |||
+ | Arrêt gracieux de la VM | ||
+ | <code user> | ||
+ | virsh shutdown --domain <vm_name> | ||
+ | </code> | ||
+ | |||
+ | Arrêt brutal de la VM (si shutdown ne fonctionne pas) | ||
+ | <code user> | ||
+ | virsh destroy --domain <vm_name> | ||
+ | </code> | ||
+ | |||
+ | Supprimer la VM | ||
+ | <code user> | ||
+ | virsh undefine --domain <vm_name> | ||
+ | </code> | ||
+ | |||
+ | Les fichiers de stockage des vm ne sont pas supprimés automatiquement, il faut le faire à la main, en l'occurence: | ||
+ | <code user> | ||
+ | rm -rf $HOME/Virtu/vm/<nom_VM>.img | ||
+ | </code> | ||
+ | |||
+ | ===== Documentation ===== | ||
+ | Les différents manuels sont extrèmement instructifs (normal, c'est leur rôle). | ||
+ | <code user>man virt-install</code> | ||
+ | <code user>man virsh</code> | ||
+ | |||
+ | Documentations supplémentaires: | ||
+ | |||
+ | * https://wiki.debian.org/KVM#Managing_VMs_from_the_command-line | ||
+ | * https://wiki.debian.org/fr/BridgeNetworkConnections | ||
+ | * https://wiki.libvirt.org/page/Networking#Altering_the_interface_config | ||
+ | * https://wiki.libvirt.org/page/Libvirtd_and_dnsmasq | ||
+ | * https://wiki.qemu.org/Features/HelperNetworking | ||
+ | * https://www.raymii.org/s/articles/virt-install_introduction_and_copy_paste_distro_install_commands.html | ||
+ | |||