Мониторинг SMART атрибутов SSD Intel DC S3500/S3700 Series
Mar 13, 2017 11:18 · 1185 words · 6 minute read
Не стоит лишний раз упоминать о важности постоянного наблюдения за состоянием накопителей на серверах, будь то привычные все жесткие диски (HDD) или современные твердотельные накопители (SSD).
В данной статье будет описана методология расчета примерного времени жизни твердотельного накопителя от Intel на основе значений атрибутов, полученных с помощью консольной утилиты smartctl
. Давайте разберемся!
Прежде всего, стоит пояснить, почему SSD именно от Intel:
- личный опыт использования SSD-дисков — Intel пока ни разу не подводил, в отличие от Kingston или OSZ;
- Intel предлагают именно серверные решения (DC — Data Center). Они существенно дороже решений конкурентов, но сохранность данных для меня важнее;
- Intel хорошо составляет спецификации на свои продукты, например здесь подробно описаны все SMART-атрибуты (таких документов у конкурентов не встречал, хотя, возможно, плохо искал).
Итак, работать будем со следующим SSD-диском:
smartctl -i /dev/sdb
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.16.0-4-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Intel 730 and DC S3500/S3700 Series SSDs
Device Model: INTEL SSDSC2BA400G4
Serial Number: BTHV605603R3400NGN
LU WWN Device Id: 5 5cd2e4 04c1befc0
Firmware Version: G2010140
User Capacity: 400,088,457,216 bytes [400 GB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2 T13/2015-D revision 3
SATA Version is: SATA 2.6, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Wed Mar 8 10:02:29 2017 EET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Получаем SMART-атрибуты диска:
smartctl -A /dev/sdb
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.16.0-4-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0032 100 100 000 Old_age Always - 0
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 5981
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 23
170 Available_Reservd_Space 0x0033 100 100 010 Pre-fail Always - 0
171 Program_Fail_Count 0x0032 100 100 000 Old_age Always - 0
172 Erase_Fail_Count 0x0032 100 100 000 Old_age Always - 0
174 Unsafe_Shutdown_Count 0x0032 100 100 000 Old_age Always - 16
175 Power_Loss_Cap_Test 0x0033 100 100 010 Pre-fail Always - 6830 (26 7216)
183 SATA_Downshift_Count 0x0032 100 100 000 Old_age Always - 0
184 End-to-End_Error 0x0033 100 100 090 Pre-fail Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
190 Temperature_Case 0x0022 069 063 000 Old_age Always - 31 (Min/Max 20/37)
192 Unsafe_Shutdown_Count 0x0032 100 100 000 Old_age Always - 16
194 Temperature_Internal 0x0022 100 100 000 Old_age Always - 31
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
199 CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0
225 Host_Writes_32MiB 0x0032 100 100 000 Old_age Always - 1938779
226 Workld_Media_Wear_Indic 0x0032 100 100 000 Old_age Always - 727
227 Workld_Host_Reads_Perc 0x0032 100 100 000 Old_age Always - 50
228 Workload_Minutes 0x0032 100 100 000 Old_age Always - 358724
232 Available_Reservd_Space 0x0033 100 100 010 Pre-fail Always - 0
233 Media_Wearout_Indicator 0x0032 100 100 000 Old_age Always - 0
234 Thermal_Throttle 0x0032 100 100 000 Old_age Always - 0/0
241 Host_Writes_32MiB 0x0032 100 100 000 Old_age Always - 1938779
242 Host_Reads_32MiB 0x0032 100 100 000 Old_age Always - 2022002
243 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 2914870
Лично я считаю необходимым постоянное наблюдение (например, с помощью Zabbix) за следующими параметрами:
Reallocated_Sector_Ct
— shows the number of retired blocks since leaving the factory (grown defect count);Reported_Uncorrect
— shows the count of errors that could not be recovered using Error Correction Code (ECC);Temperature_Internal
— shows the internal temperature of the SSD in degrees Celsius;Current_Pending_Sector
— shows the number of current unrecoverable read errors that will be re-allocated on next write;Host_Writes_32MiB
— shows the total number of sectors written by the host system. The raw value is increased by 1 for every 65,536 sectors (32MB) written by the host.
Резкое изменение одного или нескольких из этих параметров должно, как минимум, настораживать и призывать к углубленному анализу состояния твердотельного накопителя.
Для расчета примерного времени жизни SSD Intel DC S3500/S3700 Series будем работать со SMART-атрибутами E2h (226)
, E3h (227)
и E4h (228)
. Остановимся наних чуть подробнее:
(226) Workld_Media_Wear_Indic
— временный процент износа флеш памяти за определённое время и при определённой нагрузке. Выдаётся вraw
-формате, результат необходимо разделить на 1024;(227) Workld_Host_Reads_Perc
— процентное соотношение операций чтения/записи при создаваемой нагрузке. К примеру, если показатель будет равен 60, то это значит, что операций чтения было 60%, операций записи — 40%;(228) Workload_Minutes
— счётчик времени (в минутах), используется для расчёта процента износа памяти в единицу времени.
Примечание. Параметр (227) Workld_Host_Reads_Perc
не принимает непосредственное участие в расчетах времени жизни SSD-диска, но крайне полезен для понимания типа создаваемой нагрузки на накопитель.
В нашем случае их значения выглядят следующим образом:
...
226 Workld_Media_Wear_Indic 0x0032 100 100 000 Old_age Always - 727
227 Workld_Host_Reads_Perc 0x0032 100 100 000 Old_age Always - 50
228 Workload_Minutes 0x0032 100 100 000 Old_age Always - 358724
...
Можно провести расчеты на основании уже имеющихся данных (что мы и сделаем), но лучше все же сбросить значения этих SMART-атрибутов и провести замеры заново. Замеры следует проводить не менее 1 часа (а лучше сутки), создавая в этот период нагрузку на SSD-диск, например, операциями произвольного/последовательного чтения/записи с размерами блока от 8 до 16 KiB, и количеством потоков — от 10 до 300.
Сбросить значения SMART-атрибутов можно следующей командой:
smartctl -t vendor,0x40 /dev/sdb
Проведем расчеты на основании имеющихся у нас данных. Значение Workld_Host_Reads_Perc
показывает нам, что за время работы твердотельного накопителя операций чтения было 50% (следовательно, записи тоже 50%).
Для получения процента износа SSD-диска за все время работы следует разделить значение SMART-атрибута Workld_Media_Wear_Indic
на 1024:
727/1024=0.7099609375(%)
Далее можно рассчитать, каким будет процент износа твердотельного накопителя за один час работы:
0.70996(%)/358724(мин)*60(мин)=0.00011874(%)
Зная процент износа накопителя за один час, можно легко вычислить, когда износ станет 100% (диск станет неработоспособным):
100(%)*1(час)/0.00011874(%)=842176.18(часов)
Если учесть, что в году ~8760 часов, а нагрузка будет неизменной и равномерной 24/7 (что крайне маловероятно), то диск станет абсолютно неработоспособным через 842176.18/8760=96
лет!
Для упрощения вышеизложенных расчетов можно использовать следующий скрипт (назовем его smartctsreport.sh
):
#!/bin/bash
smartctl -A /dev/sdb | awk -v prev=0 '/^22[5-8]/{\
if ($1==225) {
value[1]=($10-prev)*65535*512/1000000000
} else if($1==226) {
value[2]=$10/1024
} else if($1==227) {
value[3]=$10
} else if($1==228) {
value[4]=$10
value[5]=$10/60/24
}
}END{
printf("The workload took %s minutes (%s days) to complete with %s%% reads and %s%% writes. A total of %sGB of data was written to the device, which increased the media wear in the drive by %s%%. At this point in time, this workload is causing a wear rate of %s%% for every %s minutes, or %s%%/hour.\n",
value[4], value[5], value[3], 100-value[3], value[1], value[2], value[2], value[4], value[2]/value[4]*60);
}'
Таким будет результат его выполнения:
./smartctsreport.sh
The workload took 358758 minutes (249.138 days) to complete with 50% reads and 50% writes. A total of 65058.7GB of data was written to the device, which increased the media wear in the drive by 0.709961%. At this point in time, this workload is causing a wear rate of 0.709961% for every 358758 minutes, or 0.000118736%/hour.