Qual è il modo consigliato per spostare una VM VirtualBox su un altro computer?


234

Uso VirtualBox 4.1.x sulla mia macchina Ubuntu e ho installato diverse macchine virtuali. Dato che ci sono diversi modi in cui uno può spostare una macchina virtuale in VirtualBox su un altro computer, mi chiedevo quale sia il modo consigliato:

  1. Utilizzare "Utilità di importazione / esportazione".
  2. Copia l'intera cartella della macchina virtuale, contenente i file .vdie .vbox.
  3. Clonare il VDI utilizzando "Virtual Media Manager" e quindi ricreare una macchina virtuale sul computer di destinazione ma utilizzando il VDI clonato come disco rigido.

Ho usato con successo il primo metodo diverse volte e ha sempre funzionato. Il problema è che dopo l'esportazione e l'importazione, l'immagine del disco viene trasformata in VMDK e non più in VDI!

Il secondo metodo è probabilmente il più semplice, ma non sono sicuro che la semplice copia dei file funzionerà o meno sul computer di destinazione. Durante la ricerca di questo metodo, ho scoperto che alcune persone avevano problemi in cui dovevano modificare il file VirtualBox.xml per risolverlo!

Alla fine, c'è il terzo metodo , ma richiede il lavoro extra per creare una VM simile alla configurazione della VM originale, il che non è desiderabile.

Dalla spiegazione sopra è chiaro che il mio metodo desiderato è il secondo, ma ho bisogno di un parere di esperti su questo se funziona o no. Non voglio che nessun editing XML mi ostacoli!

Qual è il metodo migliore per trasferire in modo sicuro le mie VM su un altro computer con VirtualBox?


2
Basta trasferire i file e posizionarli nella stessa posizione.
Ramhound,

2
@seyed 1. Una soluzione fail-safe con alti tassi di successo / riproducibilità potrebbe non essere sempre la soluzione consigliata e / o migliore a un problema e viceversa . Tuttavia, poiché chiedi della soluzione consigliata , l' opzione (2) dalla tua lista (sebbene soggetta a errori) sarebbe la più veloce e quindi consigliata! Opzioni (1) e (3) cadono sotto il fail-safe categoria, in quanto saranno lavorare nella maggior parte delle circostanze. PS: dopo l'esportazione, alcune (la maggior parte?) Impostazioni di configurazione possono essere modificate (se si utilizzano le opzioni 1/3)! ... Spero che sia di aiuto.
Amar

Risposte:


165

Ben fatto per fare le tue ricerche. Uso regolarmente tutte e tre le opzioni.

  1. (Utilizzare "Utilità di importazione / esportazione") . Questo è il più semplice perché combina l'intera VM in un singolo file e lo trasferisce senza problemi praticamente ogni volta. Tuttavia, nella mia esperienza durante la creazione del file OVA o OVF per l'esportazione, vengono eliminate tutte le istantanee e, se eseguite in modo errato, si può ottenere un file VMDK. Quando si reimporta la VM, si dovrebbe essere in grado di selezionare il tipo di file HDD che si desidera creare, VDI o VMDK.

  2. (Copia l'intera cartella della macchina virtuale, contenente i file .vdie .vbox) . Questa è la mia opzione preferita e anche se ho dovuto modificare il file XML alcune volte è stata colpa mia per aver rovinato qualcosa. Assicurarsi che quando si copia la VM, si ottengono TUTTI i file ad essa associati. I problemi che ho riscontrato sono stati quando alcuni snapshot e file VDI secondari si trovavano nella directory sbagliata e non venivano copiati correttamente. Se copi tutti i file (e le autorizzazioni) non dovresti avere alcun problema.

  3. (Clonare il VDI utilizzando "Virtual Media Manager" e quindi ricreare una macchina virtuale sul computer di destinazione ma utilizzando il VDI clonato come disco rigido). Ciò è meno desiderabile perché in questo caso si dispone di 2 copie di una macchina virtuale e può causare problemi di licenza, problemi di rete, ecc., A seconda di come si clona il file VDI.

In sintesi, consiglierei sicuramente l'opzione 2, assicurati solo di ottenere tutti i file necessari quando lo sposti.


Grazie per la risposta. Aspetterò ancora qualche giorno per vedere se qualcun altro ha qualche altro punto. (+1)
Seyed Mohammad,

Sembra che nessuno abbia nulla da aggiungere ... Quindi lo segnerò come risposta.
Seyed Mohammad,

Solo un riferimento aggiuntivo per l'opzione 1, link , dopo l'importazione, il formato è VDMK, sembra essere determinato e non può essere modificato.
simongcc

1
@tbenz Come evitare di ottenere un VMDK durante l'esportazione?
Don Rhummy,

13
Solo per essere completo: se si esegue l'opzione 2, farlo sulla macchina di destinazione: Virtualbox> Macchina> Aggiungi> [passare alla cartella in cui si trovano tutti i file VM]. Probabilmente è una buona idea mettere i nuovi file VM nella stessa cartella in cui sono archiviate tutte le altre VM.
Donn Lee,

47

Il metodo 2 ora funziona bene (con VirtualBox 4.0 e versioni successive) , senza che sia necessaria alcuna modifica XML:

  1. Ferma la tua macchina virtuale
  2. Esci da VirtualBox
  3. Copia la cartella VM nella nuova posizione
  4. Riavviare VirtualBox ed eliminare la vecchia macchina virtuale.
  5. Vai al menu Macchina ≥ Aggiungi e cerca la tua vecchia cartella.

Questo è tutto!

ps: ho VirtualBox 4.3.20 su OSX 10.10

Vedi questo post sul forum VirtualBox per maggiori dettagli.


4
Non riesco a credere che non sia stato votato troppo come dovrebbe essere! Questo è il modo più semplice (troppo facile!) Quando si spostano le macchine virtuali all'interno dello stesso sistema operativo. Due VM spostate con successo dall'unità C all'unità D. Il mio è Win7 64 bit con Virtualbox 5.x
Edwin Yip

1
Questo in realtà non funziona solo per spostare il file VDI, solo l'intera macchina virtuale.
DustWolf,

1
@DustWolf Giusto, ma questo è l'argomento della domanda.
David,

@DustWolf Questo è ciò che ha detto David. "Copia la cartella VM nella nuova posizione". Per quanto mi riguarda, questa cartella contiene l'intera macchina virtuale. Mi sto perdendo qualcosa?
Nikos,

@RestlessCobra sì, la nuova cartella contiene l'intera VM.
David,

18

La mia opzione preferita è anche l'opzione 2:

  1. Copia l'intera cartella VM, contenente i file .vdi e .vbox.

Ma a volte accadrà una mancata corrispondenza UUID. Spesso questo accade se si copia semplicemente l'immagine del disco VDI di una macchina in un'altra macchina, ma l'ho avuto accadere anche durante le copie diritte di directory complete.

Quindi, se questo è il messaggio che ricevi dopo aver spostato la macchina virtuale e aver provato ad avviarlo nella nuova configurazione:

Impossibile aprire il disco rigido.

Impossibile registrare il disco rigido perché esiste già un disco rigido con UUID.

Basta andare nella directory della tua macchina virtuale; ovviamente cambia il percorso effettivo in modo che corrisponda al percorso effettivo in cui stai andando:

cd /full/path/to/virtualbox/virtualmachine/Sandbox

Ed esegui questo comando per assegnare al disco un nuovo UUID:

VBoxManage internalcommands sethduuid Sandbox.vdi

9

Nel caso in cui qualcun altro stia cercando una risposta a questo, ho spostato con successo 5 VM Virtual Box su un'altra installazione di Win7 su un nuovo disco rigido sullo stesso computer (essenzialmente uno spostamento da un SO guest a un altro sullo stesso PC). Mi rendo conto che i driver su una macchina completamente nuova potrebbero variare e potenzialmente avere un effetto negativo sulla mossa, ma ho documentato il processo qui sotto nella speranza che possa aiutare qualcuno.

  • Non era necessario clonare macchine virtuali o modificare il file xml. La versione VB era abbastanza attuale: 4.3.12r93773.
  • Nuove copie di VM sono state create in una nuova cartella / unità condivisa per mantenere intatte le VM esistenti / vecchie. Posso ancora eseguire l'avvio dal vecchio disco rigido che ho conservato per la risoluzione di ridondanza / problema finché non sono soddisfatto della mia nuova configurazione; così posso accedere alle vecchie macchine virtuali nel loro stato precedente, se necessario.
  • Le lettere di unità varieranno / potrebbero non essere necessarie a seconda della configurazione.

Sul vecchio host Win7:

  1. Assicurarsi che tutte le macchine virtuali siano spente.

Sul nuovo host Win7:

  1. Creare una nuova cartella denominata X: \ NewVMs \ VirtualBox VMs (dalla nuova macchina Win7 per garantire le autorizzazioni OK)
  2. Copia / Incolla (non trascinare) tutte le VM e i relativi contenuti della cartella dalla vecchia cartella a questa cartella (usa nuove autorizzazioni)
  3. Disinstalla VirtualBox (se installato)
  4. Elimina la cartella .virtualbox e tutti i contenuti (se esistenti)
  5. REBOOT per confermare la mancanza di file di programma o voci di registro (se si disinstalla il vecchio VirtualBox).
  6. Installa / Reinstalla VirtualBox (assicurati di utilizzare la stessa versione di VirtualBox su cui sono state create le macchine virtuali sul vecchio host / macchina (nel mio caso ver. 4.3.12r93773))
    IMPORTANTE: (Non selezionare la casella per aprire / eseguire VirtualBox alla fine dell'installazione)
  7. Copia / incolla (non trascinare) .virtualbox cartella e contenuti dal vecchio host Win7 (di solito C: \ Users [nome utente] .VirtualBox
  8. Ora apri VirtualBox
  9. Impostare le preferenze per la nuova cartella di creazione della VM predefinita sullo stesso percorso del file della cartella delle VM VirtualBox appena creata: X: \ NewVMs \ VirtualBox VMs
  10. Test dello stato delle macchine virtuali

In bocca al lupo.


Mentre questa è una risposta informativa, non riguarda ciò che è stato chiesto. Un'altra domanda potrebbe essere una posizione più appropriata per la tua risposta.
Akted

@Steven, "... essenzialmente uno spostamento da un SO host a un altro ..."?
pythonlarry,

2

Per il caso speciale in cui:

  • hai una sola VM (o vuoi spostare tutte le VM),
  • e l'host è lo stesso hardware con la stessa versione del sistema operativo (o la reinstallazione dello stesso sistema operativo sulla stessa macchina)

Se sei in questo caso, allora le cose sono facili:

  1. Chiudere VirtualBox su entrambi gli host.
  2. Copia le cartelle .config/VirtualBoxe VirtualBox VMsdall'host di origine.
  3. Copia queste cartelle nell'host di destinazione.
  4. Avviare VirtualBox sull'host di destinazione

1

La 4a via

In VirtualBOX:

  1. Spegnere la VM
  2. Fare clic con il tasto destro e rimuovere la VM (non eliminare i file)
  3. Vai a file> Virtual Media Manager e rimuovi il .vdi
  4. Vai a File> Preferenze> Generali e imposta la cartella macchina predefinita nella nuova posizione
  5. Creare una nuova macchina virtuale Utilizzare la modalità esperto per creare la macchina virtuale senza un disco rigido

In Esplora file:

  1. Individua il file .vdi e copialo
  2. Vai alla nuova cartella macchina predefinita, all'interno ci sarà una cartella VM
  3. Incolla il file .vdi nella nuova cartella VM

Indietro in VirtualBOX:

  1. Fare clic con il tasto destro del mouse sulla VM e aprire le impostazioni
  2. Vai su Archiviazione> Controller: SATA e aggiungi un disco rigido, fai clic su scegli un disco esistente 11. Scegli il file .vdi nella nuova cartella VM

Nota: se il metodo 2 interrompe l'installazione di VirtualBOX, andare su C: \ Users \ .VirtualBox ed eliminare VirtualBox.xml e rinominare VirtualBox.xml-prev in VirtualBox.xml


0

Ho usato anche il metodo 2 per spostare la mia macchina virtuale e non ho dovuto apportare alcuna modifica a nessun file XML, ma ho avuto un paio di errori con USB e condivisione dei file e di seguito è come li ho riparati insieme al processo:

  1. Copia la macchina virtuale dal vecchio al nuovo pc. I file della macchina virtuale sono diversi dalla stessa macchina virtuale Oracle. Questi file si trovano generalmente in c: \ users \\ VM VirtualBox \ . Ho raccolto tutte le VM VirtualBox \ part e l'ho copiato in una posizione simile sul nuovo PC. Questo copia tutte le macchine virtuali che avevo sul PC originale.

  2. Ora sul nuovo PC, esegui virtual box e vai su Menu> Macchina> Aggiungi e seleziona il file .vbox dalla cartella copiata. Questo è tutto.

  3. Ora, quando eseguo la macchina virtuale su un nuovo PC, ho ricevuto un errore durante l'avvio:

inserisci qui la descrizione dell'immagine

  1. Non so perché il controller USB non funzionasse perché lo stesso funzionava sul computer originale. Sono andato avanti e ho installato VirtualBox Extension Pack

  2. Questa installazione è stata un po 'strana perché il download dell'installazione non era un file eseguibile. Ho cliccato su Oracle_VM_VirtualBox_Extension_Pack-5.1.4-110228.vbox-extpack e ho selezionato 'Seleziona un programma da un elenco di programmi installati' e poi ho selezionato la virtualbox Oracel e ha installato l'estensione. Ciò ha risolto il problema, ma un'altra soluzione meno desiderabile è che puoi disabilitare l'USB.

  3. Se nella VM originale c'erano cartelle condivise, potrebbero differire e si otterrà un errore. Rivedi quelli in Impostazioni >> Cartella condivisa ed elimina quelli che sono rotti. Apparirà un messaggio di errore

Questo.

È tutto.


-1

zar, prima cosa prima ... mai e poi mai spostare una macchina che si trova nello stato salvato, prima di spostare è necessario arrestare l'ospite, non solo salvare lo stato.

Assicurati anche di utilizzare la stessa versione di VirtualBOX su entrambi gli host, ma non solo la versione di VirtualBOX, anche la versione del pacchetto di estensione ... o almeno il nuovo host ha una versione superiore, ma mai una versione inferiore su nessuna di queste due.

E infine, l'ho imparato a mie spese, eliminare la configurazione della cartella CONDIVISA su VirtualBOX prima di spostare la macchina, quindi ricrearla in modo corretto ... molto importante quando l'host è un sistema operativo diverso (host Windows / Linux).

E proprio come nota a margine ... i sempre, uso sempre file VDI su disco rigido immutabili sia per OS che per VDI di dati (in questo modo lo stesso VDI DATI può essere usato per più di guest), specialmente trucco per pagefile.sys 4GiB

L'ultima parte, riutilizzare un file VDI immutabile rende le cose un po 'più difficili, VirtualBOX ha un GRANDE ERRORE.

Per vedere il Bug in azione:

  • Crea un VDI immutabile (come quello che uso per pagefile.sys)
  • Crea due o tre VM su VirtualBOX
  • Sposta uno di loro in cima all'elenco (solo per evitare di danneggiare qualcuno dei tuoi)
  • Esegui il backup dei file .vbox di ciascuna delle macchine che hai creato (per confrontarlo dopo che si è verificato il BUG)
  • Collega quel VDI immutabile a più di uno di quei computer (tranne quello in cima all'elenco)
  • Ora vedi il .vbox della macchina che si trova in cima all'elenco

Quella macchina è stata modificata, ha riferimenti alle altre macchine invertibili VDI.

Quindi il BUG è: modifica una macchina aggiungendo un VDI immutabile che viene usato da un'altra influenza la macchina in cima alla lista.

Perché diavolo riutilizzo lo stesso VDI 4GiB su tutte le macchine Windows? Facile, è un disco MBR con una partizione FAT32 in cui inserisco pagefile.sys, poiché è immutabile che tutte le macchine virtuali creeranno un file nella loro cartella di snapshot in cui memorizzano le modifiche e che si perdono al prossimo avvio, quindi lo faccio non ho bisogno di 4GiB per ogni guest memorizzato sul disco host, solo uno ... in questo modo risparmio un sacco di GiB poiché ho più di 20 finestre diverse per testare le app che sviluppo per me, tutte le combinazioni di (XP, Vista , 7, 8, 8.1, 10) * (32 bit, 64 bit) * (Proprio come è alla prima installazione, dopo ogni ServicePack, dopo l'aggiornamento completo di Windows), ottengo molti, molti ospiti ... quindi su tutti condivido l'invisibile 4GiB VDI per la RAM virtuale (pagefile.sys).

E se lasci che il BUG vada oltre, prova a spostare una di queste macchine su un altro host VirtualBOX (ricorda che sono solo macchine virtuali con una configurazione su di esse e nessun guest ancora installato su di esse), vedrai che VirtualBox non ti consente di aggiungerli poiché mancano alcuni VDI (è FALSO e VERO, è che tale prima macchina contiene i riferimenti a tali VDI che si trovano sulla macchina corretta).

Ora confronta i file .VBOX di tutti loro con i precedenti BackUp ... nota come uno viene modificato in modo errato? ... sì, è quello in cima alla lista.

Bene, questo BUG è stato informato su VirtualBOX alcuni anni fa, ancora non riescono a risolverlo ... e sta causando molti, molti problemi.

Inoltre, se sposti la prima delle macchine virtuali in una posizione più bassa, chiudi VirtualBox e riavviala ... ti dirà che alcune macchine sono danneggiate e non possono essere avviate ... sì, la prima nell'elenco deve essere trattato in una forma diversa se non si desidera avere molti problemi.

È un BUG davvero brutto che mi ci è voluto un sacco di giorni per scoprire (alcuni anni fa) l'ho imparato nel modo più duro!

L'avevo superato avendo una macchina che avevo chiamato:

  • Common Inmutable Disks

Ha una configurazione vuota e un solo VDI, sì, hai ragione, hai indovinato, l'inmutabile VDI che condivido per tutte le altre macchine virtuali.

Bene, quando apro il file .VBOX vedo al suo interno molte righe nella <MediaRegistry> <HardDisks>sezione, una per ogni macchina in cui utilizzo quell'inutilizzabile VDI ... solo come esempio (rimuovo i dati privati):

<MediaRegistry>
  <HardDisks>
    <HardDisk uuid="...UUID..." location="D:\VDIs\_Virtual_Memory_.vdi" format="VDI" type="Immutable">
      <HardDisk uuid="{...UUID...}" location="Snapshots\{...UUID...}.vdi" format="VDI" autoReset="true"/>
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows001 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows002 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows003 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows004 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows005 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows006 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows007 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows008 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows009 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows010 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows011 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows012 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows013 ... // This belongs to other virtual Machine
      ... and so on ...  // This belongs to other virtual Machine
    </HardDisk>
  </HardDisks>
</MediaRegistry>

BUG carino, non risolto da anni.

Bene, per spostare tali macchine ... devi modificare manualmente i file .VBOX, per mettere tutti questi riferimenti ai dischi sul nuovo host sul primo computer (quello che si trova in cima all'elenco) prima di aggiungere il .VBOX file nell'elenco, quindi quando li si aggiunge VirtualBOX ha i riferimenti ai VDI mancanti (mancanti causati dal grande BUG).

Il problema si verifica perché ogni volta che si connette un VDI utilizzato su un altro computer, VirtualBOX aggiorna due file .VBOX (quello che appartiene al computer in uso) e al primo nell'elenco.

Non sono del tutto sicuro di cosa succederebbe quando nella lista, il primo non avesse un VDI così comune collegato ad esso ... meglio non provarlo, visto quello che vedo.

Quindi migrare verso un altro HOST è molto più complicato di quello che sembra essere una cattiva implementazione della struttura interna dei file .VBOX e a causa di BUG veramente grandi quando VirtualBOX li modifica.

Non riesce:

  • La struttura interna (XML) dipende dall'HOST (Windows o Linux)
  • La modifica di una macchina può alterarne un'altra, non solo quella che viene modificata
  • ... cos'altro ?

Ho bisogno di più ... migra sempre le macchine facendo questo (e non ho mai avuto problemi, mai e poi):

  1. Prendi nota dell'elenco di tutte le macchine (ordine, raggruppamento, ecc.)
  2. Prendi nota del primo nell'elenco (tutta la sua configurazione)
  3. Prendi nota di tutte le proprietà delle macchine che voglio spostare su un altro host
  4. Copia i file .vbox come file .txt (quello in cima all'elenco + tutte le macchine che voglio migrare)
  5. Ricrea tutte le macchine (e ne hai una speciale in cima all'elenco) all'interno di VirtualBox sul nuovo host
  6. Chiudi VirtualBox sul nuovo host
  7. Diff confronta il vecchio .txt con i nuovi file .vbox e copia da .txt a .vbox alcune parti in modo umano, non solo Copia e incolla
  8. Apri VirtualBox e collega tutti i VDI nell'ordine corretto
  9. Ancora una volta Chiudi VirtualBox sul nuovo host
  10. Diff confronta il vecchio .txt con i nuovi file .vbox e 'correggi' da .txt a .vbox alcune parti in modo umano, non solo Copia e incolla

Tutto il resto (cartella snapshot e file VDI) li copio normalmente (copia e incolla del file system).

Tutto quel duro lavoro manuale è causato dal Big BUG VirtualBox: modifica / altera una macchina che non è stata modificata quando si collega un VDI immutabile che viene utilizzato su più di una macchina, altrimenti sarebbe sufficiente una semplice copia e incolla del file .VBOX (dopo correzione di percorsi di cartelle condivise, ecc.).


-2

Copia la cartella contenente la macchina nella destinazione, quindi dal menu: "Macchina" ---> "Aggiungi", quindi scegli il file vbox, NON il file vdi. Per me questo è andato perfettamente. Non sono sicuro se sono stato fortunato o se dovrebbe funzionare in questo modo.

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.