Что такое пространства имен nvme? Как они работают?


18

Недавно я начал поддерживать Linux, установленный на устройствах со встроенным nvme ssds. Я заметил, что файлы устройств имеют дополнительный номер, помимо числа, идентифицирующего номер диска и номер раздела. Диски IDE / SATA / SCSI обычно имеют только букву диска и номер раздела.

Например: / dev / nvme0n1p2

Мне стало интересно, что такое часть n1, и после небольшого поиска, похоже, что она идентифицирует nvme «пространство имен». Его определения были довольно расплывчаты: «Пространство имен NVMe - это количество энергонезависимой памяти (NVM), которое можно отформатировать в логические блоки».

Итак, действует ли это как раздел, определенный на уровне аппаратного контроллера, а не в таблице разделов MBR или GPT? Может ли пространство имен охватывать несколько физических nsme ssd? Например, вы можете создать пространство имен, которое объединяет хранилище из нескольких ssd в одно логическое пространство имен, подобное RAID 0?

Что бы вы сделали с пространством имен NVME, которого вы уже не можете достичь, используя таблицы разделов или LVM, или файловую систему, которая может управлять несколькими томами (например, ZFS, Btrfs и т. Д.)?

Кроме того, почему кажется, что нумерация пространства имен начинается с 1 вместо 0? Это как раз то, что NVME отслеживает номера пространств имен на низком уровне (например, разделы также начинаются с 1, а не с 0, потому что именно так был установлен стандарт для номеров разделов, поэтому ядро ​​Linux просто использует любой номер раздела что хранится на диске - я думаю, что nvme работает так же?)

Ответы:


17

В NVM Express и связанных стандартах контроллеры предоставляют доступ к хранилищу, разделенному на одно или несколько пространств имен. Пространства имен можно создавать и удалять с помощью контроллера, если для них есть место (или базовое хранилище поддерживает тонкую подготовку), а несколько контроллеров могут предоставлять доступ к общему пространству имен. Насколько я могу судить, порядок организации основного хранилища не определен стандартом.

Однако типичные твердотельные накопители NVMe не могут быть объединены, поскольку каждый из них предоставляет свое собственное хранилище и контроллер, подключенный к порту PCI Express, а точка доступа является контроллером над пространствами имен - таким образом, пространство имен не может группировать несколько контроллеров (несколько контроллеров могут обеспечить доступ к общему пространству имен). Пространства имен лучше рассматривать как нечто похожее на логические модули SCSI, используемые в корпоративных хранилищах (SAN и т. Д.).

Нумерация пространства имен начинается с 1, потому что так работают идентификаторы пространства имен для каждого контроллера. Пространства имен также имеют более длинные глобально уникальные идентификаторы.

Пространства имен можно манипулировать с помощью nvmeкоманды, которая обеспечивает поддержку низкоуровневых функций NVMe, включая:

  • форматирование, которое выполняет низкоуровневый формат и позволяет использовать различные функции (безопасное стирание, выбор формата LBA ...);
  • присоединение и отсоединение, которое позволяет контроллерам присоединяться или отсоединяться от пространства имен (если они поддерживают это и пространство имен позволяет).

Присоединение и отсоединение - это не то, с чем вы можете столкнуться на ноутбуках или настольных дисках NVMe. Вы будете использовать его с отсеками хранения NVMe, такими как те, которые продаются Dell EMC, которые заменяют iSCSI SAN прошлого.

Подробности смотрите в стандартах NVM Express (их относительно легко прочитать), а также в этом учебном пособии по NVM Express .


Я заметил, что команда Linux nvme, в дополнение к поддержке удаления / создания пространств имен, также предоставляет концепции присоединения / отсоединения и форматирования пространства имен (которое, кажется, отделено от операции форматирования файловой системы, записывающей в пространство имен). Можете ли вы предоставить какую-либо информацию о том, что это за операции?
JeffFromOhio

3
Смотрите мой обновленный ответ.
Стивен Китт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.