NVMe 的盘符重启时会发生变化吗?

2023-06-08 01:49:26 +08:00
 louisxxx
机子上接 5 个 U.2 NVMe 的盘,当前盘符号如下
/dev/nvme0n1
/dev/nvme1n1
/dev/nvme2n1
/dev/nvme3n1
/dev/nvme4n1

系统装在 /dev/nvme0n1 上,物理硬件不动的情况下重启系统时这些盘符和物理盘映射关系是一致的吗?
普通盘 /dev/sda /dev/sdb 这种映射关系相对稳定。nvme 情况不得而知了
953 次点击
所在节点    问与答
12 条回复
OutOfMemoryError
2023-06-08 01:54:36 +08:00
看 blkid ,挂载的时候用 UUID= 就不怕变化了
zhlxsh
2023-06-08 01:58:48 +08:00
我觉得跟内核参数和 udev 配置有关,不修改上两项重启不会有变化
louisxxx
2023-06-08 02:28:08 +08:00
@zhlxsh
@OutOfMemoryError 做了 md raid1 后把 nvme0n1p1 ( efi 分区)克隆到了 nvme1n1p1 上。现在从这 2 个盘都能启动。
有一个问题是有时候启动看 /boot/efi 显示挂载了 nvme0n1p1 上,有时重启后又显示挂载到了 nvme1n1p1 上
fstab 里挂 /boot/efi 用的是 uuid, 估计是我前面把 nvme0n1p1 ( efi 分区)克隆到了 nvme1n1p1 上,所以这 2 个盘上的分区 UUID 是一模一样的,导致启动会在两上盘上随机。
louisxxx
2023-06-08 02:30:29 +08:00
NAME UUID
nvme0n1
├─nvme0n1p1 FA59-9BCD
└─nvme0n1p2 e7bbc320-1592-29cb-5adb-fe35c608d751
└─md0 FGhfvc-pTcf-wI6M-cucT-t45c-Atqi-IJU4SA
└─vg0-lv0 74e5af35-504b-4854-93b6-e6783b838d2a
nvme1n1
├─nvme1n1p1 FA59-9BCD
└─nvme1n1p2 e7bbc320-1592-29cb-5adb-fe35c608d751
└─md0 FGhfvc-pTcf-wI6M-cucT-t45c-Atqi-IJU4SA
└─vg0-lv0 74e5af35-504b-4854-93b6-e6783b838d2a
nvme3n1
├─nvme3n1p1 FA59-9BCD
└─nvme3n1p2 e7bbc320-1592-29cb-5adb-fe35c608d751
└─md0 FGhfvc-pTcf-wI6M-cucT-t45c-Atqi-IJU4SA
└─vg0-lv0 74e5af35-504b-4854-93b6-e6783b838d2a
nvme2n1
├─nvme2n1p1 FA59-9BCD
└─nvme2n1p2 e7bbc320-1592-29cb-5adb-fe35c608d751
└─md0 FGhfvc-pTcf-wI6M-cucT-t45c-Atqi-IJU4SA
└─vg0-lv0 74e5af35-504b-4854-93b6-e6783b838d2a

efi 分区 uuid 全一样,目前这样使用不知道有没什么大隐患。
ryd994
2023-06-08 03:08:30 +08:00
@louisxxx UUID 可以修改的,用 mlabel

你这样 boot 分区来回跳,那下次系统更新的时候就坑了
因为更新需要把新的 initramfs 写到 boot 分区里
然后你就有了两个不一样的 boot 分区
ho121
2023-06-08 07:37:11 +08:00
我有两个 nvme 盘,实测硬盘编号会变,比如 nvme1 重启后可能变 nvme0 了。
louisxxx
2023-06-08 15:03:41 +08:00
@ryd994 更新时要手动执行一个 hook 克隆脚本把更新的同步到其他盘上
louisxxx
2023-06-08 15:06:56 +08:00
@ho121 我想过另一种方案,把 nvme1n1p1 也做成 Raid1 然后 /boot/efi 挂载 md1 不知道行不行。这样可以保证 /boot 里数据变化时自动同步到所有盘。
louisxxx
2023-06-08 15:08:42 +08:00
我想过另一种方案,把 nvme1n1p1 也做成 Raid1 然后 /boot/efi 挂载 md1 不知道行不行。这样可以保证 /boot 里数据变化时自动同步到所有盘。

/boot/efi 挂载 md1
/boot 挂载在根目录上的( md0 )。

@ryd994
ho121
2023-06-08 15:47:21 +08:00
不妨看看 /dev/disk/by-path 和 /dev/disk/by-path ,这里面都是软连接到 /dev/xxx 的。
louisxxx
2023-06-08 17:52:35 +08:00
@ho121 这个好像没有用,在建 raid 时输入 uuid 路径会自动按 uuid 找出盘符,然后实际是用盘符组的 raid
ryd994
2023-06-09 02:24:00 +08:00
最简单办法是只留一个,其他全部清空
这样可以保证每次启动用的都是同一个

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/946789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX