Przeprowadź migrację z maszyny wirtualnej (VM) do systemu fizycznego


124

Aka: Jak przekonwertować .vdi lub .vmdk na prawdziwą instalację na dysku fizycznym?

Czy jest możliwa / wykonalna migracja instalacji maszyny wirtualnej Ubuntu na maszynę fizyczną? Jeśli to możliwe, jak trudno byłoby to osiągnąć i jakie kroki musiałbym podjąć, aby przygotować się do migracji.

Chciałbym przeprowadzić testy na maszynie wirtualnej, a jeśli to się powiedzie, migruj ten system do fizycznego sprzętu zamiast ponownie instalować wszystko. czy to możliwe?


Odpowiedzi:


98

Tak, to możliwe. To nie jest nawet takie trudne, zajmuje tylko trochę czasu, Ubuntu LiveCD, lepki plastik i zewnętrzny dysk USB (jeśli nie masz więcej niż jednego dysku wewnętrznego).

Krok wstępny: Konwertuj dysk na coś użytecznego

Zarówno VMWare, jak i VirtualBox (między innymi) używają formatów dysków, które nie nadają się do zapisywania bezpośrednio na dysku. Państwo może , ale ja osobiście czuję, że to bardziej wygodne, aby napisać do pośrednika, standardowego obrazu pierwszy. Możesz to zrobić z obecnego systemu bez konieczności uruchamiania z LiveCD.

  • Załaduj terminal i odpal:

    cd /media/wherever-the-image-is/
    
    # for VMWare
    sudo apt-get install qemu-kvm
    qemu-img convert your-vmware-disk.vmdk -O raw disk.img
    
    # For VirtualBox
    VBoxManage clonehd your-virtualbox-disk.vdi disk.img --format RAW
    
  • Przenieś się w /media/wherever-the-image-is/disk.imgmiejsce, do którego nie zamierzasz pisać. Jeśli planujesz zapisać go na dysku, na którym obecnie znajduje się, będziesz chciał umieścić go na osobnym dysku wewnętrznym lub, w najgorszym przypadku, na dysku zewnętrznym.

  • Poniższe instrukcje zakładają, że zostałeś przeniesiony na /media/dave/disk.img( davejest to zewnętrzny dysk USB)

  • Zanim zaczniesz pisać poważnie, upewnij się, że masz kopie zapasowe . To banalna rzecz do powiedzenia, ale jedna literówka i istnieje bardzo realna możliwość, że zniszczysz swój system. Załóż, że coś pójdzie nie tak i będziesz przygotowany. CloneZilla może pomóc w tworzeniu kopii zapasowych całego dysku, jeśli masz gdzieś te dane.

Zapisz obraz na własnym dysku

Będziesz chciał zrobić coś takiego. Zakłada się, że zastąpisz cały dysk. Jeśli chcesz przeprowadzić instalację obok systemu Windows, nie postępuj zgodnie z tymi instrukcjami! Przejdź do po kul.

  • Uruchom komputer z Live CD Ubuntu i kliknij Wypróbuj Ubuntu.

  • Zamontuj miejsce, w którym jest przechowywany obraz vmdk (np. Zewnętrzny dysk USB as /media/dave). Czy nie zamontować miejsce, w którym chcesz pisać.

  • Następnie idziemy do pracy:

    sudo dd if=/media/dave/disk.img of=/dev/sdX
    

    Chcesz zastąpić sdXpoprawną ścieżką do dysku docelowego. sudoHasło jest puste, po prostu naciśnij Enter.

  • Następnie możesz otworzyć gpartedlub coś innego i powinieneś zobaczyć partycję Ubuntu siedzącą na dysku. Powinieneś być w stanie ją rozwinąć.

Zapisz obraz na dysku obok innego systemu operacyjnego

Jest to być może całkowicie bezpieczniejszy sposób robienia rzeczy. Pomysł jest bardzo podobny, poza tym, że wykonujesz właściwą instalację Ubuntu, a następnie synchronizujesz pliki z disk.img.

  • Twoja LiveCD tym razem będzie musiała być tą samą wersją Ubuntu, co Twoja wirtualna instalacja. Uruchom komputer z Live CD i ponownie kliknij Instaluj.

  • Postępuj zgodnie z instrukcjami instalatora, dzieląc rzeczy według własnego uznania. Około 10 minut później zostaniesz zainstalowany i poprosi Cię o ponowne uruchomienie. Nie uruchamiaj ponownie. Nie ma znaczenia, czy przypadkowo to zrobisz, po prostu upewnij się, że wróciłeś do LiveCD, aby uzyskać kolejne instrukcje.

  • Zamontuj nową partycję instalacji i dysk zewnętrzny, na którym wcześniej ją zapisałeś disk.img(wystarczy dwukrotnie kliknąć je w nautilus).

  • Zamontuj ISO dysku.img w terminalu:

    sudo mkdir /media/oldinstall
    sudo mount -o loop /media/dave/disk.img /media/oldinstall
    

    -Uwaga - po utworzeniu pożądanego pliku .img, czasami podczas próby zamontowania go jako urządzenia pętlowego może pojawić się następujący błąd

    „Brak podpisu NTFS. Nie udało się zamontować„ / dev / loop0 ”: Niepoprawny argument Urządzenie„ / dev / loop0 ”nie wydaje się mieć prawidłowego NTFS.”

    Plik .img czasami zawiera główny rekord rozruchowy i tablicę partycji przed rzeczywistą partycją, którą chcesz zamontować. Dlatego musisz znaleźć przesunięcie wymaganej partycji. Do tego można użyć narzędzia parted . Na przykład spójrz na odpowiedź sisco311 w tym linku http://ubuntuforums.org/archive/index.php/t-1576011.html

    Jeśli więc określiłeś swoje przesunięcie na „xxx”, możesz zamontować partycję za pomocą

    sudo mount -o loop,offset=xxx /media/dave/disk.img /media/oldinstall
    
  • Stamtąd możesz albo wybrać pliki, albo po prostu skopiować wszystko nad nową instalacją Ubuntu, używając czegoś takiego:

    sudo rsync /media/oldinstall/ /media/my-new-install/
    
  • Uruchom ponownie komputer i powinieneś przywitać się ze starą instalacją VMWare, ale na czystym metalu. Jeśli napotkasz paskudne problemy z grub, możesz to naprawić, wracając do Live CD, chroot i naprawiając różne rzeczy .


7
Czy znasz narzędzie, które robi to automatycznie?
the_drow

1
W przypadku konfiguracji w systemie Windows / VirtualBox VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXpolecenie będzie nadal działać. Wszystko, co jest potrzebne, to cd do Program Files\Oracle\VirtualBoxprzed uruchomieniem pierwszego polecenia.
Aust

2
@Wątpię, czy /dev/sdXjest to prawidłowy cel w systemie Windows. AFAIK będzie \\Device\Harddisk0lub coś takiego.
Danatela,

3
VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXnie działa W Linuksie daje błąd: VBoxManage: error: Cannot create destination file "/dev/sdX": VERR_ALREADY_EXISTS. Konieczne jest użycie VBoxManagepolecenia, aby najpierw wysłać je do obrazu. Następnie użyj DD, aby umieścić obraz na dysku fizycznym.
LD James,

8

Może nie jest to dokładnie to, o co prosisz, ale może osiągnąć to, co chcesz zrobić.

Ponieważ wszystkie ustawienia są przechowywane w katalogu domowym, możesz po prostu wykonać kopię zapasową na innej partycji na prawdziwym dysku. Po zainstalowaniu nowego Ubuntu na prawdziwym dysku, po prostu uruchom ponownie program do tworzenia kopii zapasowych, aby przywrócić katalog główny z nienaruszonym ustawieniem.

Możesz użyć naprawdę porządnego programu do tworzenia kopii zapasowych o nazwie Déjà Dup .

Informacje z centrum oprogramowania Ubuntu:

Déjà Dup to proste narzędzie do tworzenia kopii zapasowych. Ukrywa złożoność tworzenia kopii zapasowych we właściwy sposób (szyfrowany, poza witryną i zwykły) i wykorzystuje duplikat jako backend.

Cechy:

  • Obsługa lokalnych, zdalnych lub lokalizacji kopii zapasowych w chmurze, takich jak Amazon S3 lub Rackspace Cloud Files

  • Bezpiecznie szyfruje i kompresuje twoje dane

  • Przyrostowo tworzy kopie zapasowe, umożliwiając przywracanie z dowolnej określonej kopii zapasowej

  • Planuje regularne tworzenie kopii zapasowych

  • Dobrze integruje się z pulpitem GNOME

wprowadź opis zdjęcia tutaj

Skończymy za niecałe dwie godziny!

powodzenia!


1
Brzmi łatwo. Czy s / o może potwierdzić, że to naprawdę działa w ten sposób?
Mateng

między innymi .... UID (numery użytkowników) może być inny w tym momencie.
Tomachi

5

Wypróbuj UDPCast

Pomysł polega na przesłaniu całego vmdk z maszyny wirtualnej na maszynę fizyczną, gdzie jest zapisana na fizycznym dysku twardym.

Procedura jest opisana poniżej.

Ponieważ masz plik vmdk, możesz mieć do dyspozycji stację roboczą VMWare, a nawet skompletować maszynę wirtualną, do której jest podłączony vmdk. Uruchom maszynę wirtualną z tym konkretnym vmdk, ale zamiast zwykłego rozruchu użyj partedMagic liveCD do rozruchu.

Po uruchomieniu liveCD przejdź do menu głównego i znajdź UDPCast Disk Cloning. Jego okna dialogowe są zrozumiałe (patrz zrzut ekranu) Ekran startowy UDPCast Disk Cloning

Po wybraniu tej maszyny wirtualnej sender, należy wybrać dysk, który chcesz nadawać (używając notacji uniksowej, takiej jak / dev / sda).

Po uruchomieniu sendermusisz także zacząć receiver. Ponieważ masz fizyczny dysk twardy, zakładam, że masz również pełny komputer z podłączonym do niego dyskiem twardym. To samo: musisz uruchomić liveCD z UDPCast Disk Cloningwybraniem receivertego czasu, a także odpowiedniego fizycznego dysku twardego.

Warto zauważyć, że należy dokonać wszystkich niezbędnych ustaleń, aby mieć połączenie sieciowe między maszyną wirtualną a sprzętem fizycznym. Powinieneś podjąć niezbędne środki ostrożności, jeśli twój vmdk zawiera prywatne dane, ponieważ jego zawartość byłaby skutecznie przesyłana strumieniowo przez twoją sieć. Inną rzeczą jest to, że docelowy dysk twardy powinien mieć nie mniejszą pojemność niż pojemność vmdk. Jest oczywiste, ale warto również zauważyć, że twój obraz jest ułożony jeden na jeden na docelowym dysku twardym i musisz wykonać odpowiednie operacje z gparted lub podobnym, aby wykorzystać większą pojemność nowego dysku twardego.


Chciałbym zauważyć, że ta metoda jest naprawdę prosta i stosunkowo łatwa do wykonania. Mianowicie, jedynym krokiem przygotowawczym, który musisz wykonać, jest przygotowanie LiveCD z UDPCast na nim lub dowolnym innym LiveCD, który jest wystarczający do pobrania i uruchomienia UDPCast. Jeśli masz jakiś wirtualny obraz HD, z pewnością użyłeś go w maszynie wirtualnej, która jest już ustawiona i gotowa, z drugiej strony przygotowałeś swój fizyczny system i jest on również gotowy do zadania.
PF4Public

Jest więcej: UDPCast można uruchomić bezpośrednio z PXE. udpcast.linux.lu/bootloader.html#pxe
PF4Public

4

Jeśli masz zainstalowany VirtualBox, możesz przekonwertować plik VDI (obraz dysku VirtualBox) na format IMG za pomocą VBoxManagepolecenia, a następnie skopiować na dysk fizyczny, np.

VBoxManage clonehd --format RAW file.vdi file.img

Następnie możesz użyć ddpolecenia, aby skopiować plik na partycję fizyczną:

dd if=./file.img of=/dev/<partition_here>

Uwaga: w razie potrzeby użyj sudo. Zachowaj ostrożność przy określaniu właściwego urządzenia w / dev.


0

Jeśli masz nowy dysk fizyczny podłączony do maszyny, na której znajduje się dysk wirtualny VM, możesz przekonwertować VDI na fizyczny bez pośredniej konwersji, prawdopodobnie oszczędzając sporo czasu i miejsca na dysku. Zakłada się, że dysk fizyczny jest taki sam lub większy niż maksymalny rozmiar dysku wirtualnego. W moim przypadku celem była konwersja VDI na Zvol ZFS, ale podejście powinno być takie samo dla każdego urządzenia blokowego.

Najpierw utwórz plik VMDK wskazujący na twoje urządzenie blokowe:

VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sdX

Następnie (z zamknięciem VM!) Możesz sklonować VDI do VMDK:

VBoxManage clonemedium --existing virtual.vdi physical.vmdk

To zajmie chwilę ... Po zakończeniu możesz usunąć plik VMDK, ponieważ był on używany tylko jako wskaźnik dla VirtualBox do znalezienia urządzenia fizycznego.

W moim przypadku nowy Zvol miał dokładnie taki sam rozmiar jak dysk wirtualny. Biorąc pod uwagę, że Twój dysk fizyczny jest prawdopodobnie inny, musisz wypełnić mechanizm zmiany rozmiaru partycji, aby zapełnić cały dysk. Gparted czy coś takiego. Powinieneś być w stanie wskazać to na urządzenie fizyczne / dev / sdX, gdy wciąż jest ono podłączone do maszyny VM, więc nie musisz uciekać się do uruchamiania CD z fizycznego hosta.

Po zmianie rozmiaru włóż dysk do fizycznej maszyny, skrzyżuj palce i włącz zasilanie.

W przypadku, gdy chcesz nadal korzystać z dysku fizycznego w VirtualBox, trzymaj VMDK w pobliżu i użyj go, VBoxManage storageattachaby połączyć go z maszyną wirtualną.


Wygląda na to, że działa, ale dane są w jakiś sposób uszkodzone, a system operacyjny nie uruchamia się poprawnie.
Sarge Borsch
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.