交换两个 NVME SSD 驱动器的逻辑设备名称

交换两个 NVME SSD 驱动器的逻辑设备名称

是否可以交换笔记本电脑(Lenovo Legion 5 Pro 2022)中安装的两个 NVME SSD 驱动器的逻辑设备名称,而无需物理交换其端口位置?我希望电流/dev/nvme0n1变为/dev/nvme1n1,反之亦然。如果可能的话,我该怎么做?我的操作系统是 Ubuntu 22.04LTS。

答案1

虽然更改顺序并非完全不可能,但这样做不会解决任何问题,只会产生更多问题,因此您不应该这样做。

设备名称按照先到先得的原则分配,这意味着顺序可以随时更改,并且你根本不应该依赖它。坚持使用 (PART-) UUID/LABEL、 中的符号链接之一/dev/disk/by-*/*,或者 LVM 设备名称(如果您使用的是 LVM)。

所以这只是为了好玩(在 qemu 中使用模拟 nvme 驱动器进行测试,未在真实硬件上进行测试)。


原始检测顺序:

# grep nvme /proc/partitions
 259        0   16777216 nvme0n1
 259        1   33554432 nvme1n1
 259        2   67108864 nvme2n1

通过取消绑定来更改顺序,然后按所需顺序进行绑定。执行此操作会将 NVMe 设备从系统中完全删除,并从头开始重新检测它们。所以它只能从 initramfs 完成,或者在设备根本不使用时完成。

# ls /sys/bus/pci/drivers/nvme/
0000:00:04.0  0000:00:05.0  0000:00:06.0  bind  [...]  unbind
# cd /sys/bus/pci/drivers/nvme/
# echo 0000:00:04.0 > unbind
# echo 0000:00:05.0 > unbind
# echo 0000:00:06.0 > unbind
# echo 0000:00:06.0 > bind
# echo 0000:00:04.0 > bind
# echo 0000:00:05.0 > bind

新顺序(nvme2 » nvme0,nvme0 » nvme1,nvme1 » nvme2):

# grep nvme /proc/partitions
 259        0   67108864 nvme0n1
 259        1   16777216 nvme1n1
 259        2   33554432 nvme2n1

通常,出于任何原因,这样做都是不切实际的。也就是说,我之前在嵌入式设备上使用过这种方法,当 microSD 卡被移除或更改时,该设备无法自行检测到。

因此,它可能在某些情况下(例如恢复故障卡时)对 NVMe 有所帮助,但我还没有遇到过这样的情况,所以这只是理论上的。

相关内容