Odzyskaj pliki ze zepsutej maszyny Virtualbox .vdi

23

W moim Ubuntu 12.04.1 uruchomionym na virtualbox zabrakło miejsca, gdy instalowałem na nim oprogramowanie, a teraz nie uruchamia się ponownie . Mam pliki, które muszę odzyskać. Mam ubuntu64.vdiplik na swoim laptopie z systemem Windows 7 (hostem) i zastanawiałem się, czy istnieje jakiś sposób na odzyskanie plików z pliku vdi.

Równolegle wygenerowałem nową maszynę 12.04.1 na virtualbox w tym samym laptopie i użyję tej zamiast zakorkowanej.

Mogę dodać zakorkowany vdido listy dysków w działającym. Następnie użyłem gnome nautilus do zamontowania zakorkowanego dysku.

Mogę znaleźć tam pliki, ale mają one około 2 miesięcy. Myślę, że to zbiega się z ostatnim razem, gdy zrobiłem migawkę maszyny wirtualnej, ale nie ostatnim razem, gdy dostałem działającą maszynę, co było wczoraj. Czy jest jakiś sposób na zamontowanie vdiwczoraj, tuż przed awarią?

EDYTOWANE:

Oto, co Virtual Media Managermówi mi o moim ubuntu64.vdipliku: wprowadź opis zdjęcia tutaj

EDYCJA 2:

Skopiowałem moje ubuntu.vdiurządzenie na zewnętrzny dysk USB z dużą ilością miejsca na dysku. Próbowałem go sklonować za pomocą systemu Windows, ale wystąpił błąd:

wprowadź opis zdjęcia tutaj

Próbowałem tego samego z działającej maszyny wirtualnej za pośrednictwem udostępnionego folderu na dysku USB i zaczęło się klonowanie. Trwało to długo, ale zakończyło się pomyślnie:

root@precise64:/media/sf_E_DRIVE/copy_of_ubuntu64_vm_folder_20140224/ubuntu64# 
VBoxManage clonehd ubuntu64.vdi ubuntu64.raw --format RAW
0%...

10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'RAW'. UUID: 90f99198-18e1-40ee-85fe-c083dcbb1ac3

EDYCJA 3:

Po utworzeniu pliku raw, uruchamiam testdiskz Deeper Search, otrzymuję taką listę: wprowadź opis zdjęcia tutaj

Ater Deeper Searchskończył, otrzymuję taką listę:

wprowadź opis zdjęcia tutaj

Ale nie wiem, która to migawka ... Jakieś pomysły?

719016
źródło
@Takkat, to brzmi fajnie. Jak mogę to zrobić?
719016
@Takkat, zrobiłem to i zamontowałem przy użyciu gnome nautilus, ale wierzę, że zamontowałem dwumiesięczną wersję maszyny.
719016
2
Problem nie polega na tym, jak odzyskać dysk, ale jak to zrobić w połączeniu z migawką. Jeśli spróbujesz sklonować vdi, będzie miał inny identyfikator użytkownika, a migawka nie będzie z nim działać i stracisz najnowsze dane. Nie używam migawek regularnie, ponieważ w przeszłości miałem uszkodzone dyski i mogłem odzyskać dysk podstawowy, ale zawsze straciłem delty. Mam nadzieję, że ktoś tu podaje dobry przepis na odzyskanie zarówno bazy, jak i delty.
Pablo Marin-Garcia
1
Następnym razem: nigdy nie przechowuj danych na maszynie wirtualnej, zawsze podłącz zewnętrzny dysk ... lub wykonuj częste kopie zapasowe / synchronizuj przez rsync.
Dee
1
Spróbuj sklonować najnowszą migawkę, a nie oryginalny dysk. Powinieneś użyć Vboxmanage clonehd 2208...(skopiuj tutaj najnowszy UUID). Zobacz serverfault.com/a/506581/195528
Rmano

Odpowiedzi:

21

Z linii poleceń

W przypadku, gdy używamy Ubuntu jako hosta, możemy przekonwertować dysk .vdi na dysk surowy za pomocą następującego polecenia:

VBoxManage clonehd <sourcename> <clone.raw> --format RAW

Następnie możemy otworzyć dysk testowy Zainstaluj testdisk z tym plikiem, aby odzyskać pliki z obrazu dysku wirtualnego (patrz również poniżej):

testdisk <clone.raw>

Maszyny wirtualnej

W przypadku, gdy uszkodzony obraz dysku VDI jest nadal rejestrowany w Virtual Box, możemy dodać ten obraz jako dysk do naszej nowej maszyny wirtualnej:

wprowadź opis zdjęcia tutaj

Uruchom wirtualne Ubuntu, do którego dodaliśmy uszkodzony plik .vdi, ale nie montuj napędu .

  1. Utwórz katalog na zamontowanej partycji, aby przechowywać zebrane dane (np. ~/rescued),

  2. Zainstaluj dysk testowy Zainstaluj testdisk na maszynie wirtualnej.

  3. Uruchom testdisk z terminalu tam:

    sudo testdisk
    
  4. Wybierz odpowiedni dysk do zbierania danych (tutaj pokazano dla /sdb) i wybierz[Proceed]

    wprowadź opis zdjęcia tutaj

  5. Wybierz odpowiedni układ partycji (zwykle Intel)

  6. Wybierz [Analyse]-[Quick Search]

  7. Wybierz partycję zawierającą dane do zebrania (tutaj była tylko jedna partycja NTFS):

    wprowadź opis zdjęcia tutaj

  8. Naciśnij, P aby wyświetlić listę plików na tej partycji.

  9. Przejdź do katalogu zawierającego dane. Wyświetl nazwy plików, aby upewnić się, że wybrałeś właściwe.

  10. Wybierz katalogi lub pliki do zebrania : . Wszystkie wybrane pliki / katalogi zostaną oznaczone na zielono:

    wprowadź opis zdjęcia tutaj

  11. Naciśnij wielkie litery, C aby skopiować wszystkie wybrane katalogi / pliki do katalogu ratunkowego, który zostanie wybrany w następnym kroku.

  12. Wybierz katalog na zamontowanych partycjach maszyny Wirtualnej Ubuntu, aby przechowywać uratowane dane:

    wprowadź opis zdjęcia tutaj

  13. Naciśnij, c aby rozpocząć kopiowanie danych z uszkodzonego pliku .vdi do naszego katalogu ratunkowego na zdrowej maszynie wirtualnej.

Uwagi:

  • W przypadku, gdy nie widzimy naszych plików z [Quick Search]opcją 6. może być konieczne wykonanie [Deeper Search]. Spowoduje to również wyświetlenie poprzednich usuniętych i zastąpionych partycji. Musimy więc upewnić się, że wybraliśmy odpowiednie partycje, w których znajdują się nasze dane.

  • Jeśli zrobiliśmy migawki .vdi, możemy je znaleźć, ~/.VirtualBox/Machines/<Name of Machine>/Snapshots/{###}.vmdkale za każdym razem, gdy użyliśmy funkcji migawki Virtual Box, wszelkie zmiany z migawki zostaną zapisane w pliku różnicowym.

    Aby scalić plik różnicowy z dyskiem twardym, musimy usunąć wszystkie migawki (co prawdopodobnie nie jest tym, czego chcemy, ponieważ moglibyśmy po prostu przywrócić poprzednią migawkę zamiast wezwać do odzyskania danych), lub musimy sklonować dysk komputera za pomocą:

    VBoxManage clonehd <name_of_source> <clone>
    

    Następnie łączymy klon z ratowniczą maszyną wirtualną, jak pokazano powyżej.

  • Zapisywanie do uszkodzonego pliku .vdi powinno odbywać się tylko wtedy, gdy dane są bezpieczne, ponieważ może to spowodować dalsze uszkodzenie systemu plików.

  • W przypadku, gdy nasze ratunkowe Ubuntu jest zbyt małe, aby pomieścić uratowane dane, możemy utworzyć kolejny nowy dysk wirtualny, aby połączyć się z maszyną wirtualną. Następnie dysk musi zostać zamontowany na maszynie wirtualnej, aby można było tam zapisać dane z dysku testowego.

Takkat
źródło
dzięki za te niezwykle szczegółowe instrukcje. Śledziłem je poprawnie i dodałem pliki do skopiowania do mojego uratowanego folderu. Kopiowanie powiodło się, ale znacznik czasu plików był dość stary: lato 2013 zamiast dwóch dni temu. Nie pamiętam, czy zrobiłem coś konkretnego 8 miesięcy temu, ale na pierwszy rzut oka nie było moich plików sprzed dwóch dni. Teraz używam Deeper Searchdo ponownego przeglądania.
719016
@ 213441265152351 - spójrz także na folder migawek ... może być nowszy plik .vmdk (przynajmniej tak było z moimi systemami tutaj). Mam nadzieję, że znajdziesz swoje dane :)
Takkat
Zrobiłem Deeper Searchi po kilku godzinach ponownie przejrzałem zawartość, którą chciałem odzyskać: wciąż wskazują na wersję maszyny wirtualnej z lata 2013, wcześniej niż tylko zamontowanie partycji za pomocą gnome nautilus, co dało mi styczeń Wersja 2014, ale nadal nie można znaleźć plików sprzed dwóch dni.
719016
1
@ 213441265152351: to jest bardziej skomplikowane. Może się zdarzyć, że obrazy różnicujące nie zostały jeszcze odpowiednio zapisane na dysku w momencie wystąpienia „awarii”. Możesz spróbować spojrzeć na dysk za pomocą Virtual Media Manager (patrz virtualbox.org/manual/ch05.html#diffimages ), aby zobaczyć, czy tak jest, ale muszę powiedzieć, że nie będę miał dobrego pomysł na odzyskanie danych z tych obrazów.
Takkat
2
@Rmano: w rzeczywistości sklonowany VDI nie będzie zawierał żadnych migawek, ale będzie ostatnim obecnym stanem maszyny wirtualnej z połączonymi różnicami. Tylko w przypadku, gdy musimy sklonować wcześniejszą migawkę, możemy użyć migawki VDI do klonowania, ale wtedy wszystkie zmiany późniejsze niż migawka nie zostaną uwzględnione w klonowaniu.
Takkat
5

1) Spróbuj odzyskać migawkę za pomocą UUID, użyj następującego hacka:

  • wybierz UUID stanu, który chcesz odzyskać.
  • Otwórz plik .xml, najlepiej w narzędziu (działa Internet Explorer), który umożliwia łatwą nawigację po pliku XML.
  • Na BARDZO DOLNYM, w sekcji Kontrolery pamięci, znajdź identyfikator UUID bieżącego stanu i zwróć uwagę na nazwę StorageController =, typ = i typ AttachedDevice =, port = i urządzenie = ustawienia.
  • W środku znajdź migawkę, którą chcesz.
  • W sekcji Kontroler pamięci migawki znajdź urządzenie AttachedDevice z wartościami (nazwa / typ / typ / port / urządzenie), które pasują do wartości pobranych powyżej.
  • Ten identyfikator UUID obrazu identyfikuje obraz migawki na dysku twardym. Usuń nawiasy {} i

wprowadź polecenie C:> VBoxManage clonehd <UUID> CloneDisk.vdi

Mam nadzieję, że to pomaga, znalazłem rozwiązanie tutaj: ( https://forums.virtualbox.org/viewtopic.php?t=791 )

2) jeśli kroki w 1) nie działają, oto kolejne kroki, które możesz wypróbować. Jak sklonować bieżący stan dysku:

  • Otwórz Virtual Media Manager (Menu: Plik> Virtual Media Manager).
  • Przejdź do dysku twardego, który chcesz sklonować, i całkowicie rozwiń drzewo (użyj klawisza * na klawiaturze numerycznej).
  • Znajdź plik {hexUUID} .vdi dołączony do maszyny wirtualnej, dla której chcesz sklonować bieżący stan. Będzie to jeden z plików liści na końcu gałęzi. Po wybraniu, tekst „Attached to:” w dolnej części okna powie: „Attached to:”, bez żadnych (nazwa migawki) w nawiasach po nim.
  • Kliknij nazwę pliku po prawej stronie „Lokalizacja:” wyświetlanego w dolnej części okna.
  • Ctrl + C / Kopiuj, aby skopiować tekst do schowka, który będzie podobny do: (ścieżka) {b6441469-5ccb-418c-8fdd-73c5e1a17314} .vdi
  • Ctrl + V / Wklej i wyodrębnij wartość hexUUID (usuwając nawiasy {}) i uruchom clonehd, aby ją sklonować!

To rozwiązanie jest stąd: ( http://www.im-code.com/blog/blog/2012/02/04/virtualbox-clone-snapshots/ ) Oba mówią głównie o tym samym.

Dee
źródło
1

Miałem uszkodzony system Linux /i fscknie mogłem go naprawić . Zastosowałem następujące proste podejście:

  1. Dodaj nowy zastępczy VDI do maszyny.
  2. Pobierz nowy system Linux Linux.
  3. Uruchom i zainstaluj nowy Linux na dysku dodanym w (1).
  4. Zamontuj dysk w nowym systemie i skopiuj potrzebne pliki. Zwykle oznacza to skopiowanie /home/user/folderu. Pamiętaj, aby skopiować ukryte pliki (pliki ustawień).

Działa dobrze dla mnie. Uszkodzenie dysku tylko utrudniało rozruch, nie było utraty danych w moim folderze domowym.

Deleet
źródło