GNU/Linux >> Linux Esercitazione >  >> Linux

Perché Linux elenca le unità NVMe come /dev/nvme0 invece di /dev/sda?

/dev/sd era originariamente utilizzato per i dispositivi che utilizzavano sd-bus driver, che è il driver per i dispositivi SCSI (e sd sta letteralmente per disco SCSI). Al giorno d'oggi è utilizzato per dischi SCSI, dischi SATA e dischi USB. Il motivo sembra essere che ora quasi tutti i dispositivi utilizzano il protocollo di comando SCSI sopra il bus non SCSI (il kernel tratta tutti i dispositivi ATA allo stesso modo usando libata e finge che siano dispositivi SCSI - grazie a @grawity), e quindi vediamo tutti questi dispositivi come /dev/sd .

Ma non tutti i dispositivi di archiviazione sono /dev/sd . /dev/hd e /dev/xvd sono ancora utilizzati:il primo per i dischi PATA/IDE e il secondo per i dispositivi di archiviazione cloud (dischi virtuali e così via) e hanno tutti driver e nomi diversi. Non li vedi perché l'archiviazione virtuale è solo su cloud/hypervisor (e probabilmente non ne usi nessuno) e perché i dischi PATA/IDE stanno diventando sempre più rari e sulla maggior parte delle macchine moderne il kernel utilizza effettivamente ide-scsi driver per tradurlo nel protocollo SCSI (credito a @Wumpus Q. Wumbley).

Altri esempi includono /dev/mmcblkXpY che è per dispositivi SD/eMMC/bare NAND/NOR e ha lo stesso schema di denominazione di /dev/nvme e /dev/vd che viene nuovamente utilizzato per i dischi virtuali nel cloud storage (credito a @Jan Dorniak per gli esempi extra).

Nel tuo caso , si chiama /dev/nvme perché il disco è connesso tramite una porta NVME e utilizza nvme driver su Linux. Puoi solo pensare a /dev/<something> come un dispositivo che utilizza <something> autista. Tutti i driver e le denominazioni dei dispositivi hanno i propri standard, non è uno standard per tutti, quindi va benissimo se la denominazione per i dispositivi NVME è così. E il motivo per cui nvme non è tradotto in scsi inoltre è che i due protocolli sono troppo diversi e una tale implementazione sarebbe troppo complessa (fare riferimento ai commenti di @grawity e @Vality per informazioni più dettagliate).


Oltre all'altra risposta, nota che NVMe ha il concetto di spazi dei nomi che non si adatterebbero a /dev/sd modello. Ad esempio, sul mio sistema:

$ ls -1 /dev/nvme*
/dev/nvme0
/dev/nvme0n1
/dev/nvme0n1p1
/dev/nvme0n1p2

Linux
  1. Come generare una password casuale in Linux usando /dev/random

  2. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  3. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

  4. Quanto sono portatili /dev/stdin, /dev/stdout e /dev/stderr?

  5. Quando usare /dev/random vs /dev/urandom?

tty (/dev/tty ) vs pts (/dev/pts) in Linux

Cosa sono i file /dev/zero e /dev/null in Linux

Come si scambia /dev/sda con /dev/sdb?

Come Linux usa /dev/tty e /dev/tty0

echo o print /dev/stdin /dev/stdout /dev/stderr

Perché sono necessari < o > per usare /dev/tcp