Що таке простори імен nvme? Як вони працюють?


18

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

Наприклад: / dev / nvme0n1p2

Мені стало цікаво, що таке частина n1, і після невеликого пошуку, схоже, що ідентифікується nvme 'простір імен'. Визначення для нього були дещо невиразними: "Простір імен NVMe - це кількість енергонезалежної пам'яті (NVM), яку можна відформатувати в логічні блоки".

Отже, чи діє це як розділ, визначений на рівні апаратного контролера, а не в таблиці розділів MBR або GPT? Чи може простір імен охоплювати декілька фізичних nvme ssd? Наприклад, ви можете створити простір імен, який об'єднує сховище з декількох ssd в єдиний логічний простір імен, подібний до RAID 0?

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

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

Відповіді:


17

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

Однак типові NVMe SSD не можна поєднувати, оскільки кожен з них забезпечує власне сховище та контролер, приєднаний до порту PCI Express, а точка доступу є контролером над просторами імен - таким чином, простір імен не може групувати кілька контролерів (кілька контролерів можуть забезпечити доступ до спільного простору імен). Краще думати про простори імен як про щось, що схоже на SCSI LUN, як це використовується у корпоративних сховищах (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.