61 linux hard-drive partitioning
最近我在我的 Linux 计算机上安装了一个 NVMe 驱动器,我注意到它被列为/dev/nvme0并且它的分区是/dev/nvme0p1. 我知道它与 SATA 驱动器的接口不同,但它以这种方式列出的原因是什么?似乎调用驱动器/dev/sd$LETTER$PARTITIONNUMBER是标准,即使事物具有不同的标准,例如 SCSI,这通过使用数字而不是字母来表示驱动器和分区号之前的 ap 以及不同的名称来打破这一点。
Fan*_*que 75
/dev/sd最初用于使用sd-bus驱动程序的设备,它是SCSI设备的驱动程序(sd字面意思是SCSI磁盘)。现在用于SCSI磁盘、SATA磁盘和USB磁盘。原因似乎是现在几乎所有设备都在非 SCSI 总线之上使用 SCSI 命令协议(内核使用 libata 平等对待所有 ATA 设备,并假装它们是 SCSI 设备 - 归功于 @grawity),因此我们将所有这些设备视为/dev/sd.
但并非所有存储设备都是/dev/sd. /dev/hd并且/dev/xvd仍在使用 - 前者用于 PATA/IDE 磁盘,后者用于云存储设备(虚拟磁盘等),它们都有不同的驱动程序和命名。您看不到它们,因为虚拟存储仅在云/虚拟机管理程序上(而且您可能不使用任何)并且因为 PATA/IDE 磁盘变得越来越少,并且在大多数现代机器上,内核实际上使用ide-scsi驱动程序来转换它到 SCSI 协议(归功于@Wumpus Q. Wumbley)。
其他示例包括/dev/mmcblkXpY哪些用于 SD/eMMC/裸 NAND/NOR 设备,并且具有与云存储中的虚拟磁盘相同的命名方案/dev/nvme,/dev/vd哪些再次用于云存储中的虚拟磁盘(额外示例归功于 @Jan Dorniak)。
在您的情况下,之所以调用它,是/dev/nvme因为磁盘通过 NVME 端口连接并使用nvmeLinux 上的驱动程序。您可以将其/dev/<something>视为使用<something>驱动程序的设备。所有设备驱动程序和命名都有自己的标准,并不是所有的标准都是一个标准,所以如果NVME设备的命名是这样完全没问题的。之所以nvme没有翻译成scsi,是因为这两个协议太不同了,这样的实现太复杂了(请参阅@grawity 和@Vality 的评论以获取更多详细信息)。
Rom*_*sky 11
除了其他答案之外,请注意 NVMe 具有不适合/dev/sd<letter(s)><number>模式的命名空间概念。例如,在我的系统上:
$ ls -1 /dev/nvme*
/dev/nvme0
/dev/nvme0n1
/dev/nvme0n1p1
/dev/nvme0n1p2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32223 次 |
| 最近记录: |