Recentemente, instalei uma unidade NVMe em meu computador Linux e notei que ela está listada como /dev/nvme0
e sua partição é /dev/nvme0p1
. Estou ciente de que é uma interface diferente das unidades SATA, mas qual é a razão pela qual está listada dessa maneira? Parece que chamar unidades /dev/sd$LETTER$PARTITIONNUMBER
é o padrão, mesmo quando as coisas têm padrões diferentes, como SCSI, e isso quebra usando números em vez de letras para denotar a unidade e o ap antes do número da partição, além do nome diferente.
/dev/sd
foi originalmente usado para dispositivos que usam osd-bus
driver, que é o driver para dispositivos SCSI (esd
literalmente significa disco SCSI). Atualmente é usado para discos SCSI, discos SATA e discos USB. A razão parece ser que agora quase todos os dispositivos usam o protocolo de comando SCSI em cima do barramento não-SCSI (o kernel trata todos os dispositivos ATA igualmente usando libata e finge que são dispositivos SCSI - crédito para @grawity) e, portanto, vemos todos esses dispositivos como arquivos/dev/sd
.Mas nem todos os dispositivos de armazenamento são
/dev/sd
./dev/hd
e/dev/xvd
ainda são usados - o primeiro para discos PATA/IDE e o último para dispositivos de armazenamento em nuvem (discos virtuais e etc.) e todos eles têm drivers e nomenclatura diferentes. Você não os vê porque o armazenamento virtual é apenas em nuvens / hipervisores (e você provavelmente não usa nenhum) e porque os discos PATA/IDE estão se tornando cada vez mais raros e na maioria das máquinas modernas o kernel realmente usaide-scsi
driver para traduzi-lo ao protocolo SCSI (crédito para @Wumpus Q. Wumbley).Outros exemplos incluem
/dev/mmcblkXpY
qual é para dispositivos SD/eMMC/NAND/NOR vazios e tem o mesmo esquema de nomenclatura/dev/nvme
e/dev/vd
que é novamente usado para discos virtuais em armazenamento em nuvem (crédito para @Jan Dorniak pelos exemplos extras).No seu caso , é chamado
/dev/nvme
porque o disco está conectado por meio de uma porta NVME e usa onvme
driver no Linux. Você pode pensar apenas/dev/<something>
como um dispositivo que usa<something>
driver. Todos os drivers de dispositivo e nomenclaturas têm seus próprios padrões, não é um padrão para todos eles, então está tudo bem se a nomenclatura para dispositivos NVME for assim. E a razão pela qualnvme
também não está traduzidascsi
é que os dois protocolos são muito diferentes e tal implementação seria muito complexa (consulte os comentários de @grawity e @Vality para obter informações mais detalhadas).Além da outra resposta, observe que o NVMe tem o conceito de namespaces que não caberiam no padrão /dev/sd<letra(s)><número> . Por exemplo, no meu sistema: