Que sont les espaces de noms nvme? Comment travaillent-ils?

18

J'ai récemment commencé à prendre en charge Linux installé sur des appareils avec ssds nvme intégrés. J'ai remarqué que les fichiers de l'appareil avaient un numéro supplémentaire, au-delà d'un numéro identifiant le numéro de lecteur et le numéro de partition. Les lecteurs IDE / SATA / SCSI n'ont normalement qu'une lettre de lecteur et un numéro de partition.

Par exemple: / dev / nvme0n1p2

Je me suis demandé ce qu'était la partie n1, et après un peu de recherche, il semble que cela identifie un «espace de noms» nvme. Les définitions étaient assez vagues: "Un espace de noms NVMe est une quantité de mémoire non volatile (NVM) qui peut être formatée en blocs logiques."

Alors, cela agit-il comme une partition définie au niveau du contrôleur matériel, et non dans une table de partition MBR ou GPT? Un espace de noms peut-il s'étendre sur plusieurs SSD physiques NVME? Par exemple, pouvez-vous créer un espace de noms qui regroupe le stockage de plusieurs disques SSD dans un seul espace de noms logique, similaire à RAID 0?

Que feriez-vous avec un espace de noms NVME que vous ne pouvez pas déjà réaliser en utilisant des tables de partition ou LVM ou un système de fichiers qui peut gérer plusieurs volumes (comme ZFS, Btrfs, etc.)?

De plus, pourquoi semble-t-il que la numérotation des espaces de noms commence à 1 au lieu de 0? Est-ce juste quelque chose à voir avec la façon dont NVME suit les numéros d'espace de noms à un bas niveau (par exemple, les partitions commencent également à 1, pas à 0, car c'est ainsi que la norme pour les numéros de partition a été définie, donc le noyau Linux utilise simplement quel que soit le numéro de partition qui est stocké sur le disque est - je suppose que nvme fonctionne de la même manière?)

JeffFromOhio
la source

Réponses:

17

Dans NVM Express et les normes associées, les contrôleurs donnent accès au stockage divisé en un ou plusieurs espaces de noms. Les espaces de noms peuvent être créés et supprimés via le contrôleur, tant qu'il y a de la place pour eux (ou que le stockage sous-jacent prend en charge l'allocation dynamique), et que plusieurs contrôleurs peuvent donner accès à un espace de noms partagé. La façon dont le stockage sous-jacent est organisé n'est pas spécifiée par la norme, pour autant que je sache.

Cependant, les SSD NVMe typiques ne peuvent pas être combinés, car ils fournissent chacun leur propre stockage et contrôleur attachés à un port PCI Express, et le point d'accès est le contrôleur, au-dessus des espaces de noms - ainsi un espace de noms ne peut pas grouper plusieurs contrôleurs (plusieurs contrôleurs peuvent donner accès à un espace de noms partagé). Il est préférable de considérer les espaces de noms comme quelque chose qui ressemble aux LUN SCSI utilisés dans le stockage d'entreprise (SAN, etc.).

La numérotation des espaces de noms commence à 1 car c'est ainsi que fonctionnent les identificateurs d'espace de noms par contrôleur. Les espaces de noms ont également des identificateurs plus longs et uniques au monde.

Les espaces de noms peuvent être manipulés à l'aide de la nvmecommande, qui prend en charge les fonctionnalités NVMe de bas niveau, notamment:

  • le formatage, qui effectue un formatage de bas niveau et permet d'utiliser différentes fonctionnalités (effacement sécurisé, sélection du format LBA ...);
  • attacher et détacher, ce qui permet aux contrôleurs d'être attachés ou détachés d'un espace de noms (s'ils le prennent en charge et si l'espace de noms le permet).

Attacher et détacher n'est pas quelque chose que vous rencontrerez dans les lecteurs NVMe pour ordinateur portable ou de bureau. Vous l'utiliseriez avec des baies de stockage NVMe telles que celles vendues par Dell EMC, qui remplacent les SAN iSCSI du passé.

Consultez les normes NVM Express pour plus de détails (elles sont relativement faciles à lire) et cette présentation du didacticiel NVM Express pour une bonne introduction.

Stephen Kitt
la source
J'ai remarqué que la commande Linux 'nvme', en plus de la prise en charge de la suppression / création d'espaces de noms, fournit également des concepts d'attachement / détachement et de formatage d'un espace de noms (qui semble être distinct de l'opération de formatage d'un système de fichiers écrivant dans l'espace de noms). Pouvez-vous fournir des informations sur ces opérations?
JeffFromOhio
3
Voir ma réponse mise à jour.
Stephen Kitt