Używanie „złych bloków” na nowoczesnych dyskach

21

Chcę użyć złych bloków do sprawdzenia moich dysków twardych i doceniłbym wyjaśnienie jego działania.

Czy ktoś może wyjaśnić najlepsze opcje korzystania z -bi -c? Podałem ich definicje ze strony podręcznika, ale nie jestem pewien, czy większe rozmiary byłyby korzystne dla nowoczesnych dysków z 64 MB pamięci RAM i sektorami 4k.

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64

Po drugie, chciałbym wiedzieć, czy test w trybie zapisu jest bardziej dokładny niż nieniszczący tryb odczytu i zapisu?

Wreszcie, ile dopuszczalnych realokacji sektorów SMART jest dopuszczalnych / czy dyski z niezerową liczbą realokacji powinny zostać natychmiast zastąpione?

Yoren
źródło
3
druga część: jak tylko zobaczysz złe bloki, oznacza to, że coś poszło nie tak. To prawdopodobnie dobry znak, że powinieneś wymienić dysk, zanim nie będziesz mógł go w ogóle odczytać. Ale we wszystkich przypadkach, nawet przed awarią, oprócz kopii roboczej zawsze powinieneś mieć 2 kopie ważnych danych (1 lokalny, 1 zdalny). zobacz szczegóły mojej odpowiedzi tam: superuser.com/a/528181/174998
Olivier Dulac
4
rozmiar bloku: powinien odzwierciedlać rzeczywisty rozmiar bloku używany przez system operacyjny do przechowywania danych na tym dysku twardym (zgodnie z używanym systemem plików). Nie ma na celu przyspieszania rzeczy, oznacza to, że zaznacza blok jako „zły”, ten blok rzeczywiście ma 1 blok, a nie 1/2, 1/4, a nawet 2 (lub więcej) bloków.
Olivier Dulac

Odpowiedzi:

21

Pytanie 1:

W odniesieniu do -bopcji: zależy to od dysku. Nowoczesne, duże dyski mają bloki 4KB, w takim przypadku należy ustawić -b 4096. Rozmiar bloku można uzyskać z systemu operacyjnego , a zazwyczaj można go również uzyskać, odczytując informacje o dysku z etykiety lub przeglądając numer modelu dysku. Jeśli -bjest ustawiony na coś większego niż rozmiar twojego bloku, integralność badblockswyników może być zagrożona (tzn. Możesz uzyskać fałszywe negatywy: nie znaleziono złych bloków, kiedy mogą jeszcze istnieć). Jeśli -bjest ustawiony na coś mniejszego niż rozmiar bloku dysku, prędkość badblocksbiegu może zostać obniżona. Nie jestem pewien, ale mogą wystąpić inne problemy z ustawieniem-bdo czegoś mniejszego niż rozmiar bloku, ponieważ nie weryfikuje to integralności całego bloku, nadal może być możliwe uzyskanie fałszywych negatywów, jeśli jest ustawiony zbyt mały.

Do -codpowiada ilu bloki powinny być sprawdzane na raz opcji. Zasadniczo czytanie / pisanie partii. Ta opcja nie wpływa na integralność wyników, ale wpływa na szybkość, z jaką badblocksdziała. badblocksbędzie (opcjonalnie) zapisu, a następnie odczytać, bufor, czek, powtórz dla każdego n bloków w sposób określony przez -c. Jeśli -cjest ustawiona zbyt nisko, spowoduje to, że twoje działania badblocksbędą trwać znacznie dłużej niż zwykle, ponieważ kolejkowanie i przetwarzanie osobnego żądania IO powoduje obciążenie, a dysk może również nakładać dodatkowe obciążenie na żądanie. Jeśli -cjest ustawiony zbyt wysoko, badblocksmoże zabraknąć pamięci. Jeśli tak się stanie, badblockszawiedzie dość szybko po uruchomieniu. Dodatkowe kwestie do rozważenia obejmują równoległe badblocksuruchamianie: jeśli prowadziszbadblocksprzeciwko wielu partycjom na tym samym dysku (zły pomysł) lub przeciwko wielu dyskom przez ten sam kanał IO, prawdopodobnie będziesz chciał dostroić się -cdo czegoś rozsądnie wysokiego, biorąc pod uwagę dostępną pamięć, aby badblocksrównoległe biegi nie walczyły o przepustowość IO i może zrównoważyć się w rozsądny sposób.

Pytanie 2:

Wbrew temu, co inne odpowiedzi wskazują, próba zapisu tryb nie jest mniej lub bardziej wiarygodne niż nieniszczących testu odczytu i zapisu, ale jest dwa razy szybciej, kosztem bycia destrukcyjne dla wszystkich danych. Wyjaśnię dlaczego:-w

W trybie nieniszczącym badblockswykonuje następujące czynności:

  1. Odczytaj istniejące dane, zsumuj je (w razie potrzeby przeczytaj ponownie) i zapisz w pamięci.
  2. Napisz -pdo bloku z góry określony wzór (nadpisywany z opcją, choć zwykle nie jest to konieczne).
  3. Przeczytaj blok ponownie, sprawdzając, czy odczytane dane są takie same jak wzorzec.
  4. Zapisz oryginalne dane z powrotem na dysk.
    • Nie jestem tego pewien, ale prawdopodobnie ponownie czyta i sprawdza, czy oryginalne dane zostały pomyślnie zapisane i nadal sumy kontrolne na to samo.

W -wtrybie destrukcyjnym ( ) badblockswykonuje tylko powyższe kroki 2 i 3. Oznacza to, że liczba operacji odczytu / zapisu potrzebnych do zweryfikowania integralności danych została zmniejszona o połowę. Jeśli blok jest zły, dane będą błędne w obu trybach. Oczywiście, jeśli zależy Ci na danych przechowywanych na dysku, powinieneś użyć trybu nieniszczącego, ponieważ -wspowoduje to zatarcie wszystkich danych i pozostawienie badblockswzorców zapisanych na dysku.

Uwaga: jeśli blok się psuje, ale jeszcze nie został całkowicie usunięty, niektóre pary weryfikacji odczytu / zapisu mogą działać, a niektóre nie. W takim przypadku tryb nieniszczący może dać bardziej wiarygodne wskazanie „mulistości” bloku, ponieważ wykonuje dwa zestawy weryfikacji odczytu / zapisu (być może - patrz punkt pod krok 4). Nawet jeśli tryb nieniszczący jest w ten sposób bardziej niezawodny, jest bardziej niezawodny tylko przez przypadek . Prawidłowym sposobem sprawdzenia bloków, które nie są w pełni złe, ale nie są w stanie wytrzymać wielu operacji odczytu / zapisu, jest badblockswielokrotne uruchomienie tych samych danych przy użyciu tej -popcji.

Pytanie 3:

Jeśli SMART dokonuje realokacji sektorów, prawdopodobnie powinieneś rozważyć jak najszybszą wymianę dysku. Napędy, które tracą kilka sektorów, nie zawsze je tracą, ale przyczyną jest zwykle mocno używany napęd, który staje się magnetycznie papkowaty lub awarie głowic / silników skutkują niedokładnymi lub błędnymi odczytami / zapisami. Ostateczna decyzja należy do Ciebie: w oparciu o wartość danych na dysku i niezawodność, jakiej potrzebujesz z systemów na nim uruchomionych, możesz zdecydować, aby go utrzymać. Mam kilka dysków ze znanymi uszkodzonymi blokami, które od lat wirują z ostrzeżeniami SMART w moim serwerze plików, ale są one tworzone zgodnie z harmonogramem, dzięki czemu mogłem poradzić sobie z całkowitą awarią bez większego bólu.

Zac B
źródło
4
Wiesz, dlaczego -bdomyślnie 1024? To wydaje mi się trochę dziwne. Dlaczego nie 512?
Ryan J
6
@RyanJ 1024 to minimalny rozmiar bloku ext2. badblocks jest częścią e2fsprogs i pierwotnie miał na celu wypełnienie listy uszkodzonych bloków systemu plików ext2. Musisz uruchomić go z tym samym rozmiarem bloków co FS, aby uzyskać liczby we właściwym formacie dla mkfs.ext2. TL; DR: przyczyny historyczne, których nie powinieneś się martwić.
sourcejedi
BUUUTT, @Zac B powiedział: „Jeśli -b jest ustawione na coś większego niż rozmiar twojego bloku, integralność wyników złych bloków może zostać naruszona” 1024> 512. Rozumiem, jak 513 może spowodować, że niektóre testy będą niezaznaczone. Być może należy to jednak powtórzyć: „Jeśli parametr -b jest ustawiony na coś większego niż rozmiar bloku, A NIE JESZCZE WIELE WIELU, integralność wyników złych bloków może zostać naruszona”. Co powiesz na oryginalny plakat, inni mądrzejsi ode mnie?
Billy C.,
4

1) Jeśli twój nowoczesny dysk używa rozmiaru sektora innego niż 512b - musisz ustawić ten rozmiar za pomocą -bopcji (tj -b 4096.). Bez tej opcji sprawdzenie będzie przebiegać znacznie wolniej, ponieważ każdy prawdziwy sektor będzie próbowany wiele razy (8 razy w przypadku sektora 4k). Również, jak wspomniano Olivier Dulac w komentarzu do pytania -block is indeed 1 block, and not 1/2 or 1/4th or even 2 (or more) blocks.

Opcja -coznacza, ile sektorów tryid jednocześnie. Może to mieć wpływ na wydajność, a wartość tej wydajności może zależeć od konkretnego modelu dysku.

2) write-mode test- W moim rozumieniu sprawdzi on tylko, czy wystąpił poważny błąd lub błąd miękki (aka Silent Data Degradation, bit rot, rozpad nośników pamięci, sektory UNC)

3) Nie ufam raportowi SMART w danym momencie. Ważniejsze jest, jak wartości zmieniają się w czasie. Również tutaj są badania Google Failure Trends w populacji dużych dysków twardych i oto kilka dyskusji na ten temat. Oto cytat z badań:

Pomimo tej wysokiej korelacji dochodzimy do wniosku, że modele oparte wyłącznie na parametrach SMART raczej nie będą przydatne do przewidywania awarii poszczególnych napędów.

Jeśli chodzi o wzmianki o wymianie dysku, możesz nie mieć poważnego problemu z dyskiem, ale Silent Data Degradation (bit rot, rozpad nośników pamięci, sektory UNC). W takim przypadku nie ma sensu wymieniać dysku, ale zamiast tego warto wykonać odczyt / zapis tych samych danych z powrotem na dysk. Możesz spojrzeć tutaj, jak można to rozwiązać.

Jeśli masz poważny błąd, możesz spróbować podzielić dysk na partycje tak, aby zły obszar znajdował się poza partycjami. Dla mnie takie podejście było przydatne i taki zły napęd był używany przez długi czas bez żadnych problemów.

Miotła
źródło
Pierwsze zdanie jest niepoprawne, -bdomyślnie 1024. Jeśli twój dysk używa rozmiaru sektora innego niż 1024, co jest dość powszechne poza systemami plików ext2, powinieneś to określić.
Hashim
1

Zostawiłbym -b i -c jako domyślne, chyba że masz konkretny powód, aby je zmienić. Prawdopodobnie możesz ustawić -b na 4096, jeśli twój dysk ma rozmiary bloków 4k.

Sugerowałbym, aby najpierw uruchomić złe bloki za pomocą nieniszczącego testu rw. Jeśli znajdzie jakieś uszkodzone sektory, dysk jest uszkodzony i należy go wymienić. Jeśli NIE znajdzie żadnych złych bloków na nieniszczących, ale nadal podejrzewasz, że ma złe bloki, uruchom test niszczący rw.

Wreszcie, ile dopuszczalnych realokacji sektorów SMART jest dopuszczalnych / czy dyski z niezerową liczbą realokacji powinny zostać natychmiast zastąpione?

Chciałbym wymienić dysk, jak tylko sektory zostaną wymienione.

Tomasz
źródło
2
Chciałbym wymienić dysk, jak tylko sektory zostaną wymienione. skąd wiesz, że bloki psują się podczas normalnej pracy? Czy w jakiś sposób otrzymujesz sygnał?
Alexis Wilke,
5
Musisz monitorować logi SMART.
Ярослав Рахматуллин
1
chyba że masz konkretny powód, aby je zmienić . Podobnie jak w przypadku rozmiaru bloku innego niż domyślna 1024, co jest bardzo powszechne?
Carcamano,
1

Ten rodzaj idzie do różnicy między trybem odczytu złych bloków (nieniszczący) a trybem zapisu (niszczący):

Dysk przydzieli nieprawidłowy sektor tylko wtedy, gdy zapis się nie powiedzie. Błędy odczytu plików są „poprawiane” tylko podczas próby ponownego zapisania pliku. Inaczej. zły blok pozostaje częścią pliku przy założeniu, że można coś odzyskać. Błędy odczytu dla tablic partycji można „poprawić” tylko poprzez uruchomienie złych bloków w trybie zapisu i odtworzenie partycji

Tak więc tryb odczytu powie ci, gdzie są złe bloki, ale nie możesz nic z nimi zrobić. Tryb zapisu testuje kondycję każdego sektora i spowoduje, że dysk ponownie przydzieli zły blok, ale kosztem zniszczenia danych. Wybierz.

David Miller
źródło
0

Odpowiedź na drugie pytanie dotyczące mapowanych sektorów zależy od tego. Mówię w kontekście domowego użytkownika, który (czasami) monitoruje tego rodzaju rzeczy.

  • Jak ważne są dane przechowywane na dysku?
  • Co zostanie utracone, jeśli dysk nagle spadnie na brzuch?
  • Czy dane są archiwizowane w innym miejscu?
  • Czy dysk należy do macierzy RAID, w przypadku której utrata dysku ma minimalny wpływ?
  • Czy rośnie liczba mapowanych sektorów?

Oto dwie sytuacje, z którymi się spotkałem. Miałem RAID5 o pojemności 6 200 GB. Po awarii zasilania, która spowodowała migotanie świateł, jeden dysk pokazał 14 odwzorowanych sektorów i zarejestrował kilka błędów. Obejrzałem dysk i nie zarejestrowałem żadnych błędów, a liczba odwzorowanych sektorów pozostała stabilna. Doszedłem do wniosku, że dysk ucierpiał z powodu przejściowej mocy i w inny sposób nie zawodził. Nadal używałem go przez lata. Oryginalna macierz RAID5 została wycofana, ale mam dwa z tych dysków w pracy z około 10-letnim czasem pracy. Mają garść przemapowanych sektorów. Używam dwóch z nich dublowanych do przechowywania przyrostowych zrzutów kopii zapasowej z mojej podstawowej kopii zapasowej. W ten sposób główna kopia zapasowa widzi (głównie) operacje odczytu, a zapisy trafiają na różne urządzenia. Jeśli jeden z tych starożytnych dysków ulegnie awarii, drugi powinien kontynuować. Jeśli oba zawiodą, Zastępuję je czymś innym i ponownie uruchamiam skrypt kopii zapasowej. Wpływ, jeśli jeden z tych dysków ulegnie awarii, jest bliski zeru, więc nie przejmuję się mapowaniem sektorów.

Miałem dysk twardy o pojemności 2 TB, który był jednym z dwóch dysków lustrzanych i który zaczął powiększać zmapowane sektory. Początkowo były to dziesiątki, potem setki, a potem tysiące. To było przez lata. Drugi dysk w tej parze pozostał zdrowy i faktycznie, wolno rozwijająca się pochodna nie została usunięta z tablicy. Ostatecznie wymieniłem oba dyski na dyski 6 TB, a rosnąca liczba mapowanych sektorów stała się problemem. Nadal mam dysk i nadal „działa”, nawet przy około 4500 mapowanych sektorach. Umieściłem takie dyski w systemie testowym (jako członek RAID), aby zobaczyć, co się stanie, gdy ktoś faktycznie umrze. Miałem kilka okazji do pracy z tym i we wszystkich okolicznościach zastąpienie przebiegło bez dramatu.

Miałem awarię napędu na moim głównym serwerze plików kopii zapasowych. Nie wygenerował żadnego zaawansowanego ostrzeżenia, po prostu przestał odpowiadać na polecenia SATA. Był członkiem ZFS RAIDZ2 i zastąpiłem go bez żadnego dramatu. W rzeczywistości na moim serwerze testowym wymieniłem uszkodzone dyski bez wyłączania zasilania lub ponownego uruchamiania serwera.

Jeszcze jeden punkt do odnotowania: mam kopie zapasowe wszystkich ważnych danych na stronie i poza nią. W przypadku utraty jednego systemu w innym miejscu są dwie kopie danych.

HankB
źródło