środa,
Pakiet smartmontools
Wszystkie nowoczesne dyski twarde i SSD zapewniają możliwość monitorowania swojego stanu poprzez atrybuty S.M.A.R.T., które dostarczają informacji o ewentualnych błędach i szacowanej pozostałej żywotności urządzenia. Dodatkowo technologia S.M.A.R.T. umożliwia wykonywanie rozmaitych testów w celu wykrycia potencjalnych problemów. Regularne monitorowanie dysku znacznie ogranicza możliwość nieoczekiwanej utraty danych. Oczywiście w zastosowaniach profesjonalnych, obok monitorowania wymagane jest także systematyczne wykonywanie kopii zapasowych.
Do wykorzystania możliwości S.M.A.R.T., potrzebne jest odpowiednie oprogramowanie. Narzędzia tego typu dostarcza m.in. dostępny nieodpłatnie zestaw programów smartmontools, który zawiera dwa składniki, smartctl i smartd. Pierwszy z nich daje możliwość uruchamiania testów i odczytywania z dysku informacji o jego stanie, natomiast smartd pozwala na stałe monitorowanie dysku. Obydwa programy pracują w środowisku tekstowym. Autorzy smartmontools dostarczają swoje oprogramowanie w wersjach dla systemów operacyjnych GNU/Linux, FreeBSD, NetBSD, Solaris oraz Microsoft Windows.
W systemie Ubuntu pakiet smartmontools można znaleźć w oficjalnych repozytoriach, a jego instalacja przebiega w standardowy sposób.
sudo apt-get install smartmontools
Dzięki narzędziu smartctl można uzyskać informacje o dysku, m.in. sprawdzić, czy urządzenie obsługuje technologię S.M.A.R.T. oraz, czy opcja ta jest włączona.
~:# smartctl -i /dev/sdb
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.8.0-29-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Seagate FireCuda 3.5
Device Model: ST2000DX002-2DV164
Serial Number: Z4Z9Y52Y
LU WWN Device Id: 5 000c50 0a60ffc6c
Firmware Version: CC41
User Capacity: 2 000 398 934 016 bytes [2,00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 7200 rpm
Form Factor: 3.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2, ACS-3 T13/2161-D revision 3b
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Mon Nov 30 07:41:07 2020 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enable
Program smartctl wywołany z parametrem c wyświetla informację o dostępnych testach z szacowanym czasem ich trwania.
~:#smartctl -c /dev/sdb
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.8.0-29-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 0) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 211) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x1081) SCT Status supported.
Dostępnych jest kilka rodzajów testów, m.in.:
- offline – szybki podstawowy test dysku;
- short – krótki test elektroniki i elementów mechanicznych wraz z próbą zapisania i odczytu pewnego obszaru dysku;
- long – długi test próbujący wykryć wszystkie możliwe problemy;
- conveyance – jego zadaniem jest wykrycie uszkodzeń powstałych podczas transportu urządzenia;
- select – test nośnika na określonej w wywołaniu części dysku.
Specyfikacja S.M.A.R.T. określa dwa możliwe tryby prowadzenia testów:
- captive – dysk zostaje wyłączony z użycia;
- idle – testy przeprowadzane są w czasie bezczynności dysku.
Tryb captive można aktywować, dodając parametr C w wywołaniu programu. W poniżej prezentowanym wywołaniu uruchomiono test typu short.
~:# smartctl -t short /dev/sdb
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.8.0-29-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 1 minutes for test to complete.
Test will complete after Mon Nov 30 07:45:23 2020 CET
Use smartctl -X to abort test.
Wynik testu można wyświetlić, wywołując poniżej cytowane polecenie.
~:# smartctl -l selftest /dev/sdb
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.8.0-29-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 13698
Pełna informacja o atrybutach S.M.A.R.T. wraz z wynikami testów dostępna jest po wywołaniu programu z parametrem a. Z uwagi dużą objętość wyświetlanych danych poniżej znajdują się jedynie fragmenty efektu prezentowanej komendy.
~:# smartctl -a /dev/sdb
[...]
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 117 099 006 Pre-fail Always - 118386984
3 Spin_Up_Time 0x0003 095 095 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 098 098 020 Old_age Always - 2751
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 084 060 030 Pre-fail Always - 239069237
9 Power_On_Hours 0x0032 085 085 000 Old_age Always - 13698
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 098 098 020 Old_age Always - 2920
183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 099 000 Old_age Always - 3
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 060 054 045 Old_age Always - 40 (Min/Max 23/40)
191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 50
193 Load_Cycle_Count 0x0032 097 097 000 Old_age Always - 6095
194 Temperature_Celsius 0x0022 040 046 000 Old_age Always - 40 (0 18 0 0 0)
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 13564h+00m+46.322s
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 21912443188
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 1792124845558
SMART Error Log Version: 1
No Errors Logged
[...]
Proces regularnego „ręcznego” kontrolowania stanu dysku wymaga od użytkownika sporo fatygi, dzięki smartd można to zautomatyzować. Z jego wykorzystaniem stan dysku jest sprawdzany w zadanych odstępach czasu, a zmiany są zapisywane w dzienniku systemowym.