Co oznacza trwały błąd ZFS?

18

Kilka z nich permanent errorszostało dziś zgłoszonych w moim Zpool.

  pool: seagate3tb
 state: ONLINE
status: One or more devices has experienced an error resulting in data
        corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
        entire pool from backup.
   see: http://zfsonlinux.org/msg/ZFS-8000-8A
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        seagate3tb  ONLINE       0     0    28
          sda       ONLINE       0     0    56

errors: Permanent errors have been detected in the following files:

        /mnt/seagate3tb/Install.iso
        /mnt/seagate3tb/some-other-file1.txt
        /mnt/seagate3tb/some-other-file2.txt

Edycja: Jestem pewien, że te CKSUMwartości są dokładne. Redagowałem dane i mogłem je przez pomyłkę zmienić. Być może były 0. Niestety, nie mogę znaleźć rozstrzygającej odpowiedzi w moich notatkach, a błędy zostały teraz rozwiązane, więc nie jestem pewien, ale wszystko inne jest dokładne / odzwierciedla to, co raportował Zpool.

/mnt/seagate3tb/Install.iso to jeden przykładowy plik zgłoszony jako mający stały błąd.

Oto, gdzie się mylę. Jeśli porównam mój „trwale błędny” Install.isoz kopią zapasową tego samego pliku w innym systemie plików, wyglądają identycznie.

shasum "/mnt/seagate3tb/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/seagate3tb/Install.iso
shasum "/mnt/backup/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/backup/Install.iso
cmp /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
diff /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso

Pliki wydają się identyczne. Co więcej, plik działa doskonale. Jeśli użyję go w aplikacji, zachowuje się tak, jakbym tego oczekiwał.

Jak stwierdzają dokumenty :

Błędy związane z uszkodzeniem danych są zawsze śmiertelne.

Ale na podstawie moich podstawowych weryfikacji plików nie jestem pewien, czy rozumiem definicję fatal.

status: W co najmniej jednym urządzeniu wystąpił błąd powodujący uszkodzenie danych. Może to mieć wpływ na aplikacje.

akcja: Jeśli to możliwe, przywróć dany plik. W przeciwnym razie przywróć całą pulę z kopii zapasowej.

Być może coś mi brakuje, ale plik wydaje się być w porządku, o ile wiem, i wymaga przywrócenia lub nie wykazuje żadnych uszkodzeń, pomimo rekomendacji ZFS.

Widziałem inne artykuły z tym samym błędem , ale jeszcze nie znalazłem odpowiedzi na moje pytanie.

Jaki jest trwały błąd pliku? Czy jest jakiś problem z niższym poziomem pliku, który po prostu nie jest dla mnie widoczny? Jeśli tak, dlaczego nie zostałoby to wykryte shasumjako różnica w pliku?

Z punktu widzenia laika nic nie wskazuje na błąd w tym pliku.

Will Haley
źródło
Czy masz migawki?
ewwhite
3
Czy, skoro nikt inny tego nie powiedział, czy mogę powitać Cię w usłudze ServerFault? To wydaje mi się doskonałym pierwszym pytaniem i mam nadzieję, że nadal będzie zawierało pouczające odpowiedzi. Mam nadzieję, że zdecydujesz się pozostać przy SF i przyczynić się do dalszego rozwoju.
MadHatter
Dziękuję @MadHatter! Doceniam twoje uprzejme powitanie iz pewnością pozostanę przy SF. Dodałem go już do mojej krótkiej listy społeczności SE.
Will Haley,

Odpowiedzi:

22

Sformułowanie zpool statusjest nieco mylące. Trwały błąd (w tym kontekście) wskazuje, że wystąpił błąd we / wy i został zarejestrowany w dzienniku błędów SPA (Storage Pool Allocator) dla tej puli. Ten sposób nie musi oznaczać, że jest nie do odzyskania uszkodzenie danych.

Co powinieneś zrobić, to uruchomić zpool scrubpulę. Po zakończeniu szorowania dziennik błędów SPA zostanie obrócony i nie będzie już wyświetlał błędów sprzed szorowania. Jeśli szorowanie nie wykryje żadnych błędów zpool status, nie będzie już pokazywał żadnych „trwałych” błędów.

W odniesieniu do dokumentacji mówi się, że w ten sposób rejestrowane są tylko „błędy krytyczne”. Błąd krytyczny to błąd we / wy, który nie może zostać automatycznie skorygowany przez ZFS i dlatego został narażony na działanie aplikacji jako nieudany we / wy. Z drugiej strony, jeśli natychmiastowo powiodła się próba We / Wy lub logiczne We / Wy zostały spełnione z nadmiarowego urządzenia, nie byłby to błąd krytyczny i dlatego nie byłby rejestrowany jako błąd uszkodzenia danych.

Błąd krytyczny niekoniecznie oznacza trwałą utratę danych, oznacza tylko, że w tym czasie nie można go naprawić przed propagacją do aplikacji. Na przykład luźny kabel lub zły kontroler może powodować tymczasowe błędy krytyczne, które ZFS określiłby jako „trwałe”. To, czy naprawdę jest to problem, zależy od natury We / Wy i od tego, czy aplikacja jest w stanie odzyskać dane po błędach We / Wy.

EDYCJA: Całkowicie zgódź się z @bahamat, że powinieneś zainwestować w redundancję jak najszybciej.

Tom Shaw
źródło
Dziennik błędów SPA zgłaszający to jako „stały” rzeczywiście wydaje się nieco mylący. zpool scrubZrobił dokładnie to, co sugeruje @ tom-Shaw, a wyjaśnienie ma sens. Po szorowaniu nie widzę już żadnych „trwałych błędów” w tej tablicy. Nie myślałem o fatalnych błędach w kontekście nieudanego odczytu. Myślę, że to był tylko tymczasowy błąd we / wy podczas odczytu, jak sugerujesz. Całkowicie zgadzam się również z potrzebą zwolnienia.
Will Haley,
Tom, nie widziałem cię od dłuższego czasu. Witamy spowrotem.
the-wabbit
7

Błąd trwały oznacza, że ​​w pliku wystąpił błąd sumy kontrolnej i nie było wystarczającej liczby replik do naprawy. Oznacza to, że co najmniej jeden odczyt zwrócił uszkodzone dane z powodu błędu we / wy. Jeśli cokolwiek otrzymało odczyt, to zapisało to z powrotem w tym samym pliku na dysku, co spowodowałoby nieodwracalne uszkodzenie danych.

Patrząc na konfigurację puli, wygląda na to, że nie masz redundancji. To jest bardzo niebezpieczne. Nie zyskujesz żadnych samonaprawiających się korzyści ZFS, ale będzie w stanie powiedzieć ci, kiedy nastąpiło uszkodzenie danych. Zwykle ZFS automatycznie i po cichu poprawi uszkodzone odczyty, ale w twoim przypadku nie. Wygląda również na to, że już uruchomiłeś, zpool clearponieważ CKSUMliczba jest 0dla obu dysków.

Niestety, bez replik tak naprawdę nie można tego wiedzieć.

bahamat
źródło
2
Czy nie zpool clearwyczyściłby również samego komunikatu o błędzie, a nie tylko błąd się liczy? Dziwne jest to, że komunikat nadal występuje, ale nie są wyświetlane żadne błędy.
user121391,
2
Przepraszam. Pominąłem pliki z listy stałych błędów związanych z prywatnością. Podczas edytowania tego wyniku zmieniłem również liczniki CKSUM i straciłem cenny kontekst. Zredagowałem pytanie, aby odzwierciedlić rzeczywistość. @ user121391
Will Haley,
W takim przypadku, jeśli wyświetlane liczby są poprawne, oznacza to, że prawdopodobnie gdzieś wystąpił błąd sprzętowy. Ponieważ oba dyski pokazują CKSUM counts, może to być kontroler, kabel lub dowolny wspólny sprzęt między dwoma dyskami. Możliwe jest również, że oba dyski ulegają awarii. W każdym razie podkreśla to potrzebę jak najszybszego dodania redundancji i sprawdzenia wskazanych plików pod kątem uszkodzeń.
bahamat
OP wydaje się nie mieć żadnej redundancji; vdev ma 56 błędów CKSUM, a pula zawiera 28 błędów CKSUM. Nie jestem więc pewien, o czym mówiliście przez „oba dyski” w poprzednim komentarzu. Zgadzam się z twoim punktem widzenia na temat wartości redundancji.
CVn
Masz rację. Źle odczytałem nazwę puli, jakby to był inny dysk. Dzięki za zwrócenie na to uwagi.
bahamat