Периодически любому, кто соприкасается профессионально с аппаратным обеспечением IT систем, приходится сталкиваться с вопросами оценки работоспособности жестких дисков. В свое время плотно занимался системами хранения данных EMC. И опыт эксплуатации даже этих самых продвинутых стораджей корпоративного уровня показывает, что после трех — пяти лет их использования, жесткие диски начинают выходить из строя с неотвратимой регулярностью. Эти компоненты серверов, СХД или даже обычных компьютеров с моей точки зрения представляют собой расходный материал, которые нужно быть готовым менять постоянно в долгосрочной перспективе. Если использование корпоративных стораджей по своей философии предполагает постоянную покупку сервисов технической поддержки, и соответственно замену дисков вендором в случае проблем с ними. То в случае использования серверных решений на базе стандартных операционных систем Linux или Windows, вопросом обслуживания жестких дисков нам придется заниматься полностью самим.
Все современные нормальные жесткие диски и диски SSD имеют на борту систему мониторинга S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology или SMART). Если такой поддержки на имеющихся у Вас дисках нет, то стоит задумать сразу же о целесообразности их использования. Система SMART встроена в микросхемы контроллера диска и содержит в себе информацию о показателях жизнедеятельности данного драйва. Что хорошо, так это то, что из операционной системы сервера или компьютера, где установлены диски, можно легко получить доступ к данным этой системы. Это позволяет администратору быть постоянно в курсе состояния используемых драйвов. Также с помощью имеющейся информации можно проводить заблаговременно замену дисков, там где находятся критически важные данные.
Использование S.M.A.R.T. Monitoring Tools
Давайте посмотрим, как воспользоваться возможностями системы S.M.A.R.T. в операционной системе Ubuntu Linux. Для этого нам нужно установить пакет smartmontools. Это делается с помощью следующей команды.
# apt-get install smartmontools
После завершения установки пакета в ОС, можно приступить к работе с дисками. Так, чтобы получить информацию о драйве, который виден у нас в системе как /dev/sda нам нужно выполнить команду указанную ниже.
# smartctl -a /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-53-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Device Model: xxxx
Serial Number: YYYY
LU WWN Device Id: zzzz
Firmware Version: SN01
User Capacity: 12,002,350,252,032 bytes [12.00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 7200 rpm
Form Factor: 3.5 inches
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: ACS-4 (minor revision not indicated)
SATA Version is: SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Thu Nov 26 11:17:24 2020 UTC
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART Status not supported: Incomplete response, ATA output registers missing
SMART overall-health self-assessment test result: PASSED
Warning: This result is based on an Attribute check.
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: ( 567) 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: ( 557) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x70bd) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
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 100 100 044 Pre-fail Always - 8909
3 Spin_Up_Time 0x0003 099 099 000 Pre-fail Always - 154
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 1
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 100 253 045 Pre-fail Always - 732
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 2012
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 1
18 Unknown_Attribute 0x000b 100 100 050 Pre-fail Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 253 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 063 063 040 Old_age Always - 37 (Min/Max 27/37)
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 1
193 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 7
194 Temperature_Celsius 0x0022 037 040 000 Old_age Always - 37 (0 27 0 0 0)
195 Hardware_ECC_Recovered 0x001a 100 100 000 Old_age Always - 8909
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 - 0 (25 69 0)
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 0
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 8909
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
Из выводимой информации, наиболее ценная для использования — таблица с Vendor Specific SMART Attributes with Thresholds. У каждого вендора эта табличка может отличаться тем или иным количеством атрибутов. Также ряд атрибутов у SSD дисков может отличаться от атрибутов у драйвов со шпинделем, что обусловленно технологией работы. Как правило, основные атрибуты общие для дисков разных производителей.
Например, в приведенном примере рассмотрим первый атрибут Raw_Read_Error_Rate. Он показывает уровень ошибок при чтении с диска. Для данного атрибута значение поля RAW_VALUE малопоказательно и зависит от фирмы производителя диска. Мы должны смотреть на поле VALUE. В данном случае VALUE равно 100. С учетом того, что значение THRESH, обозначающее порог корректной работы диска, выставлен в 044, можно сделать заключение, что на данный момент с диском все хорошо.
Среди отображаемых атрибутов есть те, которые могут дать полезную информацию в поле RAW_VALUE. Так Spin_Up_Time покажет сколько часов шпиндель работал, а Power_On_Hours отобразит время подключения диска к питанию с самого первого его включения. Эти параметры позволяют примерно оценить сколько диск уже отработал и время, когда его нужно будет поменять.
Также бывает полезным периодически проводить тесты работоспособности дисков с помощью smartctl. Такие тесты позволяют выявлять проблемы с драйвом на более глубоком уровне. Так, чтобы запустить быстрый тест, нам нужно выполнить следующую команду:
# smartctl -t short /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-53-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 Fri Nov 27 21:33:49 2020 UTC
Use smartctl -X to abort test.
Через определенное время, указанное в выводе команды запуска теста, можно получить его результаты следующим образом:
# smartctl -l selftest /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-53-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% 2015 -
# 2 Short offline Completed without error 00% 2014 -
В нашем случае ошибок в результате проведения теста не было найдено, можно спать спокойно.
Заключение
Попытался в статье показать, как с помощью небольшой утилиты в ОС Linux узнавать информацию о показателях жизнедеятельности жестких дисков. Для системных администраторов, работающих с большой IT инфраструктурой, это бывыет крайне полезно и необходимо.