Диск умирает не мгновенно - он долго подаёт сигналы, которые надо уметь прочитать. В три утра, когда сервер с базой данных внезапно стал недоступен, уже поздно вспоминать, что неделю назад мониторинг показывал странные значения каких-то там SMART-атрибутов.
Проблема не в том, что диски ненадёжны. Они как раз научились предупреждать о приближающихся проблемах заранее. Но предупреждение приходит в виде таблицы из полусотни строк с названиями вроде Raw Read Error Rate и числами на девять знаков, и понять из неё, всё ли в порядке, с ходу не выходит.
Ниже - расшифровка атрибутов таблицей, отдельно по HDD и SSD, и практика: какие пять показателей действительно предсказывают отказ, что делать с каждым из них и почему на сервере за RAID-контроллером привычная команда ничего не покажет. На сервере цена ошибки выше, чем на домашнем компьютере: отказ одного диска задевает работу всего предприятия. С чего начинается надёжность парка, разбирали отдельно - как правильно выбрать диски для серверной.
Self-Monitoring, Analysis and Reporting Technology появилась как ответ на растущую сложность накопителей. Каждый диск сегодня - маленький компьютер с процессором, памятью и прошивкой, которая непрерывно следит за состоянием узлов: температурой, числом ошибок, скоростью вращения, временем позиционирования. Встроенный доктор, который ведёт карту пациента и не даёт её читать без словаря.
Главная ценность SMART - в предсказании. Констатировать уже случившийся отказ умеет и без него любой администратор. Прошивка следит за трендами и способна заметить деградацию до того, как её увидят пользователи.
Но у технологии есть предел. Внезапные отказы - обрыв питания, механический удар, отказ платы электроники - SMART не поймает: предсказывать там нечего. Зато постепенную деградацию поверхности и износ флеш-памяти она ловит хорошо, а на них приходится большинство отказов.
Ещё одна сложность: каждый производитель считает атрибуты по-своему. Одинаковые имена у разных вендоров могут означать разное, и это главный источник ложных тревог. Ниже об этом отдельно.
Каждый атрибут - это не одно число, а набор полей, и путаница обычно начинается именно здесь.
Главное правило чтения: Raw Value информативен не всегда. У атрибутов ошибок чтения и позиционирования он у половины вендоров вообще не счётчик ошибок - об этом ниже.
| ID | Имя | Что означает | Когда тревожиться |
|---|---|---|---|
| 01 | Raw Read Error Rate | Ошибки чтения с поверхности | Смотреть только нормализованное значение. У Seagate raw огромный и это норма |
| 03 | Spin-Up Time | Время раскрутки шпинделя, мс | Само число не диагноз. Плохо, когда оно ползёт вверх от замера к замеру |
| 04 | Start/Stop Count | Циклы запуска и остановки | Информационный. Сверять с ресурсом из спецификации диска |
| 05 | Reallocated Sectors Count | Секторы, переназначенные из резерва | Любое ненулевое - взять на контроль. Растёт - планировать замену |
| 07 | Seek Error Rate | Ошибки позиционирования головок | Как и 01: у Seagate raw не считает ошибки. Смотреть нормализованное |
| 09 | Power-On Hours | Часы наработки | Не диагноз, а возраст. 45 000 часов - это примерно пять лет непрерывной работы |
| 10 | Spin Retry Count | Повторные попытки раскрутки | Любое ненулевое - серьёзно. Часто виноват не диск, а питание |
| 11 | Calibration Retry Count | Неудачные калибровки позиционирования | Ненулевое - механика начинает сыпаться |
| 12 | Power Cycle Count | Циклы включения питания | Информационный |
| 187 | Reported Uncorrectable Errors | Ошибки, которые не смогла исправить ECC | Любое ненулевое - диск в зоне риска |
| 188 | Command Timeout | Команды, не выполненные в срок | Рост указывает на питание, шлейф или контроллер |
| 194 | Temperature | Температура, °C | Держать в пределах спецификации. Подробности ниже |
| 197 | Current Pending Sector | Нестабильные секторы, ждущие решения | Ненулевое - действовать. Быстро растёт - менять диск |
| 198 | Offline Uncorrectable | Секторы, которые не удалось прочитать | Ненулевое - снять бэкап и готовить замену |
| 199 | UDMA CRC Error Count | Ошибки передачи по интерфейсу | Виноват кабель или бэкплейн, а не диск |
| 240 | Head Flying Hours | Время работы головок над поверхностью | Информационный, отдают не все вендоры |
Backblaze обслуживает десятки тысяч дисков и публикует статистику отказов. По их данным 76,7 % отказавших дисков заранее показали ненулевые значения по пяти атрибутам: 5, 187, 188, 197 и 198. Остальные умерли внезапно, без предупреждения.
Практический вывод простой. Если настраивать оповещения не по всем сорока строкам, а по пяти, начинайте с этих. Три из них - 187, 197 и 198 - в типовых обзорах SMART обычно не разбирают, а именно они дают самый ранний сигнал.
Отдельно про атрибуты 01 и 07, потому что на них паникуют чаще всего. У дисков Seagate их Raw Value - не счётчик ошибок. Там упакованы два числа: количество ошибок в старших разрядах и общее число операций в младших. Диск сделал миллиард чтений, ошибок ноль - а утилита показывает какое-нибудь двенадцатизначное число, и владелец хватается за голову.
На дисках Seagate по атрибутам 01 и 07 смотрите нормализованное значение, а Raw игнорируйте. У WD, HGST и Toshiba логика другая, и там рост raw уже осмыслен.
HDD и SSD изнашиваются по-разному, и следить за ними надо по разным атрибутам.
У механики свои болезни: подшипники, двигатель, позиционирование головок, деградация поверхности. Главные атрибуты - 05, 197 и 198 по поверхности, 03, 10 и 11 по механике.
Про температуру стоит сказать честно, потому что здесь много мифов. Верхний предел у большинства дисков - 60 °C (у части моделей 55 °C), производители рекомендуют держать накопители в районе 15-30 °C. А вот Backblaze на выборке в 34 тысячи дисков корреляции между температурой и частотой отказов не нашла, и Google в своём исследовании пришёл к похожему выводу. Другие работы, наоборот, связь находят.
Практический вывод: следите, чтобы диск не выходил за спецификацию, и реагируйте на рост температуры при неизменной нагрузке - он говорит о забитых фильтрах, отказавшем вентиляторе или высохшем термоинтерфейсе. Но 42 °C на серверном диске сами по себе поводом для замены не являются, что бы ни писали цветные индикаторы в утилитах.
У твердотельных механики нет, зато ячейки флеш-памяти имеют конечный ресурс перезаписи.
| Атрибут | Что означает | Как читать |
|---|---|---|
| Wear Leveling Count (177) | Равномерность износа ячеек | Нормализованное значение падает от 100 к 1 по мере расхода ресурса |
| Available Reserved Space (232) | Остаток резервных блоков | Приближение к порогу - резерв на исходе |
| Media Wearout Indicator (233) | Общий износ флеш-памяти | Стартует со 100, у конца жизни уходит к 1 |
| Percentage Used (NVMe) | Процент израсходованного ресурса | 100 % - выработан заявленный TBW. Диск при этом обычно ещё жив |
| Total LBAs Written (241) | Сколько данных записал хост | Пересчитывается в терабайты, сравнивается с TBW из спецификации |
| Reallocated / Retired Block Count | Выведенные из работы блоки | Растёт - контроллер расходует резерв |
Когда резерв блоков заканчивается, накопитель обычно переходит в режим только для чтения. Данные доступны, записать новые нельзя. Поведение штатное, но администратора застаёт врасплох.
Ещё одна пара счётчиков: записано хостом и записано в саму флеш-память. Их отношение называется коэффициентом усиления записи (write amplification): контроллер вынужден переписывать блоки при сборке мусора, поэтому в память попадает больше, чем прислал хост. Чем ближе отношение к единице, тем эффективнее работает контроллер. Счётчик записи в NAND отдают не все вендоры и под собственными номерами атрибутов, так что универсальной формулы тут нет.
Основной инструмент в Linux - утилита smartctl из пакета smartmontools.
Команда smartctl -a /dev/sda выводит полную информацию по диску со всеми атрибутами. Ключ -H делает быструю проверку: PASSED означает, что критические атрибуты в пределах порогов, FAILED - что порог уже превышен. Ключ -t short запускает короткий самотест на несколько минут, -t long - расширенный, он идёт часами, но проверяет всю поверхность. Команда smartctl -l error /dev/sda показывает журнал ошибок, и там часто видно, повторяются ли отказы на одних и тех же секторах.
Вот здесь и спотыкается большинство инструкций. На сервере диски обычно спрятаны за контроллером, и операционная система видит не их, а логический том. Команда smartctl -a /dev/sda в такой ситуации не ошибётся - она просто покажет данные виртуального устройства, из которых о здоровье физических дисков не узнать ничего. Человек считает, что мониторинг настроен, а по факту не следит ни за чем.
Нужно явно указать тип контроллера и номер диска ключом -d:
LSI/Broadcom MegaRAID: smartctl -a -d megaraid,0 /dev/sda - где 0 это номер устройства в контроллере, дальше megaraid,1, megaraid,2 и так по списку
HP Smart Array: smartctl -a -d cciss,0 /dev/sg0
Adaptec: smartctl -a -d aacraid,0,0,0 /dev/sda
Areca: smartctl -a -d areca,1 /dev/sg0
Диски за USB-мостом: smartctl -a -d sat /dev/sdb
Список поддерживаемых типов даёт smartctl -h. Проверить, что вы действительно видите физический диск, просто: в выводе должны появиться его модель и серийный номер, а не имя тома контроллера. Подробнее про сами контроллеры - в статье о том, что такое RAID.
Демон smartd следит за атрибутами непрерывно и шлёт уведомления при отклонениях. Настраивается в /etc/smartd.conf.
Директива DEVICESCAN находит все диски и применяет к ним базовые правила - но за RAID-контроллером она снова увидит только том, поэтому такие диски прописывают явно, с тем же ключом -d. Опция -m задаёт адрес для писем, -s - расписание самотестов. Например, строка -s (S/../.././02|L/../../6/03) запускает короткий тест ежедневно в два часа ночи и длинный по субботам в три.
Для наглядной картины SMART-метрики собирают в Prometheus через отдельный exporter и выводят в Grafana рядом с остальными показателями сервера. Так рост числа переназначенных секторов видно в одном окне с нагрузкой на дисковую подсистему. Про общий подход к наблюдению за парком - в материале про диагностику жёстких дисков. Отдельный случай - когда атрибут уже загорелся, а сервер останавливать нельзя: как снять показания с дисков за RAID-контроллером и что безопасно запускать под нагрузкой, разобрано в статье про диагностику диска на работающем сервере.
Однократное чтение атрибутов говорит мало. Ценность появляется, когда есть история.
Тренд важнее абсолютного значения. Диск с пятью переназначенными секторами, которые появились год назад и с тех пор не менялись, спокойно работает дальше. Диск, у которого их стало пять за неделю, надо менять - счётчик 05 обычно растёт лавинообразно.
То же с 197: пара нестабильных секторов может исчезнуть сама, когда диск при следующей записи либо прочитает их успешно, либо переназначит. Но если 197 держится ненулевым и параллельно растёт 05, поверхность сыпется.
Корреляции подсказывают причину. Одновременный рост ошибок чтения и переназначенных секторов указывает на поверхность. Рост 188 вместе с 199 - почти наверняка не диск, а шлейф, бэкплейн или просевшее питание. Увеличение времени позиционирования вместе с 11 - механика головок.
Счётчик 199 UDMA CRC не обнуляется никогда. Если он вырос когда-то давно из-за плохого кабеля, а потом кабель заменили, значение так и останется висеть. Смотреть надо не на само число, а на то, растёт ли оно сейчас.
Мониторинг имеет смысл, когда по нему принимают решения заранее.
Заводские пороги для этого не годятся. Они настроены под гарантийный случай: порог означает «диск подлежит замене по гарантии», а вовсе не «администратору пора беспокоиться». К моменту срабатывания Threshold менять что-то обычно поздно.
Для серверов пороги ставят жёстче. Разумный минимум: уведомление при первом же ненулевом значении по 5, 187, 197 и 198, отдельное правило на рост 199 и оповещение при выходе температуры за спецификацию. Пять правил закрывают большую часть предсказуемых отказов. Тот же приём работает и на других метриках - от свободного места до температур. Что предсказуемо, а что нет, и с каким запасом времени, собрано в разборе про предсказание проблем серверов.
Пороги стоит соотносить с нагрузкой. У дисков под интенсивной записью износ идёт быстрее, и для них это нормально - важно сравнивать диск не с эталоном, а с его же собственной историей и с соседями по массиву. Диск, который выбивается из группы одинаковых, подозрителен даже при формально приличных цифрах.
Плановая замена по тренду всегда дешевле аварийной: диск меняют в удобное окно, а не в три часа ночи с деградировавшим массивом.
Рабочая схема - две ступени. Первый тревожный сигнал переводит диск в режим усиленного наблюдения и заказывает запасной. Второй запускает плановую замену. Полезно вести историю SMART по всему парку: так видно, что у конкретной модели есть характерная болячка, и партию можно менять заранее.
Как часто менять диски планово, из каких сроков исходить и как считать бюджет на замену - отдельная тема, разобранная в статье про регламент замены жёстких дисков на сервере. Порядок самой процедуры - в материале о том, как заменить жёсткий диск на сервере.
Что такое смарт диска? «Смарт» - это то же самое SMART, просто записанное по-русски: встроенная в накопитель система самодиагностики. Смарт жёсткого диска показывает счётчики ошибок, наработку, температуру и износ, а расшифровка смарт сводится к чтению таблицы атрибутов выше.
Reallocated Sector Count что это? Атрибут 05, счётчик секторов, которые диск признал ненадёжными и заменил из резервной области. Ноль - хорошо. Любое другое значение требует наблюдения, а рост - замены.
Power Cycle Count что это? Атрибут 12, число включений питания диска. Информационный: сам по себе о здоровье не говорит, но помогает понять, как эксплуатировался накопитель.
Wear Leveling Count у SSD что это? Показатель равномерности износа ячеек. Читается по нормализованному значению: стартует около 100 и снижается по мере расходования ресурса перезаписи.
Что значит Raw Value в Victoria и почему число такое большое? Это исходное значение атрибута. У Seagate по атрибутам 01 и 07 в него упакованы сразу два числа, поэтому оно и выглядит астрономическим. Ошибок там может не быть вовсе - смотрите нормализованное значение.
Как расшифровать SMART, если утилиты показывают разные названия? Ориентируйтесь на номер атрибута: он стандартен, тогда как имя каждая программа подставляет своё.
SMART показывает PASSED - значит, диск здоров? Не обязательно. PASSED означает лишь, что ни один атрибут не пробил заводской порог. Диск с ненулевыми 197 и 198 может показывать PASSED и умереть через месяц.
Собираете дисковую подсистему или обновляете парк накопителей?
Инженеры ITTELO подберут диски и СХД под вашу нагрузку, соберут и протестируют конфигурацию перед отгрузкой, с гарантией и поддержкой после продажи. На рынке серверов 11+ лет.