This shows you the differences between two versions of the page.
saisp:labs:08:contents:01 [2014/02/08 16:08] alexandru.carp [01. [15p] Kernel-based Virtual Machine (KVM)] |
saisp:labs:08:contents:01 [2014/03/09 12:32] (current) mihai.carabas [01. [15p] Kernel-based Virtual Machine (KVM)] |
||
---|---|---|---|
Line 26: | Line 26: | ||
</code> | </code> | ||
- | Pentru a porni o mașină virtuală vom folosi comanda ''kvm''. Utilizatorul care execută comanda (dorește să pornească o mașină virtuală) trebuie să fie cel privilegiat (''root'') sau să facă parte din grupul ''kvm'':<code bash> | + | Pentru a porni o mașină virtuală vom folosi comanda ''kvm''. Utilizatorul care execută comanda (dorește să pornească o mașină virtuală) trebuie să fie cel privilegiat (''root'') sau să facă parte din grupul setat ca owner pe device-ul ''/dev/kvm'' (în cazul de fată ''kvm''). În cadrul laboratorului vom lucra cu utilizatorul privilegiat, dacă nu se specifică altfel. |
- | root@saisp:~# id mihai | + | |
- | uid=1001(mihai) gid=1001(mihai) groups=1001(mihai) | + | Vom crea o mașină virtuală având 256MB RAM (parametrul ''-m''), 2 procesoare (numărul este dat de parametrul ''-smp'') și va avea ca dispozitiv de stocare o imagine virtuală denumită ''base.qcow2'' (mai multe detalii în exercițiul următor), specificată cu parametrul ''-hda'':<code bash> |
- | root@saisp:~# usermod -aG kvm mihai | + | root@saisp:~# kvm -hda base.qcow2 -m 256 -smp 2 |
- | root@saisp:~# id mihai | + | |
- | uid=1001(mihai) gid=1001(mihai) groups=1001(mihai),107(kvm) | + | |
- | </code> | + | |
- | Vom crea o mașină virtuală având 256MB RAM (parametrul ''-m''), 2 procesoare (numărul este de parametrul ''-smp'') și va avea ca dispozitiv de stocare o imagine virtuală denumită ''sda.qcow2'' (mai multe detalii în exercițiul următor), specificată cu parametrul ''-hda'':<code bash> | + | |
- | root@saisp:~# kvm -hda sda.qcow2 -m 256 -smp 2 | + | |
</code> | </code> | ||
În acest moment se va deschide o fereastră în care se va afișa output-ul consolei mașinii virtuale (veți vedea cum bootează). Verificați că resursele mașinii virtuale coincid cu parametri trimiși comenzii ''kvm'' inspectând sistemul de fișiere ''/proc''. | În acest moment se va deschide o fereastră în care se va afișa output-ul consolei mașinii virtuale (veți vedea cum bootează). Verificați că resursele mașinii virtuale coincid cu parametri trimiși comenzii ''kvm'' inspectând sistemul de fișiere ''/proc''. | ||
Line 41: | Line 36: | ||
root@VM:~# cat /proc/cpuinfo | root@VM:~# cat /proc/cpuinfo | ||
[...] | [...] | ||
- | root@VM:~# cat /proc/meminfo | + | root@VM:~# free -m |
[...] | [...] | ||
</code> | </code> | ||
</solution> | </solution> | ||
+ | |||
+ | Deschidem o nouă consolă și vom afișa numărul de thread-uri ''kvm'' prezente în sistem:<code bash> | ||
+ | root@saisp:~# ps -eLf |grep kvm | ||
+ | </code> | ||
Opriți rularea mașinii virtuale rulând ''Ctrl+c'' în consola unde ați rulat comanda ''kvm''. Porniți-o din nou cu 4 procesoare și 512MB RAM. | Opriți rularea mașinii virtuale rulând ''Ctrl+c'' în consola unde ați rulat comanda ''kvm''. Porniți-o din nou cu 4 procesoare și 512MB RAM. | ||
<solution -hidden> | <solution -hidden> | ||
<code bash> | <code bash> | ||
- | root@saisp:~# kvm -hda sda.qcow2 -m 512 -smp 4 | + | root@saisp:~# kvm -hda base.qcow2 -m 512 -smp 4 |
</code> | </code> | ||
</solution> | </solution> | ||
Line 57: | Line 56: | ||
</code> | </code> | ||
- | Observați că fiecare nou procesor adăugat în mașina virtuală este reprezentat de un nou thread ''kvm'' în sistemul gazdă. | + | Observați că fiecare nou procesor adăugat în mașina virtuală crește numărul thread-urilor ''kvm'' în sistemul gazdă (numărul de thread-uri este mai mare decât numărul de procesoare din cauza existenței unor //thread-uri de management// necesare procesului ''kvm''). |
+ | |||
+ | === Exportare display prin VNC === | ||
De cele mai multe ori nu dorim deschiderea unei console în sesiunea curentă ci dorim rularea mașinii în background, iar la nevoie să putem accesa consola acesteia. Acest lucru este posibil folosind parametrul ''-vnc'' al comenzii ''kvm'' care va porni un server de VNC prin care se va exporta consola mașinii virtuale:<code bash> | De cele mai multe ori nu dorim deschiderea unei console în sesiunea curentă ci dorim rularea mașinii în background, iar la nevoie să putem accesa consola acesteia. Acest lucru este posibil folosind parametrul ''-vnc'' al comenzii ''kvm'' care va porni un server de VNC prin care se va exporta consola mașinii virtuale:<code bash> | ||
- | root@saisp:~# kvm -hda sda.qcow2 -m 512 -smp 4 -vnc :1 | + | root@saisp:~# kvm -hda base.qcow2 -m 512 -smp 4 -vnc :1 |
</code> | </code> | ||
Observați în continuare că procesul ''kvm'' nu a intrat în background. Pentru acest lucru trebuie să mai adăugăm parametroul ''-daemonize'':<code bash> | Observați în continuare că procesul ''kvm'' nu a intrat în background. Pentru acest lucru trebuie să mai adăugăm parametroul ''-daemonize'':<code bash> | ||
- | root@saisp:~# kvm -hda sda.qcow2 -m 512 -smp 4 -vnc :1 -daemonize | + | root@saisp:~# kvm -hda base.qcow2 -m 512 -smp 4 -vnc :1 -daemonize |
</code> | </code> | ||
Parametrul ''-vnc :1'' activează serverul VNC pe portul **1** al protocolului. Pentru a afla portul TCP pe care ascultă serverul de VNC prin care este exportată consola trebuie să adunați **5900** la numărul pe care l-ați pus parametrului ''-vnc'', în cazul nostru ''5901''. Pentru a verifica acest lucru executați comanda ''netstat'':<code bash> | Parametrul ''-vnc :1'' activează serverul VNC pe portul **1** al protocolului. Pentru a afla portul TCP pe care ascultă serverul de VNC prin care este exportată consola trebuie să adunați **5900** la numărul pe care l-ați pus parametrului ''-vnc'', în cazul nostru ''5901''. Pentru a verifica acest lucru executați comanda ''netstat'':<code bash> | ||
Line 69: | Line 70: | ||
</code> | </code> | ||
- | În acest moment mașina virtuală KVM rulează în background, singura modalitate de interacțiune cu aceasta fiind prin consola VNC. Ne vom conecta la portul ''5901'' folosind utilitarul ''vncviewer'' (instalați-l dacă este cazul folosind ''apt-get install vncviewer''):<code bash> | + | În acest moment mașina virtuală KVM rulează în background, singura modalitate de interacțiune cu aceasta fiind prin consola VNC. Ne vom conecta la portul ''5901'' folosind utilitarul ''vncviewer'' (instalați-l dacă este cazul folosind ''apt-get install xtightvncviewer''):<code bash> |
root@saisp:~# vncviewer localhost:5901 | root@saisp:~# vncviewer localhost:5901 | ||
</code> | </code> |