NAS może pozostać dostępny, podczas gdy zpool status zaczyna zgłaszać błędy odczytu lub sumy kontrolne. Zanim uznasz, że jeden z dysków jest martwy, uruchom scrub na dobrym poolu. Ta weryfikacja odczytuje bloki z poola i sprawdza ich sumy kontrolne.
Na serwerze, który hostuje VM, kopie zapasowe lub udostępnienia, wybrałbym spokojne okno I/O. Scrub wykorzystuje dyski, a ZFS odmawia jego wykonania w tym samym czasie, co resilver. Celem jest ustalenie, czy pool pozostaje zdrowy, a nie uruchamianie polecenia, aby zniknęło ostrzeżenie.

Przed scrubem, potwierdź nazwę poola
Najpierw zapoznaj się z aktualnym stanem. Nie zgaduj nazwy poola na podstawie montażu lub dysku widocznego w lsblk. Polecenie zpool list wyświetla zaimportowane poole, a następnie zpool status -v przedstawia ich stan i znane błędy.
sudo zpool list
sudo zpool status -v tank
Zamień tank na nazwę zwróconą przez Twoją maszynę. W wynikach, zwróć uwagę na linię scan, ogólny stan poola oraz liczniki READ, WRITE i CKSUM dla vdevs. Wersja -v może również wypisać dotknięte pliki, gdy ZFS zna ich ścieżkę.
Pool już w procesie resilver odbudowuje dodany lub wymieniony dysk. Poczekaj na zakończenie tej operacji przed zażądaniem scrub: OpenZFS zezwala tylko na jedną operację tego typu w danym czasie. Jeśli dyski obsługują bazę danych lub VM o dużym obciążeniu, przełóż kontrolę, aby nie stworzyć przeciążenia I/O w ciągu dnia.
Uruchom scrub w spokojnym okresie
Następujące polecenie uruchamia normalny scrub na tank:
sudo zpool scrub tank
Scrub przeszukuje dane i sprawdza sumy kontrolne. W przypadku lustra, RAIDZ lub dRAID, ZFS może naprawić uszkodzone bloki, jeśli ma ważną kopię. Izolowany dysk lub uszkodzenie bez replikacji pozostaje przypadkiem do rozwiązania z kopią zapasową lub wymianą sprzętu.
Polecenie zwraca się niemal natychmiast. To normalne: praca kontynuuje się w tle. Jeśli obciążenie stanie się uciążliwe, OpenZFS pozwala wstrzymać scrub, a następnie wznowić go później tym samym poleceniem.
sudo zpool scrub -p tank
sudo zpool scrub tank
Unikaj zpool scrub -a przy pierwszej kontroli. Ta opcja uruchamia, wstrzymuje lub zatrzymuje operację na wszystkich poolach i może mocno obciążyć maszynę, która hostuje ich wiele.
Śledzenie postępów i odczyt błędów
Uruchom ponownie zpool status podczas scrub:
sudo zpool status tank
sudo zpool status -v tank
Linia scan wskazuje rozpoczęcie operacji, objętość zeskanowaną, postęp, przepustowość oraz oszacowanie pozostałego czasu. Postęp przekraczający 100 % może się pojawić na aktywnym poolu, ponieważ dane zmieniają się podczas odczytu.
Na końcu ponownie sprawdź liczniki dysków i szczegółową listę. Czysty wynik wygląda jak ukończony scrub z 0 errors. Naprawione błędy zasługują na sprawdzenie historii dysku, kabli i kontrolera. Wiadomości jądra często są przydatne na tym etapie: przewodnik dmesg pod Linuxem pokazuje, jak izolować ostrzeżenia o przechowywaniu.
- WZROST READ lub WRITE : sprawdź dysk, kabel i kontroler przed kolejną ciężką operacją.
- WZROST CKSUM : szukaj błędu transferu lub odczytu, nawet jeśli ZFS naprawiło bloki dzięki zdrowej kopii.
- Pliki wymienione po scrubie : przywróć je z zweryfikowanej kopii zapasowej, a następnie wymień wadliwy sprzęt, jeśli błędy się powtarzają.
Po stałym błędzie, wyjście z prostego sprawdzenia
Scrub wiarygodności widocznej poola w danym momencie. Nie zastępuje kopii zapasowej poza NAS, i nie przekształca niestabilnego dysku w dysk godny zaufania. Jeśli zpool status -v tank nadal wymienia błędy po zakończeniu skanu, najpierw skopiuj jeszcze czytelne dane do zdrowego miejsca docelowego.
Dokumentacja OpenZFS dotycząca zpool scrub precyzuje, że kontrole sumy kontrolnej przeszukują wszystkie bloki, a automatyczne naprawy wymagają ważnej kopii zapasowej. Dla poola bez redundancji, rozsądna decyzja to przywrócenie z kopii zapasowej i wymiana wadliwego nośnika.