![交换两个 NVME SSD 驱动器的逻辑设备名称](https://linux22.com/image/216459/%E4%BA%A4%E6%8D%A2%E4%B8%A4%E4%B8%AA%20NVME%20SSD%20%E9%A9%B1%E5%8A%A8%E5%99%A8%E7%9A%84%E9%80%BB%E8%BE%91%E8%AE%BE%E5%A4%87%E5%90%8D%E7%A7%B0.png)
是否可以交换笔记本电脑(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 有所帮助,但我还没有遇到过这样的情况,所以这只是理论上的。