Differences between revisions 9 and 10
Revision 9 as of 2011-05-31 09:42:30
Size: 9030
Editor: Kurgan
Comment:
Revision 10 as of 2012-03-07 12:16:44
Size: 9031
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 134: Line 134:
Una volta creato lo script e reso eseguibile per root, occorre renderlo parte della procedura di avvio e shutdown con il comando {{{insserv box-guest}}} Una volta creato lo script e reso eseguibile per root, occorre renderlo parte della procedura di avvio e shutdown con il comando {{{insserv vbox-guest}}}

Sun Virtualbox

Appunti sparsi su Virtualbox versione 3.x. (adatto anche alla 4.x con piccole varianti)

Installazione su Debian Lenny

Sul sito di Virtualbox (www.virtualbox.org) ci sono le indicazioni su come installare il pacchetto gia` pronto di Virtualbox PUEL (Personal Use and Evaluation License) (ma dico io, vi sembra una sigla decente "PUEL"? A me fa troppo ridere) su Debian Lenny (32 e 64 bit). In pratica si tratta di aggiungere un repository e fare un aptitude install.

Una volta installata, supponendo di usare sempre dei server senza interfaccia grafica, resta il problema di gestire le macchine virtuali senza interfaccia grafica, appunto. Il che non e` una tragedia, comunque.

Innanzitutto, VirtualBox (e le relative VM) possono essere fatti girare da root, o anche da un utente normale, purche` esso appratenga al gruppo "vboxusers", che viene creato automaticamente dal setup di VirtualBox stesso.

In questa configurazione creo un utente "virtualbox" il quale avra` il compito di fare girare la mia VM.

adduser --ingroup vboxusers  virtualbox

Sulla macchina server, per potermi collegare remotizzando la interfaccia di Virtualbox, devo ricordarmi di installare il pacchetto xauth.

A questo punto, posso fare login in ssh da un pc con installato Linux e con X, usando lo username appena creato. Siccome vorrei poter lanciare l'interfaccia grafica di Virtualbox, usando come schermo quello del mio PC con X, dovro` ridirigere opportunamente lo schermo. Facendo ssh al server con il parametro "-X" si ridirige una sessione X11 sul proprio PC, quindi e` sufficiente usare il comando:

ssh  virtualbox@server -X

Seguito dal comando per lanciare l'interfaccia grafica di Virtualbox, che e`

VirtualBox

Se mi dice che non puo` trovare lo schermo, e` probabile che manchi il programma "xauth" sul server. In questo caso per esempio si puo` installarlo installando il pacchetto xbase-clients.

Ora e` possibile configurare una macchina virtuale usando l'interfaccia grafica, che e` molto comoda. Una volta finito, si potra` lanciare la macchina virtuale da command line.

Configurazione di una VM

Per poter accedere alla console delle VM in assenza dell'interfaccia grafica sul server, la soluzione piu` comoda offerta da Virtualbox e` quella di usare il protocollo RDP. Quando si crea una VM, alla voce della configurazione video, sara` sufficiente abilitare il "Remote Display" scegliendo una porta diversa per ogni VM.

Una volta fatto questo, avviare la VM da console di testo sul server, con il comando:

VBoxManage startvm "nome della VM" -type vrdp

Sara` ora possibile connettersi al suo video usando un client RDP, puntando all' IP del server (e NON quello della VM) sulla porta indicata prima in configurazione.

Comandare una VM da console di testo

Da una console di testo e` facile avviare, fermare o sospendere una VM usando il comando VboxManage.

Per avviare una VM:

VBoxManage startvm "nome della VM" -type vrdp

Per sospendere una VM (salva lo stato sul disco e permette di tornare, usando il comando di avvio indicato sopra, esattamente dove si era quando si e` sospesa la VM)

VBoxManage controlvm "nome della VM" savestate

Per arrestare una VM usando una procedura graceful per fermare il sistema guest anziche` spegnere alla brutta, si puo` simulare la pressione del tasto di accensione. Questo sulle macchina moderne genera una evento ACPI che induce il sistema operativo a fare uno shutdown. Questo sistema funziona con i sistemi che gestiscono tale segnale, ovviamente. Linux (moderno) e Windows XP funzionano.

VBoxManage controlvm "nome della VM" acpipowerbutton

Uno spegnimento secco (non e` carino) si ottiene con

VBoxManage controlvm "nome della VM" poweroff

Lanciare e fermare una VM al boot/shutdown dell' host

Per lanciare una VM e fermarla (sospendendola) durante l'avvio e lo shutdown della macchina host, mi sono accrocchiato questo SCHIFOSO script da mettere in /etc/init.d e linkare opportunamente in /etc/rc2.d e /etc/rc6.d. Lo script si chiama /etc/init.d/vbox-guest e contiene:

# start and stop virtualbox virtual machines
# disgusting script by Kurgan

### BEGIN INIT INFO
# Provides:          vbox-guest
# Required-Start:    $remote_fs $syslog vboxdrv
# Required-Stop:     $remote_fs $syslog vboxdrv
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and Stop Virtualbox Virtual Machines
# Description:       Debian init script for VirtualBox Virtual Machines
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON="/usr/bin/VBoxManage"
NAME="VboxVM"
DESC="VirtualBox Virtual Machines"
USER="virtualbox"


test -x $DAEMON || exit 0

. /lib/lsb/init-functions
set -e

case "$1" in
  start)

        log_daemon_msg "Starting $DESC" "$NAME"
        su - $USER -c ' VBoxManage startvm "nome della VM" -type vrdp '
        log_end_msg $?
        ;;
  stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        su - $USER -c ' VBoxManage controlvm "nome della VM" savestate '
        log_end_msg $?
        ;;
  *)
        echo "Usage: $0 {start|stop}" >&2
        exit 1
        ;;
esac

exit 0

Notare il nome utente dell'utente che possiede le VM (la variabile USER) che nel caso va messo a posto.

Ovviamente se avete piu` di una VM potete mettere piu` righe con VboxManage una per ogni VM. Lo so che fa schifo, ma funziona. Una volta creato lo script e reso eseguibile per root, occorre renderlo parte della procedura di avvio e shutdown con il comando insserv vbox-guest

Backup delle VM

E qui sono dolori, perche` tirare a indovinare vuole dire scoprire che il restore non funziona quando e` troppo tardi.

Premesso che devo ancora leggere un sacco di documentazione, e` chiaro che non e` possibile copiare i files di una VM in esecuzione, si otterrebbe una porcheria incoerente (file system del guest corrotto).

La soluzione banale, se si ha tempo e si puo` mettere il guest offline, e` quella di fermare il guest, copiare tutto quanto (dischi, impostazioni delle VM, eccetera) e riavviare la VM. Una cosa del tipo:

VBoxManage controlvm "nome della VM" acpipowerbutton
tar czf backup.tgz /home/virtualbox/
VBoxManage startvm "nome della VM" -type vrdp

Alternativamente, dovrebbe essere possibile sospendere la VM, backupparla e riavviarla, senza attendere lo shutdown e il boot del guest. Non sono certo che questo non possa potenzialmente dare problemi se si dovesse poi migrare la VM da un host a un altro, perche` pare che VirtualBox sia molto rognoso con la migrazione degli stati salvati e degli snapshot

VBoxManage controlvm "nome della VM" savestate
tar czf backup.tgz /home/virtualbox/
VBoxManage startvm "nome della VM" -type vrdp

Alternativamente ancora, ma e` tutto da provare, dovrebbe essere possibile fare uno snapshot senza fermare la VM, poi salvare tutto escluso lo snapshot (il quale e` attivamente modificato dal fatto che il guest gira) e al momento del restore, fare a meno dello snapshot, restorando quindi una VM che e` come se fosse stata resettata, quindi ha in effetti potenzialmente perso qualche dato, ma il vantaggio di questo sistema e` che il backup e` stato fatto con la macchina guest ancora in funzione, quindi senza interruzione del servizio. Questo sistema pone due limiti:

1- lo snapshot viene perso, quindi in effetti vi e` potenzialmente corruzione dei dati 2- fatto lo snapshot e il backup, devo "eliminare" lo snapshot, con VBoxManage snapshot discard (con gli appositi parametri), ma questa operazione non la posso fare se la VM e` accesa, quindi devo comunque fare una micro-interruzione, magari con un savestate, poi un discard, e poi riavviare.

Drivers SATA per Windows XP

Se si vuole usare una immagine di hard disk montata su un controller SATA, occorrono i drivers della Intel per i controller Intel, denominati "RAID/​AHCI Software -​​ Intel® Matrix Storage Manager" o anche "Intel Matrix Storage Technology", da montare tramite floppy all'installazione oppure dopo aver installato. In questo caso si monta prima il disco su un controller IDE normale (sempre virtuale), si installa, poi si abilita il sata lasciando il disco sull' IDE, si installano i drivers, e poi si cambia da IDE a SATA il controller virtuale. Notare che si puo` rimuovere dal pannello di controllo - installazione applicazioni l'applicazione "Intel matrix storage manager" in quanto a noi servono solo i drivers e della fuffa non ce ne facciamo niente. I driver resteranno installati comunque.

Molto interessante questa guida all'uso di virtualbox totalmente da terminale testo: http://guide.debianizzati.org/index.php/Installare_Virtualbox_su_un_server_Debian_senza_X

VirtualBox (last edited 2017-01-03 13:48:42 by Kurgan)