Uso dei dischi fisici in VirtualBox e VMware



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🙂🙂🙂







Info Antonio Doldo
www.toolinux.it - www.virtualboxes.org - adoldo.wordpress.com - Linux user & Android fan

25 Responses to Uso dei dischi fisici in VirtualBox e VMware

  1. khelidan scrive:

    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!

  2. Antonio Doldo scrive:

    @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

  3. serendippo scrive:

    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

  4. Antonio Doldo scrive:

    @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

  5. serendippo scrive:

    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

  6. Antonio Doldo scrive:

    @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

  7. Antonio Doldo scrive:

    @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/

  8. serendippo scrive:

    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

  9. Antonio Doldo scrive:

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

  10. khelidan scrive:

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

  11. vincenzo scrive:

    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🙂

  12. Antonio Doldo scrive:

    @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

  13. Pietro Lo Surdo scrive:

    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

  14. Antonio Doldo scrive:

    @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

  15. Antonio scrive:

    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

  16. Antonio Doldo scrive:

    @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

  17. Antonio scrive:

    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

  18. Antonio Doldo scrive:

    @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

  19. Antonio scrive:

    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

  20. Antonio Doldo scrive:

    @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

  21. BollettaDaPagare scrive:

    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?

  22. Antonio Doldo scrive:

    @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

  23. mone78 scrive:

    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

  24. Antonio Doldo scrive:

    @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/HardDisks
    VBoxManage 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

  25. mone78 scrive:

    Grazie mille per la dritta, provo all’istante.
    Ciao e grazie ancora

Lascia un commento

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: