Cosa sono gli spazi dei nomi di nvme? Come funzionano?


18

Di recente ho iniziato a supportare Linux installato su dispositivi con nvme ssds integrato. Ho notato che i file del dispositivo avevano un numero aggiuntivo, oltre un numero che identificava il numero dell'unità e il numero della partizione. Le unità IDE / SATA / SCSI normalmente hanno solo una lettera di unità e un numero di partizione.

Ad esempio: / dev / nvme0n1p2

Mi chiedo quale fosse la parte n1 e, dopo un po 'di ricerca, sembra che identifichi uno "spazio dei nomi" nvme. Le definizioni erano vaghe: "Uno spazio dei nomi NVMe è una quantità di memoria non volatile (NVM) che può essere formattata in blocchi logici".

Quindi, questo si comporta come una partizione definita a livello di controller hardware e non in una tabella delle partizioni MBR o GPT? Uno spazio dei nomi può comprendere più nvme ssd fisiche? Ad esempio, è possibile creare uno spazio dei nomi che raggruppa l'archiviazione da più SSD in un singolo spazio dei nomi logico, simile a RAID 0?

Cosa faresti con uno spazio dei nomi NVME che non puoi già ottenere utilizzando le tabelle delle partizioni o LVM o un filesystem in grado di gestire più volumi (come ZFS, Btrfs, ecc.)?

Inoltre, perché sembra che la numerazione dello spazio dei nomi inizi da 1 anziché 0? È solo qualcosa a che fare con il modo in cui NVME tiene traccia dei numeri dello spazio dei nomi a un livello basso (ad es. Le partizioni iniziano anche da 1, non 0, perché è così che è stato impostato lo standard per i numeri di partizione, quindi il kernel di Linux utilizza qualunque sia il numero di partizione che è memorizzato su disco è - immagino che nvme funzioni allo stesso modo?)

Risposte:


17

In NVM Express e relativi standard, i controller danno accesso allo storage suddiviso in uno o più spazi dei nomi. Gli spazi dei nomi possono essere creati ed eliminati tramite il controller, purché vi sia spazio (o l'archiviazione sottostante supporti il ​​thin provisioning) e più controller possano fornire accesso a uno spazio dei nomi condiviso. Il modo in cui è organizzata la memoria sottostante non è specificato dallo standard, per quanto ne so.

Tuttavia, gli SSD NVMe tipici non possono essere combinati, poiché ciascuno di essi fornisce il proprio storage e controller collegati a una porta PCI Express e il punto di accesso è il controller, sopra gli spazi dei nomi - quindi uno spazio dei nomi non può raggruppare più controller (più controller possono fornire accesso a uno spazio dei nomi condiviso). È meglio pensare agli spazi dei nomi come qualcosa di simile ai LUN SCSI utilizzati nello storage aziendale (SAN, ecc.).

La numerazione dello spazio dei nomi inizia da 1 perché è così che funzionano gli identificatori dello spazio dei nomi per controller. Gli spazi dei nomi hanno anche identificatori più lunghi e univoci a livello globale.

Gli spazi dei nomi possono essere manipolati utilizzando il nvmecomando, che fornisce supporto per le funzionalità NVMe di basso livello, tra cui:

  • formattazione, che esegue un formato di basso livello e consente di utilizzare varie funzioni (cancellazione sicura, selezione del formato LBA ...);
  • collegamento e scollegamento, che consente ai controller di essere collegati o staccati da uno spazio dei nomi (se lo supportano e lo spazio dei nomi lo consente).

Collegare e staccare non è qualcosa che ti imbatterai nelle unità NVMe per laptop o desktop. Lo useresti con alloggiamenti di archiviazione NVMe come quelli venduti da Dell EMC, che sostituiscono le SAN iSCSI del passato.

Vedi gli standard NVM Express per i dettagli (sono relativamente facili da leggere) e questa presentazione tutorial NVM Express per una buona introduzione.


Ho notato che il comando Linux 'nvme', oltre al supporto per l'eliminazione / creazione di spazi dei nomi, fornisce anche concetti di collegamento / scollegamento e formattazione di uno spazio dei nomi (che sembra essere separato dall'operazione di formattazione di un filesystem che scrive nello spazio dei nomi). Potete fornire informazioni su quali sono tali operazioni?
— JeffFromOhio,

3
Vedi la mia risposta aggiornata.
— Stephen Kitt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.