Мониторинг SSD: ключевые метрики здоровья и прогнозирование износа в 2026 | AdminWiki

Мониторинг SSD: ключевые метрики здоровья и прогнозирование износа в 2026

24 июля 2026 10 мин. чтения

Почему мониторинг SSD отличается от HDD: главные метрики здоровья

Твердотельные накопители деградируют иначе, чем жесткие диски. HDD умирает от механического износа - удары головок, заклинивание шпинделя, нестабильные сектора. SSD умирает от исчерпания ресурса перезаписи ячеек NAND. Каждая ячейка выдерживает ограниченное число циклов программирования/стирания (P/E cycles). Контроллер SSD распределяет нагрузку равномерно по всем ячейкам - этот процесс называется выравниванием износа (wear leveling). Когда резерв ячеек заканчивается, диск переходит в режим read-only или полностью отказывает.

Поэтому традиционные HDD-метрики вроде Spin-Up Time или Seek Error Rate для SSD бесполезны. Вам нужны три ключевых атрибута: Wear Leveling Count (процент использованных циклов перезаписи), Total LBAs Written (объем записанных данных за всю жизнь диска) и Reallocated Sectors Count (число переназначенных сбойных блоков из резервной области). Эти три показателя дают полную картину износа и позволяют предсказать момент, когда диск пора менять - до того как данные станут недоступны.

Если вы отвечаете за парк серверов или рабочих станций, вам также пригодятся наши руководства по сравнению утилит мониторинга HDD и SSD и мониторингу производительности сервера - они дополнят картину диагностики дисковой подсистемы.

Wear Leveling Count: главный индикатор износа

Wear Leveling Count (иногда называется Average Block Erase Count) - это нормализованный показатель, отражающий, сколько циклов перезаписи уже использовано относительно паспортного максимума. Значение 100 означает новый диск с нулевым износом. Значение 0 означает, что гарантированный производителем ресурс полностью исчерпан. Промежуточные значения - прямая пропорция: 50 - износ 50%, 10 - износ 90%.

Трактовка зависит от производителя. Samsung выводит Wear Leveling Count в процентах оставшегося ресурса (100 - отлично, 0 - замена). Intel для некоторых моделей использует обратную шкалу: сырое значение растет от нуля, и критическим считается достижение паспортного максимума циклов. WD и Kingston могут использовать атрибут с ID 230 (Media Wearout Indicator) с аналогичной нормализацией. Перед принятием решения всегда сверяйтесь с документацией на конкретную модель.

Пороговые значения для принятия решений: при Wear Leveling Count = 10 и ниже диск подлежит немедленной замене в продуктивной среде. При значении 20-30 - планируйте замену в ближайшее окно обслуживания. Значения выше 50 - нормальный рабочий износ.

Total LBAs Written (TBW): расчет оставшегося ресурса

Total LBAs Written (TLW) показывает общее количество секторов, записанных на диск за все время работы. Зная этот показатель и паспортный TBW (Total Bytes Written) из спецификации производителя, вы можете точно вычислить процент износа.

Формула расчета:

Износ (%) = (Total LBAs Written × размер сектора) / TBW диска × 100

Размер сектора для современных SSD - 512 байт или 4096 байт (4K). Уточните для вашей модели через спецификацию или вывод smartctl. Пример расчета для Samsung 870 EVO 500GB с TBW = 300 TBW и показанием Total LBAs Written = 117187500000:

Записано ГБ = 117187500000 × 512 / (1024³) ≈ 55900 ГБ ≈ 55,9 ТБ
Износ = 55,9 / 300 × 100 ≈ 18,6%

Где взять TBW? В спецификации на сайте производителя. Для датацентровых SSD часто указывается DWPD (Drive Writes Per Day) - количество полных перезаписей емкости диска в сутки в течение гарантийного срока. TBW = DWPD × емкость × гарантийный срок в днях. Например, DWPD=1 для диска 1 ТБ на 5 лет дает TBW = 1 × 1 ТБ × 1825 дней = 1825 TBW.

Reallocated Sectors Count: когда резервные блоки заканчиваются

На SSD переназначение секторов происходит из-за физической деградации ячеек NAND. Когда ячейка перестает надежно хранить заряд, контроллер помечает её как сбойную и подменяет блоком из резервной области. Пока резерв есть - диск работает штатно. Рост Reallocated Sectors Count в сочетании с падением Wear Leveling Count - прямой сигнал к немедленной замене: резерв исчерпывается, и новые сбои будет нечем компенсировать.

Допустимые значения: 0-10 - норма для диска с пробегом. 10-100 - повод для пристального наблюдения, проверяйте динамику раз в неделю. Более 100 - критично, планируйте замену немедленно. Резкий скачок на десятки или сотни за короткий промежуток - диск отказывает прямо сейчас, данные под угрозой. В такой ситуации изучите наше руководство по восстановлению данных с SSD - там описан протокол действий при инциденте.

Инструменты мониторинга SSD в Windows: от GUI до PowerShell

В Windows доступны два подхода: графические утилиты для быстрой проверки и командная строка для автоматизации. CrystalDiskInfo дает визуальную оценку за секунды. PowerShell позволяет встроить проверку в скрипты и системы мониторинга.

CrystalDiskInfo: быстрый визуальный мониторинг

Скачайте CrystalDiskInfo с официального сайта (версия Standard Edition, портативная или установщик). Запустите. Главное окно показывает общую оценку здоровья цветом: синий/зеленый - Good (норма), желтый - Caution (внимание, износ выше порога), красный - Bad (критично). Тут же отображаются температура, общее время работы, интерфейс подключения.

Перейдите на вкладку SMART. Найдите атрибуты:

  • Wear Leveling Count - у Samsung ID 177, текущее значение от 100 до 0.
  • Total LBAs Written - ID 241, сырое значение в шестнадцатеричном виде.
  • Reallocated Sectors Count - ID 5, сырое значение - число переназначенных секторов.

Настройка оповещений: меню Function → Alert → отметьте галочки «Health Status» и «Temperature». При падении здоровья до Caution или Bad утилита покажет всплывающее окно или воспроизведет звук.

PowerShell: автоматизация сбора SMART-данных

Для серверов без GUI и для скриптов мониторинга используйте встроенные командлеты. Базовый вывод:

Get-PhysicalDisk | Select-Object FriendlyName, HealthStatus, OperationalStatus
Get-StorageReliabilityCounter -PhysicalDisk (Get-PhysicalDisk -FriendlyName "Samsung SSD 870 EVO")

Вывод Get-StorageReliabilityCounter содержит поля Wear (нормализованный износ, аналог Wear Leveling Count), ReadErrorsTotal, WriteErrorsTotal, Temperature. Ограничение: не все SSD отдают Wear через этот API. Для NVMe-дисков данные могут быть неполными - в этом случае используйте WMI-класс MSStorageDriver_FailurePredictStatus или специализированные утилиты производителя.

Пример извлечения конкретного значения Wear для использования в скриптах:

$disk = Get-PhysicalDisk -FriendlyName "Samsung SSD 870 EVO"
$reliability = Get-StorageReliabilityCounter -PhysicalDisk $disk
$wear = $reliability.Wear
if ($wear -lt 10) { Write-Host "КРИТИЧНО: износ SSD более 90%" }

Мониторинг SSD в Linux: smartctl и nvme-cli

В Linux мониторинг SSD разделяется по интерфейсу: SATA-диски обслуживаются через smartctl из пакета smartmontools, NVMe-диски - через nvme-cli. Установите оба пакета заранее:

apt install smartmontools nvme-cli   # Debian/Ubuntu
dnf install smartmontools nvme-cli   # RHEL/CentOS/Fedora

smartctl для SATA SSD: универсальный инструмент

Полный вывод SMART-атрибутов:

smartctl -a /dev/sda

Ключевые атрибуты и их типичные ID:

  • Wear Leveling Count - ID 177 или 233. Значение VALUE - нормализованное (100 - новый, 0 - износ 100%).
  • Total LBAs Written - ID 241. RAW_VALUE - общее число записанных секторов.
  • Reallocated Sectors Count - ID 5. RAW_VALUE - количество переназначенных секторов.

Быстрый поиск нужных метрик через grep:

smartctl -a /dev/sda | grep -iE "wear|realloc|total_lba"

Запуск тестов: smartctl -t short /dev/sda (быстрый, 2 минуты), smartctl -t long /dev/sda (полный, может занять часы). Результат: smartctl -l selftest /dev/sda.

nvme-cli для NVMe SSD: прямой доступ к контроллеру

NVMe-диски не используют ATA-команды, поэтому smartctl для них ограничен. Полноценный SMART-лог доступен через nvme-cli. Список NVMe-устройств:

nvme list

Вывод SMART-лога:

nvme smart-log /dev/nvme0

Ключевые поля вывода:

  • percentage_used - прямой аналог Wear Leveling Count. Значение 0 означает износ 0% (новый диск). Значение 100 и выше - ресурс исчерпан. Это обратная шкала по сравнению с SATA-SMART: здесь значение растет с износом.
  • critical_warning - битовая маска тревог: бит 0 (доступный резерв ниже порога), бит 1 (температура выше порога), бит 2 (деградация NVM-подсистемы).
  • temperature - текущая температура в Кельвинах, вычитайте 273 для Цельсия.
  • data_units_written - объем записанных данных в блоках по 512 КБ (умножьте на 512 и разделите на 1024³ для гигабайт).

Пример расчета износа NVMe-диска с TBW=600 TBW и data_units_written=23456789:

Записано ГБ = 23456789 × 512 КБ / (1024²) ≈ 11728394 МБ ≈ 11453 ГБ ≈ 11,5 ТБ
Износ = 11,5 / 600 × 100 ≈ 1,9%

Настройка оповещений о критическом износе SSD

Ручная проверка SMART-атрибутов не работает для парка из десятков машин. Нужен автоматический опрос с отправкой уведомлений при достижении пороговых значений. Ниже приведены готовые скрипты для Windows и Linux.

Скрипт для Windows: мониторинг Wear Leveling через PowerShell

Скрипт проверяет значение Wear для указанного диска и отправляет email при падении ниже порога. Сохраните как Check-SSDWear.ps1:

$diskName = "Samsung SSD 870 EVO"
$threshold = 10
$smtpServer = "smtp.yourcompany.com"
$from = "monitoring@yourcompany.com"
$to = "admin@yourcompany.com"

try {
    $disk = Get-PhysicalDisk -FriendlyName $diskName -ErrorAction Stop
    $reliability = Get-StorageReliabilityCounter -PhysicalDisk $disk
    $wear = $reliability.Wear
    
    if ($wear -lt $threshold) {
        $body = "КРИТИЧЕСКИЙ ИЗНОС SSD: $diskName. Wear Leveling = $wear (порог: $threshold). Немедленно замените диск."
        Send-MailMessage -From $from -To $to -Subject "ALERT: SSD износ критический" -Body $body -SmtpServer $smtpServer
    }
} catch {
    $body = "ОШИБКА мониторинга SSD $diskName : $_"
    Send-MailMessage -From $from -To $to -Subject "ERROR: мониторинг SSD" -Body $body -SmtpServer $smtpServer
}

Настройте запуск по расписанию: Task Scheduler → Create Task → Trigger: Daily, Repeat every 1 hour → Action: Start a program, powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\Check-SSDWear.ps1".

Скрипт для Linux: оповещение на основе smartctl

Bash-скрипт извлекает Wear Leveling Count для SATA SSD и отправляет уведомление через mailx. Сохраните как /usr/local/bin/check-ssd-wear.sh:

#!/bin/bash
DISK="/dev/sda"
THRESHOLD=10
EMAIL="admin@yourcompany.com"

WEAR=$(smartctl -a $DISK | grep -i "wear_leveling_count" | awk '{print $4}')

if [ -z "$WEAR" ]; then
    WEAR=$(smartctl -a $DISK | grep -i "media_wearout" | awk '{print $4}')
fi

if [ -n "$WEAR" ] && [ "$WEAR" -lt "$THRESHOLD" ]; then
    echo "КРИТИЧЕСКИЙ ИЗНОС SSD $DISK. Wear Leveling = $WEAR (порог: $THRESHOLD)." | mailx -s "ALERT: SSD износ критический" $EMAIL
fi

Для NVMe-дисков замените строку извлечения Wear на:

WEAR=$(nvme smart-log $DISK | grep percentage_used | awk '{print $3}' | sed 's/%//')
# percentage_used растет с износом: 0 - новый, 100 - износ 100%
if [ -n "$WEAR" ] && [ "$WEAR" -gt $((100 - THRESHOLD)) ]; then
    echo "КРИТИЧЕСКИЙ ИЗНОС NVMe $DISK. Percentage Used = $WEAR%." | mailx -s "ALERT: NVMe износ критический" $EMAIL
fi

Добавьте в cron ежечасный запуск: 0 * * * * /usr/local/bin/check-ssd-wear.sh.

Для централизованного мониторинга парка серверов используйте Zabbix или Prometheus. В Zabbix создайте Item типа Zabbix agent с ключом system.run[smartctl -a /dev/sda | grep Wear_Leveling_Count | awk '{print $4}'] и Trigger с порогом. Prometheus собирает метрики через textfile collector от Node Exporter - напишите экспортер, который парсит вывод smartctl и пишет в /var/lib/node_exporter/textfile_collector/ssd_wear.prom.

Особенности мониторинга SSD разных производителей

SMART-атрибуты не стандартизированы жестко. Производители используют разные ID и названия для одних и тех же метрик. Сверка с официальной документацией обязательна перед интерпретацией значений.

Типичные различия:

  • Samsung: Wear Leveling Count - ID 177. Значение 100 - новый, 0 - полный износ. Утилита производителя - Samsung Magician, показывает износ в процентах и TBW графически.
  • Intel: Media Wearout Indicator - ID 233 (SATA), Percentage Used - в NVMe-логе. Шкала аналогична Samsung для SATA (100 → 0). Для NVMe - обратная (0 → 100% износа). Фирменная утилита - Intel Memory and Storage Tool.
  • Western Digital / SanDisk: Media Wearout Indicator - ID 230. Нормализация 100 → 0. WD Dashboard - фирменная утилита мониторинга.
  • Kingston: Wear Leveling Count - ID 231 или 233, зависит от модели. Kingston SSD Manager показывает состояние наглядно.
  • Crucial / Micron: Percentage Lifetime Used - ID 202 или 210. Шкала 100 → 0. Storage Executive - утилита производителя.

Рекомендация: всегда устанавливайте фирменную утилиту производителя для первичной диагностики. Она корректно интерпретирует атрибуты конкретной модели. Данные из generic-инструментов (smartctl, CrystalDiskInfo) перепроверяйте по документации вендора. Для датацентровых NVMe-дисков используйте nvme-cli - он дает прямой доступ к стандартизированному SMART-логу, где поля вроде percentage_used и critical_warning едины для всех производителей.

При построении отказоустойчивых систем хранения мониторинг отдельных SSD - только первый уровень. Для комплексной защиты данных изучите наши материалы по настройке кэширования в системах хранения и практической настройке производительности массивов. Если вы разворачиваете инфраструктуру мониторинга и вам нужны облачные ресурсы, Timeweb Cloud предоставляет VDS и выделенные серверы с возможностью гибкого масштабирования.

Поделиться:
Сохранить гайд? В закладки браузера