zar, pierwsza rzecz po pierwsze… nigdy nie ruszaj maszyny, która jest w stanie zapisanym, przed ruszeniem musisz zamknąć gościa, a nie tylko zapisać stan.
Upewnij się, że używasz tej samej wersji VirtualBOX na obu hostach, ale nie tylko wersji VirtualBOX, również pakiet rozszerzeń vesion… lub przynajmniej nowy host ma wyższą wersję, ale nigdy niższą wersję na żadnym z tych dwóch.
I na koniec, nauczyłem się tego w twardy sposób, usuń konfigurację folderu SHARED na VirtualBOX przed przeniesieniem maszyny, a następnie odtwórz ją w poprawny sposób… bardzo ważne, gdy hosty są różne systemy operacyjne (hosty Windows / Linux).
I tak na marginesie… zawsze używam nieprzemijalnych plików VDI na dysku twardym dla systemu operacyjnego, jak również dla danych VDI (w ten sposób te same DATA VDI mogą być używane dla więcej niż gościa), specjalnie trick dla pagefile 4GiB. sys
Ta ostatnia część, ponowne użycie nieprzemiennego pliku VDI sprawia, że sprawy idą nieco trudniej, VirtualBOX ma DUŻY BUG.
Aby zobaczyć błąd w akcji:
- Utwórz jeden nieprzemienny plik VDI (jak ten, którego używam dla pagefile.sys)
- Utwórz dwie lub trzy maszyny wirtualne w VirtualBOX
- Przenieś jedną z nich na górę listy (tylko po to, aby uniknąć uszkodzenia którejkolwiek z Twoich)
- BackUp the . vbox na każdej z utworzonych przez Was maszyn tho (w celu porównania po uruchomieniu BUG'a)
- Dołącz tę nieprzemijalną VDI do więcej niż jednej z tych maszyn (z wyjątkiem tej na górze listy)
- Teraz zobacz .vbox maszyny, która znajduje się na górze listy
Ta maszyna została edytowana, ma odniesienia do innych maszyn nieprzemijalnych VDI.
Tak więc BUG jest: Edytuj jedną maszynę, dodając wbudowane VDI, które jest używane przez inną, ma wpływ na maszynę znajdującą się na górze listy.
Dlaczego, do diabła, ponownie używam tego samego 4GiB VDI na wszystkich maszynach z systemem Windows? To proste, jest to dysk MBR z partycją FAT32, na której umieściłem pagefile.sys, ponieważ jest nieprzyjmowalny, wszystkie maszyny wirtualne stworzą plik w swoim katalogu migawkowym, w którym przechowują zmiany, które zostaną utracone podczas następnego uruchomienia, więc nie potrzebuję 4GiB dla każdego gościa przechowywanego na dysku hosta, tylko jeden… W ten sposób oszczędzam dużo GiB, ponieważ mam ponad 20 różnych okien do testowania aplikacji, które opracowuję dla swoich własnych, wszystkich kombinacji (XP, Vista, 7, 8, 8.1, 10)*(32Bity, 64Bity) * (Tak jak przy pierwszej instalacji, po każdej aktualizacji ServicePacka, po pełnej aktualizacji okien), dostaję dużo, dużo gości… więc na wszystkich z nich współdzielę wbudowane 4GiB VDI dla wirtualnego ram'a (pagefile.sys).
A jeśli pozwolisz BUGowi przejść dalej, spróbuj przenieść jedną z tych maszyn do innego hosta VirtualBOX (pamiętaj, że są to tylko maszyny wirtualne z konfiguracją na nich i nie ma jeszcze zainstalowanego na nich gościa), zobaczysz VirtualBox nie pozwala na ich dodanie, ponieważ brakuje niektórych VDI (jest to FALSE i TRUE, jest to, że taka pierwsza maszyna posiada odniesienia do takich VDI insteed pszczoły na właściwej maszynie).
Teraz porównaj . Pliki VBOX wszystkich z prefiksami BackUp… zwróć uwagę, jak jeden z nich jest nieprawidłowo modyfikowany?… tak, to ten na górze listy.
Cóż, ten BUG został poinformowany do VirtualBOX kilka lat temu, nadal nie mogą go naprawić… i to powoduje wiele, wiele problemów.
Również więcej, jeśli przesuniesz górną część wirtualnych maszyn na niższą pozycję, zamknij VirtualBox i uruchom go ponownie… powie ci, że niektóre maszyny są uszkodzone i nie mogą być uruchomione… tak pierwszy na liście musi być traktowany w innej formie, jeśli nie chcesz dostać dużo kłopotów.
To naprawdę zły BUG, który zabrał mi wiele dni do odkrycia (kilka lat temu) i nauczyć się go w trudny sposób!
Przezwyciężyłem go mając maszynę, którą nazwałem:
Ma pustą konfigurację i tylko jedno VDI, tak, masz rację, masz zgadywankę, niezbywalne VDI, które udostępniam dla wszystkich pozostałych maszyn wirtualnych.
Cóż, kiedy otwieram plik .VBOX widzę w nim wiele linii w sekcji <MediaRegistry>
<HardDisks>
, po jednej na każdą maszynę, gdzie używam tego nieprzyjaznego VDI… tylko jako próbkę (usuwam prywatne dane):
<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, nie rozwiązany od lat.
Cóż, aby przenieść takie maszyny… musisz ręcznie edytować . VBOX, aby umieścić wszystkie takie referencje dysków na nowym hoście na pierwszej maszynie (tej, która znajduje się na górze listy) przed dodaniem plików .VBOX do listy, więc przy ich dodawaniu VirtualBOX ma referencje do brakujących VDI (brak spowodowany dużym BUGiem).
Rzecz w tym, że przy każdym podłączeniu VDI, które jest używane na innej maszynie VirtualBOX aktualizuje dwie maszyny . Pliki VBOX (ten, który należy do maszyny, której używasz) i do pierwszej z nich na liście.
Nie jestem do końca pewien, co by się stało, gdyby na liście, pierwsza nie miała takiego wspólnego VDI dołączonego do niej… lepiej nie próbować, zobacz co widzę.
Więc migracja do innej HOST jest znacznie bardziej skomplikowana niż to, co wydaje się być z powodu bardzo złej implementacji na plikach .VBOX.internal structure and because of really big BUGs when VirtualBOX edits them.
Fails:
- Internal structure (XML) depends on the HOST (Windows or Linux)
- Edit one machine can alter another one, not only the one beeing edited
- … what more ?
Need more… i allways migrate machines doing this (and had no problem, never ever):
- Zwróć uwagę na listę wszystkich maszyn (porządek, grupowanie, itp.)
- Zwróć uwagę na pierwszą maszynę na liście (cała jej konfiguracja)
- Zwróć uwagę na wszystkie właściwości maszyn, które chcę przenieść na innego hosta
- Skopiuj pliki .vbox jako pliki .txt (ten na górze listy + wszystkie maszyny, które chcę przenieść)
- Odtwórz wszystkie maszyny (i miej specjalną na górze listy) wewnątrz VirtualBoxa na nowym hoście
- Zamknij VirtualBox na nowym hoście
- Porównaj stare pliki .txt z nowymi plikami .vbox i skopiuj z .txt do .vbox niektóre części w ludzki sposób, a nie tylko Kopiuj&Wklej
- Otwórz VirtualBox i dołącz wszystkie VDI w prawidłowej kolejności
- Ponownie zamknąć VirtualBox na nowym hoście
- Porównać stare .txt z nowymi plikami .vbox i ‘naprawić’ z .txt do .vbox niektóre części w ludzki sposób, nie tylko Copy&Paste
Cała reszta (folder snapshoty i pliki VDI) i skopiować je w normalny sposób (File System Copy&Paste)
Cała ta ciężka ręczna praca jest spowodowana przez Big BUG VirtualBox: Edytuje on/zmienia maszynę, która nie została zmodyfikowana, gdy dołączysz niewywoływalne VDI, które są używane na więcej niż jednej maszynie, w przeciwnym razie wystarczy zwykły plik Copy&Paste .VBOX (po naprawieniu ścieżek folderów współdzielonych, itp.).