为什么 nvme 有字符设备和块设备?

GP9*_*P92 12 device block-device nvme

我正在尝试了解 nvme 的配置。

但我不明白为什么有两个设备:nvme 块和 nvme 字符设备:

crw------- 1 root root 243, 0 Dec 12 16:09 /dev/nvme0
brw-rw---- 1 root disk 259, 0 Jan 14 01:30 /dev/nvme0n1
Run Code Online (Sandbox Code Playgroud)

每个的目的是什么或何时使用它们?

tel*_*coM 15

字符设备/dev/nvme0是 NVME 设备控制器,块设备/dev/nvme0n1是 NVME 存储命名空间:用于实际存储的设备,其行为本质上与磁盘一样。

在企业级硬件中,可能支持多个命名空间、命名空间内的精简配置和其他功能。现在,您可以将命名空间视为一种元分区,具有供企业使用的额外功能。

  • 命名空间是 NVMe 规范的一部分。该规范是任何“非易失性存储器子系统”的接口,实际上是快速固态。系统管理员的实用读物是带有 admin 命令的 nvme 手册页。 (2认同)

小智 6

将命名空间视为在安全擦除 SSD 时不会消失的分区。控制器和命名空间是分开的。命名空间可以共享,并且可以允许远程控制器访问它们。我相信像 Excelero 或 Lightbits 这样的公司在他们的产品中利用了这项技术。

在大型设备中,例如 15TB NVME,您可能希望将 SSD 分成 3 个独立的部分以用于不同的目的(缓存位于 /dev/nvme0n1 上,数据库位于 /dev/nvme0n2 上,VM 存储位于 /dev/nvme0n3 上)。您可以创建 3 个大小相等或不相等的命名空间,并在每个 /dev/nvme0n_ 设备上使用它们。任何剩余的空间都将用于超额配置的容量,这有其自身的好处。