/dev/sd
se usó originalmente para dispositivos que usan el sd-bus
controlador, que es el controlador para dispositivos SCSI (y sd
literalmente significa disco SCSI). Hoy en día se utiliza para discos SCSI, discos SATA y discos USB. La razón parece ser que ahora casi todos los dispositivos usan el protocolo de comando SCSI en la parte superior del bus que no es SCSI (el kernel trata a todos los dispositivos ATA por igual usando libata y finge que son dispositivos SCSI; crédito para @grawity), y por lo tanto vemos todos estos dispositivos como /dev/sd
.
Pero no todos los dispositivos de almacenamiento son /dev/sd
. /dev/hd
y /dev/xvd
todavía se utilizan:el primero para discos PATA/IDE y el último para dispositivos de almacenamiento en la nube (discos virtuales, etc.) y todos tienen diferentes controladores y nombres. No los ve porque el almacenamiento virtual está solo en nubes/hipervisores (y probablemente no use ninguno) y porque los discos PATA/IDE son cada vez más escasos y en la mayoría de las máquinas modernas el kernel en realidad usa ide-scsi
controlador para traducirlo al protocolo SCSI (crédito a @Wumpus Q. Wumbley).
Otros ejemplos incluyen /dev/mmcblkXpY
que es para dispositivos SD/eMMC/bare NAND/NOR y tiene el mismo esquema de nombres que /dev/nvme
y /dev/vd
que se usa nuevamente para discos virtuales en almacenamiento en la nube (crédito a @Jan Dorniak por los ejemplos adicionales).
En tu caso , se llama /dev/nvme
porque el disco está conectado a través de un puerto NVME y usa el nvme
controlador en Linux. Puedes pensar en /dev/<something>
como un dispositivo que usa <something>
conductor. Todos los controladores y nombres de dispositivos tienen sus propios estándares, no es un estándar para todos ellos, por lo que está completamente bien si el nombre de los dispositivos NVME es así. Y la razón por la que nvme
no está traducido a scsi
también es que los dos protocolos son demasiado diferentes y tal implementación sería demasiado compleja (consulte los comentarios de @grawity y @Vality para obtener información más detallada).
Además de la otra respuesta, tenga en cuenta que NVMe tiene el concepto de espacios de nombres que no encajarían en /dev/sd
$ ls -1 /dev/nvme*
/dev/nvme0
/dev/nvme0n1
/dev/nvme0n1p1
/dev/nvme0n1p2