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 ----------------------------------