GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum listet Linux NVMe-Laufwerke als /dev/nvme0 anstelle von /dev/sda auf?

/dev/sd wurde ursprünglich für Geräte mit dem sd-bus verwendet Treiber, der der Treiber für SCSI-Geräte ist (und sd steht wörtlich für SCSI-Festplatte). Heutzutage wird es für SCSI-Festplatten, SATA-Festplatten und USB-Festplatten verwendet. Der Grund scheint zu sein, dass jetzt fast alle Geräte das SCSI-Befehlsprotokoll zusätzlich zum Nicht-SCSI-Bus verwenden (der Kernel behandelt alle ATA-Geräte gleich mit libata und gibt vor, sie seien SCSI-Geräte - Dank an @grawity), und deshalb Wir sehen alle diese Geräte als /dev/sd .

Aber nicht alle Speichergeräte sind /dev/sd . /dev/hd und /dev/xvd werden immer noch verwendet - erstere für PATA/IDE-Festplatten und letztere für Cloud-Speichergeräte (virtuelle Festplatten usw.) und alle haben unterschiedliche Treiber und Namen. Sie sehen sie nicht, weil sich virtueller Speicher nur auf Clouds / Hypervisoren befindet (und Sie wahrscheinlich keine verwenden) und weil PATA/IDE-Festplatten immer seltener werden und der Kernel auf den meisten modernen Maschinen tatsächlich ide-scsi Treiber, um es in das SCSI-Protokoll zu übersetzen (Dank an @Wumpus Q. Wumbley).

Weitere Beispiele sind /dev/mmcblkXpY Das ist für SD/eMMC/bare NAND/NOR-Geräte und hat das gleiche Namensschema wie /dev/nvme und /dev/vd die wiederum für virtuelle Festplatten im Cloud-Speicher verwendet wird (Dank an @Jan Dorniak für die zusätzlichen Beispiele).

In Ihrem Fall , es heißt /dev/nvme da die Festplatte über einen NVME-Port verbunden ist und den nvme verwendet Treiber unter Linux. Sie können nur an /dev/<something> denken als ein Gerät, das <something> verwendet Treiber. Alle Gerätetreiber und Benennungen haben ihre eigenen Standards, es ist nicht ein Standard für alle, also ist es völlig in Ordnung, wenn die Benennung für NVME-Geräte so ist. Und der Grund warum nvme wird nicht in scsi übersetzt Außerdem sind die beiden Protokolle zu unterschiedlich und eine solche Implementierung zu komplex (weitere Informationen finden Sie in den Kommentaren von @grawity und @Vality).


Beachten Sie zusätzlich zu der anderen Antwort, dass NVMe das Konzept von Namespaces hat, die nicht in /dev/sd passen würden Muster. Zum Beispiel auf meinem System:

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

Linux
  1. So generieren Sie ein zufälliges Passwort unter Linux mit /dev/random

  2. Wann sollte /dev/random vs. /dev/urandom verwendet werden?

  3. Linux – Was bedeutet der Buchstabe „u“ in /dev/urandom?

  4. So ordnen Sie /dev/sdX- und /dev/mapper/mpathY-Geräte vom /dev/dm-Z-Gerät zu

  5. Was sind /dev/zero- und /dev/null-Dateien in Linux

tty (/dev/tty ) vs. pts (/dev/pts) unter Linux

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Wie Linux /dev/tty und /dev/tty0 verwendet

Ist es falsch, /dev/random unter Linux mit /dev/urandom zu verknüpfen?

echo oder print /dev/stdin /dev/stdout /dev/stderr

Warum sind < oder > erforderlich, um /dev/tcp