Nie można uruchomić po zmianie rozmiaru dysku twardego vhd w VirtualBox

15

W Windows 7 skonfigurowałem kolejną maszynę wirtualną z Windows 7 w VirtualBox. Działa świetnie. Następnie musiałem zwiększyć rozmiar VHD HD. Więc użyłem narzędzia VBoxManage, aby to zrobić z następującym komentarzem:

VBoxManage modifyhd "c:\VMs\Win7.vhd" --resize 30000

Następnie próbowałem ponownie uruchomić maszynę wirtualną, ale nie można jej uruchomić i wyświetla następujący błąd:

FATAL: Nie znaleziono nośnika startowego! System zatrzymany.

Następnie próbowałem zobaczyć, co dzieje się wewnątrz dysku VHD, i spróbować dołączyć go do zarządzania urządzeniami. Mówi, że nie można go dołączyć, ponieważ plik lub katalog jest uszkodzony i nieczytelny .

Masz pojęcie, co poszło nie tak i jak mogę zapisać moją maszynę wirtualną w tym pliku VHD?

tugberk
źródło
Po prostu miałem dokładnie ten sam problem i nie mogłem znaleźć żadnego przydatnego rozwiązania online, więc zacząłem ręcznie analizować VHD zgodnie z dokumentacją Microsoftu. Obecnie wydaje się, że w implementacji modyfikacjihd występuje błąd polegający na tym, że nie dostosował przesunięcia do bloków danych po rozszerzeniu tabeli alokacji bloków. Muszę zrobić więcej eksperymentów, aby to zweryfikować.
billc.cn
W VirtualBox 4.3.10 zmieniłem rozmiar pliku .vhd. Wygląda na to, że nie tylko nie dostosował wskaźników tabeli alokacji bloków, ale rozszerzył tabelę alokacji bloków do pierwszego bloku danych, zastępując mój MBR i tablicę partycji. Nie używaj VirtualBox do zmiany rozmiaru plików .vhd!
Aaron

Odpowiedzi:

12

Niestety dokumentacja VirtualBox dla opcji VBoxManage --resize wprowadza w błąd. Nie można po prostu zwiększyć rozmiaru obrazu dysku i sprawić, aby wszystko działało poprawnie. Informacje o partycji dysku w obrazie muszą zostać dostosowane, aby system operacyjny gościa znał układ „dysku” symulowanego przez obraz dysku. Tę regulację można wykonać, pobierając rozruchowy obraz dysku CD z edytorem partycji i uruchamiając maszynę wirtualną na tym dysku CD. Następnie użyj edytora partycji, aby dopasować partycje obrazu dysku w celu wykorzystania dodanej przestrzeni.

Jest ładny writeup procedury tutaj ; po prostu przejdź do kroku 4.

Kyle Jones
źródło
Cóż, to kłótnia. Oznacza to, że właśnie wyrzuciłem 3 godziny pracy. Dzięki za informację.
tugberk
4
Postępowałem zgodnie z ładnym zapisem (po zmianie rozmiaru mojego vhd i nie mogłem go uruchomić), a GParted nie pokazywał żadnych partycji na dysku twardym, tylko 50 koncertów nieprzydzielonego miejsca. Czy to oznacza, że modifyhdzepsułeś dysk nie do naprawienia?
GSerg
1

Miałem ten sam problem i udało mi się odzyskać dane za pomocą GParted LiveCD

  1. Utwórz nowy dysk VHD, aby otrzymać skopiowane dane (utwórz partycje i sformatuj)
  2. Pobierz GParted LiveCD i uruchom na VirtualBox
  3. Wybierz Urządzenie -> Próba ratowania danych
  4. Kliknij OK, a po skanowaniu kliknij Widok (spowoduje to zamontowanie / tmp / gparted-roview-XXXXXX)
  5. Na terminalu podłącz drugi dysk VHD (sudo mount / dev / sdb1 / mnt)
  6. Skopiuj pliki (sudo cp -R / tmp / gparted-roview-XXXXXX / * / mnt

Następnie możesz zamknąć maszynę wirtualną i zamontować dysk VHD w Menedżerze urządzeń systemu Windows.

Edison Henrique Andreassy
źródło
1

Tutaj wyjaśniają problem (po hiszpańsku)

Streszczenie:

za. „vboxmanage modyfikuj (zmiana rozmiaru)” generuje błąd w wielu systemach (Windows NT5, 9x, wersje serwerowe i x86). Rezultatem jest uszkodzona partycja, bardzo trudna do odzyskania

b. Musisz wykonać polecenie „vboxmanage modyfikhd (resize)” (aby zmienić rozmiar VDI) W ścieżce zawierającej wszystkie pliki i foldery powiązane z VDI. Spójrz na obraz

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Rekomendacje:

Zamień „vboxmanage modyfikhd” na „vboxmanage clonehd”

  1. Utwórz nowy wirtualny dysk VDI (o rozmiarze, który chcesz rozszerzyć). Przykład: Old.vdi miał 50 GB. New.vdi utwórz go ze 100 GB

    VBoxManage createhd - nazwa_pliku / ścieżka / Nowy.vdi - rozmiar 100000

  2. Sklonuj go za pomocą następującego polecenia:

    vboxmanage clonehd /path/Old.vdi /path/New.vdi --istniejące

Uwaga : oba VDI nie powinny być na tej samej ścieżce

  1. Uruchom New.vdi i przejdź do Windows Computer Management i Zwiększ przestrzeń dyskową (przydziel puste miejsce). Jeśli nie chcesz tego robić ręcznie, możesz użyć dowolnej bezpłatnej aplikacji do partycjonowania, takiej jak AOMEI Partition Assistant Standard , GParted i wielu innych.

źródło
zaktualizuj odpowiedź
0

Warto zauważyć, że dostałem dokładnie ten sam problem, który spowodował, że wydałem polecenie edithd podczas działania gościa. Oficjalna dokumentacja nic nie mówi o tym, że najpierw musisz usunąć migawki, a gość powinien zostać zatrzymany.

Mój plan polegał na zmianie rozmiaru dysku podczas pracy maszyny, ponieważ mam wolumin dynamiczny, który można również zwiększyć w locie. Był to jednak zły pomysł, ponieważ ponownie uruchomiłem maszynę, aby uzyskać pełny rozmiar dysku. Zostałem w ciemności z uszkodzonym obrazem, którego nie mogłem przywrócić nawet bez dysku testowego. Testdisk znajduje partycje, ale system plików jest poważnie uszkodzony i nie można go naprawić.

Więc radzę:

  1. Scal wszystkie migawki z obrazem podstawowym
  2. Zamknij system operacyjny gościa

Powtórzyłem procedurę na moim komputerze z obrazem kopii zapasowej i przy wyłączonym systemie gościa, to działa dobrze.

Carsten Menke
źródło
0

Udało mi się odzyskać obraz, który został uszkodzony przez ten błąd. W przeciwieństwie do Edisona, obraz na żywo w dwóch partiach niczego nie znalazł. Oto co zrobiłem:

  • Po pierwsze, ponieważ najwyraźniej obsługa VHD dla VHD jest błędna i okropna, zacznij od konwersji VHD na VDI za pomocą VBoxManage clonehd foo.vhd --format vdi foo.vdi. Gdy pominąłem ten krok, mogłem odzyskać pliki z obrazu, ale po kilku ponownych uruchomieniach „ponownie się„ zepsuje ”. Zgaduję, że błąd naprawdę psuje plik VHD w taki sposób, że później I / O „go ponownie psuje” ... VBox nie wydaje się mieć tych problemów z VDI, więc zrezygnowałem z VHD.

  • Uruchom system w WinPE, środowisku przedinstalacyjnym systemu Windows. Jak to zrobić, może być artykułem samym w sobie. Jeśli nie jesteś zaznajomiony z tym, oto skrót: Uruchom komputer z dysku DVD Instalatora systemu Windows (Vista lub nowszego) i naciśnij Shift-F10 po uruchomieniu GUI, wyświetli się wiersz polecenia.

  • Pobierz dysk testowy , znajdź sposób na umieszczenie go na obrazie WinPE (lub działałby zwykły dysk USB) i uruchom go ze środowiska WinPE. (Uwaga: WinPE nie ma WOW64, 32-bitowej warstwy zgodności dla aplikacji 32-bitowych. Dlatego moja 64-bitowa konfiguracja WinPE wymagała 64-bitowego pliku testdisk).

  • Testdisk znalazł partycje i przywrócił je.

  • W tym momencie pliki zostały odzyskane, ale bootloader nie powiódł się z powodu kilku problemów. Najpierw stosuje się diskpartdo oznaczenia partycji jako aktywny ( list disk, sel disk <disk number>, sel par 0, active). Posunęłem się dalej, nie uruchamiał się. Wróciłem do WinPE i usunąłem \boot, a następnie uruchomiłem, bcdboot C:\windows /s C:aby ponownie zainstalować program ładujący.

  • Na koniec pobiegłem, chkdisk /Raby upewnić się, że obraz jest w porządku. Zajęło mi to kilka godzin, nie znalazłem żadnych problemów.

asveikau
źródło
-1

Miałem ten sam problem, GParted w ogóle nie rozpoznał partycji i zostało to pokazane jako nieprzydzielone miejsce. W tym momencie zrozumiałem, że dane mogły zostać utracone.

Potem przypomniałem sobie, jak za pomocą testdisk szukać utraconej partycji na dyskach twardych, więc dlaczego nie wypróbować jej na dyskach wirtualnych? i zadziałało.

  1. Uruchom z GParted, w momencie pisania tej odpowiedzi GParted miał w sobie „dysk testowy”. Po prostu uruchom terminal, uruchom „sudo testdisk / dev / sda” lub cokolwiek, co pojawi się na twoim komputerze. Uruchom „sudo fdisk -l”, aby wyświetlić wszystkie dyski.
  2. Analizuj tablicę partycji, natychmiast wykryje partycję, ponieważ wciąż znajduje się w pierwszych sektorach. Napisz nową partycję, tabelę, a następnie przejdź do GParted, aby kontynuować odzyskiwanie, zgodnie z instrukcją w tym łączu: http://www.howtogeek.com/124622/how-to-enlarge-a-virtual-machines-disk-in-virtualbox -lub-vmware /
  3. Następnym razem, gdy chcesz to zrobić, najpierw wykonaj kopię VDISK.
  4. Zauważyłem w poniższym linku, że tworzą oni nowy dysk VHD, a następnie klonują go za pomocą --istniejącego: http://tips.kaali.co.uk/2012/03/16/expand-or-increase-the-size-of-virtual- box-vdi-dis / Nie próbowałem jeszcze, ale odzyskałem dysk zgodnie z powyższymi instrukcjami.

Mam nadzieję, że to komuś pomoże.

Yousef
źródło
Proszę podać podstawowe części odpowiedzi z linku (linków) referencyjnych, ponieważ odpowiedź może stać się nieważna w przypadku zmiany połączonych stron.
DavidPostill