Подстава с NVMe на Линуксе
Хотел обратить внимание сообщества на характерную особенность Linux при работе с несколькими NVMe SSD в одной системе. Особенно актуально будет для тех кто любит делать из NVMe программные RAID массивы.
Надеюсь, что информация приведенная ниже поможет уберечь ваши данные и избавит от досадных ошибок.
Все мы привыкли к следующий логике Linux при работе с блочными устройствами:
Если устройство называется /dev/sda то разделы на нем будут /dev/sda1, /dev/sda2, и т.д.
Для просмотра SMART атрибутов мы используем что-то вроде smartctl -a /dev/sda, а форматируем, и в массивы добавляем уже разделы, вроде /dev/sda1.
Все мы привыкли к аксиоме, что /dev/sda1 располагается на /dev/sda. И, если в один день SMART покажет что /dev/sda почти сдох, — именно /dev/sda1 мы будем выкидывать из RAID массива на замену.
Оказывается, при работе с NVMe Namespaces это правило не работает. Пруф:
nvme list && ( smartctl -a /dev/nvme0 && smartctl -a /dev/nvme1 && smartctl -a /dev/nvme2 ) | grep Serial Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 S466NX0K72XX06M Samsung SSD 970 EVO 500GB 1 96.92 GB / 500.11 GB 512 B + 0 B 1B2QEXE7 /dev/nvme1n1 S466NX0K43XX48W Samsung SSD 970 EVO 500GB 1 91.00 GB / 500.11 GB 512 B + 0 B 1B2QEXE7 /dev/nvme2n1 S466NX0K72XX01A Samsung SSD 970 EVO 500GB 1 0.00 B / 500.11 GB 512 B + 0 B 1B2QEXE7 Serial Number: S466NX0K72XX06M Serial Number: S466NX0K72XX01A Serial Number: S466NX0K43XX48W
Внимательный читатель по сопоставлению серийных номеров заметит, что /dev/nvme1n1 на самом деле располагается на /dev/nvme2, и наоборот.
Желаю вам никогда не удалять из RAID массива последний живой NVMe SSD.
- Настройка Linux
- Хранение данных
NVMe Namespaces: возможности и подводные камни

Уверен, многие слышали про NVM Express, или просто NVMe. Изначально для меня это были просто быстрые диски. Потом я осознал, что это интерфейс для подключения этих дисков. Затем стал понимать NVMe как протокол для передачи данных по PCIe-шине. И не просто протокол, а протокол, разработанный специально для твердотельных накопителей!
Мало-помалу я пришел к пониманию, что это целая спецификация. И понеслось… Сколько интересных особенностей использования, оказывается, существует у NVMe. Сколько всего придумано… Было даже немного обидно, что мимо меня прошел такой пласт информации.
Так что же такое NVMe? Рассмотрим подробнее.
Началось все с SATA-интерфейса. На самом деле до него существовала масса других интерфейсов — SCSI, UltraSCSI, ATA, PATA и прочие, но это уже дела давно минувших дней. В этой статье мы рассмотрим только актуальные сейчас интерфейсы.
Скорость передачи данных по SATA-интерфейсу достигает 560 Мбайт/с, чего с лихвой хватает для HDD-дисков, производительность которых варьируется от 90 до 235 Мбайт/с (есть отдельные прототипы, скорость которых достигает 480 Мбайт/с). Но вот для SSD-дисков этого недостаточно, уже сейчас их производительность достигает от 3000 до 3500 Мбайт/с. SAS-интерфейс также не подойдет, его максимальная скорость всего лишь 1200 Мбайт/c.
Для того, чтобы реализовать весь потенциал твердотельных накопителей, великие умы решили использовать PCIe-интерфейс. Сейчас он позволяет передавать данные со скоростью от 8 до 32 Гбайт/c. Чтобы унифицировать подключение SSD к PCIe-интерфейсу, была разработана спецификация NVMe. Точно так же, как в свое время была создана спецификация для подключения USB-Flash-накопителей.
Полностью разбирать NVMe мы не будем. В этой статье я хочу поделиться с вами сильно заинтересовавшей меня особенностью — NVMe Namespaces, или Пространства имен.
Надеюсь, среди читателей есть те, кто интересуется изучением этой технологии. Буду рад комментариям опытных пользователей. А если вы, как и я, только начинаете разбираться в теме, рекомендую ознакомиться с циклом статей об истории SSD. В свое время она помогла мне утрамбовать и разложить по полочкам много хлама в моей голове.
Ближе к NVMe
NVMe в Linux
Начну издалека. К изучению и поиску информации о пространствах имен меня побудил вопрос: «Почему NVMe-диски в Linux называются именно так?»
Все привыкли к обозначению дисков в Linux в виде блочных устройств. Они представляют собой файловые дескрипторы, которые обеспечивают интерфейс для взаимодействия с физическими или виртуальными устройствами. И такие устройства имеют не случайное, а вполне строгое название, содержащее некоторую информацию. Обратимся к следующему выводу из devfs:
root@thinkpad-e14:~$ ls -l /dev/ | grep -E "nvme" crw------- 1 root root 241, 0 окт 25 22:04 nvme0 brw-rw---- 1 root disk 259, 0 окт 25 22:04 nvme0n1 brw-rw---- 1 root disk 259, 1 окт 25 22:04 nvme0n1p1 brw-rw---- 1 root disk 259, 2 окт 25 22:04 nvme0n1p2 brw-rw---- 1 root disk 259, 3 окт 25 22:04 nvme0n1p3
Здесь перечислены все NVMe-устройства, подключенные к рабочей машине. Рассмотрим блочное устройства /dev/nvme0n1p1. Часть nvme, как ни странно, применяется для NVMe-устройств. Число, идущее следом, обозначает порядковый номер контроллера диска, который отвечает за все операции, производимые с накопителем. Заключительная часть p1 указывает на номер раздела на диске. И наконец, часть, которая заслуживает нашего внимания, — n1. Это и есть номер пространства.
Для простоты можно также провести некоторую аналогию с обыкновенными SSD:
/dev/sda — аналог /dev/nvme0n1
/dev/sda1 — аналог /dev/nvme0n1p1
Обратите внимание на устройство /dev/nvme0. Это NVMe-контроллер. Он является символьным устройством. Таким образом, мы можем обращаться к нему, отправляя определенные команды, чем мы и воспользуемся далее.
Namespace vs Partition
У вас может возникнуть вопрос: чем namespace отличается от partition? Отбросим все возможности и преимущества NVMe Namespace. Partition — это раздел диска на уровне хоста. Namespace же является разделом на уровне контроллера. То есть Namespace является неким логическим пространством, с которым хост работает как с блочным устройством.
Еще один уровень разделов добавляет гибкости в организации системы хранения, что позволяет использовать различные технологии, направленные на увеличение надежности, производительности и безопасности данных. Мы рассмотрим их позже.
Параметры NVMe-контроллера
Всеми операциями с данными занимается специальный NVMe-контроллер. Помимо этого, в своей памяти он хранит метаданные о себе и внутреннем устройстве информации: серийный номер, модель, всевозможные настройки диска, пространств, закрепленных за ним, формат данных и так далее.
Предлагаю рассмотреть их под микроскопом. Для этого я отправил контроллеру специальную команду, в ответ на которую он вернул метаданные. Позже я объясню, как это сделать, а сейчас взгляните на них. Так как данных достаточно много, я не стал вставлять их целиком, но вы обязаны знать, что те параметры, о которых я буду говорить далее, на самом деле существуют:
Метаданные хранятся в контроллере в виде последовательности байтов в порядке от старшего к младшему, поэтому далее я буду придерживаться следующего формата записи:
[интервал в байтах (формата Big-Endian)] / название параметра / расшифровка.
Пример для лучшего понимания. Следующая запись означает, что с 71 по 64 байт хранится значение параметра fr, который расшифровывается как firmware revision:
[71:64] / fr / firmware revision.
[23:4] / sn / serial number. Содержит серийный номер контроллера.
[63:24] / mn / model number. Содержит номер модели, или part number.
[71:64] / fr / firmware revision. Содержит номер ревизии прошивки контроллера.
[257:256] / oacs / optional admin command support. Указывает на наличие дополнительных команд и функций контроллера. Состоит он из 16 бит, каждый из которых отвечает за определенную команду. Если бит равен 1, то контроллер дает возможность:
- [15:10] — зарезервированы;
- [9] — получить статус LBA;
- [8] — получить доступ к дорбелл буферу («Doorbell Buffer Config»);
- [7] — управлять виртуализацией («Virtualization Management»);
- [6] — использовать команды NVMe-Mi Recieve и NVMe-Mi Send («NVMe Management Interface»);
- [5] — использовать директивы («Directives»);
- [4] — использовать команды для самопроверки («Self-Test Commands»);
- [3] — управлять пространствами имен («Namespace Management»);
- [2] — обновлять прошивку контроллера (команды «Firmware Commit» и «Firmware Download»);
- [1] — форматировать пространства имен («NVM Format»);
- [0] — поддержка команд протокола безопасности («Security Send», «Security Receive»).
Параметры NVMe-пространств
Теперь рассмотрим метаданные NVMe-пространств:
[7:0] / nsze / namespace size. Это максимальный размер пространства в логических блоках. В данном случае — 500118192 512-байтных блоков, что, кстати, и указано в выводе blockdev:
root@thinkpad-e14:~$ sudo blockdev --getsz /dev/nvme0n1 500118192
[15:8] / ncap / namespace capacity. Это количество логических блоков, выделенных пространству для хранения данных в текущий момент.
[23:17] / nuse / namespace use. Это количество логических блоков, занятых данными в текущий момент.
Обратите внимание, что параметры nsze и ncap равны. Какой смысл указывать максимальный объем и объем, который выделен в текущий момент? Значит ли это, что в текущий момент может быть выделено меньше, чем доступно? Да!
Дело в том, что пространства имен поддерживают технологию Thin Provisioning. Это означает, что пространству выделяется только часть от указанного объема. Другая часть будет оставаться в общем пуле и выделяться этому или другим пространствам по требованию: при заполнении выделенного объема или при достижении критического порога. В общем, эта технология позволяет эффективнее использовать ресурсы для хранения данных. Подробнее и нагляднее с этой технологией можно ознакомиться в этой статье.
В нашей же ситуации nsze и ncap равны, так как пространство было создано без поддержки тонкого распределения. Выглядеть такое пространство на диске будет так:

ncap и nsize будут указывать на одно 一 общий объем пространства. В случае с использованием тонкого распределения на диске пространство будет выглядеть так:

Здесь nsze указывает на максимальный объем, ncap — на выделенный, а nuse в обоих случая показывает только то, что занято. Когда значение nuse достигнет значения ncap, то ncap увеличится, но не больше, чем nsze.
Стоит отметить, что для поддержки этой технологии необходима соответствующая настройка пространства имен, а также поддержка тонкого распределения со стороны контроллера.
[24:24] / nsfeat / namespace features. Этот параметр особенно интересен. Он указывает на наличие дополнительных особенностей пространства. Состоит он из 8 бит (перечислены они тоже в Big Endian), каждый из которых отвечает за определенную функцию. Если значение бита равно 1, то функция активна, 0 — нет:
- [7:5] — зарезервированы;
- [4:4] — поддержка дополнительных полей для оптимизации ввода-вывода;
- [3:3] — отключение переиспользования поля NGUID;
- [2:2] — поддержка делоцированных и незаписанных блоков («Context Attributes»);
- [1:1] — поддержка дополнительных полей для атомарной записи («Atomic Operations»);
- [0:0] — поддержка тонкого распределения.
- [7:5] — зарезервированы;
- [4:4] — при значении 1: указывает, что метаданные будут храниться в конце блока; при значении 0: метаданные передаются отдельным буфером;
- [3:0] — позволяет выбрать один из 16 возможных форматов LBA.
[29:29] / dps / end-to-end data protection type settings. Указывает на тип сквозной защиты данных. Состоит из 8 бит:
- [7:4] — зарезервированы;
- [3:3] — указывает на тип передачи метаданных;
- [2:0] — указывает на наличие защиты данных и ее тип.
- [7:1]— зарезервированы;
- [0:0]— значение 1 указывает на то, что данное пространство является публичным (public namespace) и может связываться с несколькими контроллерами, а значение 0 — на то, что пространство является приватным (private namespace) и привязывается только к одному.
Публичные и приватные пространства
В статье уже упоминались такие термины, как публичные пространства и приватные пространства. Но я не вносил ясности в их значение, поэтому считаю нужным уделить им немного времени.
Одним из этапов создания пространства является его закрепление за NVMe-контроллером. Доступ к пространству и будет осуществляться через тот контроллер, за которым оно закреплено. Но пространство может быть закреплено не только за одним контроллером — приватное, но и за несколькими контроллерами — публичное.
Если приватное пространство можно назвать обычным, так как из него ничего интересного слепить нельзя, то публичное пространство позволяет использовать такую возможность, как namespace multi-path.
Взаимодействие с NVMe
Приступим к вопросу взаимодействия с NVMe-устройствами: как посылать различные команды контроллеру, создавать пространства имен, форматировать их и т. д. Для этого в мире Linux существует утилита — nvme-cli. С ее помощью и можно выполнять данные операции.
nvme list
Чтобы вывести список NVMe-устройств, не обязательно обращаться к devfs подобным образом:
root@thinkpad-e14:~$ ls /dev/ | grep "nvme" nvme0 nvme0n1 nvme0n1p1 nvme0n1p2 nvme0n1p3
Или использовать lspci, чтобы узнать что же такое подключено к машине:
root@thinkpad-e14:~$ lspci | grep -E "NVMe|Non-Volatile" 07:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a809
Достаточно использовать команду nvme list:
root@thinkpad-e14:~$ nvme list -o json < "Devices" : [ < "NameSpace" : 1, "DevicePath" : "/dev/nvme0n1", "Firmware" : "9L1QFXV7", "Index" : 0, "ModelNumber" : "SAMSUNG MZALQ256HAJD-000L1", "ProductName" : "Non-Volatile memory controller: Samsung Electronics Co Ltd Device 0xa809", "SerialNumber" : "00000000000000", "UsedBytes" : 38470483968, "MaximumLBA" : 500118192, "PhysicalSize" : 256060514304, "SectorSize" : 512 >] >
В качестве примера я вывел информацию в формате JSON. Как вы можете наблюдать, здесь выводится не просто список устройств, а еще и различная информация о них. Думаю, что часть атрибутов (например, DevicePath или ModelNumber) в комментариях не нуждаются, поэтому обращаю внимание только на некоторые:
- Index — номер контроллера;
- UsedBytes — используемый объем пространства в байтах;
- PhysicalSize — максимальный объем пространства в байтах;
- SectorSize — формат LBA, или логического блока, — минимального адресуемого блока данных;
- MaximumLBA — максимальное количество логических блоков.
nvme id-ctrl, nvme id-ns
Ранее в статье, чтобы получить метаданные об устройстве, я отправлял контроллеру команду Identify. Для этого я использовал команду nvme id-ctrl для идентификации контроллера:
root@thinkpad-e14:~$ nvme id-ctrl /dev/nvme0
И nvme id-ns для идентификации пространства:
root@thinkpad-e14:~$ nvme id-ns /dev/nvme0n1
Обратите внимание, что необходимо указать устройство — контроллер или пространство имен.
nvme create-ns, nvme delete-ns
Создание пространств имен проходит в несколько этапов. Сначала его нужно сформировать. Для этого используется команда nvme create-ns:
root@thinkpad-e14:~$ nvme create-ns /dev/nvme0 --nsze 1875385008 --ncap 1875385008 --flbas 0 --nmic 1 --dps 0 create-ns: Success, created nsid:1
Аргументы, которые указываются этой команде, вам уже знакомы. Мы их рассмотрели в разделе «Параметры NVMe-пространств».
Для удаления пространства используется команда nvme delete-ns:
root@thinkpad-e14:~$ nvme delete-ns /dev/nvme0n1 delete-ns: Success, deleted nsid:1
nvme attach-ns, nvme detach-ns
Второй этап создания NVMe-пространств — привязка к контроллеру сформированного пространства. Для этого необходимо использовать команду nvme attach-ns:
root@thinkpad-e14:~$ nvme attach-ns /dev/nvme0 --namespace-id 1 --controllers 1 attach-ns: Success, nsid:1
Данной командой мы привязываем пространство с идентификатором 1 к контроллеру /dev/nvme0. Также обратите внимание на аргумент —controllers. Здесь перечисляются идентификаторы NVMe-контроллеров, к которым можно привязать пространство. Этот аргумент опционален и используется при создании публичных пространств.
По какой-то причине нумерация контроллеров начинается с 1, то есть контроллер /dev/nvme0 имеет идентификатор 1, который и указывается в аргументе —controllers. Надеюсь, это поможет вам избежать потерю времени на изучении следующей ошибки:
root@thinkpad-e14:~$ nvme attach-ns /dev/nvme0 --namespace-id 1 --controllers 0 NVMe Status:CONTROLLER_LIST_INVALID: The controller list provided is invalid(211c)
Чтобы отвязать пространство, используется команда nvme detach-ns:
root@thinkpad-e14:~$ nvme detach-ns /dev/nvme0n1 --namespace-id 1 --controllers 1 detach-ns: Success, nsid:1
После этого пространство исчезает из списка блочных устройств и его становится невозможно использовать. В аргументе —controllers также необходимо указывать только те контроллеры, от которых вы хотите отвязать пространство.
nvme reset
После привязки пространства к контроллеру, как правило, его можно использовать для работы. Однако случается так, что контроллер не может увидеть пространства. В таком случае его необходимо перезапустить — использовать команду nvme reset.
nvme format
В случае если необходимо изменить формат LBA у пространства, на помощь приходит команда nvme format:
root@thinkpad-e14:~$ nvme format /dev/nvme0n1 --lbaf 0 Success formatting namespace:1
Аргумент —lbaf указывает на формат LBA.
Однако эту команду также можно использовать и для безопасной затирки данных на NVMe-накопителе:
root@thinkpad-e14:~$ nvme format /dev/nvme0n1 --ses 1 -r Success formatting namespace:1
Аргумент —ses указывает на уровень затирки:
- 1 — удалить все данные;
- 2 — удалить зашифрованные данные.
Применение
Возможных вариантов использования пространств много. В основном они используются для увеличения производительности, резервирования и применяются в СХД, однако есть и более приземленные варианты использования.
Spare Area
Начнем с довольно обычной практикой использования. Spare Area, или Резервная область, была придумана еще до NVMe. Это специальное пространство на твердотельном накопителе, которое используется самим контроллером для внутренних операций и недоступно хосту.
Изменяя размер пространств, мы можем изменить и размер резервной области. Дело в том, что весь объем диска равен сумме объемов всех пространств и объема резервной области:

Соответственно, если мы уменьшим общий объем пространств, то оставшийся объем уйдет в пользу резервной области.
Если вы хотите узнать больше про резервную область, можете обратиться к этой статье.
Шифрование и изоляция
NVMe-диски поддерживают самошифрование по спецификации OPAL. Более того, для каждого пространства имен используются различные ключи шифрования.
Также контроллер предоставляет возможность защиты от записи. Существует три уровня:
- только для чтения до следующей перезагрузки;
- только для чтения до следующей перезагрузки после отключения функции защиты от записи;
- только для чтения на протяжении всей работы.

Это часто применяется в стационарных и мобильных ПК. В пространство, доступное только для чтения, можно поместить, например, загрузчик, чтобы избежать его повреждения. Таким же образом можно защитить другие важные данные.
Multiple Using
Как упоминалось ранее, пространства являются разделами на уровне контроллера, которые видны конечному хосту как отдельное устройство. А можно ли разделить NVMe-накопитель большого объема не несколько приватных пространств, каждое из которых затем выделить разным хостам? Можно! А с использованием сетевого протокола NVMe-oF (NVMe Over Fabrics) выделить эти пространства можно не только виртуальным хостам, но и физическим.
При таком использовании накопителя схема разделения будет выглядеть следующим образом:

NVMe-контроллер позаботится о том, чтобы пространства были изолированы друга от друга: данные будут храниться в отделенных друг от друга областях накопителя, у каждого хоста будет собственная очередь для ввода-вывода. Тем не менее, spare area, или резервные области, по-прежнему будут общими.
Namespace Multi-path и Namespace Sharing
Namespace Sharing, или Public Namespaces, подразумевает под собой возможность совместного доступа одного или нескольких хостов к пространству через два и более контроллеров.

Для чего это необходимо? На рисунке показана схема использования публичных пространств. Да, интересно: мы можем обратиться к пространству NS B через контроллер NVMe Controller 1 и NVMe Controller 2. Но я не вижу в этом какой-то полезности… пока схема не будет выглядеть следующим образом:

Здесь мы видим, что контроллеры находятся на совершенно разных хостах и у нас есть несколько независимых путей к данным: через хост-контроллеры Host A (синие контроллеры) и Host B (фиолетовые контроллеры). Теперь это можно использовать для резервирования или для наращивания производительности: если синий путь будет сильно нагружен, то мы пойдем по фиолетовому.
Такой подход позволяет организовать высокопроизводительные и высоконадежные гибкие программно-определяемые СХД из обычных серверных платформ с использованием NVMe-oF.
Итог
NVMe Namespaces — это не только ценный мех не просто логическое разделение диска. Это очень интересная и важная технология, которая позволяет строить удобные инфраструктурные решения по хранению данных. Возможности для резервирования, шифрования, увеличения срока службы диска позволяют поддерживать стабильную работу высоконагруженных сервисов.
В данной статье мы рассмотрели далеко не все аспекты и тонкости использования пространств имен. Получился, скорее, обзор или знакомство. Однако я надеюсь, что это поможет вам при желании начать более глубокое изучение технологии.
Послесловие
При написании статьи я столкнулся с попаболью рядом проблем, мешавших мне завершить работу. Будьте внимательны при выборе дисков для тестирования различных возможностей NVMe. Мне далеко не с первого раза удалось разобраться в проблемах и подобрать себе диск, который бы минимально удовлетворял моим требованиям. Да и производители дисков неохотно делятся такой информацией, а некоторые даже вводят в заблуждение, поэтому пришлось действовать наобум. В частности, я столкнулся с такими проблемами:
- Диски Samsung 970 EVO/970 EVO Plus с прошивками 2b2qexe7/2b2qexm7 не реализуют команды reset и format;
- Диски Samsung 970 EVO/970 EVO Plus с прошивками 2b2qexe7/2b2qexm7 не реализуют управление пространствами при помощи команд create-ns, delete-ns, detach-ns, atach-ns;
- Диски Samsung PM991 с прошивкой 9L1QFXV7 имеют баг, из-за которого перезагрузка контроллера при помощи команды reset приводит к ошибке;
- Диски Samsung PM991 с прошивкой 9L1QFXV7 имеют баг, из-за которого форматирование пространства при помощи команды format приводит к ошибке;
- Диски Samsung PM991 с прошивкой 9L1QFXV7 не реализуют управление пространствами при помощи команд create-ns, delete-ns, detach-ns, atach-ns.
Полезные источники

- SSD: устройство, компоненты и принципы работы
- A Quick Tour of NVM Express
- NVMe 1.4 Specification
- NVMe Namespaces
- Base NVM Express — Part One
- NVMe Command Line Interface (NVMe-CLI)
- NVMe Over Fabrics
- Также по теме
Увеличивается количество ошибок /dev/nvme0 при каждой загрузке
На SSD, который вставлен в M2, стоит Linux Mint 21. Утилиты smartctl и nvme выдают ошибки. Причем количество этих ошибок увеличивается с каждой загрузкой системы. Предыдущая система стояла где-то полгода после чего начали появляться ошибки в момент выключения компьютера и компьютер перестал сам отключаться. До этого момента я не запускал утилиты и не смотрел логи, так что скорее всего счетчик ошибок увеличивался и тогда
. error_count : 1 sqid : 0 cmdid : 0x1e status_field : 0x101(QID_INVALID: The creation of the I/O Completion Queue failed due to an invalid queue identifier specified as part of the command. An invalid queue identifier is one that is currently in use or one that is outside the range supported by the controller) phase_tag : 0 parm_err_loc : 0 lba : 0 nsid : 0 vs : 0 trtype : The transport type is not indicated or the error is not transport related. cs : 0 trtype_spec_info: 0
Мой диск: sudo nvme list
Node SN Model Namespace Usage Format FW Rev -------------- ------------- -------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 30044294321 SPCC M.2 PCIe SSD 1 2,05 TB / 2,05 TB 512 B + 0 B B00u7M10
smartctl: sudo smartctl -a -t long /dev/nvme0
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-52-generic] (local build) Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Model Number: SPCC M.2 PCIe SSD Serial Number: 30044294321 Firmware Version: B00u7M10 PCI Vendor/Subsystem ID: 0x1e4b IEEE OUI Identifier: 0x000000 Total NVM Capacity: 2 048 408 248 320 [2,04 TB] Unallocated NVM Capacity: 0 Controller ID: 0 NVMe Version: 1.3 Number of Namespaces: 1 Namespace 1 Size/Capacity: 2 048 408 248 320 [2,04 TB] Namespace 1 Formatted LBA Size: 512 Namespace 1 IEEE EUI-64: 202020 2020202020 Local Time is: Wed Oct 26 21:57:09 2022 +07 Firmware Updates (0x12): 1 Slot, no Reset required Optional Admin Commands (0x0006): Format Frmw_DL Optional NVM Commands (0x000f): Comp Wr_Unc DS_Mngmt Wr_Zero Log Page Attributes (0x03): S/H_per_NS Cmd_Eff_Lg Maximum Data Transfer Size: 256 Pages Warning Comp. Temp. Threshold: 120 Celsius Critical Comp. Temp. Threshold: 130 Celsius Supported Power States St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat 0 + 6.50W - - 0 0 0 0 0 0 1 + 5.80W - - 1 1 1 1 0 0 2 + 3.60W - - 2 2 2 2 0 0 3 - 0.0800W - - 3 3 3 3 5000 10000 4 - 0.0055W - - 4 4 4 4 5000 45000 Supported LBA Sizes (NSID 0x1) Id Fmt Data Metadt Rel_Perf 0 + 512 0 0 === START OF SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED SMART/Health Information (NVMe Log 0x02) Critical Warning: 0x00 Temperature: 41 Celsius Available Spare: 100% Available Spare Threshold: 1% Percentage Used: 0% Data Units Read: 24 148 770 [12,3 TB] Data Units Written: 26 423 442 [13,5 TB] Host Read Commands: 565 420 062 Host Write Commands: 48 759 754 Controller Busy Time: 903 Power Cycles: 204 Power On Hours: 499 Unsafe Shutdowns: 48 Media and Data Integrity Errors: 2 Error Information Log Entries: 52 Warning Comp. Temperature Time: 0 Critical Comp. Temperature Time: 0 Temperature Sensor 1: 41 Celsius Temperature Sensor 2: 41 Celsius Temperature Sensor 3: 41 Celsius Temperature Sensor 4: 41 Celsius Temperature Sensor 5: 41 Celsius Temperature Sensor 6: 41 Celsius Temperature Sensor 7: 41 Celsius Temperature Sensor 8: 41 Celsius Error Information (NVMe Log 0x01, 16 of 64 entries) Num ErrCount SQId CmdId Status PELoc LBA NSID VS 0 1 0 0x1004 0x0004 0x000 0 0 - 1 2 0 0x0027 0x0202 0x000 0 0 - 2 3 0 0x0028 0x0202 0x000 0 0 - 3 4 0 0x601a 0x0004 0x000 0 0 - 4 5 0 0x001e 0x0202 0x000 0 0 - 5 6 0 0x0027 0x0202 0x000 0 0 - 6 7 0 0x0028 0x0202 0x000 0 0 - 7 8 0 0x600a 0x0004 0x000 0 0 - 8 9 0 0x1002 0x0004 0x000 0 0 - 9 10 0 0x1000 0x0004 0x000 0 0 - 10 11 0 0x001e 0x0202 0x000 0 0 - 11 12 0 0x0027 0x0202 0x000 0 0 - 12 13 0 0x0028 0x0202 0x000 0 0 - 13 3406 2 0x03a2 0x0281 0x000 2687963448 0 - 14 3407 2 0x03a2 0x0281 0x000 2687963448 0 - 15 3408 2 0x03a2 0x0281 0x000 2687963448 0 - . (48 entries not read)
sudo nvme error-log /dev/nvme0 :
Error Log Entries for device:nvme0 entries:64 . Entry[ 0] . error_count : 1 sqid : 0 cmdid : 0x1004 status_field : 0x2(INVALID_FIELD: A reserved coded value or an unsupported value in a defined field) phase_tag : 0 parm_err_loc : 0 lba : 0 nsid : 0 vs : 0 trtype : The transport type is not indicated or the error is not transport related. cs : 0 trtype_spec_info: 0 . Entry[ 1] . error_count : 2 sqid : 0 cmdid : 0x27 status_field : 0x101(QID_INVALID: The creation of the I/O Completion Queue failed due to an invalid queue identifier specified as part of the command. An invalid queue identifier is one that is currently in use or one that is outside the range supported by the controller) phase_tag : 0 parm_err_loc : 0 lba : 0 nsid : 0 vs : 0 trtype : The transport type is not indicated or the error is not transport related. cs : 0 trtype_spec_info: 0 . Entry[ 2] . error_count : 3 sqid : 0 cmdid : 0x28 status_field : 0x101(QID_INVALID: The creation of the I/O Completion Queue failed due to an invalid queue identifier specified as part of the command. An invalid queue identifier is one that is currently in use or one that is outside the range supported by the controller) phase_tag : 0 parm_err_loc : 0 lba : 0 nsid : 0 vs : 0 trtype : The transport type is not indicated or the error is not transport related. cs : 0 trtype_spec_info: 0 . Entry[ 3] . error_count : 4 sqid : 0 cmdid : 0x601a status_field : 0x2(INVALID_FIELD: A reserved coded value or an unsupported value in a defined field) phase_tag : 0 parm_err_loc : 0 lba : 0 nsid : 0 vs : 0 trtype : The transport type is not indicated or the error is not transport related. cs : 0 trtype_spec_info: 0 . Entry[ 4] .
cat /var/log/syslog | grep -i smart | grep -i nvm :
Oct 22 19:53:15 silart-desk smartd[3829]: Device: /dev/nvme0, opened Oct 22 19:53:15 silart-desk smartd[3829]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 22 19:53:15 silart-desk smartd[3829]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 22 19:53:15 silart-desk smartd[3829]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 22 19:53:15 silart-desk smartd[3829]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 22 21:53:15 silart-desk smartd[3829]: Device: /dev/nvme0, number of Error Log entries increased from 5 to 6 Oct 23 14:21:09 silart-desk smartd[930]: Device: /dev/nvme0, opened Oct 23 14:21:09 silart-desk smartd[930]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 23 14:21:09 silart-desk smartd[930]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 23 14:21:09 silart-desk smartd[930]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 14:21:09 silart-desk smartd[930]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 23 14:21:09 silart-desk smartd[930]: Device: /dev/nvme0, number of Error Log entries increased from 6 to 7 Oct 23 14:21:09 silart-desk smartd[930]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 14:36:00 silart-desk smartd[958]: Device: /dev/nvme0, opened Oct 23 14:36:00 silart-desk smartd[958]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 23 14:36:00 silart-desk smartd[958]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 23 14:36:00 silart-desk smartd[958]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 14:36:00 silart-desk smartd[958]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 23 14:36:00 silart-desk smartd[958]: Device: /dev/nvme0, number of Error Log entries increased from 7 to 8 Oct 23 14:36:00 silart-desk smartd[958]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 14:38:02 silart-desk smartd[964]: Device: /dev/nvme0, opened Oct 23 14:38:02 silart-desk smartd[964]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 23 14:38:02 silart-desk smartd[964]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 23 14:38:02 silart-desk smartd[964]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 14:38:02 silart-desk smartd[964]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 23 14:38:02 silart-desk smartd[964]: Device: /dev/nvme0, number of Error Log entries increased from 8 to 9 Oct 23 14:38:02 silart-desk smartd[964]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 15:09:11 silart-desk smartd[962]: Device: /dev/nvme0, opened Oct 23 15:09:11 silart-desk smartd[962]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 23 15:09:11 silart-desk smartd[962]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 23 15:09:11 silart-desk smartd[962]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 15:09:11 silart-desk smartd[962]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 23 15:09:11 silart-desk smartd[962]: Device: /dev/nvme0, number of Error Log entries increased from 9 to 10 Oct 23 15:09:11 silart-desk smartd[962]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 15:20:51 silart-desk smartd[923]: Device: /dev/nvme0, opened Oct 23 15:20:51 silart-desk smartd[923]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 23 15:20:51 silart-desk smartd[923]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 23 15:20:51 silart-desk smartd[923]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 15:20:51 silart-desk smartd[923]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 23 15:20:51 silart-desk smartd[923]: Device: /dev/nvme0, number of Error Log entries increased from 10 to 11 Oct 23 15:20:51 silart-desk smartd[923]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 19:31:29 silart-desk smartd[925]: Device: /dev/nvme0, opened Oct 23 19:31:29 silart-desk smartd[925]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 23 19:31:29 silart-desk smartd[925]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 23 19:31:29 silart-desk smartd[925]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 19:31:29 silart-desk smartd[925]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 23 19:31:29 silart-desk smartd[925]: Device: /dev/nvme0, number of Error Log entries increased from 11 to 12 Oct 23 19:31:29 silart-desk smartd[925]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 19:54:10 silart-desk smartd[1101]: Device: /dev/nvme0, opened Oct 23 19:54:10 silart-desk smartd[1101]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 23 19:54:10 silart-desk smartd[1101]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 23 19:54:10 silart-desk smartd[1101]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 19:54:10 silart-desk smartd[1101]: Monitoring 3 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 23 19:54:10 silart-desk smartd[1101]: Device: /dev/nvme0, number of Error Log entries increased from 12 to 13 Oct 23 19:54:10 silart-desk smartd[1101]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 21:05:39 silart-desk smartd[1094]: Device: /dev/nvme0, opened Oct 23 21:05:39 silart-desk smartd[1094]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 23 21:05:39 silart-desk smartd[1094]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 23 21:05:39 silart-desk smartd[1094]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 21:05:39 silart-desk smartd[1094]: Monitoring 3 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 23 21:05:39 silart-desk smartd[1094]: Device: /dev/nvme0, number of Error Log entries increased from 13 to 14 Oct 23 21:05:39 silart-desk smartd[1094]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 23:26:00 silart-desk smartd[1147]: Device: /dev/nvme0, opened Oct 23 23:26:00 silart-desk smartd[1147]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 23 23:26:00 silart-desk smartd[1147]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 23 23:26:00 silart-desk smartd[1147]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 23 23:26:00 silart-desk smartd[1147]: Monitoring 3 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 23 23:26:00 silart-desk smartd[1147]: Device: /dev/nvme0, number of Error Log entries increased from 14 to 15 Oct 23 23:26:00 silart-desk smartd[1147]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 24 21:25:02 silart-desk smartd[1100]: Device: /dev/nvme0, opened Oct 24 21:25:02 silart-desk smartd[1100]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 24 21:25:02 silart-desk smartd[1100]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 24 21:25:02 silart-desk smartd[1100]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 24 21:25:02 silart-desk smartd[1100]: Monitoring 3 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 24 21:25:02 silart-desk smartd[1100]: Device: /dev/nvme0, number of Error Log entries increased from 15 to 16 Oct 24 21:25:02 silart-desk smartd[1100]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 24 23:33:03 silart-desk smartd[1043]: Device: /dev/nvme0, opened Oct 24 23:33:03 silart-desk smartd[1043]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 24 23:33:03 silart-desk smartd[1043]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 24 23:33:03 silart-desk smartd[1043]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 24 23:33:03 silart-desk smartd[1043]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 24 23:33:03 silart-desk smartd[1043]: Device: /dev/nvme0, number of Error Log entries increased from 16 to 17 Oct 24 23:33:03 silart-desk smartd[1043]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 24 23:38:02 silart-desk smartd[1042]: Device: /dev/nvme0, opened Oct 24 23:38:02 silart-desk smartd[1042]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 24 23:38:02 silart-desk smartd[1042]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 24 23:38:02 silart-desk smartd[1042]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 24 23:38:02 silart-desk smartd[1042]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 24 23:38:02 silart-desk smartd[1042]: Device: /dev/nvme0, number of Error Log entries increased from 17 to 18 Oct 24 23:38:02 silart-desk smartd[1042]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 24 23:52:49 silart-desk smartd[1044]: Device: /dev/nvme0, opened Oct 24 23:52:49 silart-desk smartd[1044]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 24 23:52:49 silart-desk smartd[1044]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 24 23:52:49 silart-desk smartd[1044]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 24 23:52:49 silart-desk smartd[1044]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 24 23:52:49 silart-desk smartd[1044]: Device: /dev/nvme0, number of Error Log entries increased from 18 to 19 Oct 24 23:52:49 silart-desk smartd[1044]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 00:07:43 silart-desk smartd[1028]: Device: /dev/nvme0, opened Oct 25 00:07:43 silart-desk smartd[1028]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 25 00:07:43 silart-desk smartd[1028]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 25 00:07:43 silart-desk smartd[1028]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 00:07:43 silart-desk smartd[1028]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 25 00:07:43 silart-desk smartd[1028]: Device: /dev/nvme0, number of Error Log entries increased from 19 to 20 Oct 25 00:07:43 silart-desk smartd[1028]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 18:58:39 silart-desk smartd[1044]: Device: /dev/nvme0, opened Oct 25 18:58:39 silart-desk smartd[1044]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 25 18:58:39 silart-desk smartd[1044]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 25 18:58:39 silart-desk smartd[1044]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 18:58:39 silart-desk smartd[1044]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 25 18:58:39 silart-desk smartd[1044]: Device: /dev/nvme0, number of Error Log entries increased from 20 to 21 Oct 25 18:58:39 silart-desk smartd[1044]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 23:41:36 silart-desk smartd[1014]: Device: /dev/nvme0, opened Oct 25 23:41:36 silart-desk smartd[1014]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 25 23:41:36 silart-desk smartd[1014]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 25 23:41:36 silart-desk smartd[1014]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 23:41:36 silart-desk smartd[1014]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 25 23:41:36 silart-desk smartd[1014]: Device: /dev/nvme0, number of Error Log entries increased from 21 to 34 Oct 25 23:41:36 silart-desk smartd[1014]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 26 00:16:30 silart-desk smartd[1034]: Device: /dev/nvme0, opened Oct 26 00:16:30 silart-desk smartd[1034]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 26 00:16:30 silart-desk smartd[1034]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 26 00:16:30 silart-desk smartd[1034]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 26 00:16:30 silart-desk smartd[1034]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 26 00:16:30 silart-desk smartd[1034]: Device: /dev/nvme0, number of Error Log entries increased from 34 to 41 Oct 26 00:16:30 silart-desk smartd[1034]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 21:59:10 silart-desk smartd[1043]: Device: /dev/nvme0, opened Oct 25 21:59:10 silart-desk smartd[1043]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 25 21:59:10 silart-desk smartd[1043]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 25 21:59:10 silart-desk smartd[1043]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 21:59:10 silart-desk smartd[1043]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 25 21:59:10 silart-desk smartd[1043]: Device: /dev/nvme0, number of Error Log entries increased from 41 to 45 Oct 25 21:59:10 silart-desk smartd[1043]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 22:33:55 silart-desk smartd[1039]: Device: /dev/nvme0, opened Oct 25 22:33:55 silart-desk smartd[1039]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 25 22:33:55 silart-desk smartd[1039]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 25 22:33:55 silart-desk smartd[1039]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 22:33:55 silart-desk smartd[1039]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 25 22:33:55 silart-desk smartd[1039]: Device: /dev/nvme0, number of Error Log entries increased from 45 to 49 Oct 25 22:33:55 silart-desk smartd[1039]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 22:44:34 silart-desk smartd[1019]: Device: /dev/nvme0, opened Oct 25 22:44:34 silart-desk smartd[1019]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 25 22:44:34 silart-desk smartd[1019]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 25 22:44:34 silart-desk smartd[1019]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 25 22:44:34 silart-desk smartd[1019]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 25 22:44:34 silart-desk smartd[1019]: Device: /dev/nvme0, number of Error Log entries increased from 49 to 51 Oct 25 22:44:34 silart-desk smartd[1019]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 26 21:22:46 silart-desk smartd[1017]: Device: /dev/nvme0, opened Oct 26 21:22:46 silart-desk smartd[1017]: Device: /dev/nvme0, SPCC M.2 PCIe SSD, S/N:30044294321, FW:B00u7M10, 2.04 TB Oct 26 21:22:46 silart-desk smartd[1017]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Oct 26 21:22:46 silart-desk smartd[1017]: Device: /dev/nvme0, state read from /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state Oct 26 21:22:46 silart-desk smartd[1017]: Monitoring 1 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices Oct 26 21:22:46 silart-desk smartd[1017]: Device: /dev/nvme0, number of Error Log entries increased from 51 to 52 Oct 26 21:22:46 silart-desk smartd[1017]: Device: /dev/nvme0, state written to /var/lib/smartmontools/smartd.SPCC_M_2_PCIe_SSD-30044294321.nvme.state
Можно видеть такую запись:
smartd[1017]: Device: /dev/nvme0, number of Error Log entries increased from 51 to 52
Количество постоянно увеличивается.
Вопрос: С чем это может быть связано?
Получается что со временем система деградирует.
Сдавал SSD в ДНС где местные специалисты тестировали диск и ничего не нашли. Думал что там работают халтурщики. Написал скрипт на Python’е, который сначала пишет блоки данных прямо в блочное устройство /dev/nvme0, заполняя весь диск, а потом читает записанные блоки, считает md5 и сравнивает с первоначальным. Оказалось что все данные были прочитаны верно.
Пробовал перепрошить диск. Установил винду, оказалось что прошивка самая свежая. Обновил прошивку материнской платы — тоже не помогло.
NVMe в RHEL7
Сводка: Спецификация NVM Express (NVMe) или Non-Volatile Memory Host Controller Interface Specification (NVMHCI) — это спецификация для доступа к твердотельным накопителям
- Содержание статьи
- Свойства статьи
- Оцените эту статью
Возможно, эта статья была переведена автоматически. Если вы хотите поделиться своим мнением о ее качестве, используйте форму обратной связи в нижней части страницы.
Содержание статьи
Симптомы
Что такое NVMe?
NVM Express (NVMe) или Non-Volatile Memory Host Controller Interface Specification (NVMHCI) — это спецификация на протоколы доступа к твердотельным накопителям, подключенным по шине PCI Express (PCIe). NVM — аббревиатура, означающая энергонезависимую память (non-volatile memory), которая используется в твердотельных накопителях. NVMe определяет оптимизированный интерфейс регистра, набор команд и набор функций для твердотельных накопителей PCIe. NVMe нацелена на стандартизацию твердотельных накопителей PCIe и повышение производительности.
Твердотельные накопители PCIe, разработанные в соответствии со спецификацией NVMe, являются твердотельными накопителями PCIe на базе NVMe. Подробнее о спецификации NVMe см. по ссылке: http://www.nvmexpress.org/. Устройства NVMe, используемые в настоящее время, совместимы с NVMe 1.0c.
Ниже мы рассмотрим поддержку устройств NVMe в RHEL 7.
Причина
Информация о причинах отсутствует.
Разрешение
ПРИМЕЧАНИЕ. В настоящее время DELL поддерживает устройства NVMe с драйвером для RHEL 7 от производителя оборудования.
Ниже приведен список рассматриваемых тем.
- Функции, поддерживаемые NVMe
- NVMe device Список устройств и их возможностей
- Проверка максимального размера полезной нагрузки (MaxPayLoad)
- Драйвер NVMe Вывод сведений о драйвере
- Узел устройства NVMe и правила обозначения
- Форматирование в системе xfs и монтирование устройства
- Использование утилиты ledmon для управления индикаторами объединительной платы для устройства NVMe
Функции, поддерживаемые NVMe
Драйвер NVMe предоставляет следующие возможности.
- Основные операции ввода-вывода
- «Горячее» подключение
- Поддержка загрузки (UEFI и Legacy)
В следующей таблице перечислены функции драйвера RHEL 7 (от производителя), поддерживаемые для NVMe на компьютерах поколений 12G и 13G.
| Поколение | Основные операции ввода-вывода | «Горячее» подключение | Загрузка UEFI | Загрузка Legacy (традиционная) |
|---|---|---|---|---|
| 13 G | Да | Да | Да | нет |
| 12 G | Да | Да | нет | нет |
Таблица 1. Поддержка драйверов RHEL 7
NVMe device Список устройств и их возможностей
1) Перечислите сведения о RHEL 7 ОС
Linux localhost. локалдомаин 3.10.0-123.el7.x86_64 #1 SMP пн 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
2) получите сведения об устройстве с помощью лспЦи
-утилиты a) мы поддерживаем жесткие диски NVMe на основе Samsung. Сначала получите идентификатор слота PCI с помощью следующей команды
[root@localhost ~] # лспЦи | grep-i Samsung
45:00.0 энергонезависимого контроллера памяти: Контроллер твердотельного накопителя по Samsung Ltd, 171X (редакция 03)
47:00.0 энергонезависимого контроллера памяти: Контроллер твердотельных накопителей бытовой электроники по Samsung Ltd, 171X (редакция 03)
b) в приведенном ниже списке отображается идентификатор слота [Фиг 1]. Здесь «45:00.0» и «47:00.0» — слоты, к которым подключены накопители. лспЦи список идентификаторов слотов
a) используйте идентификатор слота и используйте указанные ниже параметры лспЦи для получения сведений об устройстве, возможностей и соответствующего драйвера
[root@localhost ~] # лспЦи-s 45:00.0-v
45:00.0 энергонезависимого контроллера памяти: 171X (версия 03 03) контроллера твердотельного накопителя Samsung Ltd. (Prog-if 02)
. Dell Express Flash NVMe XS1715 SSD 800 Гбайт с
физическим слотом: 25
флагов: главный порт, Fast девсел, задержка 0, память IRQ 76
по адресу d47fc000 (64-разрядная, без предварительной выборки) [size = 16 КБ]
возможности: Capabilities: [c0] Power Management version 3 C8 MSI: Enable-count = 1/32-разрядная + 64-разрядная
функциональность: E0 MSI-X: Enable + Count = более 129 маскированных
возможностей: Capabilities: [70] Express Endpoint, MSI 00 [40] информация, относящаяся к вендору: Len = 24
возможности: Capabilities: [100] Advanced Error Reporting [180] #19
возможностей: [150] информация, относящаяся к вендору: Rev = 1 len = 02c
драйвер ядра, который используется: nvme
на приведенном ниже [фиг 2] показано устройство Samsung nvme и приведенные в нем сведения о устройствах. Кроме того, в этом случае для этого устройства отображается имя драйвера nvme.

рис. 2: лспЦи список сведений о устройствах nvme
Проверка максимального размера полезной нагрузки (MaxPayLoad)
Проверьте значение максимального размера полезной нагрузки (MaxPayload), выполнив следующие команды. Он должен присвоить ему размер 256 байт [фиг. 3]
[root@localhost Home] # лспЦи | grep-i Samsung
45:00.0 энергонезависимого устройства памяти: Контроллер твердотельного накопителя по Samsung Ltd, 171X (версия 03)
[root@localhost Home] # лспЦи-ВВВ-s 45:00.0

рис. 3: Для параметра MaxPayload установлено значение 256 байт
Драйвер NVMe Вывод сведений о драйвере
1) используйте команду модинфо для просмотра сведений о Дивер
[root@localhost ~] # модинфо nvme
имя файла: filename: /lib/modules/3.10.0-123.el7.x86_64/extra/nvme/nvme.ko 0,8 — лицензия Dell 1,17
Автор ГПЛ: Сркверсион корпорации Samsung в отношении бытовой электроники
Псевдоним AB81DD9D63DD5DADDED9253: PCI: v0000144Dd0000A820sv * SD * BC * SC * i *
зависит от следующих условий:
вермагик: vermagic: 3.10.0-123.el7.x86_64 SMP mod_unload modversions nvme_major: int
ПАРМ: use_threaded_interrupts: int
ниже [фиг 4] показывает подробные сведения о драйвере nvme. ко

рис. 4. Modinfo — вывод информации о драйвере
Узел устройства NVMe и правила обозначения
1) в категории CAT/прок/партитионс отображается узел устройства nvme.
а) после команды выполняется вывод списка устройств nvme в виде nvme0n1 и nvme1n1
существенная несущественная #blocks имя
259 0 781412184 nvme0n1
8 0 1952448512 SDA
8 1 512000 sda1
8 2 1951935488 sda2
11 0 1048575 sr0
253 0 52428800 DM-0
253 1 16523264 DM-1
253 2 1882980352 DM-2
259 3 390711384 nvme1n1
разделение устройства с помощью любых инструментов разбиения (fdisk, в составе)
b) при повторном выполнении следующей команды выводится список устройств nvme вместе с разделами
Major несущественный #blocks имя
259 0 781412184 nvme0n1
259 1 390705068 nvme0n1p1
259 2 390706008 nvme0n1p2
8 0 1952448512 SDA
8 1 512000 sda1
8 2 1951935488 sda2
11 0 1048575 sr0
253 0 52428800 DM-0
253 1 16523264 DM-1
253 2 1882980352 DM-2
259 3 390711384 nvme1n1
259 4 195354668 nvme1n1p1
259 5 195354712 nvme1n1p2
Правила обозначения
Ниже (рис. 5) объясняется принцип обозначения узлов устройства.
Номер сразу после строки «nvme» является номером устройства.
nvme0n1 — номер устройства 0.
Разделы добавляются после имени устройства с префиксом «p».
nvme0n1p1 — раздел 1
nvme1n1p2 — раздел 2
nvme0n1p1 — раздел 1 устройства 0
nvme0n1p2 — раздел 2 устройства 0
nvme1n1p1 — раздел 1 устройства 1
nvme1n1p2 — раздел 2 устройства 1 Правила обозначения узлов устройства
Форматирование в системе xfs и монтирование устройства
1) с помощью следующей команды форматируется раздел nvme 1 на устройстве 1 в XFS
[root@localhost ~] # МКФС. XFS/dev/nvme1n1p1
Meta-Data =/dev/nvme1n1p1 исизе = 256 агкаунт = 4, агсизе = 12209667 = БЛКС = 512 attr = 4, сектсз =
1 = 512 attr = 2, projid32bit = 1 = =
данные = бсизе = 4096 блоков = 48838667, имакспкт = 25
= Сунит = 0 свидс = 0 БЛКС
Naming = версия 2 bsize = 4096 ASCII-CI = 0 ftype = 0
Журнал = внутренний журнал bsize = 4096 блоков = 23847, Version = 2
= sectsz = 512 sunit = 0 blks, = 1
в режиме реального времени = нет extsz = 4096 блоков = 0, rtextents = 0
2) установите устройство в точку монтирования и перечислите те же
[root@localhost ~] # Mount | grep-i nvme
/dev/nvme1n1p1 в/mnt типа xfs (RW, relatime, seclabel, attr2, inode64, с неисправностью)
с помощью утилиты ledmon для управления индикаторами объединительной платы для устройств nvme
ledmon и ledctl — это две утилиты для Linux, которые можно использовать для управления состоянием индикаторов на распределительных платах жестких дисков. Как правило, Индикаторы объединительной платы управляются аппаратным контроллером RAID (PERC), но при использовании программного RAID-контроллера на Linux (мдадм) для твердотельного накопителя NVMe PCIE демон ледмон отслеживает состояние массива дисков и обновляет состояние индикаторов дисков.
Для дополнительной прочтения проверяйте канал связи https://www.Dell.com/support/article/SLN310523/ .
Установка и использование утилиты ledmon/ledctl
1) Установка опенипми и ледмон/ледктл:
выполните следующие команды для установки опенипми и ледмон
[root@localhost ~] # Юм Install опенипми
[root@localhost ~] # Юм Install ледмон-0,79 дюйма-3.el7.x86_64. rpm
2) используйте утилиты ледмод/ледктл
, выполняющие ледктл и ледмон параллельно, ledmon в конечном итоге перезапишет параметры ledctl
) Start и проверяет состояние IPMI, как показано на [Fig. 6] с помощью следующей команды
[root@localhost ~] # systemctl Start IPMI

рис. 6. Запуск и состояние IPMI
A) Запуск ledmod.
B) На рис. 7 показано состояние светодиодного индикатора после выполнения ledmon для рабочего состояния устройства.

Рис. 7. Состояние светодиодных индикаторов после ледмон Run для устройства (зеленый)
a) с помощью приведенной ниже команды будет мигать индикатор диска [на узле устройства/dev/nvme0n1]
[root@localhost ~] # ледктл найти =/dev/nvme0n1
под командой будет мигать и то, и другое. Индикаторы дисков [на узле устройства/dev/nvme0n1 и/dev/nvme1n1]
, а с помощью следующей команды будет отключен индикатор обнаружения
[root@localhost ~] # ледктл locate_off =/dev/nvme0n1