Virsh cheat sheet

  KVM (Kernel-based Virtual Machine)

Hoewel ik vaak gebruik maak van Virtual Machine Manager (virt-manage) is het toch wel makkelijk om ook bekend te zijn met de command line om diverse taken uit te voeren. Vandaar deze cheat sheat.

connectie naar de hypervisor

Om lokaal te verbinden met de de hyperviser.

 edwin@defiant:~$ virsh -c qemu:///system
 Connecting to uri: qemu:///system
 Welcome to virsh, the virtualization interactive terminal.

 Type:  'help' for help with commands
        'quit' to quit

 virsh # 

Maar de meeste virtual machines beheer ik remote, je kan natuurlijk eerst met ssh inloggen op het remote systeem maar eenvoudiger is om het rechtstreeks te doen. de machine waar ik naar connect heet starbase10, je kan hier ook een IP adres in vullen.

 edwin@defiant:~$ virsh -c qemu+ssh://starbase10/system
 Connecting to uri: qemu+ssh://starbase10/system
 Welcome to virsh, the virtualization interactive terminal.

 Type:  'help' for help with commands
        'quit' to quit

 virsh #

List Virtual Machines

Nu we weten hoe we verbinding kunnen maken met de Hyperviser kan je verschillende taken uitvoeren. om te zien welke virtual machines er actief zijn op je host gebruik je het commando list

virsh # list 
 Id Name                 State
----------------------------------
  2 doyle                running
  3 nash                 running
  6 springfield          running
  7 magellan             running

virsh # 

List zonder optie laat dus alleen de actieve virtual machines zien. wil je alle virtual machines zien, dus ook de virtual machines die uit staan gebruik je de optie –all.

virsh # list --all
 Id Name                 State
----------------------------------
  2 doyle                running
  3 nash                 running
  6 springfield          running
  7 magellan             running
  - baton-rouge          shut off
  - stargazer            shut off
  - vico                 shut off

virsh # 

Stop Start en reboot Virtual machines

We kunnen via de command line ook eenvoudig virtual machine stoppen, starten, en rebooten. let op voor stoppen van de machine moet je gast OS dit wel ondersteunen. als het niet kan en je hebt geen andere mogelijkheid, kan je ook virtueel de power plug er uit trekken.

 
 virsh # start baton-rouge
 Domain baton-rouge started

 virsh # shutdown  baton-rouge 
 Domain baton-rouge is being shutdown

Als shutdown niet werkt, en je kan ook niet meer inloggen op het systeem hem je ook nog de mogelijkheid om als het ware de power van het systeem af te halen. dit doe je met het destroy commando

 virsh # destroy baton-rouge
 Domain baton-rouge destroyed

Wat is mijn Virtual Machine’s IP Address

Je hebt net je virtual machine gestart. en deze maakt gebruik van DHCP. dan kan je eenvoudig het IP address achter halen. met virsh

virsh # domifaddr base1604
Name MAC address Protocol Address
-------------------------------------------------------------------------------
vnet0 52:54:00:ec:81:6a ipv4 192.168.123.87/24

Welke componenten/resource zijn geconfigueerd aan mijn virtual machine.

je kan natuurlijk dumpxl <domain> gebruiken en door de XML code heen worstelen en de configuratie bekijken. maar er zijn ook commando’s beschikbaar die alles netjes weer geven. een kort overzicht van deze commando zie je door “help monitor” op te vragen.

Basis info over de virtual machine

met dominfo <domain> krijg je de basis info van de virtual machine. aantal cpu, Memory en Max Memory enz.

virsh # dominfo Intrepid
Id:             12
Name:           Intrepid
UUID:           34055d36-bded-3ce5-4654-ffce437371ba
OS Type:        hvm
State:          running
CPU(s):         4
CPU time:       148.3s
Max memory:     8388608 KiB
Used memory:    4194304 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: apparmor
Security DOI:   0
Security label: libvirt-34055d36-bded-3ce5-4654-ffce437371ba (enforcing)

Welke disken hangen er aan de Virtual Machine

domblklist geeft een lijk met block device/disken die aan je Virtual Machine hangen. aan de onderstaande machine hangen dus 4 disken
de 5de schijf hda is wel een device maar daar hangt geen block device das in dit geval een CD/DVD speler.

virsh # domblklist Intrepid
Target     Source
------------------------------------------------
vda        /var/lib/libvirt/images/Intrepid.img
vdb        /var/lib/libvirt/images/Intrepid-2.img
vdc        /var/lib/libvirt/images/Intrepid-3.img
vdd        /var/lib/libvirt/images/Intrepid-4.img
hda        -

Meer Info over een specifieke device

om meer te weten te komen over een specifieke disk kan met qume-img kijken maar ook binnen virsh kan je deze infoi bekijken. onderstaande voor beeld is een disk van een machine waar ik een aantal keer een snapshot van gemaakt heb. die ruimte word nooit meer vrij gegeven dat kan je in onderstaande voorbeeld goed zien. van uit het OS gezien is de disk 23G groot. er is een kleine 19G in gebruik. maar op de het gast systeem neem deze disk wel 45G in beslag. hoe je deze ruimte terug krijgt vind je elders op deze site.

virsh # domblkinfo gibraltar vda 
Capacity:       23622320128
Allocation:     19553992704
Physical:       46860599296

Welke netwerk interfaces zijn geconfigueerd op mijn Virtual Machine

om de netwerk interfaces te bekijken kan je gebruik maken van domiflist

virsh # domiflist Intrepid
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet8      bridge     br0        virtio      52:54:00:24:00:7

Verwijder/delete een virtual machine

een virtual machine kunnen we eenvoudig verwijderen via de command line, hiervoor gebruiken we undefine. zonder opties verwijderd het alleen de virtual machine maar de disk image blijft bestaan, wil je die ook verwijderd hebben gebruik dan de optie–remove-all-storage. een vereiste is uiteraard wel dat de betreffende vm uit staat.

$ cd /var/lib/libvirt
$ ls -al images/
total 6420072
drwxrwx--x 2 libvirt-qemu kvm         4096 Jan 29 11:05 .
drwxr-xr-x 9 root         root        4096 Jan 19 16:19 ..
-rw------- 1 root         root  2176778240 Jan 29 11:03 rh8_client1.qcow2
-rw------- 1 root         root 21478375424 Jan 29 11:03 rhel8.qcow2
-rw------- 1 libvirt-qemu kvm   2176319488 Jan 30 13:39 rhelclone.qcow2

$ virsh list --all 
 Id   Name          State
------------------------------
 3    rhelclone     running
 -    rhel8         shut off
 -    rh8_client1   shut off

$ virsh undefine rhel8
Domain rhel8 has been undefined

$ virsh undefine rh8_client1 --remove-all-storage
Domain rh8_client1 has been undefined
Volume 'hda'(/var/lib/libvirt/images/rh8_client1.qcow2) removed.

$ ls -al images/
total 4294144
drwxrwx--x 2 libvirt-qemu kvm         4096 Jan 30 13:41 .
drwxr-xr-x 9 root         root        4096 Jan 19 16:19 ..
-rw------- 1 root         root 21478375424 Jan 29 11:03 rhel8.qcow2
-rw------- 1 libvirt-qemu kvm   2176319488 Jan 30 13:41 rhelclone.qcow2

Bij het eerste command is de disk image dus niet verwijderd dat zal je dan zelf moeten doen.