Жёсткий диск редко умирает внезапно. Чаще он подаёт сигналы за недели, а то и месяцы до полного отказа, и эти сигналы спрятаны в служебной телеметрии накопителя. Технология самодиагностики SMART накапливает десятки параметров, но реальную ценность для прогноза несут единицы из них. Среди этой горстки два показателя выделяются особо: счётчик переназначенных секторов и счётчик секторов, ожидающих переназначения. Именно они чаще всего первыми показывают, что поверхность пластин начала сыпаться. Утилита smartctl из пакета smartmontools позволяет вытащить эти цифры в чистом виде, без приукрашивания и без зелёных галочек, которыми любят успокаивать пользователя графические оболочки.
Разобраться в этих двух параметрах стоит каждому, кто хранит что-то важное на механическом накопителе. Зелёный статус "PASSED" в окне диагностики ещё ничего не гарантирует, потому что встроенная логика SMART объявляет тревогу слишком поздно, когда спасать данные уже почти некуда. А вот сырые значения отдельных атрибутов говорят правду заранее, если уметь их читать.
Что физически происходит внутри диска, когда сектор объявляется битым
Поверхность магнитной пластины разбита на миллионы крошечных участков, каждый из которых хранит порцию данных. Стандартный физический сектор десятилетиями имел размер 512 байт, у современных дисков с продвинутым форматом он вырос до 4096 байт. Часть этих участков бывает дефектной уже с завода, и это абсолютно нормально: контроллер просто прячет заводской брак в собственной служебной таблице, а пользователю показывает идеально ровное пространство.
Проблемы начинаются, когда сектор портится в процессе эксплуатации. Допустим, головка пытается прочитать участок и получает данные, не проходящие проверку целостности. Накопитель не сдаётся сразу: он задействует внутренние коды коррекции ошибок и пробует восстановить содержимое. Если это удаётся, сектор помечается как нестабильный и попадает в очередь на пересчёт. Если восстановить данные не выходит, накопитель сообщает операционной системе об ошибке чтения и помечает участок как требующий переназначения. У каждого диска есть скрытый резервный пул исправных секторов, и при первой же удачной записи проблемный участок выводится из обращения, а данные перенаправляются в резерв. Этот процесс и называется переназначением, или ремаппингом.
Логика тут изящная, но коварная. Пока спейр-секторы есть в запасе, диск маскирует деградацию, и снаружи всё выглядит благополучно. Запас не бесконечен. Когда резерв подходит к концу, прятать дефекты становится негде, и накопитель сваливается в лавину ошибок. Поэтому растущий счётчик переназначений это не повод для паники прямо сейчас, а сигнал, что часы уже тикают.
Как вытащить сырые значения атрибутов через smartctl без графических прослоек
Сначала пакет нужно установить. В системах на базе Debian и Ubuntu это делается через штатный менеджер пакетов, в дистрибутивах с пакетным менеджером dnf команда отличается лишь именем утилиты.
# Debian, Ubuntu и производные
sudo apt install smartmontools
# Fedora, RHEL, CentOS Stream
sudo dnf install smartmontools
После установки стоит убедиться, что диск вообще поддерживает самодиагностику и она включена. Краткая сводка по состоянию выводится короткой командой, где вместо sda подставляется реальное имя устройства.
sudo smartctl -i /dev/sda
Полная таблица атрибутов с сырыми значениями открывается ключом для вывода всей доступной информации. Именно она нужна для анализа здоровья поверхности.
sudo smartctl -A /dev/sda
В ответ накопитель выдаёт таблицу, где каждая строка это отдельный параметр. Колонок много, и новичка они пугают, но для оценки риска отказа важны лишь несколько из них. Ниже сокращённый фрагмент типичного вывода для диска, который уже начал портиться.
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 094 094 010 Pre-fail 312
196 Reallocated_Event_Count 0x0032 094 094 000 Old_age 28
197 Current_Pending_Sector 0x0012 100 100 000 Old_age 16
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age 16
Главное правило чтения этой таблицы: смотрите на последнюю колонку RAW_VALUE, а не на нормализованные числа слева. Колонки VALUE, WORST и THRESH содержат пересчитанные оценки от единицы до сотни, где больше значит лучше, и накопитель объявляет предотказное состояние, только когда VALUE падает до порога THRESH. Беда в том, что у параметра номер пять порог нередко выставлен на отметке десять, и нормализованная оценка доползёт до него, когда в резерве уже не останется живого места. Сырое же значение в правой колонке показывает фактическое число событий прямо сейчас.
Почему счётчик переназначенных секторов важнее любой зелёной галочки
Атрибут под номером пять, Reallocated_Sector_Ct, считает, сколько секторов диск уже выгнал в резервный пул навсегда. Ноль здесь это идеал, но не догма. Многие исправные накопители годами работают с единичными переназначениями, появившимися после случайного скачка напряжения или лёгкого толчка во время работы. Беспокоиться надо не из-за самого факта ненулевого счётчика, а из-за динамики его роста.
Представим два диска. У первого счётчик стоит на отметке восемь уже два года и не меняется. У второго за неделю значение прыгнуло с нуля до пятнадцати. Второй диск опаснее в разы, хотя абсолютная цифра у него меньше, чем была бы при долгой стабильной работе. Резкий скачок почти всегда указывает на конкретное событие или на начавшуюся деградацию покрытия пластины, и за первым всплеском обычно следует второй. Плавный же рост на единицу в год это привычное старение, с которым диск ещё долго проживёт.
Опыт крупных дата-центров подтверждает эту логику цифрами. Компания Backblaze, публикующая статистику по сотням тысяч накопителей с 2013 года, отобрала из более чем семидесяти доступных SMART-параметров всего пять, которые реально коррелируют с отказами. В их число вошёл и атрибут номер пять. По наблюдениям инженеров, как только сырое значение одного из этих пяти показателей становится больше нуля, появляется повод для расследования. При этом отдельно взятый параметр предсказывает отказ лишь с вероятностью около тридцати-сорока процентов, но в связке несколько сработавших атрибутов поднимают точность прогноза до трёх четвертей.
Любопытная деталь из той же статистики отрезвляет любителей слепо доверять самодиагностике. Исследования показали, что значительная доля вышедших из строя накопителей умерла, не записав ни единого тревожного значения в ключевые атрибуты. То есть SMART прекрасно ловит постепенную деградацию поверхности, но бессилен против внезапных отказов электроники или механики. Поэтому мониторинг секторов это мощный, но не единственный инструмент, и резервная копия остаётся незаменимой.
Чем ожидающие секторы отличаются от уже переназначенных и почему их рост тревожнее
Атрибут номер 197, Current_Pending_Sector, считает участки в подвешенном состоянии. Это секторы, которые накопитель уже не смог прочитать, но ещё не переназначил, потому что ждёт следующей попытки записи. Их судьба решается при первом же обращении на запись: если запись пройдёт успешно, сектор очистится от подозрений и счётчик уменьшится; если запись провалится, участок отправится в резерв и переедет в счётчик переназначений под номером пять.
Из этой механики вытекает важный вывод для диагностики. Ожидающие секторы это пограничная зона, и именно в ней лежат данные, которые прямо сейчас под угрозой. Если переназначенный сектор означает, что информацию уже благополучно перенесли в безопасное место, то ожидающий сектор это участок, содержимое которого диск пока не может прочитать вообще. Растущий счётчик 197 это прямой сигнал, что часть файлов на диске уже фактически нечитаема.
Связан с этими двумя и атрибут номер 198, Offline_Uncorrectable, который фиксирует секторы, не поддавшиеся коррекции при фоновой проверке. Когда значения 197 и 198 движутся вместе и оба растут, картина однозначна: поверхность осыпается, и тянуть с заменой накопителя нельзя. В примере вывода выше шестнадцать ожидающих секторов соседствуют с шестнадцатью неисправимыми и тремя сотнями уже переназначенных. Такой диск стоит немедленно разгрузить.
Как заставить накопитель проверить себя самотестированием
Сырые значения атрибутов показывают накопленную историю, но иногда хочется проверить текущее состояние прямо здесь и сейчас. Для этого в SMART встроены самотесты, которые запускаются прямо на контроллере диска без участия операционной системы. Короткий тест занимает пару минут и гоняет базовую диагностику электроники и случайных участков поверхности.
sudo smartctl -t short /dev/sda
Расширенный тест прочёсывает всю поверхность целиком и потому длится от получаса на небольших дисках до многих часов на ёмких накопителях. Именно он выявляет нечитаемые участки, которые не всплыли при обычной работе.
sudo smartctl -t long /dev/sda
Тест выполняется в фоне, не блокируя систему, а его результат и журнал предыдущих проверок смотрят отдельной командой для вывода логов самотестирования.
sudo smartctl -l selftest /dev/sda
Здесь скрыт серьёзный подводный камень. Запускать долгий тест на диске, который уже сыплет ошибками, опасно: дополнительная нагрузка способна ускорить агонию и добить накопитель прежде, чем вы успеете снять копию. Если счётчики 197 и 198 уже ползут вверх, разумнее сначала спасти данные, и лишь потом, на свободном от ценной информации диске, гонять любые тесты. Сохранность файлов всегда важнее красоты диагностического отчёта.
Автоматический присмотр за дисками через демон мониторинга
Разовая проверка хороша, но деградация развивается тихо, и ловить её вручную раз в месяц неэффективно. В пакете smartmontools есть демон, который сам опрашивает накопители по расписанию и шлёт уведомление, едва критичный атрибут сдвинется с места. Его поведение задаётся в конфигурационном файле, путь к которому зависит от дистрибутива, но чаще всего лежит по знакомому адресу.
# конфигурация демона мониторинга
/etc/smartd.conf
Минимальная строка для присмотра за конкретным диском включает регулярные тесты и почтовое оповещение при появлении новых ошибок или переназначений. В примере ниже демон следит за устройством, проводит короткий тест ежедневно ночью и длинный раз в неделю, а также шлёт письмо при срабатывании любого предотказного атрибута.
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
После правки конфигурации демон перезапускают штатными средствами системы инициализации, и дальше он работает самостоятельно.
sudo systemctl restart smartd
sudo systemctl enable smartd
Такой автоматический присмотр снимает с человека рутину и страхует от ситуации, когда диск тихо деградировал, а никто не заметил. Письмо о первом же переназначенном секторе даёт фору в несколько недель, и этого времени с лихвой хватает на спокойный перенос данных.
Практический порядок действий при тревожных показаниях
Когда smartctl показал ненулевые и тем более растущие счётчики, последовательность разумных шагов выглядит так:
- Немедленно сделать резервную копию важных данных, пока диск ещё читается, не дожидаясь окончательного диагноза;
- Сопоставить сырые значения атрибутов пять, 197 и 198 и оценить именно динамику их роста, а не абсолютные числа;
- Повторить чтение атрибутов через несколько дней той же командой и сравнить, чтобы понять скорость деградации;
- Воздержаться от тяжёлых тестов и нагрузки на накопитель, если ожидающие секторы уже появились;
- Запланировать замену диска, поскольку лекарства от растущего числа переназначений не существует.
Последний пункт стоит подчеркнуть отдельно. Полное форматирование с записью нулей действительно обнуляет счётчик ожидающих секторов, ведь при записи каждый подвешенный участок либо очищается, либо уезжает в резерв. Но это косметика, а не лечение. Если покрытие пластины деградирует, новые битые секторы появятся очень скоро, а вы лишь обнулили счётчик и потеряли возможность отслеживать прогресс беды. Восстановить выгнанные в резерв секторы нельзя в принципе, и единственное настоящее решение это новый накопитель.
Что в итоге стоит держать в голове
Самодиагностика жёсткого диска похожа на медицинскую карту, в которой важны не общий вердикт врача, а конкретные анализы и их изменение во времени. Зелёный статус самопроверки усыпляет бдительность, тогда как сырые значения переназначенных и ожидающих секторов рисуют честную картину. Переназначенный сектор это уже спасённая, перенесённая в безопасное место информация и сигнал об износе поверхности. Ожидающий сектор это участок на грани, содержимое которого прямо сейчас под угрозой. Когда оба счётчика растут, причём растут быстро, окно для спасения данных стремительно закрывается.
Регулярный взгляд на эти цифры, автоматический присмотр через демон мониторинга и железная привычка держать резервную копию превращают внезапную потерю данных в управляемую плановую замену железа. Накопитель почти всегда предупреждает о своём уходе заранее. Услышать это предупреждение или нет, зависит лишь от того, умеете ли вы читать его язык.