Właściwy sposób radzenia sobie z uszkodzonymi systemami plików XFS

19

Ostatnio miałem uszkodzony system plików XFS z powodu awarii zasilania. (System CentOS 7). System nie uruchamia się poprawnie.

Uruchomiłem z dysku ratunkowego i spróbowałem xfs_repair, powiedział mi, aby zamontować partycję, aby poradzić sobie z dziennikiem.

Zamontowałem partycję i lssprawdziłem, czy tak, wygląda na to, że tam jest. Odmontowałem partycję, spróbowałem xfs_repairponownie i dostałem ten sam komunikat.

Co mam zrobić w tej sytuacji? Czy coś jest nie tak z moją płytą ratunkową (System Rescue CD, wersja 4.7.1)? Czy powinienem zastosować inną procedurę?

Ostatecznie po prostu przywróciłem system z kopii zapasowych (w tym przypadku było to szybkie i łatwe), ale chciałbym wiedzieć, co robić w przyszłości.

Michael Kohne
źródło

Odpowiedzi:

22

Jeśli próbujesz uruchomić xfs_repair , pojawia się komunikat o błędzie sugerujący zamontowanie systemu plików w celu odtworzenia dziennika, a po zamontowaniu nadal pojawia się ten sam komunikat o błędzie, może być konieczne wykonanie naprawy wymuszonej (użycie -Lflagi z xfs_repair). Ta opcja powinna być ostatecznością.

Na przykład użyję przypadku, w którym miałem uszkodzoną partycję root w instalacji CentOS 7. Podczas próby zamontowania partycji ciągle pojawiał się następujący komunikat o błędzie:

mount: mount / dev / mapper / centos-root on / mnt / centos-root failed: Struktura wymaga czyszczenia

Niestety wymuszenie naprawy wymagałoby wyzerowania (zniszczenia) dziennika przed przystąpieniem do naprawy. Podczas korzystania z tej metody może dojść do większej liczby uszkodzonych danych, niż początkowo przewidywano; możemy jednak użyć odpowiednich narzędzi xfs, aby sprawdzić, jakie szkody mogą zostać spowodowane przed wprowadzeniem jakichkolwiek trwałych zmian.

Za pomocą xfs_metadump i xfs_mdrestore można utworzyć obraz metadanych dotkniętej partycji i wykonać wymuszoną naprawę obrazu, a nie samej partycji. Zaletą tego jest możliwość zobaczenia uszkodzeń, które pochodzą z wymuszonej naprawy przed wykonaniem jej na partycji.

Aby to zrobić, potrzebujesz porządnego rozmiaru USB lub zewnętrznego dysku twardego. Zacznij od zamontowania napędu USB - moje USB było zlokalizowane pod /dev/sdb1, twoje może mieć inną nazwę.

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb

Po zamontowaniu uruchom, xfs_metadumpaby utworzyć kopię metadanych partycji na USB - ponownie, partycja, której dotyczy problem, może być inna. W tym przypadku miałem uszkodzoną partycję główną zlokalizowaną na /dev/mapper/centos-root:

xfs_metadump /dev/mapper/centos-root /mnt/usb/centos-root.metadump

Następnie przywróć metadane do obrazu, abyśmy mogli wykonać naprawę i zmierzyć uszkodzenia.

xfs_mdrestore /mnt/usb/centos-root.metadump /mnt/usb/centos-root.img

Odkryłem, że w trybie ratunkowym xfs_mdrestorenie jest dostępny, a zamiast tego musisz być w trybie ratunkowym na żywo z dysku CD CentOS.

Na koniec możemy wykonać naprawę obrazu:

xfs_repair -L /mnt/usb/centos-root.img

Po zakończeniu naprawy i dokonaniu oceny wydajności i potencjalnych uszkodzeń możesz ustalić, czy chcesz przeprowadzić naprawę partycji.

Aby uruchomić naprawę partycji, po prostu uruchom:

xfs_repair -L /dev/mapper/centos-root

Nie zapomnij również sprawdzić innych partycji pod kątem uszkodzeń. Po naprawach uruchom ponownie system i powinieneś być w stanie pomyślnie uruchomić system.

Pamiętaj, że -Lflaga powinna być używana w ostateczności, gdy nie ma innych możliwych opcji naprawy.

Odkryłem, że te artykuły online pomogły:

brendonofficial
źródło
OK, więc -L jest ostatecznością i są to DOSKONAŁE instrukcje, jak zobaczyć, jak źle będzie, jeśli użyjemy -L. Jakich innych opcji brakuje mi -L?
Michael Kohne
1
@MichaelKohne Oczywiście przywracanie z kopii zapasowej. Nie powinieneś zbliżać się do tego poziomu piekła, chyba że nie masz kopii zapasowych.
Michael Hampton
1
@MichaelHampton - OK, wystarczy. Ale nie sądzę, że KIEDYKOLWIEK straciłem taki system plików z powodu błędów ext4 przy braku zasilania - czy XFS jest mniej odporny? Czy może tym razem miałem naprawdę pecha?
Michael Kohne
@MichaelKohne Myślę, że po prostu miałeś wyjątkowo pecha. XFS jest dość niezawodnym systemem plików.
Michael Hampton
3
zwykliśmy po prostu móc to robić od początku. jaki cudowny „postęp” zrobiliśmy.
Florian Heigl
1

Miałem ten błąd, gdy centos 7 źle zatrzymał się na maszynie wirtualnej kvm:

wykryto uszkodzenie metadanych na XFS ...

kiedy używam loga z „dziennikactl -xe”, znalazłem błąd montowania:

/ dev / mapper / root / sysroot

Rozwiązuję to za pomocą:

xfs_repair / dev / mapper / root

Następnie system ukończy siedem faz, a następnie uruchom ponownie za pomocą

./zamknąć

A potem maszyna wirtualna centos 7 działa dobrze…

pozdrowienia

Uwaga: być może jesteś / dev / mapper / root masz inną nazwę, sprawdź dziennik błędów za pomocą dziennikactl -xe, aby znaleźć nazwę źle zamontowanego urządzenia

davidleosam
źródło