Naprawianie uszkodzonego wirtualnego dysku twardego
Naprawianie uszkodzonego wirtualnego dysku twardego
W czasach systemu Windows XP Microsoft miał ambitne plany dotyczące technologii, które chciały wbudować w swój nowy system operacyjny dla komputerów stacjonarnych. Tym systemem okazał się być Vista. Wśród rzeczy, które rozważał Microsoft, był zupełnie nowy system plików, w którym wszystkie pliki byłyby zawarte w strukturze przypominającej bazę danych. Ostatecznie ta szczególna funkcja nigdy nie dotarła do Windowsa, ale w tamtym czasie było kilka artykułów redakcyjnych, że nowy system plików jest złym pomysłem, ponieważ warstwa enkapsulacji może łatwo stać się pojedynczym punktem awarii. Jeśli enkapsulacja miałaby ulec uszkodzeniu, wówczas mogłaby w rezultacie zostać utracona cała struktura plików.
Przewińmy kilka dekad, a idea hermetyzacji okazała się niezawodna. Biblioteki dokumentów SharePoint, dla przykładu, przechowują pliki w magazynie blobów SQL Server. Podobnie wirtualne maszyny Hyper-V przechowują pliki na wirtualnych dyskach twardych, czyli w zasadzie hermetyzowany system plików. Pomimo zastosowania enkapsulacji, wirtualne dyski twarde Hyper-V są tak niezawodne, że są używane w niezliczonych systemach produkcyjnych. Mimo to czasami coś może pójść nie tak. Widziałem kilka przypadków wirtualnego uszkodzenia dysku twardego na przestrzeni lat, szczególnie na maszynach wirtualnych, które polegają na łańcuchach punktów kontrolnych. Gdy tak się stanie, możesz przywrócić kopię zapasową, jeśli ją masz, ale czasami możesz równie łatwo naprawić uszkodzony wirtualny dysk twardy, a oto jak to zrobić.
Dlaczego zdarza się uszkodzenie?
Zanim pokażemy jak naprawić uszkodzony wirtualny dysk twardy, możesz się zastanawiać, w jaki sposób uszkodzenie występuje w pierwszej kolejności. Czasami uszkodzenie może być spowodowane przez wadliwy sprzęt. Miałem kiedyś zewnętrzne urządzenie RAID, które zepsuło sporo danych w wyniku złego kabla. Jednak w przypadku wirtualnych dysków twardych Hyper-V uszkodzenie często występuje w wyniku przerwania łańcucha dysków.
Jeśli maszyna wirtualna nie jest ekranowana i nie jest uruchomiona, system operacyjny Windows umożliwia zamontowanie wirtualnego dysku twardego i uzyskanie dostępu do jego zawartości z nadrzędnego systemu operacyjnego. Używam tej techniki przez cały czas podczas konfigurowania środowisk laboratoryjnych. Jeśli jednak istnieją punkty kontrolne dla wirtualnego dysku twardego, wówczas podłączenie wirtualnego dysku twardego spoza Hyper-V przerwie łańcuch punktów kontrolnych. Jest to prawdą, nawet jeśli nie wprowadzisz żadnych zmian w zawartości wirtualnego dysku twardego. Następnym razem, gdy spróbujesz uruchomić maszynę wirtualną, pojawi się błąd podobny do pokazanego poniżej.
Odzyskiwanie danych z maszyny wirtualnej
czyli – naprawianie uszkodzonego wirtualnego dysku twardego
Jeśli chodzi o testowanie wirtualnych dysków twardych, konwencjonalna mądrość często dyktuje użycie polecenia cmdlet Test-VHD w PowerShell. Z własnego doświadczenia wynika jednak, że polecenie cmdlet Test-VHD naprawdę nie jest pomocne. Polecenie cmdlet zwraca wartość True, jeśli wirtualny dysk twardy jest uważany za zdrowy, i wartość false, jeśli wirtualny dysk twardy jest uszkodzony. Problem polega na tym, że gdy łańcuch punktów kontrolnych wirtualnego dysku twardego zostanie uszkodzony w wyniku zamontowania wirtualnego dysku twardego zawierającego punkty kontrolne, wówczas polecenie cmdlet Test-VHD zgłasza status True, mimo że wirtualny łańcuch dysków twardych jest uszkodzony. Aby zobaczyć, co mam na myśli, sprawdź poniższy rysunek. Polecenie cmdlet Test-VHD zwraca status True, mimo że komunikat o błędzie mówi konkretnie, że “łańcuch wirtualnych dysków twardych jest uszkodzony.”
Klucz do rozwiązania tego problemu jest wyświetlany pod koniec komunikatu o błędzie pokazanego na powyższym rysunku. Błąd stwierdza, że istnieje niezgodność w identyfikatorach nadrzędnego wirtualnego dysku twardego i dysku różnicowego. Oznacza to, że jeśli możesz naprawić niezgodność między identyfikatorami dysku, może być możliwe ponowne połączenie wirtualnego łańcucha dysku twardego, co wyeliminuje uszkodzenie. Poniższy rysunek przedstawia Menedżera funkcji Hyper-V, a aktualnie wybrana maszyna wirtualna ma problemy. Mimo że menedżer Hyper-V nadal pokazuje pełne drzewo punktu kontrolnego maszyny wirtualnej, łańcuch punktów kontrolnych jest uszkodzony na poziomie dysku.
Kontynuując przeglądanie powyższego rysunku widać, że okienko Akcje zawiera opcję Sprawdź dysk. Kliknięcie przycisku Sprawdź dysk powoduje, że system Windows wyświetla okno dialogowe z monitem o wybranie wirtualnego dysku twardego, który chcesz sprawdzić. Gdybym miał wybrać plik Client.VHDX, to wynikowe okno, które widać poniżej, sprawia, że wirtualny dysk twardy jest całkowicie zdrowy. Rzeczywiście, gdybym miał zamontować wirtualny dysk twardy na poziomie hosta, mogę przeglądać jego zawartość bez problemu.
W takim przypadku wirtualny dysk twardy root wydaje się być zdrowy, a problem oczywiście wynika z powiązania między wirtualnym dyskiem twardym a pierwszym punktem kontrolnym. Ponieważ wirtualny dysk twardy wydaje się być nieświadomy drzewa punktu kontrolnego, rzućmy okiem na to, co się stanie, jeśli ponownie klikniesz opcję Inspect Disk Hyper-V Manager i tym razem wybierz plik AVHDX (dysk różnicujący powiązany z punktem kontrolnym) w przeciwieństwie do głównego pliku VHDX.
Tym razem Menedżer funkcji Hyper-V wyświetla błąd informujący, że wirtualny łańcuch dysków twardych jest zepsuty. Jak widać na poniższym rysunku, dostaję również przycisk, który może być użyty do ponownego połączenia łańcucha dyskowego.
Kliknięcie przycisku Połącz ponownie uruchamia Kreatora edycji wirtualnego dysku twardego, który monituje o wybranie macierzystego wirtualnego dysku twardego. W zależności od tego, jak doszło do uszkodzenia, może być konieczne zaznaczenie pola wyboru Ignore ID Mismatch, pokazanego na poniższym rysunku. W moim przypadku komunikat o błędzie wyraźnie wspomniał o niezgodności ID, więc zaznaczenie tego pola wyboru było konieczne. W tym czasie maszyna wirtualna została uruchomiona bez problemu, a nasz problem z uszkodzonym wirtualnym dyskiem twardym został naprawiony.
Oczywiście najlepiej jest starać się zapobiec uszkodzeniu dysku w środowiskach Hyper-V, ale jeśli coś pójdzie nie tak, możesz naprawić uszkodzony wirtualny dysk za pomocą natywnych narzędzi. Jednak w ramach najlepszej praktyki należy unikać bezpośredniego montowania dowolnego wirtualnego dysku twardego, dla którego istnieją punkty kontrolne.