Uso dei dischi fisici in VirtualBox e VMware
24 settembre, 2007 25 commenti
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 !!!
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














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!
@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
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
@serendipippo
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
La soluzione è semplice
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
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
@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
@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/
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
@serendippo
tutto ok! il pezzo del file xml incollato è sparito, ma non fa nulla.
Buon divertimento,
Antonio
Ah ok,quindi reinstallando win dovrebbe andare,stasera mi cimento!
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
@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
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
@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/VDIVBoxManage 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/sddoppure aggiungi al gruppo “disk” il tuo utente con:
$ sudo adduser mioutente diskCosi 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
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
@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
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
@Antonio
In effetti è strano, non è possibile che siano danneggiati? puoi provare a farne una copia, compatta il disco con
VBoxManage modifyvdi filename.vdi compactoppure 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
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
@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
Ciao a tutti,
Uso ubuntu hardy.
Ho installato xp in vbox.
Installando un programma infetto, xp non parte più.
Compare la scelta con F8 delle soluzioni di avvio, ma nessuna funziona.
L’unica cosa che ho è il file .vdi nella cartella .virtualbox.
Pare che nessun antivirus installabile con wine o clamav per linux, riesce a scannerizzare il file.
Come faccio a pulire questo file se non posso aprirlo?
Qualche idea?
@BollettaDaPagare
Il modo più sicuro per aprire un disco VDI è quello di associarlo a un altra macchina virtuale, manca infatti un tool che esegue il mount, anche se ci sono dei tentativi escludendo l’offset calcolato sulla geometria del disco (che a me non ha funzionato).
Ti conviene installare un XP pulito, installare l’antivirus e associare il disco originale come secondario, oppure prendi una macchina virtuale linux, install clamav o altro e allo stesso modo scansioni il disco aggiunto come secondario. nell’ultimo caso è necessario ntfs-3g per scrivere sulla partizione NTFS.
Ciao e scrivi se non sono stato chiaro,
Antonio
Buonasera a tutti, avrei una domanda. E’ possibile far riconoscere a una macchina virtuale un disco “reale”? Ho creato una VM xp pro con vmware su Debian 5.0.2 e vorrei poter recuperare le mail memorizzate su un disco IDE che usavo come archivio con Thunderbird. Si può fare o devo per forza copiare tutto in un disco virtuale?
Grazie mille in anticipo
@mone78
come dicevo in questo post devi creare il disco vmdk con VBoxManage e registrarlo o associarlo nella tua macchina virtuale, esempio se il disco è /dev/sdb puoi usare
cd .VirtualBox/HardDisksVBoxManage internalcommands createrawvmdk -filename disco_sdb.vmdk
-rawdisk /dev/sdb -register
Quindi lo aggiungi come secondario. Sul manuale di VirtualBox è naturalmente sconsigliato l’uso dei dischi reali, pena la perdita di dati in caso di comandi errati, ma è sufficiente prestare un minimo di attenzione
Ciao,
Antonio
Grazie mille per la dritta, provo all’istante.
Ciao e grazie ancora