Hetzner · Robot · Документация

NVMe SSD в выделенных серверах: проверка, износ и обслуживание

Обновлено

Во многих выделенных серверах установлены NVMe-накопители. Они быстрее SATA-SSD, но требуют того же внимания к износу, ошибкам и резервным копиям. Ниже — как посмотреть состояние диска, какие показатели важны, как включить TRIM и что сделать до обращения в поддержку за заменой.

Имена устройств

NVMe называются иначе, чем SATA: контроллер /dev/nvme0, пространство имён /dev/nvme0n1, разделы /dev/nvme0n1p1, /dev/nvme0n1p2. Второй диск — nvme1n1. Порядок нумерации может меняться после перезагрузки, поэтому в fstab используйте UUID, а при установке через installimage сверяйте имена в lsblk.

lsblk -o NAME,MODEL,SERIAL,SIZE,TYPE
nvme list

Проверка состояния через nvme-cli

sudo apt install -y nvme-cli smartmontools
sudo nvme smart-log /dev/nvme0n1
ПолеО чём говорит
critical_warningДолжно быть 0. Ненулевое значение — флаги проблем: мало резервных блоков, перегрев, режим только для чтения
percentage_usedРасчётный износ ресурса записи в процентах от заявленного производителем; может превышать 100
available_spare и available_spare_thresholdОстаток резервных блоков и порог тревоги
media_errorsНеисправимые ошибки носителя; рост — повод для замены
data_units_writtenОбъём записанных данных (единица равна 512 000 байт)
temperatureТемпература; смотрите на длительные перегревы под нагрузкой

Полный отчёт: sudo smartctl -a /dev/nvme0. Серийные номера дисков понадобятся при обращении в поддержку: см. справку Серийные номера и информация о неисправных дисках. Периодически запускайте самотест и смотрите журнал ошибок:

sudo nvme device-self-test /dev/nvme0 -s 1     # короткий тест
sudo nvme self-test-log /dev/nvme0
sudo nvme error-log /dev/nvme0 | head

TRIM

TRIM сообщает накопителю, какие блоки свободны, и помогает поддерживать скорость записи. В современных дистрибутивах достаточно включить таймер:

sudo systemctl enable --now fstrim.timer
sudo fstrim -av

Постоянная опция монтирования discard нагружает диск и обычно не рекомендуется. Поверх mdadm RAID1 и LVM смотрите, что fstrim действительно освобождает блоки, по его выводу.

Мониторинг износа

  • Добавьте проверку percentage_used и media_errors в мониторинг (Zabbix, Prometheus, простой cron-скрипт).
  • Настройте оповещение при ненулевом critical_warning, перегреве и росте media_errors.
  • Диски одной модели и возраста в RAID1 изнашиваются почти одновременно: держите внешние бэкапы (Резервное копирование).

Замена диска в RAID

  1. Убедитесь, что массив работает на втором диске: cat /proc/mdstat.
  2. Сохраните вывод nvme smart-log и серийный номер.
  3. Откройте обращение в поддержку и укажите серийный номер проблемного диска.
  4. После замены скопируйте таблицу разделов с исправного диска на новый и добавьте разделы в массив (имена проверьте дважды — команда sgdisk -R перезаписывает таблицу целевого диска):
    sgdisk -R /dev/nvme1n1 /dev/nvme0n1 && sgdisk -G /dev/nvme1n1
    mdadm --add /dev/md0 /dev/nvme1n1p1
    Здесь nvme0n1 — исправный диск, nvme1n1 — новый.
  5. Следите за ресинхронизацией (cat /proc/mdstat) и установите загрузчик на новый диск.

Подробный порядок описан в справках Замена жёстких дисков в программном RAID и Программный RAID Linux.

Частые вопросы

Насколько критичен percentage_used выше 80%?

Это расчётная оценка ресурса, а не гарантия отказа; но выше 80–90% стоит планировать замену и проверять бэкапы.

Нужно ли выравнивать разделы на NVMe?

Современные утилиты разметки делают это сами; принципы описаны в справке Выравнивание разделов.

Можно ли загружаться с NVMe?

Да, если это поддерживает прошивка; для UEFI нужен раздел ESP (UEFI и Legacy BIOS).