Come spostare i file di VirtualBox?


165

Per impostazione predefinita, VirtualBox memorizza tutti i dati in una directory sotto la home directory. So come cambiarlo, ma come posso cambiare la posizione delle immagini esistenti (senza modificare manualmente VirtualBox.xml)?

Sto lavorando su Windows e non voglio provare a utilizzare alcun collegamento NTFS .


4
Awww, stavo per suggerire collegamenti simbolici (risolvono tutto ™), ma hai bloccato quell'idea ... :(
DMA57361

2
Non mi fido affatto dei link su Windows. Mentre NTFS è in grado di farlo, Windows XP non ne sa nulla e ci sono già abbastanza problemi. Potrei essere inutilmente codardo ...
Maaartinus,

Ah, sì, non li toccherei su XP. Ma il supporto su 7 è piuttosto solido: devi ancora costruirli dalla linea cmd, ma non è davvero un lavoro ingrato. Non sono sicuro di Vista ...
DMA57361

È ancora peggio, la versione XP di NTFS supporta i collegamenti fisici, ma questi non possono estendersi sui volumi . Ovviamente, volevo spostare i dati in un'altra partizione.
maaartinus,

Gli hardlink non possono mai estendersi a volumi, solo i symlink possono (e possono essere usati per questo genere di cose, le mie cartelle utente sono tutte collegate al mio secondo HDD, per esempio). Ma personalmente eviterei comunque gli hardlink in XP (anche se fossero un'opzione).
DMA57361

Risposte:


138

Se intendi spostare tutta la tua VM in una posizione completamente nuova, dovresti semplicemente seguire queste 2 risposte:

Copia il post qui:

  1. Chiudere VirtualBox, eseguire il backup del file .VirtualBox \ VirtualBox.xml.
  2. Trova la cartella "Virtualbox VMs" esistente e copia (non sposta) l'intera cartella con i contenuti nella nuova unità E:
  3. Esegui VirtualBox, quindi per ogni VM a sua volta:

    3.1 Fare clic con il tasto destro del mouse sul nome della VM e selezionare "Rimuovi" dal menu a comparsa. Rispondi no al "elimina fisicamente i file?" domanda.

    3.1b dopo aver rimosso una VM dall'interfaccia utente, è necessario chiudere VirtualBox e lasciarlo chiuso per un tempo sufficiente affinché l'attività VBoxSVC in background scada e termini anche. Quindi è possibile riavviare l'app VirtualBox e utilizzare Macchina | Aggiungi per aggiungere nuovamente le macchine virtuali rimosse nel passaggio precedente.

    3.2 Selezionare la voce di menu Macchina | Aggiungi .., passare alla nuova posizione della VM sull'unità E :, quindi selezionare il file .vbox.

    3.3. Ripetere l'operazione per tutte le VM rimanenti.

  4. In File | Preferenze, imposta il percorso macchina predefinito su "E: \ VirtualBox VMs"
  5. Testa ciascuna delle macchine virtuali. Solo dopo aver verificato che funzionano tutti, eliminare la vecchia cartella VM contenente, ovvero eliminare "VM C: \ VirtualBox".

Quando lo faccio per una macchina con clone collegato, non riescono ad avviarsi
Nam G VU

1
Questo ha funzionato per me, anche se avevo anche bisogno di aggiornare i percorsi di ogni disco rigido e immagine di istantanea modificando il .VirtualBox\VirtualBox.xmlfile e facendo una ricerca / sostituzione. Inoltre, ho spostato solo le cartelle Machinese HardDisk, non tutti i file contenuti in .VirtualBox, poiché questa è tutta la configurazione globale e la registrazione e così via.
Dave Andersen,

4
Per gli utenti di Mac OS X, VirtualBox.xmlsi trova all'indirizzo ~/Library/VirtualBox/VirtualBox.xml. Le macchine virtuali si trovano in ~/VirtualBox VMs.
Siu Ching Pong -Asuka Kenji-

2
Virtual Box 4.3.0+ ha risolto l '"Ultima cosa importante", non ho nemmeno bisogno di chiuderlo - istruzioni .
PCaetano,

Forse potresti aggiungere anche la riga di comando "versione". 1) Elenca le VM esistenti tramite VBoxManage list vms. 2) Accanto ai nomi delle macchine virtuali, tra parentesi graffe, viene fatto riferimento ai loro UUID. Copia quello di interesse. I dettagli a riguardo possono essere recuperati tramite VBoxManage showvminfo UUID. 3) Annullare la registrazione della VM di interesse tramite VBoxManage unregistervm UUID. 4) Spostare la directory della VM di interesse. 5) Infine, registra la macchina tramite VBoxManage register NameOfVM.vbox- ovviamente, dove NameOfVM si intende il nome effettivo del .vboxfile VM da registrare.
Nikos Alexandris,

58

Avevo solo un paio di macchine virtuali e ho scoperto che potevo semplicemente cambiare il percorso di archiviazione predefinito per VirtualBox e quindi clonare le mie macchine virtuali. I cloni sono stati creati nella nuova posizione sul nuovo HD dove li volevo. Tutto intatto, istantanee e nessuna necessità di rimappare la posizione degli HD virtuali.


3
+1 Penso che questo sia il metodo migliore. VirtualBox sposta tutto per te in un piccolo pacchetto ordinato.
Dave Andersen,

3
questo è il modo migliore, non è richiesta la modifica manuale di cfg
Bojan Bjelic

Come fai a fare questo???
FlipFloop,

Questa dovrebbe davvero essere la risposta accettata
theV0ID,

1
Avvertenza: il clone non produce una copia perfetta e può comportare la necessità di aggiornare le licenze per il software installato quando cambiano gli ID macchina / disco. Questo è stato riscontrato quando si spostava una vecchia copia di Quicken su una VM su un nuovo disco.
MZB,

36

Il metodo più semplice non richiede la rimozione delle macchine virtuali e la confusione delle loro impostazioni.

  1. Copia la cartella VM Virtualbox su una nuova unità.

  2. Esegui il Virtual Machine Machine Manager. Esegui il file Media Manager -> Virtual Media Manager

    2a. Scegli la VM per cui spostare lo spazio di archiviazione. Fai clic sul pulsante Rilascia e quindi sul pulsante Rimuovi . Nella finestra di dialogo successiva, è possibile rimuovere o mantenere l'unità virtuale. Chiudi il gestore lasciandoti nel tuo Virtualbox Machine Manager.

  3. Seleziona la VM per cui hai appena rimosso il supporto, fai clic sul pulsante Impostazioni , fai clic sulla sezione Archiviazione . Aggiungi un controller per il supporto (di solito SATA), quindi aggiungi un disco rigido e scegli il disco esistente e seleziona il VD nella nuova posizione.

  4. Ripeti l'operazione per ogni macchina che stai spostando

Spegni la tua macchina virtuale nella nuova posizione per verificare. La prossima volta che visiti Virtual Media Manager , passando con il mouse sopra la voce VM ti mostrerà dove è archiviato il VD.

Assicurati di modificare le cartelle delle istantanee in modo che puntino alla nuova unità se le stai utilizzando. Ogni macchina ha un'impostazione della cartella dell'istantanea e VM Manager ha un'impostazione della cartella Macchina predefinita in File -> Impostazioni che deve essere modificata.

Inoltre ho dovuto anche modificare il percorso nel file xml. Dopodiché ha funzionato perfettamente.

NOTA: le cose sono cambiate un po 'da quando è stato scritto, vedi la risposta di Rob. Adesso è estremamente semplice.


2
penso che questo sia di gran lunga il modo più semplice per farlo.
Peter Perháč,

17

MOLTO, MOLTO più semplice. 1) passare a una nuova posizione 2) Fare clic con il tasto destro del mouse su Rimuovi dal menu Virtualbox 3) Selezionare 'Aggiungi' dal menu Macchina 4) Trovare l'icona blu 8kb che ha un tipo di 'definizione macchina Virtualbox'. Selezionalo e verrà aggiunto al tuo elenco di virtualbox. fare doppio clic sulla macchina virtuale e funziona.


Ancora più semplice di questo è quando si desidera aggiungere nuovamente le VM a VirtualBox, basta fare clic sul *.vboxfile nella sua cartella.
Joel Mellon,

2
Come cambiano le cose in tre anni ... Wish era stato così facile allora. Aggiunta nota alla mia risposta affinché vengano a vederlo.
Fiasco Labs,

1
Questo dovrebbe davvero essere più in alto. Ho armeggiato e non sono riuscito a farlo funzionare. È sufficiente rimuovere quelli "inaccessibili" nell'interfaccia utente e fare doppio clic sul file .vbox per aggiungerlo nuovamente utilizzando la nuova posizione.
wenbert,

Non funziona su host Linux. Ottenere questo errore: la sessione VM è stata chiusa prima di qualsiasi tentativo di accenderla. Codice risultato: NS_ERROR_FAILURE (0x80004005) Componente: SessionMachine Interface: ISession {7844aa05-b02e-4cdd-a04f-ade4a762e6b7}
Max N

1
La parte "rimuovi" di questo mthod sembra una cattiva idea che comporterà la perdita delle impostazioni, ma non è così. Questo metodo mantiene tutte le tue impostazioni ed è il più semplice di tutti i metodi che ho provato. Ha funzionato su un host Windows 10 con guest sia Windows 7 che Windows Sever 2016.
Night Owl il

13

Su Mac, modifica i percorsi in questo file:

/Users/pleddy/Library//VirtualBox/VirtualBox.xml

È stato facile, presto!


3
Sta usando Windows e inoltre non vuole modificare VirtualBox.xml.
ChrisN,

4
Questo mi è stato utile, tuttavia, poiché questa domanda è ancora googlabile se sei su Mac.
NReilingh,

Sono un utente mac e Google mi ha fatto atterrare qui e questa soluzione è la più semplice di tutte, ha perfettamente senso e ha funzionato per me :)
Mohit Singh,

Sono su Linux e mi è piaciuto il suono di questa risposta, ma sono stato scoraggiato dall'avvertimento nella parte superiore del file. Consiglieresti comunque di modificare direttamente l'XML? L'avviso dice: ** NON MODIFICARE QUESTO FILE. Se si apportano modifiche a questo file mentre è in esecuzione un'applicazione correlata a VirtualBox, le modifiche verranno sovrascritte in seguito, senza effetto. Utilizzare VBoxManage o la GUI di VirtualBox Manager per apportare modifiche. **
craq

11

Dopo aver sprecato un'intera giornata su questo problema (usando Virtualbox 5.0.12 su Arch Linux), ho finalmente risolto come suggerisce la risposta di Thomom. Per coloro che non sono sicuri della procedura esatta, il comando che clona un'intera macchina (comprese le istantanee) è:

VBoxManage clonevm --mode all --basefolder </new/path/> --register <VM_to_clone>

Ottieni il nome della VM con

VBoxManage list vms

Se necessario, citare percorso e nome.

Infine, controlla se tutto va bene e rimuovi l'originale.

Questo è tutto, davvero. Non c'è bisogno di preoccuparsi dei file XML o di un editor esadecimale. Non è nemmeno necessario utilizzare una GUI.

http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevm


Questa è stata l'unica risposta che ha funzionato per me. Dovrebbe essere più in alto.
Max N,

2
VM_to_cloneè l'UUID o il nome della VM. Con il comando dato (utilizzando un UUID), è stata creata una directory in /new/path/_<UUID>_ Clonee anche i file contenenti sono stati usati _<UUID>_ Clonecome nome. Per avere un nome più esplicito, usa la --name "Your preferred name here"bandiera.
Rob W,

... e per rimuovere la VM originale tramite l'interfaccia della riga di VBoxManage unregistervm UUIDcomando (UUID della VM ottenuto tramite VBoxManage list vms, non utilizzare il nome VM perché se si utilizza --nameper conservare il nome originale, si hanno più VM con lo stesso nome)
Rob W,

Avvertenza: il clone non produce una copia perfetta e può comportare la necessità di aggiornare le licenze per il software installato quando cambiano gli ID macchina / disco. Questo è stato riscontrato quando si spostava una vecchia copia di Quicken su una VM su un nuovo disco.
MZB,

Sembra che ci sia un comando dedicato ora, comunque: virtualbox.org/manual/ch08.html#vboxmanage-movevm
Michael P

4

Per fare lo stesso della risposta di Lucas Pottersky ma tramite la riga di comando (su Windows sostituisci vboxmanagecon VBoxManage.exe):

  1. Elenca tutte le macchine virtuali:

    vboxmanage list vms
    

    o solo in esecuzione:

    vboxmanage list runningvms
    

    quale per ogni macchina genera nome e UUID.

    Procedere come segue per ogni macchina che si sposta.

  2. Spegnilo con grazia:

    vboxmanage controlvm UUID acpipowerbutton
    
  3. Annullare la registrazione:

    vboxmanage unregistervm UUID
    
  4. Sposta la cartella della macchina virtuale nella nuova posizione.

  5. Registrarlo di nuovo fornendo il percorso del .vboxfile:

    vboxmanage registervm /path/to/machine.vbox
    

2

Questo ha funzionato anche con la versione MacOS di VirtualBox (versione 4.1.12). Ho aspettato 5-10 secondi per chiudere VirtualBox prima di riavviare. Ho cercato in Activity Monitor per assicurarmi che VBoxSVC si fosse chiuso correttamente.

Se non lo fai, otterrai un errore simile al seguente (sto copiando e incollando il messaggio di errore di qualcun altro che proviene da Windows). Se ricevi questo errore, è semplicemente perché non hai chiuso VirtualBox o hai aspettato abbastanza a lungo per chiudere VBoxSVC.

Failed to open virtual machine located in E:/<path>/<machine_name>/<machine_name>.vbox.

Cannot register the hard disk 'E:\<path>\<machine_name>\Snapshots/{0ece4bff-9185-4cff-9069-b3d1f4536394}.vdi' {0ece4bff-9185-4cff-9069-b3d1f4536394} 
because a hard disk 'C:\<path>\<machine_name>\Snapshots/{0ece4bff-9185-4cff-9069-b3d1f4536394}.vdi' with UUID {0ece4bff-9185-4cff-9069-b3d1f4536394} already exists.

Result Code: E_INVALIDARG (0x80070057)
Component: VirtualBox
Interface: IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}

2

In OS X con VirtualBox v4.3.14, tutto quello che dovevo fare era fare doppio clic sul .vboxfile dalla nuova posizione, quindi apriva VirtualBox e lo aggiungeva all'elenco delle VM disponibili.


Ti preghiamo di non aggiungere "grazie" come risposta. Invece, vota le risposte che ritieni utili.
Scott,

La mia risposta non è un "grazie". Ho modificato il testo per renderlo più ovvio. Grazie.
Tyson Phalp,

2

C'è una posizione di archiviazione predefinita nelle impostazioni in VirtualBox: http://mattvelic.com/default-vm-location/

Ora morto. La macchina Wayback ha il contenuto:

http://web.archive.org/web/20131116130725/http://mattvelic.com/default-vm-location

... controlla le Preferenze nel menu File. Ecco! Il primo elemento nella scheda Generale è Cartella macchina predefinita. http://web.archive.org/web/20131116130725im_/http://54.225.211.105/wp-content/uploads/2012/11/VB_Preferences.png Ho modificato la posizione in modo da puntare al mio disco di archiviazione e rapidamente ho rifatto il mio VM. Questa volta VirtualBox ha creato entrambi i file della macchina e il VDI nella posizione corretta. La vera lezione qui è che a volte la soluzione non deve essere tecnica. Penso che come professionisti IT tendiamo a pensare che la risposta a un problema sarà complicata. Tieni gli occhi aperti per le soluzioni ovvie!


Questo link è ora morto. Cerca di non pubblicare link come risposte. Quando sono morti, SU viene lasciata con l'innesto per ripulire.
sig

aggiornato con il contenuto di archive.org
Rebecca,

1

Non penso sia possibile.

Puoi spostare il VDI nella nuova posizione, ma non credo che tu possa evitare la modifica XML. In alternativa (ma in realtà è lo stesso dell'edizione XML), creare una nuova macchina virtuale con la GUI e scegliere l'immagine spostata come disco soddisferebbe le tue esigenze?


1
Ho dato una seconda occhiata all'xml ed è in realtà molto semplice. La creazione di una nuova macchina non è buona poiché vorrei preservare le mie impostazioni (non ricordo cosa ho cambiato, potrebbe essere completamente irrilevante o meno).
maaartinus,

1

Ho provato il metodo originale (rimuovere il VDI, allegare la nuova copia), ho ricevuto il messaggio che quello vecchio esiste ancora e non ho potuto allegare la nuova copia anche quando ho riavviato il sistema operativo (su Mac OS X El Capitan).

La correzione era nel menu / File / Virtual Media Manager, rimuovere il VDI esistente. Funziona anche se ci sono istantanee; rimuovi semplicemente tutti i VDI di snapshot in ordine inverso. Non è necessario chiudere e riaprire VirtualBox.


0

Non ho mai usato virtualbox su Windows ma su Ubuntu si sposta il VDI e nella GUI di virtualbox si fa clic con il tasto destro del mouse sulla VM e si utilizza il menu di configurazione -> archiviazione in cui è possibile modificare la localizzazione VDI nel punto in cui è stato spostato il file. Per quanto riguarda la definizione di altri file macchina, li sposti e nella GUI vai su Preferenze e cambi la posizione della directory macchine predefinita nella directory che hai spostato.


0

Io uso questo metodo:

  1. Dalla GUI di VirtualBox, selezionare la macchina virtuale e rimuovere l'HDD collegato
  2. Copia il file (es. Vdi) nella nuova posizione
  3. Genera un nuovo UUID per .vdi nella nuova posizione con il comando vboxmanage internalcommands sethduuid "my path to myhdd.vdi" 6912BF7F-13BB-4E70-A2CA-C92300FEC3DC

    (Nell'esempio precedente usa il tuo UUID, o non aggiungerlo affatto: il comando ne genererà uno automaticamente. Inoltre, se ometti questo passaggio, quando aggiungi il .vdi dalla nuova posizione otterrai un errore che l'UUID esiste già ).

  4. Ora torniamo alla GUI di VirtualBox, scegli la tua VM e in Setttings / Storage collega l'HD (file .vdi) dalla sua nuova posizione.

e fatto.


-1

In Oracle VM VirtualBox (testato con la versione 6.0.4), è sufficiente arrestare la VM -> fare clic con il pulsante destro del mouse sulla VM in VirtualBox Manager -> fare clic su "Sposta ..." -> selezionare la nuova directory. Questo è tutto!


@Moreaki: A proposito, "leggibilità" (e "leggibile") sono scritti senza una "D".
Scott,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.