Kilka z nich permanent errors
został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 CKSUM
wartoś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.iso
z 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 shasum
jako różnica w pliku?
Z punktu widzenia laika nic nie wskazuje na błąd w tym pliku.
Odpowiedzi:
Sformułowanie
zpool status
jest 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 scrub
pulę. 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ówzpool 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.
źródło
zpool scrub
Zrobił 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.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 clear
ponieważCKSUM
liczba jest0
dla obu dysków.Niestety, bez replik tak naprawdę nie można tego wiedzieć.
źródło
zpool clear
wyczyś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.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ń.