Jak przenosić pliki VirtualBox?

165

Domyślnie VirtualBox przechowuje wszystkie dane w katalogu poniżej katalogu domowego. Wiem, jak to zmienić, ale jak mogę zmienić lokalizację istniejących obrazów (bez ręcznej edycji VirtualBox.xml)?

Pracuję w systemie Windows i nie chcę próbować używać żadnych łączy NTFS .

maaartinus
źródło
4
Awww, miałem zamiar zasugerować dowiązania symboliczne (rozwiązują Wszystko ™), ale zablokowałeś ten pomysł ... :(
DMA57361 11.11
2
W ogóle nie ufam linkom w systemie Windows. Chociaż NTFS jest w stanie to zrobić, Windows XP nic o tym nie wie i już ma z tym dość problemów. Mogę być niepotrzebnie tchórzem ...
maaartinus,
Ach, tak, nie dotknąłbym ich na XP. Ale wsparcie dla 7 jest dość solidne - nadal musisz je budować z linii cmd, ale to nie jest tak naprawdę uciążliwe. Nie jestem pewien co do Visty ...
DMA57361
Jest jeszcze gorzej, wersja NTFS XP obsługuje łącza twarde, ale nie mogą one obejmować woluminów . Oczywiście chciałem przenieść dane na inną partycję.
maaartinus,
Twarde linki nie mogą nigdy obejmować wielu woluminów, tylko dowiązania symboliczne mogą (i mogą być używane do tego rodzaju rzeczy, moje foldery użytkowników są na przykład dowiązane symbolicznie do mojego drugiego dysku twardego). Ale osobiście nadal unikam dowiązań twardych w XP (nawet jeśli byłyby to możliwe).
DMA57361,

Odpowiedzi:

136

Jeśli chcesz przenieść całą maszynę wirtualną do zupełnie nowej lokalizacji, wykonaj następujące 2 odpowiedzi:

Kopiowanie postu tutaj:

  1. Zamknij VirtualBox, wykonaj kopię zapasową pliku .VirtualBox \ VirtualBox.xml.
  2. Znajdź istniejący folder „Virtualbox VMs” i skopiuj (nie przenieś) cały folder z zawartością na nowy dysk E:
  3. Uruchom VirtualBox, a następnie kolejno dla każdej maszyny wirtualnej:

    3.1 Kliknij prawym przyciskiem myszy nazwę maszyny wirtualnej i wybierz „Usuń” z menu podręcznego. Odpowiedz „nie” na „fizycznie usunąć pliki?” pytanie.

    3.1b po usunięciu maszyny wirtualnej z interfejsu użytkownika musisz zamknąć VirtualBox i pozostawić go zamkniętym na wystarczająco długo, aby zadanie VBoxSVC w tle mogło również przekroczyć limit czasu i zakończyć działanie. Następnie możesz ponownie uruchomić aplikację VirtualBox i użyć Machine | Add, aby dodać maszyny wirtualne usunięte w poprzednim kroku.

    3.2 Wybierz pozycję menu Maszyna | Dodaj ..., przejdź do nowej lokalizacji maszyn wirtualnych na dysku E: i wybierz plik .vbox.

    3.3 Powtórz dla wszystkich pozostałych maszyn wirtualnych.

  4. W oknie Preferencje pliku ustaw domyślną ścieżkę komputera na „E: \ VirtualBox VMs”
  5. Przetestuj każdą maszynę wirtualną. Dopiero po upewnieniu się, że wszystkie działają, usuń starą maszynę wirtualną zawierającą folder, tj. Usuń „C: \ VirtualBox VMs”.
Lucas Pottersky
źródło
Gdy robię to dla maszyny z klonowanym połączeniem, nie uruchamiają się
Nam G VU
1
To działało dla mnie, chociaż musiałem również zaktualizować ścieżki do każdego dysku twardego i obrazu migawkowego, edytując .VirtualBox\VirtualBox.xmlplik i wykonując wyszukiwanie / zamianę. Poza tym przeniosłem tylko foldery Machinesi HardDisk, a nie wszystkie zawarte w nich pliki .VirtualBox, ponieważ to cała globalna konfiguracja i rejestrowanie itd.
Dave Andersen
4
Dla użytkowników systemu Mac OS X VirtualBox.xmlznajduje się pod adresem ~/Library/VirtualBox/VirtualBox.xml. Maszyny wirtualne znajdują się w ~/VirtualBox VMs.
Siu Ching Pong -Asuka Kenji-
2
Virtual Box 4.3.0+ rozwiązał „ostatnią ważną rzecz”, nawet nie musiałem jej zamykać - instrukcje .
PCaetano,
Być może mógłbyś również dodać „wersję” wiersza poleceń. 1) Wyświetl listę istniejących maszyn wirtualnych za pośrednictwem VBoxManage list vms. 2) Obok nazw maszyn wirtualnych, w nawiasach klamrowych, znajdują się odniesienia do ich UUID. Skopiuj interesujący. Szczegółowe informacje na ten temat można znaleźć za pośrednictwem VBoxManage showvminfo UUID. 3) Wyrejestruj maszynę wirtualną za pośrednictwem VBoxManage unregistervm UUID. 4) Przenieś katalog interesującej maszyny wirtualnej. 5) Na koniec zarejestruj komputer za pomocą VBoxManage register NameOfVM.vbox- oczywiście, gdzie NameOfVM oznacza rzeczywistą nazwę .vboxpliku VMs, który ma zostać zarejestrowany.
Nikos Alexandris,
58

Miałem tylko kilka maszyn wirtualnych i stwierdziłem, że mogę po prostu zmienić domyślną lokalizację magazynu VirtualBox, a następnie sklonować moje maszyny wirtualne. Klony zostały utworzone w nowej lokalizacji na nowym HD, gdzie ich chciałem. Wszystko nienaruszone, migawki i nie trzeba mapować lokalizacji wirtualnych dysków HD.

thomthom
źródło
3
+1 Myślę, że to najlepsza metoda. VirtualBox przenosi wszystko dla ciebie w uporządkowanym małym pakiecie.
Dave Andersen
3
jest to najlepszy sposób, nie jest wymagana ręczna edycja cfg
Bojan Bjelic
jak Ty to robisz???
FlipFloop
To naprawdę powinna być zaakceptowana odpowiedź
theV0ID
1
Ostrzeżenie: klon nie tworzy idealnej kopii i może powodować konieczność aktualizacji licencji dla zainstalowanego oprogramowania w miarę zmiany identyfikatorów komputera / dysku. Wystąpiło to podczas przenoszenia starej kopii Quicken na maszynie wirtualnej na nowy dysk.
MZB
36

Najłatwiejsza metoda nie wymaga usuwania maszyn wirtualnych i zmiany ustawień.

  1. Skopiuj folder maszyn wirtualnych Virtualbox na nowy dysk.

  2. Uruchom Virtual Box Machine Manager. Uruchom plik Media Manager -> Virtual Media Manager

    2a. Wybierz maszynę wirtualną, dla której chcesz przenieść pamięć. Kliknij przycisk Zwolnij , a następnie przycisk Usuń . W następnym oknie dialogowym możesz usunąć lub zatrzymać dysk wirtualny. Zamknij menedżera, pozostawiając cię w Virtualbox Machine Manager.

  3. Wybierz maszynę wirtualną, dla której właśnie usunąłeś nośnik, kliknij przycisk Ustawienia , kliknij sekcję Pamięć . Dodaj kontroler dla nośnika (zwykle SATA), a następnie dodaj dysk twardy, wybierz istniejący dysk i wybierz VD w nowej lokalizacji.

  4. Powtórz dla każdej maszyny, którą poruszasz

Uruchom maszynę wirtualną w nowej lokalizacji, aby sprawdzić. Następnym razem, gdy odwiedzisz Virtual Media Manager , najechanie kursorem na pozycję maszyny Wirtualnej pokaże, gdzie jest przechowywane VD.

Pamiętaj, aby zmienić foldery migawek, aby wskazywały nowy dysk, jeśli ich używasz. Każda maszyna ma ustawienie folderu migawki, a VM Manager ma ustawienie Domyślny folder komputera w Plik -> Ustawienia, które również należy zmienić.

Ponadto musiałem zmodyfikować ścieżkę w pliku xml. Potem działało bezbłędnie.

UWAGA: Od czasu, gdy to zostało napisane, sytuacja się nieco zmieniła, patrz odpowiedź Roba. Teraz jest to niezwykle proste.

Fiasco Labs
źródło
2
myślę, że jest to zdecydowanie najłatwiejszy sposób na zrobienie tego.
Peter Perháč
17

DUŻO, DUŻO prostsze. 1) przejdź do nowej lokalizacji 2) Kliknij prawym przyciskiem myszy usuń z menu virtualbox 3) Wybierz „dodaj” z menu maszyny 4) Znajdź niebieską ikonę 8kb, która ma rodzaj „definicji maszyny wirtualnej”. Wybierz go, a zostanie dodany do listy virtualbox. kliknij dwukrotnie maszynę wirtualną i to działa.

Obrabować
źródło
Jeszcze prostsze niż to, gdy chcesz dodać maszyny wirtualne z powrotem do VirtualBox, po prostu kliknij *.vboxplik w folderze.
Joel Mellon
2
Jak zmieniają się rzeczy w ciągu trzech lat ... Życzenie było wtedy takie łatwe. Dodałem notatkę do mojej odpowiedzi, aby przyszli ją zobaczyć.
Fiasco Labs,
1
To naprawdę powinno być wyżej. Bawiłem się i nie mogłem sprawić, żeby działało. Wystarczy usunąć „niedostępne” w interfejsie użytkownika, a następnie dwukrotnie kliknąć plik .vbox, aby dodać go ponownie w nowej lokalizacji.
wenbert
Nie działa na hoście Linux. Otrzymywanie tego błędu: sesja maszyny wirtualnej została zamknięta przed każdą próbą włączenia zasilania. Kod wyniku: NS_ERROR_FAILURE (0x80004005) Składnik: Interfejs SessionMachine: ISession {7844aa05-b02e-4cdd-a04f-ade4a762e6b7}
Max N
1
Część „usuń” tej zasady jest złym pomysłem, który spowoduje utratę ustawień, ale tak nie jest. Ta metoda zachowuje wszystkie ustawienia i jest najłatwiejszą ze wszystkich metod, które wypróbowałem. Działa na hoście z systemem Windows 10 zarówno dla gości Windows 7, jak i Windows Sever 2016.
Night Owl
13

Na Macu edytuj ścieżki w tym pliku:

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

To było łatwe, presto!

pcharlesleddy
źródło
3
Używa systemu Windows, a także nie chce edytować VirtualBox.xml.
ChrisN
4
Było to dla mnie pomocne, ponieważ to pytanie jest nadal dostępne dla użytkowników komputerów Mac.
NReilingh
Jestem użytkownikiem Maca i Google wylądowało tutaj, a to rozwiązanie jest najprostsze ze wszystkich, ma sens i działało dla mnie :)
Mohit Singh
Jestem na Linuksie i podobał mi się dźwięk tej odpowiedzi, ale zniechęciło mnie ostrzeżenie na górze pliku. Czy nadal poleciłbyś edycję kodu XML bezpośrednio? Ostrzeżenie mówi: ** NIE EDYTUJ TEGO PLIKU. Jeśli wprowadzisz zmiany w tym pliku podczas działania dowolnej aplikacji związanej z VirtualBox, zmiany zostaną zastąpione później, bez skutku. Użyj VBoxManage lub GUI VirtualBox Managera, aby wprowadzić zmiany. **
craq
11

Po marnowaniu całego dnia na ten problem (używając Virtualbox 5.0.12 na Arch Linux), w końcu udało mi się go rozwiązać tak, jak sugeruje odpowiedź Thomthoma. Dla tych, którzy nie są pewni co do dokładnej procedury, polecenie klonujące całą maszynę (w tym migawki) to:

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

Uzyskaj nazwę maszyny wirtualnej za pomocą

VBoxManage list vms

W razie potrzeby podaj ścieżkę i nazwę.

Na koniec sprawdź, czy wszystko jest w porządku i usuń oryginał.

To wszystko naprawdę. Nie musisz zawracać sobie głowy plikami XML lub edytorem szesnastkowym. Nie trzeba też używać GUI.

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

Michael P.
źródło
To była jedyna odpowiedź, która zadziałała dla mnie. Powinien być wyżej.
Max N
2
VM_to_clonejest UUID lub nazwą maszyny wirtualnej. Za pomocą podanego polecenia (przy użyciu identyfikatora UUID) utworzono katalog w /new/path/_<UUID>_ Clone, a pliki zawierające również wykorzystano _<UUID>_ Clonejako nazwę. Aby jawnie mieć ładniejszą nazwę, użyj --name "Your preferred name here"flagi.
Rob W
... i aby usunąć oryginalną maszynę wirtualną za pomocą interfejsu CLI VBoxManage unregistervm UUID(UUID maszyny wirtualnej, którą uzyskałeś VBoxManage list vms, nie używaj nazwy maszyny wirtualnej, ponieważ jeśli użyjesz --namedo zachowania oryginalnej nazwy, masz wiele maszyn wirtualnych o tej samej nazwie)
Rob W
Ostrzeżenie: klon nie tworzy idealnej kopii i może powodować konieczność aktualizacji licencji dla zainstalowanego oprogramowania w miarę zmiany identyfikatorów komputera / dysku. Wystąpiło to podczas przenoszenia starej kopii Quicken na maszynie wirtualnej na nowy dysk.
MZB
Wygląda na to, że teraz jest dedykowane polecenie: virtualbox.org/manual/ch08.html#vboxmanage-movevm
Michael P
4

Aby zrobić to samo jak w Lucas Pottersky odpowiedź ale poprzez linię poleceń (Windows zastąpić vboxmanagez VBoxManage.exe):

  1. Wyświetl wszystkie maszyny wirtualne:

    vboxmanage list vms
    

    lub tylko działa:

    vboxmanage list runningvms
    

    który dla każdej maszyny wyświetla nazwę i identyfikator UUID.

    Wykonaj następujące kroki dla każdej maszyny, którą chcesz przenieść.

  2. Z wdziękiem wyłącz go:

    vboxmanage controlvm UUID acpipowerbutton
    
  3. Wyrejestruj:

    vboxmanage unregistervm UUID
    
  4. Przenieś folder maszyny wirtualnej do nowej lokalizacji.

  5. Zarejestruj go ponownie, podając ścieżkę do .vboxpliku:

    vboxmanage registervm /path/to/machine.vbox
    
mixel
źródło
2

Działa to również dla mnie z VirtualBox w wersji MacOS (wydanie 4.1.12). Czekałem 5-10 sekund na zakończenie VirtualBox przed ponownym uruchomieniem. Zajrzałem do Monitora aktywności, aby upewnić się, że VBoxSVC poprawnie zakończył pracę.

Jeśli tego nie zrobisz, pojawi się błąd podobny do następującego (kopiuję i wklejam komunikat o błędzie innej osoby pochodzący z systemu Windows). Jeśli pojawi się ten błąd, to po prostu dlatego, że nie opuściłeś VirtualBox lub nie czekałeś wystarczająco długo na zamknięcie 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}
withfries2
źródło
2

W OS X z VirtualBox v4.3.14 wszystko, co musiałem zrobić, to dwukrotnie kliknąć .vboxplik z nowej lokalizacji, a on otworzył VirtualBox i dodał go do listy dostępnych maszyn wirtualnych.

Tyson Phalp
źródło
Nie dodawaj odpowiedzi „dziękuję”. Zamiast tego głosuj na odpowiedzi, które uważasz za pomocne.
Scott,
Moja odpowiedź nie jest „dziękuję”. Zredagowałem sformułowanie, aby było to bardziej oczywiste. Dzięki.
Tyson Phalp
2

Istnieje domyślna lokalizacja pamięci w ustawieniach w VirtualBox: http://mattvelic.com/default-vm-location/

Teraz nie żyje. Maszyna Wayback ma zawartość:

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

... sprawdź Preferencje w menu Plik. Ujrzeć! Pierwszy element na karcie Ogólne to Domyślny folder maszyny. http://web.archive.org/web/20131116130725im_/http://54.225.211.105/wp-content/uploads/2012/11/VB_Preferences.png Zedytowałem lokalizację, aby wskazać mój dysk, i szybko przerobiłem mój VM. Tym razem VirtualBox utworzył zarówno pliki maszynowe, jak i VDI we właściwej lokalizacji. Prawdziwa lekcja tutaj jest taka, że ​​czasami rozwiązanie nie musi być techniczne. Myślę, że jako specjaliści IT mamy tendencję do myślenia, że ​​odpowiedź na problem będzie skomplikowana. Miej oczy otwarte na oczywiste rozwiązania!

Rebecca
źródło
Ten link jest teraz martwy. Staraj się nie publikować linków jako odpowiedzi. Kiedy umierają, SU zostaje z cruft do posprzątania.
mrtsherman
zaktualizowane o zawartość z archive.org
Rebecca
1

Nie sądzę, żeby to było możliwe.

Możesz przenieść VDI do nowej lokalizacji, ale nie sądzę, że możesz uniknąć modyfikacji XML. Alternatywnie (ale tak naprawdę to samo, co edycja XML), czy stworzyłbyś nową maszynę wirtualną z graficznym interfejsem użytkownika i wybrałby przeniesiony obraz jako dysk odpowiadający twoim potrzebom?

M'vy
źródło
1
Spojrzałem na xml i jest to naprawdę bardzo proste. Tworzenie nowego komputera nie jest dobre, ponieważ chciałbym zachować moje ustawienia (nie pamiętam, co zmieniłem, może być zupełnie nieważne lub nie).
maaartinus,
1

Wypróbowałem oryginalną metodę (usuń VDI, dołącz nową kopię), dostałem wiadomość, że stara nadal istnieje i nie mogłem dołączyć nowej kopii nawet po ponownym uruchomieniu systemu operacyjnego (w Mac OS X El Capitan).

Poprawka była w menu / File / Virtual Media Manager, usuń istniejący VDI. Działa to nawet, jeśli są migawki; po prostu usuń wszystkie VDI migawki w odwrotnej kolejności. Nie trzeba zamykać i ponownie otwierać VirtualBox.

marty39
źródło
0

Nigdy nie korzystałem z virtualboksa w Windowsie, ale na Ubuntu przenosisz VDI, aw GUI virtualboksa klikniesz maszynę wirtualną prawym przyciskiem myszy i używasz menu Konfiguracja -> pamięć masowa, w której możesz zmienić lokalizację VDI na miejsce, w którym przeniesiono plik. Jeśli chodzi o definicję innych plików maszyn, przenosisz je, a w GUI przechodzisz do Preferencji i zmieniasz domyślny katalog maszyn na katalog, który przenosiłeś.

Laurent
źródło
0

Używam tej metody:

  1. Z GUI VirtualBox wybierz maszynę wirtualną i usuń podłączony dysk twardy
  2. Skopiuj plik (np. Vdi) do nowej lokalizacji
  3. Wygeneruj nowy identyfikator UUID dla .vdi w nowej lokalizacji za pomocą polecenia vboxmanage internalcommands sethduuid „moja ścieżka do myhdd.vdi” 6912BF7F-13BB-4E70-A2CA-C92300FEC3DC

    (W poprzednim przykładzie użyj własnego identyfikatora UUID lub nie dodawaj go wcale: polecenie wygeneruje je automatycznie. Ponadto, jeśli pominiesz ten krok, dodając plik .vdi z nowej lokalizacji, pojawi się błąd, że identyfikator UUID już istnieje ).

  4. Teraz wróć do GUI VirtualBox, wybierz swoją maszynę wirtualną i w Setttings / Storage dołącz HD (plik .vdi) z nowej lokalizacji.

i zrobione.

Fernando Gonzalez Sanchez
źródło
-1

W Oracle VM VirtualBox (testowany z wersją 6.0.4), po prostu zamknij maszynę wirtualną -> kliknij prawym przyciskiem myszy maszynę wirtualną w programie VirtualBox Manager -> kliknij „Przenieś ...” -> wybierz nowy katalog. To jest to!

Silvio Jäger
źródło
@Moreaki: Nawiasem mówiąc, „czytelność” (i „czytelność”) są pisane bez „D”.
Scott