zar, prima di tutto… non spostare mai e poi mai una macchina che è in stato di salvataggio, prima di spostare è necessario spegnere l'ospite, non solo salvare lo stato.
Assicuratevi anche di utilizzare la stessa versione di VirtualBOX su entrambi gli host, ma non solo la versione VirtualBOX, anche la versione del pacchetto di estensione vesion… o almeno il nuovo host hanno una versione più alta, ma mai una versione più bassa su uno qualsiasi dei due.
E infine, l'ho imparato a fatica, cancellare la configurazione delle cartelle condivise su VirtualBOX prima di spostare la macchina, e poi ricrearla in modo corretto… molto importante quando gli host sono sistemi operativi diversi (host Windows / Linux).
E come nota a margine… i allways, allways use inmutable hard disk VDI files for OS as well as for data VDIs (in questo modo lo stesso DATA VDI può essere usato per più di un ospite), trucco speciale per il pagefile 4GiB. sys
Quest'ultima parte, riutilizzare un file VDI inmutabile rende le cose un po’ più difficili, VirtualBOX ha un BIG BUG.
Per vedere il Bug in azione:
- Creare un VDI inmutabile (come quello che uso per pagefile.sys)
- Creare due o tre VM su VirtualBOX
- Spostare uno di loro in cima alla lista (solo per evitare di danneggiarne uno qualsiasi dei vostri)
- Fare il backup del . vbox di ciascuna delle macchine che avete creato (per confrontarle dopo il BUG)
- Allegare quel VDI inmutabile a più di una di quelle macchine (tranne quella in cima alla lista)
- Ora vedete il .vbox della macchina che è in cima alla lista
Quella macchina è stata modificata, ha riferimenti alle altre macchine inmutabili VDI.
Quindi il BUG è: Modificare una macchina aggiungendo una VDI inmutabile che è usata da un'altra macchina influisce sulla macchina in cima alla lista.
Perché diavolo riutilizzo la stessa 4GiB VDI su tutte le macchine Windows? Facile, è un disco MBR con una partizione FAT32 dove ho messo pagefile.sys, dato che è inmutabile tutte le macchine virtuali creeranno un file nella loro cartella snapshot dove memorizzano le modifiche, e che si perdono al prossimo avvio, quindi non ho bisogno di 4GiB per ogni guest memorizzato sul disco host, solo un… In questo modo risparmio molto GiB, dato che ho più di 20 finestre diverse per testare le applicazioni che sviluppo per le mie, tutte le combinazioni di (XP, Vista, 7, 8, 8, 8.1, 10)*(32Bits, 64Bits) * (così come alla prima installazione, dopo ogni ServicePack, dopo l'aggiornamento completo delle finestre), ottengo molti, moltissimi guest… così su tutti condivido il 4GiB VDI inmutabile per la ram virtuale (pagefile.sys).
E se lasciate che il BUG vada oltre, provate a spostare una di queste macchine su un altro host VirtualBOX (ricordate che sono solo macchine virtuali con una configurazione su di esse e nessun guest ancora installato su di esse), vedrete che VirtualBox non vi permette di aggiungerle in quanto mancano alcuni VDI (è FALSO e VERO, è che tale prima macchina contiene i riferimenti a tali VDI insteediati di essere sulla macchina corretta).
Ora confrontate il . VBOX di tutti i file VBOX con i precedenti BackUp… notate come uno è stato modificato in modo errato?…. sì, è quello in cima alla lista.
Bene, questo BUG è stato informato a VirtualBOX alcuni anni fa, non possono ancora aggiustarlo… e sta causando molti, molti problemi.
Inoltre, se spostate quello in alto sulle macchine virtuali in una posizione più bassa, chiudete VirtualBox e rilanciatelo… vi dirà che alcune macchine sono danneggiate e non possono essere avviate… sì, la prima della lista deve essere trattata in modo diverso se non si vogliono avere molti problemi.
È un BUG veramente brutto che mi ci sono voluti molti giorni per scoprirlo (alcuni anni fa) l'ho imparato nel modo più difficile!
L'avevo superata avendo una macchina che avevo chiamato:
Ha una configurazione vuota e una sola VDI, sì, hai ragione, hai indovinato, la VDI inmutabile che condivido per tutte le altre macchine virtuali.
Bene, quando apro il file .VBOX vedo al suo interno molte righe sulla sezione <MediaRegistry>
<HardDisks>
, una per ogni macchina dove uso quel VDI inmutabile… proprio come un campione (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>
``` &001
Pretty BUG, non risolto da anni.
Bene, per spostare tali macchine... è necessario modificare manualmente il . VBOX, per mettere tutti i riferimenti di tali dischi sul nuovo host sulla prima macchina (quella che si trova in cima alla lista) prima di aggiungere i file .VBOX alla lista, così quando li si aggiunge VirtualBOX ha i riferimenti ai VDI mancanti (mancanti causati dal grande BUG).
La cosa si verifica perché ogni volta che si collega un VDI che viene utilizzato su un'altra macchina VirtualBOX aggiorna due macchine . VBOX files (quello che appartiene alla macchina che si sta utilizzando) e al primo della lista.
Non sono del tutto sicuro di cosa succederebbe se nella lista, il primo non ha un VDI così comune allegato ad esso... meglio non provarlo, visto quello che vedo.
Quindi migrare ad un altro HOST è molto più complicato di quello che sembra essere a causa di una pessima implementazione su file .VBOXstruttura interna e a causa di BUG veramente grandi quando VirtualBOX li modifica.
Fallimenti:
- Struttura interna (XML) dipende dall'HOST (Windows o Linux)
- Modifica una macchina può alterarne un'altra, non solo quella modificata
- ... che altro ?
Bisogno di più... i allways migrare macchine facendo questo (e non ha avuto problemi, mai e poi mai):
1. 1. Prendere nota dell'elenco di tutte le macchine (ordine, raggruppamento, ecc.)
2. 2. Prendere nota del primo della lista (tutta la sua configurazione)
3. Prendere nota del primo della lista (tutta la sua configurazione)
3. Prendere nota di tutte le proprietà delle macchine che voglio spostare in un altro host
4. Prendere nota di tutte le proprietà delle macchine che voglio spostare in un altro host
4. Copiare i file .vbox come file .txt (quello in cima alla lista + tutte le macchine che voglio migrare)
5. Ricreare tutte le macchine (e averne una speciale in cima alla lista) all'interno di VirtualBox su nuovo host
6. 6. Chiudere VirtualBox su nuovo host
7. Diff confrontare il vecchio .txt con i nuovi file .vbox e copiare da .txt a .vbox alcune parti in modo umano, non solo Copia&Incolla
8. 8. Aprire VirtualBox e allegare tutti i VDI nell'ordine corretto
9. 9. Chiudere nuovamente VirtualBox sul nuovo host
10. Diff confrontare il vecchio .txt con i nuovi file .vbox e 'correggere' da .txt a .vbox alcune parti in modo umano, non solo Copy&Paste
Tutto il resto (cartella snapshot e file VDI) li copio nel modo normale (File System Copy&Paste).
Tutto questo duro lavoro manuale è causato dal Big BUG VirtualBox: Modifica / altera una macchina non modificata quando si allega un VDI inmutabile che viene usato su più di una macchina, altrimenti sarebbe sufficiente un semplice Copy&Paste del file .VBOX (dopo aver fissato i percorsi delle cartelle condivise, ecc.).