zar, first thing first… verplaats nooit een machine die in opgeslagen toestand is, vooraleer te verplaatsen moet je de gast uitschakelen, niet alleen de toestand opslaan.
Zorg er ook voor dat je dezelfde versie van VirtualBOX gebruikt op beide host, maar niet alleen de VirtualBOX versie, ook het uitbreidingspakket vesion… of de nieuwe host heeft tenminste een hogere versie, maar nooit een lagere versie op één van die twee.
En tot slot heb ik het op de harde manier geleerd, verwijder SHARED mapconfiguratie op VirtualBOX voordat de machine wordt verplaatst, maak het dan opnieuw aan op een correcte manier… erg belangrijk als de host een ander OS is (Windows / Linux hosts).
En even terzijde… ik gebruik altijd inmutable hard disk VDI bestanden voor zowel OS als voor data VDI’s (op die manier kan dezelfde DATA VDI voor meer dan gast worden gebruikt), speciaal truc voor 4GiB pagefile. sys
Dat laatste deel, hergebruik van een inmutable VDI bestand maakt het wat moeilijker, VirtualBOX heeft een BIG BUG.
Om de Bug in actie te zien:
- Maak een inmutable VDI aan (zoals degene die ik gebruik voor pagefile.sys)
- Maak twee of drie VM’s aan op VirtualBOX
- Verplaats één ervan naar de top van de lijst (om te voorkomen dat iemand van u beschadigd raakt)
- BackUp de . vbox bestanden van elk van die machines die je hebt gemaakt (om het te vergelijken na de BUG)
- Bevestig die inmutable VDI aan meer dan één van die machines (behalve die bovenaan de lijst)
- Zie nu de .vbox van de machine die bovenaan de lijst staat
Die machine is bewerkt, het heeft verwijzingen naar de andere machines inmutable VDI.
Dus de BUG is: Bewerk de ene machine door een inmutable VDI toe te voegen die door een andere machine wordt gebruikt, beïnvloedt de machine die bovenaan de lijst staat.
Waarom zou ik in godsnaam dezelfde 4GiB VDI opnieuw gebruiken op alle Windows machines? Gemakkelijk, het is een MBR schijf met een FAT32 partitie waar ik pagefile.sys zet, aangezien het inmutable is zullen alle virtuele machines een bestand maken op hun snapshot map waar ze de wijzigingen opslaan, en die verloren gaan bij het volgende opstarten, dus ik heb geen 4GiB nodig voor elke gast die op de host schijf is opgeslagen, slechts één… Op die manier bespaar ik veel GiB omdat ik meer dan 20 verschillende windows heb voor het testen van apps die ik ontwikkel voor mijn eigen, alle combinaties van (XP, Vista, 7, 8, 8.1, 10) (32Bits, 64Bits) (Net zoals bij de eerste installatie, na elke ServicePack, na een volledige windows-update), krijg ik veel, veel gasten… dus op al deze sites deel ik de vaststaande 4GiB VDI voor de virtuele ram (pagefile.sys).
En als je de BUG verder laat gaan, probeer dan een van die machines te verplaatsen naar een andere VirtualBOX host (vergeet niet dat het slechts een virtuele machine is met een configuratie erop en dat er nog geen gast op geinstalleerd is), je zult zien dat VirtualBox je niet toestaat om ze toe te voegen omdat sommige VDI’s ontbreken (het is FALSE en TRUE, het is dat zo'n eerste machine de verwijzingen naar zulke VDI’s insteed of beeing op de juiste machine bevat).
Vergelijk nu de . VBOX bestanden van allemaal met vorige BackUp… merk op hoe men verkeerd is aangepast?… ja, het is degene die bovenaan de lijst staat.
Wel, deze BUG werd enkele jaren geleden aan VirtualBOX geinformeerd, ze kunnen het nog steeds niet repareren… en het veroorzaakt veel, veel problemen.
Ook meer, als je de bovenste op de virtuele machines naar een lagere positie brengt, VirtualBox sluit en opnieuw opstart… zal het je vertellen dat sommige machines beschadigd zijn en niet gestart kunnen worden… ja, de eerste op de lijst moet in een andere vorm behandeld worden als je niet veel problemen wilt krijgen.
Het is een echt slechte BUG die me veel dagen heeft gekost om te ontdekken (enkele jaren geleden) ik leer het op de harde manier!
Ik had het overwonnen door een machine te hebben die ik had gebeld:
Het heeft een lege configuratie en slechts één VDI, ja, je hebt gelijk, je hebt het geraden, de inmutable VDI die ik deel voor alle andere virtuele machines.
Nou als ik het .VBOX bestand open zie ik daarbinnen veel regels op de <MediaRegistry>
<HardDisks>
sectie, één per elke machine waar ik die inmutable VDI gebruik… net als een sample (ik verwijder privé gegevens):
<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>
Pretty BUG, niet opgelost sinds jaren.
Nou, om zulke machines te verplaatsen… moet je handmatig de . VBOX bestanden, om al deze schijven op de nieuwe host op de eerste machine te zetten (degene die bovenaan de lijst staat) voordat de .VBOX bestanden aan de lijst worden toegevoegd, dus wanneer je ze toevoegt heeft VirtualBOX de verwijzingen naar de ontbrekende VDI’s (ontbrekend door de grote BUG).
Dit komt omdat elke keer dat je een VDI verbindt die gebruikt wordt op een andere machine VirtualBOX twee machines bijwerkt. VBOX bestanden (degene die hoort bij de machine die je gebruikt) en de eerste op de lijst.
Ik weet niet helemaal zeker wat er zou gebeuren als de eerste op de lijst stond, de eerste heeft niet zo'n gewone VDI erop staan… beter niet proberen, gezien wat ik zie.
Dus het migreren naar een andere HOST is veel gecompliceerder dan wat het lijkt te zijn vanwege een zeer slechte implementatie op .VBOX-bestandeninterne structuur en vanwege echt grote BUG’s als VirtualBOX ze bewerkt.
Fails:
- Interne structuur (XML) is afhankelijk van de HOST (Windows of Linux)
- Bewerken van de ene machine kan een andere wijzigen, niet alleen de ene die bewerkt wordt
- … wat nog meer ?
Hebben meer nodig… ik migreer altijd machines die dit doen (en heb geen probleem gehad, nooit meer):
- Noteer de lijst van alle machines (volgorde, groepering, enz.)
- 2. Neem nota van de eerste op de lijst (alle configuraties)
- 3. Neem nota van alle eigenschappen van machines die ik wil verplaatsen naar een andere host
- 4. Kopieer de .vbox bestanden als .txt bestanden (degene bovenaan de lijst + alle machines die ik wil migreren)
- Maak alle machines opnieuw aan (en heb een speciale machine bovenaan de lijst) binnen VirtualBox op nieuwe host
- 6. Sluit VirtualBox op nieuwe host
- Vergelijk de oude .txt met de nieuwe .vbox bestanden en kopieer van .txt naar .vbox sommige onderdelen op een menselijke manier, niet alleen Copy&Paste
- 8. Open VirtualBox en voeg alle VDI’s in de juiste volgorde bij
- 9. Sluit VirtualBox opnieuw op de nieuwe host
- Vergelijk de oude .txt met de nieuwe .vbox bestanden en ‘fix’ sommige delen op een menselijke manier van .txt naar .vbox, niet alleen Copy&Paste
Al de rest (snapshots map en VDI bestanden) kopieer ik op de normale manier (File System Copy&Paste).
Al dat harde handmatige werk wordt veroorzaakt door de Big BUG VirtualBox: Het bewerkt / wijzigt een machine die niet gewijzigd is wanneer je een inmutable VDI aanbrengt die op meer dan één machine gebruikt wordt, anders zou een simpele Copy&Paste het .VBOX bestand voldoende zijn (na het repareren van gedeelde mappen paden, etc).