Nośniki danych niestety nie zawsze działają jak należy, chociaż zdarza się, że problemy z nimi związane bywają niezauważone przez lata. Jeżeli chcemy wykorzystać jakiś używany dysk warto przed zapisaniem na nim istotnych danych sprawdzić czy nie ma z nim problemów. Warto opisane niż testy przeprowadzać też na nowych dyskach, ponieważ raz na jakiś czas zdarza się, że nawet nigdy nieużywany dysk może mieć wady. Wykrycie ewentualnych problemów przed zaprzęgnięciem dysku do pracy zaoszczędzi nam mnóstwo wysiłku niezbędnego do późniejszej migracji danych i czasu przestoju sprzętu.
Sprawdzanie dysków warto zacząć od informacji z systemu S.M.A.R.T (Self-Monitoring, Analysis and Reporting Technology). Te technologia jest obecna w praktycznie wszystkich współczesnych dyskach twardych, powszechnie implementowano ją od 2005 roku, chociaż pierwsze systemy o podobnym działaniu niektórzy producencie zaczęli wdrażać już na początku lat 90-tych (IBM w platformie AS/400 w 1992 roku). System S.M.A.R.T pozwala na bieżąco monitorować niektóre parametry dysku i na ich podstawie jest w stanie określić przybliżoną kondycję dysku i ewentualnie przewidzieć zbliżającą się awarię. Niestety nie można całkowicie zawierzyć tej technologii – wewnętrzne testy które przeprowadza na dysku podsystem S.M.A.R.T to jedynie testy odczytu, często nie obejmujące całej powierzchni dysku. Stąd skuteczność diagnozowania usterek to ~ 40 – 60%. Pewnym można być tego, że jeżeli S.M.A.R.T wskazuje problemy to problemy wystąpią, jeżeli ich nie wykazuje to i tak jest szansa, że mogą wystąpić. Prócz tego ta technologia jest wdrażana tylko w dyskach HDD/SSD, trudno spotkać karty pamięci / pendrive które wspierają diagnozowanie S.M.A.R.T. Zdarzają się profesjonalne karty CF (Compact Flash) które są wyposażone w omawiany system wewnętrznej diagnostyki.
Testowanie nośnika danych zaczynamy od sprawdzenia danych S.M.A.R.T (jeśli jest wyposażony w tą technologię). Każdy z parametrów systemu autodiagnostyki ma kilka wartości:
- Current / Value – bieżąca wartość parametru
- Worst – najgorsza wartość parametry do tej pory zaobserwowana w diagnozowanym dysku
- Threshold – próg, maksymalna wartość parametru ustalona przez producenta
Poniżej opis parametrów tego subsystemu na podstawie których możemy dokonać interpretacji stanu dysku
- 02 Throughput Performance – Ogólna sprawność dysku. Jeśli wartość tego atrybutu się cyklicznie obniża jest duża szansa, że zbliżają się problemy z dyskiem.
- 03 Spin Up Time – Czas potrzebny na rozpędzenie talerzy do prędkości roboczej. Wartość tego atrybutu wyraża czas w sekundach lub milisekundach. Wydłużający się czas rozpędzania zwiastuje problemy z mechaniką dysku.
- 04 Start/Stop Count – Określa liczbę cykli start/stop dysku. W połączeniu z parametrem 09 Power-On Time Count i 10 Spin Retry Count daje obraz o sposobie użytkowania dysku. Ilość startów dysku powinna być zbliżona do ilości prób rozpędzania talerzy. Zbyt duże różnice pomiędzy tymi parametrami świadczą o problemie z rozpędzaniem talerzy.
- 05 Reallocated Sectors Count – Ilość realokowanych sektorów (określanych również jako: „bady”, „bad sectors”). W momencie gdy dysk napotyka błąd odczytu/zapisu/weryfikacji, oznacza ten sektor jako realokowany i przenosi dane do specjalnego zarezerwowanego obszaru (obszaru rezerwowego). Dysk maskuje w ten sposób przed systemem i użytkownikiem błędne bloki i jeżeli robi to skutecznie to przez dłuższy czas można mieć wrażenie, że z dyskiem nie ma problemów. Pojedyncze realokacje nie muszą od razu oznaczać wielkiego problemu, ale jeżeli z czasem zaczynają pojawiać kolejne należy być przygotowanym na problemy z odczytem danych bądź poważną awarię dysku. Sam proces realokowania może spowalniać pracę komputera i powodować chwilowe zastoje / zmrożenie programu bądź systemu. Jeżeli zaobserwowaliśmy takie zdarzenie w sytuacji w której wcześniej nie występowało warto sprawdzić dane S.M.A.R.T
- 07 Seek Error Rate – Częstość błędów wyszukiwania głowic magnetycznych. W razie uszkodzenia mechanicznego systemu pozycjonowania, uszkodzenia serwa albo termicznej rozszerzalności dysku, ilość błędów wyszukiwania wzrasta. Więcej błędów wyszukiwania oznacza pogarszanie się stanu powierzchni dysku i podsystemu mechanicznego dysku.
- 08 Seek Time Performance – przeciętna wydajność operacji wyszukiwania głowic magnetycznych. Jeśli wartość atrybutu maleje, jest to oznaka problemów z podsystemem mechanicznym dysku.
- 09 Power-On Time – Ilość godzin w stanie zasilania. Wartość tego atrybutu odpowiada łącznej ilości godzin (lub minut, sekund, w zależności od producenta) przepracowanych przez dysk.
- 0A Spin Retry Count – Ilość ponowień prób rozpędzenia talerzy. Spadek wartości tego atrybutu jest oznaką problemów z podsystemem mechanicznym dysku.
- 0B Recalibration Retries – Atrybut ten wskazuje liczbę żądań rekalibracji mechanizmu pozycjonowania głowic. Spadek tego atrybutu jest oznaką problemów z podsystemem mechanicznym dysku.
- 0C Device Power Cycle Count – Atrybut ten określa łączną ilość pełnych cykli zasilania dysku.
- 0D Soft Read Error Rate – Jest to ilość programowych błędów odczytu występujących podczas odczytu danych z powierzchni dysku.
- 0E G-Sense Error Rate – częstotliwość występowania błędów spowodowanych wstrząsem. Atrybut ten przechowuje wskazania czujnika przeciążeń i podaje łączną ilość błędów występujących jako rezultat wewnętrznych przeciążeń (upadki dysku, niewłaściwa instalacja dysku).
- 0G Load/Unload Cycle Count – Ilość cykli parkowania głowic, w połączeniu z ilością cykli zasilania daje obraz sposobu użytkowania dysku. Szybko rosnąca wartość tego parametru oznacza niewłaściwą konfigurację systemu operacyjnego.
- C2 Temperature – Temperatura dysku twardego – wskazania wbudowanego czujnika ciepła. Temperatura dysku nie powinna przekraczać 40C podczas intensywnej pracy w komputerze stacjonarnym i 50C w laptopach. Bardzo wysokie wartości zazwyczaj oznaczają uszkodzenie czujnika.
- C4 Reallocation Event Count – Ilość operacji remapowania (przenoszenia danych z uszkodzonego sektora do specjalnego zarezerwowanego obszaru – obszaru rezerwowego).
- C5 Current Pending Sector Count – Parametr ten określa liczbę sektorów niestabilnych (oczekujących na remapowanie). Dysk podczas próby odczytu/zapisu odznaczył te sektory jako niestabilne. Będą one oczekiwać na remap.
- C6 Off-line Uncorrectable Sector Count – Ilość nieusuwalnych błędów. Atrybut wskazuje łączną ilość nieusuwalnych błędów podczas odczytu/zapisu sektora. Wzrost wartości tego atrybutu wskazuje na ewidentne defekty powierzchni dysku i/lub problemy z podsystemem mechanicznym dysku. Jest to błąd krytyczny, świadczy o poważnym uszkodzeniu powierzchni talerza lub postępującą degradację mechanizmu pozycjonowania.
- C7 UDMA CRC Error Count – Łączna ilość błędów CRC w trybie UDMA. Wskazuje ilość błędów wykrytych przez CRC podczas przesyłania danych. Wysokie wartości świadczą o uszkodzeniu podzespołów elektronicznych dysku bądź częściej o nieprawidłowym podłączeniu kabli ewentualnie o uszkodzeniu kabli.
- C8 Write Error Rate (Multi Zone Error Rate) – Częstotliwość błędów zapisu. Atrybut ten wskazuje na łączną ilość błędów zapisu podczas zapisywania sektora. Im wyższa wartość, tym gorszy stan powierzchni dysku i/lub mechanicznego podsystemu. W połączeniu z parametrem Raw Read Error Rate informuje nas o stanie talerzy.
- Disk Shift – Przesunięcie dysków od osi. Wartość RAW pokazuje jak bardzo dysk został przesunięty. Jednostka miary jest zależna od producenta – występowanie tej wartości zazwyczaj oznacza, że dysk upadł i może stwarzać problemy.
- Loaded Hours – Użycie akutatora głowic magnetycznych spowodowane normalną eksploatacją. Liczy się tylko czas działania mechanizmu pozycjonowania głowic.
- Load/Unload Retry Count – Użycie akutatora głowic magnetycznych spowodowane licznymi wystąpieniami operacji takich jak: odczyt, zapis, pozycjonowanie głowic.
- Load-in Time – Łączny czas działania akutatora głowic. Atrybut ten wskazuje łączny czas w którym dysk był obciążony (przy założeniu, że głowice były w stanie działania, poza obszarem parkowania).
- Torque Amplification Count – Ilość prób rozkręcenia talerzy dysku.
- Read Error Retry Rate – częstotliwość występowania błędów podczas odczytu.
Dysk nie musi raportować wszystkich danych, ilość pokazywanych informacji zależy od producenta sprzętu.
Po sprawdzeniu danych S.M.A.R.T warto przeprowadzić rzeczywisty test działania dysku. Można przeprowadzić pełny test odczytu, bądź testy zapisu i odczytu (zwykły lub destrukcyjny). Test odczytu weryfikuje jedynie czy urządzenie potrafi odczytać dane na nim zapisane, niestety nie jesteśmy w tym przypadku stwierdzić czy dane na 100% są odczytywane poprawnie, przeprowadzenie tego testu daje większą pewność niż badanie przeprowadzone przez sam S.M.A.R.T. Zaletą tego testu jest znacznie krótszy czas jego przeprowadzenia niż testów z zapisem, prócz tego nie występuje ryzyko uszkodzenia danych zapisanych na nośniku niemniej jednak by mieć większą pewność co do nośnika należy przeprowadzić test zapisu i odczytu.
Test zwykły nie powinien uszkodzić żadnych danych – program testujący odczyta dane z kawałka dysku, zapisze w to miejsce dane kontrolne, sprawdzi czy da się je poprawnie odczytać po czym znowu zapisze w to miejsce pierwotne dane. Ryzyko uszkodzenia danych może wystąpić jeśli nastąpi przerwa w zasilaniu bądź defekt dysku. Test ten niestety potrafi zająć sporo czasu ze względu na dużą ilość ruchów głowic badanego napędu. Przeprowadzić go możemy przy pomocy badblocks
badblocks -nsv /dev/device
Test destrukcyjny jest szybszy niż zwykły ale jak sama nazwa wskazuje jest destrukcyjny dla danych. Standardowo badblocks wykonuje 4 przebiegi w których to zapisuje i odczytuje z dysku wartości:
- 0xaa
- 0x55
- 0xff
- 0x00
Tak zaawansowane testy mają uzasadnienie jeśli chcemy bardzo dokładnie zdiagnozować na dysku uszkodzone sektory i ręcznie je oznaczyć w systemie plików celem pominięcia przy formatowaniu i dalszym użytkowaniu. Jednak jeśli zależy nam na bezproblemowej eksploatacji sprzętu i cenimy nasze dane takie działania nie są wskazane. Zamiast tego wystarczy wykonać jednokrotny test zapisu i odczytu, który daje nam wystarczający stopień pewności (przy akceptowalnym czasie trwania procesu badawczego), że dysk nie zawiera błędów i nadaje się do dalszej pracy. W tym celu posłużymy się badblocks z parametrami:
badblocks -wst 0 /dev/device
Jeżeli konieczne nam zależy na użyciu dysku który zawiera błędne bloki możemy wyjście programu badblocks skierować do pliku a następnie na podstawie tego pliku stworzyć system plików uwzględniający zakazane obszary. Tak sformatowany dysk może jeszcze trochę posłużyć ale nie należy na nim przechowywać żadnych istotnych danych.
badblocks -wso filename /dev/device
mkfs.ext4 -l filename /dev/device