Twój dysk twardy umiera? Sprawdź to, zanim będzie za późno – Przewodnik po smartctl w Linux

Każdy użytkownik Linuxa prędzej czy później staje przed tym samym pytaniem: „Czy moje dane są bezpieczne?”. Dyski twarde (HDD) i półprzewodnikowe (SSD) to urządzenia mechaniczne lub elektroniczne, które mają swoją żywotność. Zanim jednak Twój serwer lub laptop odmówi posłuszeństwa, dysk zazwyczaj wysyła sygnały ostrzegawcze.

W świecie Linuxa najlepszym lekarzem od diagnostyki pamięci masowej jest smartctl.

Czym jest S.M.A.R.T.?

S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) to system monitorowania wbudowany w niemal każdy nowoczesny dysk. Zbiera on dane o temperaturze, błędach odczytu, liczbie przepracowanych godzin czy sektorach, które zostały zastąpione rezerwowymi.

1. Instalacja narzędzia

W większości dystrybucji opartych na Debianie (np. Ubuntu, Armbian, Raspberry Pi OS) narzędzie znajduje się w pakiecie smartmontools.

$ sudo apt update
$ sudo apt install smartmontools

Używaj kodu z rozwagą.

2. Szybka kontrola: „Żyje czy nie?”

Zanim zagłębisz się w setki cyferek, wykonaj prosty test ogólny. Pokaże on, czy sam dysk uważa, że wszystko jest w porządku.

$ sudo smartctl -H /dev/sda

Używaj kodu z rozwagą.

Uwaga: /dev/sda to nazwa Twojego dysku. Możesz ją sprawdzić komendą lsblk.

Jeśli zobaczysz PASSED, możesz odetchnąć. Jeśli zobaczysz FAILED, natychmiast rób kopię zapasową danych!

3. Czytanie między wierszami (Atrybuty S.M.A.R.T.)

Najciekawsze informacje kryją się pod flagą -A. To tutaj zobaczysz „przebieg” swojego dysku.

$ sudo smartctl -A /dev/sda

Używaj kodu z rozwagą.

Na jakie parametry zwrócić uwagę?

Oto „wielka trójka” parametrów, które zwiastują kłopoty:

  1. Reallocated_Sector_Ct (ID 5): To liczba sektorów, które uległy awarii i zostały zastąpione zapasowymi. Jeśli ta wartość jest większa od zera i rośnie – dysk fizycznie się sypie.
  2. Power_On_Hours (ID 9): Całkowity czas pracy dysku. Średnio dyski HDD zaczynają częściej zawodzić po 30 000 – 40 000 godzinach.
  3. Current_Pending_Sector (ID 197): To sektory „podejrzane”, które czekają na sprawdzenie. To one często powodują nagłe „zamrażanie” systemu (tzw. lagi).

4. Aktywne testowanie powierzchni

smartctl pozwala nie tylko czytać dane, ale też zmusić dysk do wykonania autotestu.

  • Krótki test (trwa ok. 2 min):
    • $ sudo smartctl -t short /dev/sda Używaj kodu z rozwagą.
  • Długi test (sprawdza każdy sektor, może trwać godziny):
    • $ sudo smartctl -t long /dev/sda Używaj kodu z rozwagą.

Wyniki testów sprawdzisz komendą:

$ sudo smartctl -l selftest /dev/sda

Przykładowe wyniki z 10-letniego dysku i ich interpretacja

Oto wyniki testów smartctl dla jednego ze starszych dysków, który posiadam i jest podłączony do SBC BananaPiPro po SATA2:

$ sudo smartctl -H /dev/sda
smartctl 7.4 2023-08-01 r5530 [armv7l-linux-6.18.21-current-sunxi] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

bieli@bananapipro:/mnt/sda5$ sudo smartctl -A /dev/sda
smartctl 7.4 2023-08-01 r5530 [armv7l-linux-6.18.21-current-sunxi] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   062    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   040    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0007   253   253   033    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0012   097   097   000    Old_age   Always       -       5405
  5 Reallocated_Sector_Ct   0x0033   100   100   005    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000b   100   100   067    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   040    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0012   088   088   000    Old_age   Always       -       5347
 10 Spin_Retry_Count        0x0013   100   100   060    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   097   097   000    Old_age   Always       -       5039
191 G-Sense_Error_Rate      0x000a   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       109
193 Load_Cycle_Count        0x0012   088   088   000    Old_age   Always       -       124524
194 Temperature_Celsius     0x0002   177   177   000    Old_age   Always       -       31 (Min/Max 12/59)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       1
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x000a   200   200   000    Old_age   Always       -       0
223 Load_Retry_Count        0x000a   100   100   000    Old_age   Always       -       0

Z analizy informacji z reportu smartctl wynika, że ten 10-letni dysk jest w doskonałej kondycji. Jak na dekadę pracy, parametry są wręcz wzorowe.

Oto analiza kluczowych punktów Twojej tabeli:

  1. Stan powierzchni (ID 5, 197, 198): Wszystkie mają RAW_VALUE = 0. Oznacza to, że dysk nie ma ani jednego uszkodzonego sektora. To rzadkość w tak starym HDD.
  2. Przebieg (ID 9): Power_On_Hours = 5347. Ten dysk pracował łącznie tylko ok. 222 dni. Choć ma 10 lat, większość czasu prawdopodobnie spędził w szufladzie lub był bardzo rzadko używany. To wyjaśnia jego świetny stan.
  3. Load_Cycle_Count (ID 193): 124524. Głowice parkowały dość często (norma dla dysków 2.5″ to zwykle 300 000 – 600 000), ale wciąż masz ogromny zapas.
  4. Błędy komunikacji (ID 199): UDMA_CRC_Error_Count = 0. Oznacza to, że kabel SATA i kontroler w Banana Pi działają idealnie, nie gubiąc pakietów.
  5. Temperatura (ID 194): 31°C to idealne warunki pracy. Maksymalna odnotowana w historii (59°C) była wysoka, ale wciąż w granicach bezpieczeństwa.

Dlaczego zatem mogą zdarzać się skoki do 150 ms w teście ioping na tym dysku?
Skoro SMART jest „czysty”, opóźnienia nie wynikają z fizycznego uszkodzenia dysku. Najbardziej prawdopodobne przyczyny to:

  • Mechanika HDD: Nawet sprawny dysk talerzowy musi czasem przesunąć głowicę z jednego końca talerza na drugi, co fizycznie zajmuje czas.
  • System operacyjny: Armbian mógł w tle zapisywać logi lub aktualizować bazę danych, co na chwilę „przytkało” kolejkę operacji do dysku.

Podsumowanie: Dysk jest w pełni sprawny i bezpieczny. Możesz go śmiało używać jako stabilny magazyn danych na swoim Banana Pi.

Podsumowanie

Dysk to serce Twojego systemu. Nawet jeśli system działa płynnie, warto raz na miesiąc zajrzeć do statystyk smartctl. Jak pokazały nasze testy na 10-letnich jednostkach Toshiba, wiek to tylko liczba – liczy się realny stan techniczny i parametry zapisane w pamięci urządzenia.

Pamiętaj: Żaden test nie zastąpi regularnego backupu!

About the author

Autor "BIELI" to zapalony entuzjasta otwartego oprogramowania, który dzieli się swoją pasją na blogu poznajlinuxa.pl. Jego wpisy są skarbnicą wiedzy na temat Linuxa, programowania oraz najnowszych trendów w świecie technologii. Autor "BIELI" wierzy w siłę społeczności Open Source i zawsze stara się inspirować swoich czytelników do eksplorowania i eksperymentowania z kodem.