Sfdisk NVME问题,没有这样的设备或地址

Sfdisk NVME问题,没有这样的设备或地址

我有自定义 LFS 安装程序,其中包含 sfdisk,我正在尝试在其上添加对 NVME 磁盘的支持。当我在普通 SATA 磁盘上使用 sfdisk 创建分区时,一切都会按预期进行,但是当我在 NVME 磁盘上执行完全相同的操作时,它会创建分区,但是当我尝试获取分区的大小时(使用命令sfdisk -s /dev/nvme0n1p1) ,它输出No such device or address while trying to determine filesystem size

lsblk 输出:

NAME        MAJ:MIN SIZE TYPE
nvme0n1     259:0   1.8T disk
|nvme0n1p1  259:1   200G part
`nvme0n1p2  259:10  1.6T part

sfdisk 用法:

,200G,L
,,L

/proc/分区

major minor #blocks    name
259     0   1953514584 nvme0n1
259     2    209715200 nvme0n1p1
259     3   1743798343 nvme0n1p2

它们也在 /dev 下列为nvme0n1nvme0n1p1nvme0n1p2

现在,如果我使用,sfdisk -s /dev/nvme0n1p1我会得到输出:209715200sfdisk -s /dev/nvme0n1p2给出:No such device or address while trying to determine filesystem size

现在奇怪的是,如果我再次创建分区,我sfdisk -s /dev/nvme0n1p1这样做现在会给出:No such device or address while trying to determine filesystem sizesfdisk -s /dev/nvme0n1p2给出 209715200。

如果我一遍又一遍地操作,它会不断变化,一个分区可用,其他分区则不可用,它会不断交换。

我尝试过的事情:

  • 其他SSD(同类型),结果相同;
  • 我使用 NVME 磁盘的 pcie 适配器,尝试了其他适配器,结果相同;
  • 在运行的开放式 suze 安装中使用适配器,我可以毫无问题地执行这些命令;
  • 正常sata驱动,没问题。

[编辑] 我发现在重新启动后无需再次对驱动器进行分区,就可以执行这些命令,这对于 NVME 磁盘很重要,但对于普通SATA似乎并不重要?

我现在完全不知道该尝试什么或者这可能是什么原因,任何帮助将不胜感激。

答案1

我设法找到了解决方案,因此我在此处添加答案,以便在其他人遇到类似问题时可能会有所帮助。

我用的是blockdev --rereadpt /dev/nvme0n1命令。这将重新读取分区表,现在我可以sfdisk -s /dev/nvme0n1p2毫无问题地执行命令,而无需重新启动。

我仍然不确定为什么普通SATA驱动器不需要这样做,所以如果有人知道为什么不是这种情况,请随时发表评论。

相关内容