08. [15p] Managementul mașinilor virtuale KVM folosind virsh

Pentru a ușura managementul mașinilor virtuale a fost dezvoltată o bibliotecă de interacțiune cu acestea ce poartă denumirea de libvirt. Această bibliotecă oferă o interfață de programare comună pentru mai multe tehnologii (e.g.: KVM, LXC) fiind folosită de majoritatea tehnologiilor open-source de Cloud (e.g.: OpenStack, oVirt).

Pentru administratorii de rețea a fost dezvoltată o consolă numită virsh ce folosește interfața oferită de libvirt pentru interacțiunea cu mașinile virtuale.

Pentru a putea folosi facilitățile oferite de libvirt trebuie să instalăm pachetele libvirt-bin, virtinst, virt-viewer și virt-top. De asemenea dacă utilizatorul e diferit de cel privilegiat trebuie adăugat în grupul libvirtd (ca si la kvm). În exemplul următor vom folosi utilizatorul privilegiat root.

În primul pas trebuie să activăm serviciul de networking al libvirt:

root@saisp:~# virsh -c qemu:///system net-start default

Pentru a crea o mașină virtuală folosim utilitarul virt-install:

root@saisp:~# virt-install --connect qemu:///system --name VM1 --hvm --ram 256 --disk path=base.qcow2,format=qcow2 --network network=default --vnc --import

Semnificația parametrilor este după cum urmează:

   * ''--connect qemu:///system''  - conectarea la sistemul local
   * ''--name VM1'' - numele mașinii virtuale
   * ''--hvm'' - să se folosească virtualizarea hardware (altfel se face emulare folosind QEMU, fără KVM)
   * ''--ram 256'' - cantitatea de memorie
   * ''--disk path=base.qcow2,format=qcow2'' - discul folosit și formatul acestuia
   * ''--network network=default'' - adăugare interfață de rețea cu proprietățile implicite
   * ''--vnc'' - să export consola VNC
   * ''--import'' - să folosească imaginea deja creată ''base.qcow2'', să NU creeze alta

În acest moment s-a creat un fișier de configurație XML al mașinii virtuale care poate fi vizualizat în /etc/libvirt/qemu/VM1.xml.

Consola mașinii virtuale s-a deschis, programul virt-inst rămânând să ruleze. Folositi CTRL+C pentru a incheia instalarea masinii virtuale.

Pentru a controla mașina virtuală vom folosi consola virsh. Ne conectăm la daemon-ul local cu ajutorul lui virsh și vom afișa mașinile virtuale existente folosind comanda list:

root@saisp:~# virsh --connect qemu:///system
[...]
virsh> list
 Id Name                 State
----------------------------------
  2 VM1                  running

Observați starea mașinii virtuale și Id-ul acesteia (2). Pe baza Id-ului veți realiza toate operațiile.

Dorim să aflăm portul VNC al mașinii virtuale cu ajutorul comenzii vncdisplay urmat de Id-ul mașinii virtuale:

virsh # vncdisplay 2
:0

Deschideți o nouă consolă și conectați-vă la aceasta prin VNC folosind utilitarul vncviewer:

root@saisp:~# vncviewer :0

Inchideți consola. ATENTIE: Mașina virtuala va continua să ruleze în background!

Opriți mașina virtuală cu ajutorul comenzii shutdown urmată de Id-ul acesteia:

virsh # shutdown 2
Domain 2 is being shutdown
 
virsh # list
 Id Name                 State
----------------------------------
  2 VM1                  running
 
virsh # list
 Id Name                 State
----------------------------------

Pentru a afișa toate mașinile virtuale indiferent de starea lor folosiți opțiunea –all a comenzii list:

virsh # list --all
 Id Name                 State
----------------------------------
  - VM1                  shut off

Vom porni mașina virtuală VM1 folosind comanda start urmată de numele mașinii:

virsh # start VM1
Domain VM1 started
 
virsh # list
 Id Name                 State
----------------------------------
  3 VM1                  running

Observați că Id-urile se alocă la pornirea mașinilor virtuale.

Executați comanda destroy pe Id-ul mașinii virtuale. Observați că mașina virtuală s-a închis, NU s-a șters.

virsh # destroy 3
Domain 3 destroyed
virsh # list --all
 Id Name                 State
----------------------------------
  - VM1                  shut off

În echipe de câte doi, faceți schimb de adrese IP și asigurați accesul SSH fără parolă între calculatoarele voastre, folosind utilizatorul privilegiat root.

Conectați-vă cu virsh la calculatorului colegului și listați mașinile virtuale disponibile. La adresa de conectare folosiți parametrul:

qemu+ssh://$ADRESA_IP_COLEG/system

Porniți mașina creată de el și conectați-vă prin VNC la aceasta. Acesta este unul dintre cele mai utilizate cazuri în care aveți un server cu suport de virtualizare și doriți să rulați de la distanță mai multe mașini virtuale.

Ștergeți mașina virtuală definită folosind comanda undefine urmată de numele mașinii virtuale:

virsh # undefine VM1
Domain VM1 has been undefined
virsh # list
 Id Name                 State
----------------------------------
  6 VM1                  running

Observați că mașina virtuală încă mai rulează. Ea va dispare complet după ce o închidem:

virsh # shutdown 6
Domain 6 is being shutdown
virsh # list --all
 Id Name                 State
----------------------------------
saisp/labs/08/contents/08.txt · Last modified: 2014/04/28 16:36 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0