W jaki sposób inteligentne autotesty są powiązane z badblockami?


15

Narzędzie smartctl umożliwia zainicjowanie długiego autotestu ( smartctl -t long /dev/sda). Jednak jest też badblocksto, że mogę uruchomić na dysku. Jak te dwie są ze sobą powiązane? Jeśli badblocks wykryje złe bloki, czy dysk automatycznie aktualizuje wartości SMART (np. Poprzez aktualizację liczby przeniesionych sektorów)? Czy badbloki mogą zastąpić smartctl -t longlub odwrotnie?

Odpowiedzi:


5

Muszę się nie zgodzić z voretaq7 - SMART to nie magia. Kiedy masz dysk i jeden z jego sektorów się psuje, nie będziesz już w stanie odczytać z niego danych. Jest więc całkowicie możliwe, aby mieć nieczytelny plik na nowoczesnym dysku. SMART oznaczyłby ten nieczytelny sektor jako „Bieżący w toku” i „Offline niemożliwy do naprawienia”, gdy byłby dostępny po raz pierwszy po awarii.

Ale kiedy ten sektor zostanie ponownie zapisany, wówczas zostanie ponownie przypisany do zmiany mapowania przestrzeni, nieoznaczony, a licznik „Reallocated_Sector_Ct” zwiększy się. Wtedy cały dysk byłby ponownie czytelny.

smartctl -t longtest jest użyteczny - przetestuje całą przestrzeń dyskową pod kątem nieczytelnych sektorów i zapisze i oznaczy jako „Bieżący w toku” i „Offline nie można naprawić” pierwszy uszkodzony sektor napotkany podczas uruchamiania. Konfiguruję moje serwery, aby uruchamiały ten długi test raz w tygodniu na każdym dysku. Nie wpływa to zbytnio na normalne funkcje napędu, ponieważ żądania systemu operacyjnego zawsze mają priorytet przed skanowaniem SMART.

Tak jak na serwerze, zawsze uruchamiam dyski w serwerach lustrzanych RAID1, więc gdy długi test wykryje zły sektor, mogę przepisać jego zawartość przy użyciu danych z innego dysku w lustrze, co wymusza realokację.

badblocksczasami jest przydatny - na przykład przetestuje cały dysk i nie zatrzyma się przy pierwszym błędzie. Może przetestować pojedynczą partycję lub dowolną inną część dysku. Możesz go użyć, aby szybko sprawdzić, czy zły blok został pomyślnie przeniesiony.


11

Jak wskazałem w mojej innej odpowiedzi , na każdym nowoczesnym dysku twardym jest dostępne miejsce do ponownego mapowania (ponieważ zwłaszcza przy dzisiejszej gęstości dysków żaden talerz nie będzie idealny - zawsze będzie kilka wad, które należy ponownie mapować, nawet w przypadku marki -nowe-nigdy-nigdy-nieużywane-wyjechały z linii montażowej w moje ręce).

Z tego powodu teoretycznie powinieneś zgłosić awarię SMART, zanim coś takiego jak badblockspowiadomienia (widoczne dla użytkownika końcowego) uszkodzonych sektorów na dysku.
Na współczesnych dyskach twardych wszelkie widoczne sektory uszkodzone widoczne dla użytkownika końcowego (co może być zgłaszane badblockslub automatycznie wykrywane przez system operacyjny) są ostatnim westchnieniem i dreszczem umierającego dysku.


Ostatecznie INTELIGENTNY i badblocksprzetestuj dwie różne, ale powiązane, rzeczy:

SMART to narzędzie do samokontroli:

Dysk twardy zna pewne informacje o swoich parametrach operacyjnych i ma pewną meta-wiedzę na temat tego, co dla niektórych jest „normalne”, a dla innych „akceptowalne”.
Jeśli dysk wykryje, że niektóre parametry są „nienormalne” lub „nieakceptowalne”, zgłosi stan sprzed awarii - innymi słowy, dysk nadal działa, ale wkrótce może ulec awarii.

Na przykład: silnik wrzeciona zwykle pobiera 0,10 ampera, ale teraz pobiera 0,50 ampera - nienormalnie wysoki ciąg, który może wskazywać na wiązanie wału lub zniknięcie stałego smaru na łożyskach. W końcu silnik nie będzie w stanie pokonać oporu i napęd się zatnie.

Kolejny przykład: dysk ma 1000 bloków „remap”, aby radzić sobie ze złymi sektorami. Użył 750 z nich, a inżynierowie, którzy zbudowali napęd, ustalili, że liczba remapów wskazuje na coś wewnętrznie niewłaściwego (zły talerz, awaria starości, uszkodzona głowa) - dysk zgłosi stan przed awarią, umożliwiając uzyskanie czasu twoje dane się wyczerpią, zanim skończy się miejsce remapowania i widoczne będą uszkodzone sektory.

SMART szuka czegoś więcej niż złych sektorów - jest to bardziej kompleksowa ocena stanu dysku. Możesz mieć ostrzeżenie SMART przed awarią na dysku bez uszkodzonych sektorów i bez błędów odczytu / zapisu (na przykład problem z silnikiem wrzeciona, który opisałem powyżej).


badblocks to narzędzie o określonym (nieaktualnym) celu: znajdowanie uszkodzonych sektorów.

badblockspochodzi z czasów przed SMART i mapowaniem złego sektora. Wcześniej wiedzieliśmy, że dyski mają niedoskonałości, ale jedynym sposobem na ich zmapowanie, aby zapobiec przypadkowemu przechowywaniu danych, było przetestowanie dysku, spowodowanie awarii, a następnie pamiętanie, aby nigdy nie umieszczać tam danych.

Powodem, dla którego mówię, że jest przestarzały, jest to, że elektronika nowoczesnych napędów już badblocksdziała tak wewnętrznie, jak i kilka tysięcy razy szybciej. badblocksw zasadzie pozwala starożytnym dyskom, które nie mają skomplikowanej elektroniki, ponownie mapować (lub pomijać) sektory, które uległy awarii, ale współczesne dyski twarde już wykrywają uszkodzone sektory i mapują je dla Ciebie.

Teoretycznie możesz użyć badblocksdanych, aby mieć awarie mapowania systemu operacyjnego (widoczne), tak jakby twój nowoczesny dysk był starym dyskiem Winchester, ale to ostatecznie przynosi efekt przeciwny do zamierzonego - Jak powiedziałem wcześniej, ŻADNE wykryte sektory wykryte badblocksna nowoczesnym dysku są przyczyną odrzucenia cały dysk jako uszkodzony (lub wkrótce ulegnie awarii).

Widoczne uszkodzone sektory wskazują, że w napędzie brakuje miejsca na ponowne mapowanie, co jest stosunkowo rzadkie w przypadku nowoczesnych dysków, chyba że są one stare (zbliżają się do końca żywotności) lub wadliwe (złe talerze / głowice z fabryki).


Zasadniczo więc, jeśli uruchomienie badblocksna dysku przed wdrożeniem go w produkcji sprawia, że ​​lepiej jest iść dalej i zrobić to, ale jeśli twój dysk został wyprodukowany w tym wieku i pokazuje widoczny zły sektor, powinieneś go wyrzucić do kosza (lub wywołać jego gwarancja). Za moje pieniądze status SMART i głęboka obrona to lepsze wykorzystanie mojego czasu niż ręczne sprawdzanie dysków.


1
W porządku, to bardzo dobrze wyjaśnia różnicę między SMART a badblockami. Ale czy to oznacza, że ​​wystarczy monitorować status SMART, czy też muszę od czasu do czasu uruchamiać długie testy SMART, jeśli chcę, aby ostrzeżenia SMART działały poprawnie? Czy mam od czasu do czasu biegać smartctl -t long /dev/sda, czy też mogę założyć, że smartd„automatycznie” ostrzeże mnie przed nadciągającymi problemami bez konieczności konfigurowania czegokolwiek innego?
Hongli Lai,

Jest to decyzja, którą tylko ty możesz podjąć, jednak SMART nie jest zaprojektowany tak, aby wymagał ręcznej interwencji (to po prostu działa i na ogół nie powinieneś się z tym bawić). Zaufaj swojemu sprzętowi (przynajmniej w tym ograniczonym zakresie), ponieważ jeśli nie możesz zaufać swojemu sprzętowi, równie dobrze możesz się spakować i wrócić do domu.
voretaq7

2
„nowoczesne dyski już robią to, co robi badblocks, wewnętrznie i kilka tysięcy razy szybciej” badblocksodczytuje każdy bajt z dysku, nadpisuje je losowymi wzorami, a następnie przywraca oryginalne dane. SMART autotesty nie robią tego. Powinno to wyczyścić wszystkie „oczekujące” sektory, jeśli dobrze rozumiem.
endolith,

4
@endolith Testy nie są bezpośrednimi odpowiednikami, ale ich cel jest równoważny (odkryj i zezwól na ponowne mapowanie złych sektorów). Moim głównym punktem był ostatni akapit: jeśli chcesz uruchamiać Badblocks jako ćwiczący dysk (aby sprawdzić, czy możesz wywołać błędy SMART, ponieważ znajduje się kilka złych bloków), skorzystaj z niego, ale jeśli dzisiaj uruchamiasz Badblocks z z zamiarem załadowania listy złych bloków, aby uniknąć korzystania z tych sektorów (jak w epoce kamienia łupanego), robisz to źle: Widoczne uszkodzone sektory oznaczają, że powinieneś wrzucić dysk do najbliższego kosza na śmieci.
voretaq7

1
@Hashim Tak. Uważam, że warto korzystać ze złych bloków, ponieważ usunie to oczekujące sektory.
endolith

5

Dobre odpowiedzi na to pytanie są

/superuser//a/693065

/superuser//a/693064

W przeciwieństwie do innych odpowiedzi uważam, że bloki nie są nieaktualne, ale są bardzo przydatnym narzędziem. Po uaktualnieniu komputera z nowym dyskiem twardym zaczął on działać niestabilnie. Dość dużo czasu zajęło mi uświadomienie sobie dzięki złym blokom, że powierzchnia dysku ma wady. Od tego czasu uruchamiam pełne bloki trybu zapisu (możliwe do zniszczenia!) Dla każdego nowego dysku twardego, którego używam i nigdy więcej nie miałem tego problemu. Bardzo polecam

time sudo badblocks -swvo sdX.log / sev / sdX

dla każdego nowego dysku twardego. Kilkakrotnie przetestuje każdy fragment dysku pod kątem zapisu i odczytu, dzięki czemu można później uniknąć wielu problemów.

Podczas tego testu złe bloki zostaną zmapowane przez napęd. Dlatego przed i po teście należy zanotować „Realocated Sector Count” i porównać go z progiem SMART, ponieważ będzie on mówił coś o kondycji dysku.


2
Testowanie naprężeń nowego dysku, który jest jeszcze objęty gwarancją, to świetny pomysł.
endolith,

2

badblocks to relikt z dawnych czasów i nie jest ściśle przydatny, może znaleźć obecnie nieczytelny sektor, ale właściwym rozwiązaniem w przypadku złego sektora jest odzyskanie danych z kopii zapasowej. Co można zrobić, jeśli dane nie były dla Ciebie kluczowe, aby usunąć powiązany plik i zapisać cokolwiek w tej lokalizacji, pozwoli to dyskowi realokować sektor, jeśli uzna to za konieczne i będzie nadal działać.

Autotest dysku również obejmie i przetestuje cały nośnik pod kątem różnych defektów, powinien używać niższych progów w porównaniu do tego, z którego korzysta podczas normalnej pracy, aby sprawdzić, czy dysk ma wiele słabych punktów i na podstawie logiki dostawcy może zdecydować, że dysk osiągnął okres przydatności i deklaruje, że test się nie powiódł. W tym momencie należy usunąć wszystkie dane lub odzyskać je z kopii zapasowej i wymienić dysk.

Jeśli akcja dysku (błędne lub normalne działanie) napotka nieodwracalny błąd odczytu, dysk automatycznie zaktualizuje swój licznik oczekujących na realokację, a po przeprowadzeniu realokacji zaktualizuje oczekującą realokację i ponownie przydzielone liczniki. Prosty dd również się przydarzy.

Jeśli musisz wybrać jedno z dwóch, użyj smartctl -t, ponieważ miałaby lepszą analizę dysku.

Mogę również zasugerować użycie mojego narzędzia dyskowego https://github.com/baruch/diskscan , działa bardziej jak badblocks, ale próbuje ocenić, czy istnieją sektory, które się psują , coś w rodzaju sektora niedosłyszącego, który wymaga dużo dłużej czytać. Wskazuje to na rozwijający się problem z mediami, aw przyszłych wersjach może również oferować automatyczną próbę pomocy dyskowi w rozwiązaniu tego problemu.


„Ponadto, złe bloki są zasadniczo przestarzałe w dzisiejszych czasach, ponieważ same dyski dokonają realokacji danych i nie ma już potrzeby mapowania złych bloków na poziomie systemu plików”. Czy badblocksnapęd nie jest obciążany w sposób, w jaki nie występują autotesty SMART?
endolith,

Nie. Badblocks wykona sekwencyjne skanowanie dysku. Nie jest lepszy niż dd i będzie taki sam, jak robi to samo test.
Baruch Even

badblocksodczytuje każdy bajt z dysku, zastępuje go wzorcami testowymi, a następnie zapisuje oryginalne dane z powrotem na swoim miejscu. SMART autotesty są podobnie testami odczytu i zapisu?
endolith

1
No cóż, przepisywanie danych przez złe bloki wyczyści wszystkie „Oczekujące sektory” i sprawi, że dysk albo oznaczy je jako dobre, albo ponownie przydzieli, prawda?
endolith,

1
Tak. W takim przypadku może być to, czego chcesz.
Baruch Even
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.