KVM-Qemu : Différence entre versions

De TechWik
Aller à : navigation, rechercher
m (deuxième option sans sudo)
m (ajout copier/coller VM Windows)
 
(9 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
== KVM/qemu, libvirt ==
+
= KVM/qemu, libvirt =
=== Utilisation ===
+
== Config réseau: redirection de port sur réseau NATé ==
==== Executer par un utilisateur non-root sans mot de passe ====
+
Voir la section "Forwarding Incoming Connections" de la page https://wiki.libvirt.org/page/Networking
===== première possibilité: utiliser sudo. =====
+
==Conversion de VMs==
===== deuxième option sans sudo =====
+
===Import VMDK (VMware)===
 +
Récupérer l'image disque VMDK (cas fichier unique)
 +
  # qemu-img info vmdisk1.vmdk
 +
    image: vmdisk1.vmdk
 +
    file format: vmdk
 +
    virtual size: 13G (13958643712 bytes)
 +
    disk size: 5.3G
 +
  # qemu-img convert -O qcow2 vmdisk1.vmdk <VM-images-store>/newvm.img
 +
  # cd /etc/libvirt/qemu
 +
:Créer une nouvelle VM avec ce disque.
 +
A voir: avec image splitée: comment fait-on?
 +
===Import avec virt-v2v ===
 +
Voir : https://www.redhat.com/fr/blog/importing-vms-kvm-virt-v2v
 +
== Utilisation ==
 +
===virsh: commandes utiles===
 +
====Attacher/détacher une image iso au CD d'une VM====
 +
Attacher une image iso au cdrom :
 +
  # virsh attach-disk myVMdomain mypath.iso hdc --type cdrom --mode readonly
 +
Détacher:
 +
  # virsh change-media myVMdomain hdc --eject
 +
:ou pour modif sur VM éteinte:
 +
  # virsh change-media VM30-prodrh6-64 hdc --eject --config
 +
 
 +
===Executer virt-manager, virt-viewer par un utilisateur non-root sans mot de passe ===
 +
==== première possibilité: utiliser sudo. ====
 +
==== deuxième option sans sudo ====
 
* sous fedora-20 ou Centos 7, libvirt implémente policy-kit (voir sur le wiki fedora: [http://doc.fedora-fr.org/wiki/Gestion_des_privil%C3%A8ges_avec_PolicyKit]). On peut alors autoriser l'accès en se basant par exemple sur un groupe particulier de l'utilisateur. Pour autoriser les utilisateurs locaux et connectés du groupe wheel, créer le fichier /etc/polkit-1/rules.d/80-libvirt.rules avec le contenu:  
 
* sous fedora-20 ou Centos 7, libvirt implémente policy-kit (voir sur le wiki fedora: [http://doc.fedora-fr.org/wiki/Gestion_des_privil%C3%A8ges_avec_PolicyKit]). On peut alors autoriser l'accès en se basant par exemple sur un groupe particulier de l'utilisateur. Pour autoriser les utilisateurs locaux et connectés du groupe wheel, créer le fichier /etc/polkit-1/rules.d/80-libvirt.rules avec le contenu:  
 
   polkit.addRule(function(action, subject) {                                                                                                     
 
   polkit.addRule(function(action, subject) {                                                                                                     
Ligne 11 : Ligne 36 :
 
   });
 
   });
 
* sous fedora-21: il suffit d'ajouter le group libvirt à l'utilisateur.
 
* sous fedora-21: il suffit d'ajouter le group libvirt à l'utilisateur.
 +
 +
== guestfish / guestmount : manipuler des images disque ==
 +
=== guestfish - the guest filesystem shell ===
 +
  Permet de monter une image ou des images en read-only ou read-write (sur image stoppée, sinon risque élevé de corruption)
 +
  $ sudo guestfish --ro -a /shared/VMimages/debian7.qcow2
 +
  Welcome to guestfish, the guest filesystem shell for
 +
  editing virtual machine filesystems and disk images.
 +
  ><fs> run
 +
  ><fs> list-filesystems
 +
  /dev/sda1: ext2
 +
  /dev/sda2: unknown
 +
  /dev/deb7-vg/root: ext4
 +
  /dev/deb7-vg/swap_1: swap
 +
  ><fs> mount /dev/deb7-vg/root /
 +
  ><fs> cat /etc/fstab
 +
  ...
 +
    et pour quitter:
 +
  ><fs> exit
 +
 +
=== guestmount - Mount a guest filesystem on the host using FUSE and libguestfs ===
 +
Permet de monter une image en read-only ou read-write (sur image stoppée, sinon risque élevé de corruption)
 +
  $ sudo guestmount --ro -a /shared/VMimages/debian7.qcow2 -m /dev/kali2-vg/root /mnt/tmp
 +
  $ sudo cat /mnt/tmp/etc/fstab
 +
  ...
 +
 +
Ensuite pour démonter l'image:
 +
 +
= KVM/qemu: copier/coller vers/depuis une VM Windows =
 +
 +
Sur la machine virtuelle Windows, télécharger et installer spice-guest-tools depuis https://www.spice-space.org/download.html.
 +
 +
Vérifier avec virt-manager que :
 +
 +
* le mode "Video QXL" de la VM est bien positionné à QXL
 +
* un canal spice existe, de type "spicevmc" et ayant pour cible "com.redhat.spice.0"
 +
 +
Arrêter et redémarrer la VM. En principe, ça fonctionne.
 +
 +
Voir aussi: https://blogs.nologin.es/rickyepoderi/index.php?/archives/87-Copy-n-Paste-in-KVM.html
 +
 +
[[Category:Linux]]
 +
[[Category:KVM]]
 +
[[Category:Virtualisation]]

Version actuelle datée du 10 mai 2020 à 17:20

KVM/qemu, libvirt

Config réseau: redirection de port sur réseau NATé

Voir la section "Forwarding Incoming Connections" de la page https://wiki.libvirt.org/page/Networking

Conversion de VMs

Import VMDK (VMware)

Récupérer l'image disque VMDK (cas fichier unique)

 # qemu-img info vmdisk1.vmdk
   image: vmdisk1.vmdk
   file format: vmdk
   virtual size: 13G (13958643712 bytes)
   disk size: 5.3G
 # qemu-img convert -O qcow2 vmdisk1.vmdk <VM-images-store>/newvm.img
 # cd /etc/libvirt/qemu
Créer une nouvelle VM avec ce disque.

A voir: avec image splitée: comment fait-on?

Import avec virt-v2v

Voir : https://www.redhat.com/fr/blog/importing-vms-kvm-virt-v2v

Utilisation

virsh: commandes utiles

Attacher/détacher une image iso au CD d'une VM

Attacher une image iso au cdrom :

 # virsh attach-disk myVMdomain mypath.iso hdc --type cdrom --mode readonly

Détacher:

 # virsh change-media myVMdomain hdc --eject
ou pour modif sur VM éteinte:
 # virsh change-media VM30-prodrh6-64 hdc --eject --config

Executer virt-manager, virt-viewer par un utilisateur non-root sans mot de passe

première possibilité: utiliser sudo.

deuxième option sans sudo

  • sous fedora-20 ou Centos 7, libvirt implémente policy-kit (voir sur le wiki fedora: [1]). On peut alors autoriser l'accès en se basant par exemple sur un groupe particulier de l'utilisateur. Pour autoriser les utilisateurs locaux et connectés du groupe wheel, créer le fichier /etc/polkit-1/rules.d/80-libvirt.rules avec le contenu:
 polkit.addRule(function(action, subject) {                                                                                                    
   if (action.id == "org.libvirt.unix.manage" && subject.local && subject.active && subject.isInGroup("wheel")) {
     return polkit.Result.YES;
   }
 });
  • sous fedora-21: il suffit d'ajouter le group libvirt à l'utilisateur.

guestfish / guestmount : manipuler des images disque

guestfish - the guest filesystem shell

 Permet de monter une image ou des images en read-only ou read-write (sur image stoppée, sinon risque élevé de corruption)
 $ sudo guestfish --ro -a /shared/VMimages/debian7.qcow2
 Welcome to guestfish, the guest filesystem shell for
 editing virtual machine filesystems and disk images.
 ><fs> run
 ><fs> list-filesystems
 /dev/sda1: ext2
 /dev/sda2: unknown
 /dev/deb7-vg/root: ext4
 /dev/deb7-vg/swap_1: swap
 ><fs> mount /dev/deb7-vg/root /
 ><fs> cat /etc/fstab
 ... 
   et pour quitter: 
 ><fs> exit

guestmount - Mount a guest filesystem on the host using FUSE and libguestfs

Permet de monter une image en read-only ou read-write (sur image stoppée, sinon risque élevé de corruption)

 $ sudo guestmount --ro -a /shared/VMimages/debian7.qcow2 -m /dev/kali2-vg/root /mnt/tmp
 $ sudo cat /mnt/tmp/etc/fstab
 ... 

Ensuite pour démonter l'image:

KVM/qemu: copier/coller vers/depuis une VM Windows

Sur la machine virtuelle Windows, télécharger et installer spice-guest-tools depuis https://www.spice-space.org/download.html.

Vérifier avec virt-manager que :

  • le mode "Video QXL" de la VM est bien positionné à QXL
  • un canal spice existe, de type "spicevmc" et ayant pour cible "com.redhat.spice.0"

Arrêter et redémarrer la VM. En principe, ça fonctionne.

Voir aussi: https://blogs.nologin.es/rickyepoderi/index.php?/archives/87-Copy-n-Paste-in-KVM.html