Visualizzazione post con etichetta puel. Mostra tutti i post
Visualizzazione post con etichetta puel. Mostra tutti i post

domenica 21 giugno 2009

Virtualbox: usa troppa CPU? Decapitatelo!!!!


Mi servivano due macchine virtuali debian per fare degli esperimenti.
Il "serverino" con la nuova memoria sembrava adatto ad ospitarle.
Peccato che dopo aver installato virtualbox-ose e le due macchine virtuali non rimanessero risorse sufficienti a far girare il tutto.

Ogni macchina virtuale, in stato di idle, si portava via il 30-35% di CPU, se poi una delle macchine cominciava a fare qualcosa si passava a un bel 99.4%

Diciamo che il serverino ne soffriva (oltre al caldo terribile e all'insidia delle api morte)

La soluzione e' virtualbox-puel (ovvero la versione non-open di virtualbox che non viene pubblicata sui repository ma e' scaricabile dal sito SUN/Virtualbox).

Trovate i pacchetti binari per le piu' diverse piattaforme.

Due aspetti positivi della versione PUEL non presenti sulla OSE:
1) utilizzo delle periferiche USB (ma in questo caso non era importante)
2) possibilita' di eseguire una virtual machine senza visualizzarla nella console di virtualbox

Questo consente alle macchine virtuali di girare indisturbate senza scomodare X per la visualizzazione (tantopiu' che sul server X non dovrebbe nemmeno starci ;-) e consumare risorse preziose.

I processi VboxHeadless (da qui la decapitazione del titolo) infatti utilizzeranno una percentuale irrisoria di CPU quando le VM sono in idle. La percentuale aumenta con il risvegliarsi delle VM ma torna subito a calare quando queste tornano in idle.

Per accedere alle virtual machine si utilizza un qualsiasi client RDP (rdesktop su Linux, Remote Desktop su Windows)

Per lanciare la virtual machine si usa il comando:
VBoxVRDP --startvm NOME_VIRTUAL_MACHINE -p NUMERO_PORTA_PER_RDP &

Per default, la porta assegnata per l'RDP e' 3389, le virtual machine successive alla prima devono essere assegnate ad altri numeri di porta per consentirne l'accesso.
VBoxVRDP --startvm VM1 &
VBoxVRDP --startvm VM2 -p 3390 &

Per accedere alle macchine virtuali dal vostro client vi bastera' lanciare i seguenti comandi:
rdesktop IP_ADDRESS_SERVER:3389
rdesktop IP_ADDRESS_SERVER:3390

Per inviare un comando di arresto (shutdown) alle macchine virtuali vi bastera' lanciare il seguente comando:
VBoxManage controlvm NOME_VIRTUAL_MACHINE acpipowerbutton

Quindi per arrestare le due VM dell'esempio precedente:
VBoxManage controlvm VM1 acpipowerbutton
VBoxManage controlvm VM2 acpipowerbutton

Virtualbox: supporto periferiche USB

Ci sono due versioni di Virtualbox:
  1. OSE
  2. PUEL
La versione OSE e' quella liberamente installabile dai repository, e' completamente free e non consente l'uso di periferiche USB.

La versione PUEL non e' free, pero' e' liberamente scaricabile dal sito del produttore: consente l'uso di periferiche USB.
Peccato che dopo averla installata voi vediate che Virtualbox rileva le periferiche USB collegate al vostro computer....ma non le rende disponibili alle virtual machine e voi le vedete listate in quel grigino spento degli item non selezionabili.

Ecco la soluzione:

-Create un gruppo chiamato "usbfs" e aggiungete il vostro utente (quello che esegue normalmente Virtualbox) ad esso.

-Lanciate il seguente comando:
sudo gedit /etc/fstab

-Copiate le linee seguenti in questo file, facendo attenzione a cambiare l'ID di gruppo con quello assegnato al gruppo usbfs dal vostro sistema.
# in questo esempio 1001 e' l'ID del gruppo usbfs
none /proc/bus/usb usbfs devgid=1001,devmode=664 0 0

-Salvate e chiudete il file.


-Lanciate il seguente comando:
VBoxManage list usbhost

-Usate l'output di questo comando per configurare i filtri (li vedremo in seguito in un nuovo post) USB in Virtualbox.

-Eseguite un reboot

ATTENZIONE!!!

Le periferiche USB devono essere smontate prima che la virtual machine le possa riconoscere!!!

AGGIORNAMENTO!!!

Se non smontate un drive esterno prima di eseguire il boot della virtual machine, questa acquisira' la precedenza sulla periferica e ne eseguira' l'unmounting dal vostro sistema operativo principale. Se la virtual machine e' gia' in esecuzione bastera' scollegare e subito ricolegare la periferica USB per renderla disponibile alla virtual machine.

AGGIORNAMENTO 2!!!

Non e' necessario (almeno sui sistemi Ubuntu) creare il gruppo usbfs. Si puo' usare infatti il gruppo plugdev che e' gia' dedicato ad occuparsi delle periferiche rimovibili ed e' gia' associato al vostro utente principale in fase di installazione.

Si tratta quindi di impostare la linea che abbiamo aggiunto prima al file /etc/fstab in questo modo:
none /proc/bus/usb usbfs devgid=46,devmode=664 0 0