tech:notes_libvirt
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tech:notes_libvirt [2025/05/24 12:19] – Jean-Baptiste | tech:notes_libvirt [2026/06/07 19:12] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # Notes libvirt | ||
| + | |||
| + | Voir : | ||
| + | * [[todo-kvm|Notes KVM]] | ||
| + | * https:// | ||
| + | |||
| + | Voir aussi : | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | ## Install | ||
| + | |||
| + | ~~~bash | ||
| + | apt-get install virt-manager virtinst qemu-utils | ||
| + | ~~~ | ||
| + | |||
| + | Install Ubuntu | ||
| + | ~~~bash | ||
| + | virt-install --connect qemu:/// | ||
| + | --name ttest02 --ram 4096 --vcpus 1 | ||
| + | --vnc --virt-type kvm --machine pc \ | ||
| + | --location http:// | ||
| + | --extra-args ksdevice=link, | ||
| + | --arch x86_64 --os-variant virtio26 --disk path=/ | ||
| + | --network bridge=br0, | ||
| + | --wait -1 --noautoconsole | ||
| + | ~~~ | ||
| + | |||
| + | Network install Debian Preseed | ||
| + | ~~~bash | ||
| + | virt-install \ | ||
| + | --name ttest02\ | ||
| + | --ram 4096 \ | ||
| + | --location=http:// | ||
| + | --initrd-inject=/ | ||
| + | --extra-args=" | ||
| + | --vcpu=1 \ | ||
| + | --vnc \ | ||
| + | --vnclisten=0.0.0.0 \ | ||
| + | --os-type=linux \ | ||
| + | --os-variant=debianwheezy \ | ||
| + | -w bridge=virbr0 \ | ||
| + | -w bridge=br1 \ | ||
| + | -w network=default \ | ||
| + | --console pty, | ||
| + | --disk format=qcow2, | ||
| + | ~~~ | ||
| + | |||
| + | Install ISO Debian Preseed | ||
| + | ~~~bash | ||
| + | virt-install \ | ||
| + | --name vm1 \ | ||
| + | --ram 1024 \ | ||
| + | --cdrom / | ||
| + | --vcpu=1 \ | ||
| + | --vnc \ | ||
| + | --vnclisten=0.0.0.0 \ | ||
| + | --os-type=linux \ | ||
| + | --os-variant=debiantesting \ | ||
| + | -w bridge=virbr0 \ | ||
| + | -w network=default \ | ||
| + | --console pty, | ||
| + | --disk format=qcow2, | ||
| + | --boot uefi \ | ||
| + | --wait=-1 --noautoconsole | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | ## Interface d' | ||
| + | |||
| + | ### WebUI - Cockpit | ||
| + | |||
| + | Voir : | ||
| + | * [[notes_cockpit]] | ||
| + | |||
| + | ~~~bash | ||
| + | apt-get install cockpit cockpit-machines | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Console graphique VNC | ||
| + | |||
| + | Connaitre le port | ||
| + | ~~~bash | ||
| + | Connexion VNC | ||
| + | virsh dumpxml ttest02 | grep vnc | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Effacement | ||
| + | |||
| + | ~~~bash | ||
| + | virsh destroy ttest02 | ||
| + | virsh undefine ttest02 | ||
| + | virsh undefine ttest02 --nvram | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Pb effacement | ||
| + | ~~~ | ||
| + | virsh # undefine --remove-all-storage --delete-snapshots vmplop | ||
| + | error: Failed to undefine domain vmplop | ||
| + | error: Requested operation is not valid: cannot delete inactive domain with 1 snapshots | ||
| + | ~~~ | ||
| + | |||
| + | Solution | ||
| + | ~~~bash | ||
| + | snapshot-delete --metadata --current vmplop | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ## Réseau | ||
| + | |||
| + | ### DHCP avec adresses statiques | ||
| + | |||
| + | Tout d' | ||
| + | |||
| + | ~~~bash | ||
| + | virsh dumpxml | ||
| + | ~~~ | ||
| + | |||
| + | Puis éditez le réseau | ||
| + | ~~~bash | ||
| + | virsh net-list | ||
| + | virsh net-edit | ||
| + | ~~~ | ||
| + | |||
| + | Trouvez le < | ||
| + | |||
| + | ~~~xml | ||
| + | < | ||
| + | <range start=' | ||
| + | <Host mac=' | ||
| + | <Host mac=' | ||
| + | <Host mac=' | ||
| + | </ | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Recharger la conf réseau | ||
| + | ~~~bash | ||
| + | virsh net-destroy | ||
| + | virsh net-start | ||
| + | ~~~ | ||
| + | |||
| + | Source : https:// | ||
| + | |||
| + | |||
| + | ### kvm host to guest connections | ||
| + | |||
| + | Source : https:// | ||
| + | |||
| + | `/ | ||
| + | ~~~xml | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | virsh net-define / | ||
| + | virsh net-start isolated | ||
| + | virsh net-autostart isolated | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | virsh edit vm-plop | ||
| + | ~~~ | ||
| + | |||
| + | ~~~xml | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Bridge direct | ||
| + | |||
| + | ~~~bash | ||
| + | virsh dumpxml vm1 | xpath -e '/ | ||
| + | ~~~ | ||
| + | |||
| + | ~~~xml | ||
| + | < | ||
| + | <mac address=" | ||
| + | <source dev=" | ||
| + | <target dev=" | ||
| + | <model type=" | ||
| + | <alias name=" | ||
| + | <address type=" | ||
| + | </ | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Disque | ||
| + | |||
| + | ### redimensionnement à chaud | ||
| + | |||
| + | ~~~ | ||
| + | # virsh dumpxml vm1 | xpath -q -e "/ | ||
| + | <alias name=" | ||
| + | <alias name=" | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | virsh qemu-monitor-command vm1 block_resize drive-virtio-disk0 50G --hmp | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Redimensionnement à froid | ||
| + | |||
| + | ~~~ | ||
| + | # virsh dumpxml vm1 | xpath -q -e "/ | ||
| + | | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | qemu-img resize / | ||
| + | ~~~ | ||
| + | |||
| + | ### Lister les disques et leurs tailles | ||
| + | |||
| + | ~~~bash | ||
| + | for VM in $(virsh list --all | awk '/^ [0-9-]/ {print $2}' | ||
| + | do | ||
| + | echo VM_NAME: " | ||
| + | virsh dumpxml $VM | xpath -q -e "/ | ||
| + | echo --------------; | ||
| + | done | ||
| + | |||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## VM | ||
| + | |||
| + | ### Clone | ||
| + | |||
| + | Cloner une VM | ||
| + | ~~~bash | ||
| + | virt-clone --original vm1 --name vm2 --auto-clone | ||
| + | ~~~ | ||
| + | |||
| + | ### Virsh reload xml config file | ||
| + | |||
| + | ~~~bash | ||
| + | virsh define foo.xml | ||
| + | ~~~ | ||
| + | |||
| + | ### Connaître l'IP d'une VM | ||
| + | |||
| + | Voir aussi : https:// | ||
| + | |||
| + | ~~~ | ||
| + | # virsh domiflist FRANCE_ACME_POC2 | ||
| + | Interface | ||
| + | ------------------------------------------------------- | ||
| + | macvtap2 | ||
| + | vnet2 network | ||
| + | |||
| + | # tcpdump -nn ether host 52: | ||
| + | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode | ||
| + | listening on enp2s0f0, link-type EN10MB (Ethernet), capture size 262144 bytes | ||
| + | 21: | ||
| + | 21: | ||
| + | 21: | ||
| + | 21: | ||
| + | 21: | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | arp -e | ||
| + | ~~~ | ||
| + | |||
| + | Voir aussi : | ||
| + | * `virsh domifaddr` | ||
| + | * `virsh net-dhcp-leases` | ||
| + | |||
| + | |||
| + | ## Pb | ||
| + | |||
| + | ~~~ | ||
| + | ERROR Guest name ' | ||
| + | ~~~ | ||
| + | |||
| + | Solution : Effacer ! | ||
| + | ~~~bash | ||
| + | virsh undefine ttest02 | ||
| + | ~~~ | ||
| + | |||
| + | ## IOMMU PCI_Passthrough | ||
| + | |||
| + | Voir : | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | |||
| + | Pour NVidia il faut cacher le PCI_Passthrough | ||
| + | ~~~xml | ||
| + | < | ||
| + | <hidden state=' | ||
| + | </ | ||
| + | ~~~ | ||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | # | ||
| + | GRUB_CMDLINE_LINUX=" | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Err / | ||
| + | |||
| + | ~~~ | ||
| + | Error starting domain: Cannot check QEMU binary / | ||
| + | ~~~ | ||
| + | |||
| + | Solution | ||
| + | ~~~bash | ||
| + | apt-get update | ||
| + | apt-get purge qemu-system-x86 | ||
| + | apt-get install qemu-kvm | ||
| + | apt-get install -f | ||
| + | ~~~ | ||
| + | |||
