Проверка NVMe дисков с помощью nvme-cli

12 Jul 2026, 03:48:14
nvme-cli - утилита, предназначенная для диагностики и работы с NVMe SSD напрямую через интерфейс NVMe. Несмотря на то, что популярная утилита для тестирования дисков - smartctl начиная с версии 7.0 успешно выводит информацию о многих современных NVMe накопителях, она выводит лишь малую часть основных данных. Для большинства пользователей её будет достаточно, но если нужна полная информация о NVMe диске, не обойтись без nvme-cli.
Многие производители оборудования предоставляют свои фирменные утилиты для диагностики устройств (Intel MAS, Samsung Magician и т.д.), однако не все они доступны для Linux-систем. nvme-cli является их полноценной заменой, так как реализует почти все возможности диагностики интерфейса NVMe и работает со всеми популярными моделями NVMe SSD.

Установка nvme-cli

Утилита nvme-cli уже стала стандартом индустрии и доступна в репозиториях многих современных дистрибутивов Linux. Все команды в этой статье выполняются на выделенном сервере под пользователем root. Если вы работаете под обычным пользователем, вам может понадобиться использовать sudo перед основной командой.

Debian и Ubuntu

apt install nvme-cli

RHEL, AlmaLinux, CentOS

dnf install nvme-cli

Arch Linux

pacman -S nvme-cli
Если установка прошла успешно, выполнив эту команду вы увидите версию программы:
nvme version20260712_XSDA0PXM

Вывод NVMe дисков

Для просмотра информации обо всех NVMe устройствах на сервере воспользуйтесь командой:
nvme list20260712_Z41FxITP
Разберём поля:
Nodeимя NVMe носителя
SNсерийный номер
Modelмодель накопителя
Namespaceномер namespace
Usageобъём использованного пространства
Formatразмер логического сектора
FW Revверсия прошивки

Что такое Namespace у NVMe дисков

В классическом понимании архитектура дисковой системы на сервере состоит из дисков, которые делятся на разделы, на которые устанавливаются файловые системы. Но в случае с NVMe накопителями появляется новый слой между диском и разделом, управляемый самим контроллером NVMe диска. Это позволяет создать из одного устройства несколько независимых носителей, операционная система будет видеть их как отдельные диски. Реализуется полноценный уровень изоляции.
Каждый namespace имеет свой:
  • объём;
  • размер сектора;
  • логическое адресное пространство;
  • форматирование;
  • идентификатор NSID.
В приведённом примере имя NVMe устройства: /dev/nvme0n1. n1 - обозначение namespace. Очень часто можно увидеть только один namespace на устройстве, так как для большинства пользовательских и рабочих задач разделять дисковое пространство таким образом не имеет практического смысла.

Информация о контроллере

Вывести полную информацию о спецификациях контроллера NVMe диска можно с помощью команды:
nvme id-ctrl -H /dev/nvme0
  • /dev/nvme0 - имя NVMe устройства.
20260712_o0sAulOo
Однако не стоит ожидать здесь увидеть модель контроллера. Эту информацию необходимо искать в документации производителя.

Получение данных SMART

Диагностика NVMe накопителя начинается с просмотра данных SMART, собранных контроллером. Для их отображения воспользуйтесь командой:
nvme smart-log /dev/nvme0
  • /dev/nvme0 - имя NVMe диска.
20260712_T1Ifdc10
Разберём значения всех полей вывода утилиты:
critical_warningбитовая маска, отображающая текущее состояние диска (0 - критическое состояние не активно)
temperatureтемпература диска (50-70°C - норма для большинства устройств)
available_spareпроцент доступных резервных блоков
available_spare_thresholdлимит для предупреждения (контроллер сообщит о проблеме если процент свободных резервных блоков будет ниже)
percentage_usedпредполагаемый износ диска (0% - диск как новый)
data_units_readсколько данных прочитано с диска за всё время его работы (в специальных единицах - Data Units (512 КБ))
data_units_writtenсколько записано данных (по аналогии с data_units_read)
host_read_commandsколичество выполненных команд чтения
host_write_commandsколичество выполненных команд записи
controller_busy_timeобщее время затраченное контроллером на обработку запросов
power_cyclesколичество включений
power_on_hoursколичество часов работы
unsafe_shutdownsколичество аварийных выключений
media_errorsколичество необратимых ошибок чтения/записи носителя и целостности данных
num_err_log_entriesколичество записей добавленных в журнал ошибок диска
Warning Temperature Timeсколько времени температура диска превышала порог предупреждения
Critical Composite Temperature Timeсколько времени температура диска превышала критический порог
Temperature Sensor 1, 2, 3показания датчиков температуры
Thermal Management Trans Countколичество включений температурного троттлинга разных уровней
Thermal Management Total Timeсколько SSD проработал на разных уровнях троттлинга
По показателям percentage_used, available_spare, media_errors можно понять состояние диска и его потенциальный остаточный ресурс. Критические показания этих параметров являются обоснованной причиной для замены NVMe диска. Критичные показатели температуры, счётчика троттлинга служат основанием для диагностики сервера в целом. num_err_log_entries - не всегда является критичным показателем, так как данный счётчик учитывает разные виды ошибок, в том числе аварийное отключение питания, прерывания команд самой ОС и т.д.

Вывод лога ошибок NVMe диска

Вывести лог ошибок диска можно с помощью команды:
nvme error-log /dev/nvme0В зависимости от производителя устройства, может сложиться ситуация когда вы получите много информации в логе, но при этом никаких ошибок там не будет:
20260712_RKW9FzLn
Вывод будет полон подобными записями, но все они будут иметь error_count: 0 и status_field: SUCCESS. Это не является показателем проблемы, даже несмотря на то, что num_err_log_entries может не быть равен 0, как в примере. Это означает, что за время работы диска были зафиксированы какие-то ошибки, но вероятно они были давно и журнал за это время был уже очищен. Если все записи в логе имеют error_count равным 0, можно считать что актуальных ошибок у NVMe устройства нет.

Запуск Self-Test на NVMe SSD

Утилита nvme-cli позволяет инициировать два варианта Self-Test, по аналогии со smartctl: Short self-test и Extended self-test. Short self-test выполняет проверку выборочных блоков NAND памяти, механизма ECC, работу контроллера. Extended self-test проверяет все каналы памяти, большее количество блоков NAND, ECC и многое другое. Механизм и узлы для диагностики определяет производитель устройства, nvme-cli только даёт команду на запуск тестирования, само тестирование выполняется контроллером накопителя.
Для запуска быстрого теста воспользуйтесь командой:
nvme device-self-test /dev/nvme0 -s 1
  • /dev/nvme0 - имя вашего NVMe устройства;
  • -s - self-test код (1 для short теста).
Для запуска полного теста опции -s необходимо передать значение 2:
nvme device-self-test /dev/nvme0 -s 2В результате уведомление о запуске теста:
20260712_jBbouoyl
Для остановки теста используется команда:
nvme device-self-test /dev/nvme0 -s 15Просмотреть результаты тестов можно в self-test логе:
nvme self-test-log /dev/nvme0

Формат вывода журналов

nvme-cli может отобразить любой запрашиваемый лог в трёх форматах: человекочитаемом (по умолчанию), JSON и бинарном. Последний поддерживается не для всех типов команд. Для определения формата вывода используйте опцию -o:
nvme smart-log /dev/nvme0 -o json
  • -o - формат вывода (normal, json и binary).
20260712_HsS7Qo5J

Заключение

nvme-cli является специализированной программой для работы с NVMe устройствами по спецификациям стандарта NVMe. smartctl - универсальная утилита, работающая с разными типами накопителей. Оба инструмента являются являются базовыми инструментами в администрировании выделенных серверов. Понимание их возможностей поможет вам произвести диагностику ваших устройств и, возможно, спасти данные.
Если вы являетесь клиентом Virterion.com, вам не обязательно разбираться с вопросами работы nvme-cli. Вы можете обратиться с запросом в нашу техническую поддержку для проверки дисков на вашем выделенном сервере.