Uso dei dischi fisici in VirtualBox e VMware

24 09 2007


Nella configurazione di un ambiente virtuale i dischi vengono configurati solitamente in modalità dinamica per evitare di usare spazio inutilmente, anche se in questo modo il file vmdk o vdi cresce con l’uso della macchina, riducendo così le prestazioni, ma anche per il fatto di gestire su server diversi le macchine.

Quando lo spazio viene assegnato invece staticamente, c’è un aumento delle prestazioni, ma il file assume dimensioni maggiori. Esiste però la possibilità di adoperare partizioni o dischi fisici, anche esterni, sia in VMware che in VirtualBox, ma in questo caso è relativo a un singolo server oppure a un disco esterno che viene spostato da un posto all’altro. E’ chiaro che la scrittura/lettura in una partizione fisica rende il sistema più fluido e efficace.

Possiamo per esempio collegare un hard disk esterno e avere il nostro sistema virtuale trasportabile. Nell’esempio che segue è stata fatta una installazione vera di Ubuntu (daily: 23.09.2007) su Hard Disk USB e successiva virtualizzazione in VirtualBox e VMware.

Di fatto Linux è superiore :) nel cambio hardware (da un sistema server a un notebook a VirtualBox oppure a VMware), poiché di solito sono presenti i moduli per la gestione della rete, senza il pericolo di non accedere al “sistema”. Basta usare un driver grafico “vesa” semplicemente cambiando una riga in xorg.conf o rigenerandolo per VirtualBox o VMware con:

$ sudo dpkg-reconfigure xerver-xorg

Il risultato che il disco USB con Ubuntu 7.10 installato (versione daily, scaricabile da qui) è gestibile con pochi passaggi sia allo stato puro (boot da USB), sia con VirtualBox che con VMware. In questo caso la virtualizzazione scelta può essere trasportata e usata per sviluppo o test ;)

L’approccio dei due sistemi è simile, appena un po più complicato dal lato di VirtualBox, infatti dando un’occhiata con un editor di testo al file vmdk relativo all’hard disk esterno, troviamo semplicemente poche righe:

Il disco VMware 40GBUSB_lindy.vmdk:

# Disk DescriptorFile
version=1
CID=7170a4a7
parentCID=ffffffff
createType="fullDevice"

# Extent description
RW 78140160 FLAT "/dev/sdb" 0

# The Disk Data Base
#DDB

ddb.toolsVersion = "0"
ddb.adapterType = "lsilogic"
ddb.geometry.biosSectors = "63"
ddb.geometry.biosHeads = "255"
ddb.geometry.biosCylinders = "4864"
ddb.geometry.sectors = "63"
ddb.geometry.heads = "255"
ddb.geometry.cylinders = "4864"
ddb.virtualHWVersion = "4"

Sembra semplice e forse lo è, ma per generare il disco VirtualBox, bisogna ricorrere a VBoxManage, un tool disponibile in VirtualBox, con la seguente sintassi:

ATTENZIONE: IL MANUALE DI VIRTUALBOX AVVERTE DEL RISCHIO SULL’USO DEI DISCHI FISICI !!!

Dal manulale VB 1.5

Ammettendo che il disco sia /dev/sdb useremo:

$ cd .VirtualBox /VDI
$ sudo VBoxManage internalcommands createrawvmdk -filename \
 40GB_USB_lindy.vmdk  -rawdisk /dev/sdb -register
$ sudo chown myuser:myuser  40GB_USB_lindy.vmdk

Avremo quindi il disco VirtualBox 40GB_USB_lindy.vmdk

# Disk DescriptorFile
version=1
CID=6ec31108
parentCID=ffffffff
createType="fullDevice"

# Extent description
RW 78140160 FLAT "/dev/sdb"

# The disk Data Base
#DDB

ddb.virtualHWVersion = "4"
ddb.adapterType="ide"
ddb.geometry.cylinders="16383"
ddb.geometry.heads="16"
ddb.geometry.sectors="63"
ddb.uuid.image="3e968207-3196-4f4a-1cb0-c6927e351438"
ddb.uuid.parent="00000000-0000-0000-0000-000000000000"
ddb.uuid.modification="00000000-0000-0000-0000-000000000000"

che somiglierà molto a quello di VMware.

Ho usato il disco vmdk di VMware in VirtualBox senza problemi, ma non è stato possibile il contrario, forse le stringhe di controllo avevano qualche errore.

Per vedere le partizioni invece la sintassi è:

$ sudo VBoxManage internalcommands listpartitions -rawdisk /dev/sdb
VirtualBox Command Line Management Interface Version 1.5.0(C) 2005-2007 innotek GmbH

All rights reserved.

Number  Type   StartCHS       EndCHS      Size (MiB)  Start (Sect)

1       0x82  0   /1  /1   242 /254/63          1906           63

2       0x83  243 /0  /1   1023/254/63         36248      3903795

Questo sistema per esempio mi ha permesso di testare il boot da periferiche USB senza riavviare, e avere comunque un filesystem leggibile in qualunque situazione, nonché di poter paragonare i due sistemi di virtualizzazione e infine, ma non ultimo, di dare un’occhiata all’ISO ubuntu daily.

Enjoy :) :) :)








Azioni

Informazione

20 risposte

25 09 2007
khelidan

Ciao,sai se questo metodo è utilizzabile anche con una partizione win?Sarebbe l’ideale,sapevo c’era un metodo con vmware ma preferire virtualbox decisamente!

25 09 2007
Antonio Doldo

@khelidan
il boot è sicuramente possibile, il problema è che se lo fai su una installazione esistente, l’hardware verrà riconosciuto e se arrivi alla modalità provvisoria è già tanto ;)
Se invece devi installare formattando, non vedo dove potrebbe essere il problema.
Ciao,
Antonio

27 09 2007
serendippo

ciao, continuo sempre a consultare il tuo blog x gli ottimi spunti sulla virtualizzazione.
Finora sto sperimentando con VirtualBox (dentro Fedora 7), ma ho ancora 2 problemi generali: uno relativo allo spazio e l’altro a uscire su internet.
(1) CAPIENZA
Come sai, il programma legge anche gli ISO delle distro da montare, che IMHO presentano vari vantaggi (velocità di accesso, permanenza ecc.). Però sommando a questi, che ovviamente posso creare sotto la mia /home, e i dischi virtuali (che pure sono montati di default come /home/myhome/VirtualBox/*.vdi), anche i gigabyte della partizione HOME iniziano a scarseggiare.
Naturalmente i files *.vdi non posso crearli sotto altre cartelle, altrimenti non hanno permessi di scrittura (o forse dovrei lanciare VirtualBox da root? ma non mi pare una buona idea) e idem per i files *.iso, ciascuno dei quali in genere pesa 5/600 mega o anche di +…
Conosci qualche workaround? Oppure VMware si dimostra + flessibile sotto tale riguardo? Considera però che NON sono un tecnico né un grande esperto di Linux. Le tue linee di comando sono certo molto efficaci, ma irraggiungibili x le mie modeste conoscenze informatiche.
(2) RETE
Ho un’Adsl flat (Fastweb) che non mi ha mai dato problemi (né sotto Win né con alcuna versione di Linux che abbia installato non-virtualmente). Invece con VirtualBox spesso non riesco mai ad arrivare al web col browser, pur provando a impostare NAT (che dovrebbe essere il default) e ‘Rete interna’, Hai qualche idea brillante?

Scusa la lunghezza e grazie x eventuali suggerimenti

27 09 2007
Antonio Doldo

@serendipippo
La soluzione è semplice :) se hai spazio su un’altra partizione è sufficiente creare la cartella per i dischi VDI e dare i permessi al tuo utente, e poi, se vuoi, crei un link simbolico per vederli subito in /home/myhome/.VirtualBox/VDI
Per esempio se hai un disco esterno visibile in /media/sdc1 puoi seguire questi passaggi:

$ sudo mkdir /media/sdc1/Dischi_VDI/
$ sudo chown -R mysuser:myuser /media/sdc1/Dischi_VDI/

Esempio se hai un disco ubuntu.vdi in quella cartella, fai il link con

sudo ln -s /media/sdc1/Dischi_VDI/ubuntu.vdi
/home/myhome/.VirtualBox/VDI

anche se questa è una parte superflua, poiché il gestore dei dischi VirtualBox (Ctrl+D) può aggiungere dischi da qualunque partizione ;)
Per la rete non so quale sia il tuo problema, non so se il NAT possa essere inefficace con fastweb :(

Ciao e facci sapere….
Antonio

28 09 2007
serendippo

grazie della risposta sollecita, pensavo di scocciarti con queste cose di ‘bassa cucina’… oltre tutto era off-topic rispetto al tuo ultimo post!

RETE
lascia perdere, non penso che dipenda da Fastweb perché ad esempio con gli *buntu riesco a andare su internet, con altre distro no. Forse c’è da settare qualcosa nelle loro impostazioni, ma la situazione è troppo confusa e tutto sommato secondaria x quello che devo fare

SPAZIO DISCO
intuivo qualcosa del genere, ma da solo non ci sarei mai arrivato; la tua spiegazione è molto chiara.
Forse però c’è un errore di sintassi? cioè, il comando corretto non dovrebbe essere:
sudo ln -s /media/sdc1/Dischi_VDI/ubuntu.vdi /home/myhome/.VirtualBox/VDI/ubuntu.vdi

* Integrazione 1: dici che è superfluo. Intendi che posso fissare il percorso anche da Impostazioni generali (Ctrl+D) > Generale > Cartelle predefinite > File VDI ? Ossia, sostituendo il default /home/myhome/.VirtualBox/VDI con (per riprendere il tuo esempio) /media/sdc1/dischi_VDI/ ?
* Integrazione 2: immagino che anziché un disco esterno, possa essere pure un secondo hard disk (interno, quindi). E dovrebbe essere anche più rapido in fase di lettura/scrittura, vero?

Ora però approfitto della tua cortesia e ti pongo un altro paio di quesiti, credo anch’essi banali per te.
(A) AGGIORNAMENTI
Se in una macchina virtuale Ubuntu faccio un update di (ipotizziamo) 300 MB, il file ubuntu.VDI si incrementerà di 300 MB?
(B) LETTORE CD/DVD
Quando si crea una qualunque macchina virtuale o anche dopo, si deve optare per la lettura CD dal driver oppure da una ISO (Impostazioni > CD/DVD-Rom > Monta lettore: Lettore dell’host | File immagine ISO). C’è modo per fargli leggere l’ISO da un’altra locazione (che non sia nella mia home, per i soliti motivi di spazio), eventualmente dopo averla copiata e cambiato i permessi anche a questa?
E se non è possibile in VirtualBox, si può fare in VMware?
Il motivo di questa nuova domanda è che se devo lasciare il CD inserito, siccome ho un solo driver ovviamente non posso utilizzarlo per nient’altro…
O forse, dato il calo dei prezzi, conviene montare un secondo lettore (magari un USB esterno)?

Grazie molte di tutto

28 09 2007
Antonio Doldo

@serendippo
Il comando è corretto, ma per precisione avrei dovuto mettere lo slash finale nella destinazione, quindi:

$ sudo ln -s /media/sdc1/Dischi_VDI/ubuntu.vdi /home/myhome/.VirtualBox/VDI/

* Integrazione 1: No, volevo dire che quando crei un disco o ne aggiungi uno già esistente, (Ctrl+D, Nuovo o Aggiungi) puoi selezionare il percorso che ti pare e registrare il disco, il tutto viene memorizzato nel file xml relativo alla macchina, esempio:
$ grep -i disk /home/adoldo/.VirtualBox/Machines/40GBUSB_lindy/40GBUSB_lindy.xml

(B) LETTORE CD/DVD: si, esattamente come il file vdi.

Integrazione 2: Si, certo il disco interno va benissimo, anzi sia IDE o SATA, è sicuramente più veloce di USB2.

(A) AGGIORNAMENTI: anche di più ;)
Fino a quando hai spazio è sempre meglio usare l’ISO.

Ciao e buona virtualizzazione :)
Antonio

28 09 2007
Antonio Doldo

@serendipippo
purtroppo il parser di wordpress si mangia i codici “potenzialmente malevoli”, graffe e stringhe :(
il comando per il link invece è:

$ sudo ln -s /media/sdc1/Dischi_VDI/ubuntu.vdi /home/myhome/.VirtualBox/VDI/

28 09 2007
serendippo

molte grazie
non mi pare che ci siano tagli gravi, capisco bene tutto — o forse vuol dire non ho capito nulla? ;-)
ora finalmente comincio a divertirmi con la virtualizzazione!!!
CIAO

28 09 2007
Antonio Doldo

@serendippo
tutto ok! il pezzo del file xml incollato è sparito, ma non fa nulla.
Buon divertimento,
Antonio

2 10 2007
khelidan

Ah ok,quindi reinstallando win dovrebbe andare,stasera mi cimento!

24 01 2008
vincenzo

Ho un HDD Quantum da dedicare completamente alla virtualizzazione. In VMware ho impostato l’utilizzo del disco fisico e ho installato Windows XP come S.O. ospite.
Non capisco come mai in “gestione periferiche” viene sempre visto come “VMware HDD”… E’ possibile in qualche modo farlo vedere quello che veramente è, e cioè un “Quantum Fireball LM20.5″?

grazie :)

24 01 2008
Antonio Doldo

@vincenzo
Non credo, verrebbe meno il concetto di virtualizzazione. Se ci pensi, questo fa si che spostandosi su hardware diversi il sistema deve funzionare, proprio perchè lo strato del software di virtualizzazione interviene per “dialogare” con l’hardware reale. Per lo stesso motivo vedrai sempre la stessa scheda video e la stessa scheda di rete ;)
almeno per ora…
Ciao,
Antonio

16 09 2008
Pietro Lo Surdo

Ciao, io ho virtualizzato un XP all’interno di una Ubuntu 8.04 ma non riesco a fargli vedere un disco SATA che invece viene visto regolarmente da Linux e da XP “reale”. Ho provato a dargli i driver SATA ma in gestione periferiche vedo il drive con l’iconcina gialla. Forse manca qualche pezzo di configurazione in VBox?.
Grazie

16 09 2008
Antonio Doldo

@Pietro Lo Surdo
non mi viene niente altro in mente se non quello di “estrarre” il disco fisico in formato vmdk e darlo in pasto alla macchina virtuale, per esempio per il disco /dev/sdd potresti usare:
cd .VirtualBox/VDI
VBoxManage internalcommands createrawvmdk -filename discosdd.vmdk
-rawdisk /dev/sdd -register

E’ opportuno però dare i permessi giusti allo USER
Se non ti importa niente della sicurezza, dai un:

sudo chmod 666 /dev/sdd

oppure aggiungi al gruppo “disk” il tuo utente con:

$ sudo adduser mioutente disk
Cosi si possono usare per esempio le pendrive (solo in linux) e quindi tutti i dischi fisici. Piccola nota: Il formato vmdk in virtualbox è leggibile e scrivibile, ma non viene supportato lo snapshot, nè tantomeno il writethrough ;)
Fammi sapere, ciao,
Antonio

28 09 2008
Antonio

Ciao, da tempo impazzisco ad installare diverse versioni di vbox nell’intento di leggere dei file di XP vdi creati con le versioni 1.5.2, 1.6.2 e 2.0.2 tutte non ose per Kubuntu 8.04 e per XP Home E.
La mia domanda è: i file VDI non dovrebbero essere letti indipendentemente da qualsiasi versione che si installi?
Mi capita ad esempio che sulla 1.5.2 per XP mi legge un file creato li, ma se utilizzo un altra versione non me lo permette. Stessa cosa su Kubuntu virtualizzando sempre XP.

Grazie

28 09 2008
Antonio Doldo

@Antonio
Vorrei fare 2 piccole considerazioni:
* la prima è che il formato dei dischi VDI è rimasto invariato da una versione all’altra
** la seconda che ogni versione di virtualbox gestisce i tags xml della macchina virtuale in modo diverso
Per cui il disco rimane lo stesso e ricreando la macchina virtuale questo viene riletto. A questo punto però può succedere che le caratteristiche della nuova versione di virtualbox, non piacciano a XP, che già di suo risente anche degli aliti di vento.
Quello che puoi fare, dopo aver fatto un backup dei files xml (tutta la dir .VirtualBox, escludendo VDI, cioè VirtualBox.xml, Machines/macchina/macchina.xml) è di riassociare il disco VDI a una macchina nuova generata con la nuova release, reinstallando le Guest Additions relative alla versione.
Ciao,
Antonio

28 09 2008
Antonio

Grazie per la celere risposta, tra le molte prove l’ultima che avevo già fatto su Kubuntu è stata quella di eliminare l’intera dir .VirtualBox tranne i file .VDI poi disinstallare la vecchia versione di vbox seguito da un “sudo apt-get autoclean” e reinstallato l’ultima versione 2.0.2 non OSE.
Dopo ho creato nuove macchine associandole ai file .VDI ma appunto nessuna si avvia tranne l’ultima creata con questa versione. Idem su Windows.

Le Guest Additions non sono installate nei file creati con una determinata versione? se così non potrebbe dar fastidio ai file caricati in altre versioni?

Comunque sia se non c’è verso di poterli utilizzare, a quanto pare neppure reisntallando la versione con cui si sono creati (e visto la tua considerazione sui file VDI), almeno su Kubuntu dalle prove fatte, vorrà dire che rifarò il tutto.

Su Windows però in una prova fatta ieri mi ha letto il file in vbox 1.5.2 mentre niente nella 1.6.2 e 2.0.2, comunque per trovare conferma proverò nuovamente.

Scusami se sono stato ripetitivo, volevo solo cercare di spiegarmi meglio.

Grazie
Ciao

28 09 2008
Antonio Doldo

@Antonio
In effetti è strano, non è possibile che siano danneggiati? puoi provare a farne una copia, compatta il disco con

VBoxManage modifyvdi filename.vdi compact

oppure apri una macchina virtuale e imposta quello che non si apre come disco secondario.

Per le Guest Additions di solito devono seguire la versione, ma solo nel caso di macchine funzionanti :(
Solo come consiglio finale, puoi provare la rel svn per ubuntu/debian dal nostro repository e vedi se ti può essere d’aiuto, il link diretto è:
http://www.ilportalinux.it/repository/pool/binary/dists/hardy/i386/virtualbox/
Ciao,
Antonio

29 09 2008
Antonio

Ho provato in Kubuntu (amd 64) a compattare un file ma non si apre mentre impostando i 5 dischi incriminati come secondari riesco a vederne e copiarne il contenuto, chiaramente dall’ultima macchina creata con la 2.0.2.

Appena riesco provo anche su Windows.

ps. Eventualmente la versione OSE permette di caricare le periferiche USB, cd e cartelle condivise?

Ciao

29 09 2008
Antonio Doldo

@Antonio
Bene, almeno si è capito che i dischi in qualche modo sono leggibili, anche se non fanno il boot, purtroppo.
Per quanto la riguarda la versione OSE, anche l’ultima svn, NON ha il supporto USB, mentre non ci sono problemi per le cartelle condivise, vedi:
http://www.virtualbox.org/wiki/Editions
Ciao,
Antonio

Lascia un commento