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.