如何防止 /sda /sdb 在启动之间发生变化?

mid*_*ite 5 gentoo udev devices hard-disk block-device

我打算将 Gentoo Linux 安装到旧硬件上,该主板同时具有 IDE 和 SATA 硬盘驱动器。我连接了两个 IDE 和一个 SATA 硬盘,并计划对它们进行 RAID。

但是我注意到一个问题:映射到 /dev/sda 的硬盘在每次启动时都会发生变化!

我正在互联网上寻找答案。我发现持久设备名称可能是一个解决方案。但是我担心它会在系统范围内遇到兼容性问题吗?此外,它非常不方便(因为名称很长),除非我可以使用/dev/disk/by-label. 但它似乎by-label不能指/dev/sda/dev/sdb- 只有/dev/sda1可能。而且,对于我使用 BIOS 的旧硬件,我认为我只能使用 MBR ,而不能使用 GPT。MBR环境下如何更改磁盘标签?

另一方面,我认为理想的解决方案是,/dev/sda在每次启动时都映射到同一个硬盘。想象一下,这可以通过在硬盘上保存一个名为“bootmap”的文件来实现。而“/sda”写在“bootmap”文件中。系统启动时,如果在“bootmap”中找到“/sda”,则驱动器被映射到/dev/sda. 如果找到“/sdb”,则映射到/dev/sdb. 等等。(但我知道这可能不是那么理想。)

那么,如何避免/dev/sda从引导到引导的变化映射?

作为替代方案,编辑标签的方式也不错。- 鉴于它不会在任何地方遇到兼容性问题。

(PS - 无论哪种方式,互联网上还没有解决方案。)

Gil*_*il' 5

大多数文件系统都有唯一的 UUID 和标签,您可以将其设置为独特的值。/dev/disk/by-uuid这些允许您通过或引用包含文件系统的卷/dev/disk/by-label。其他类型的卷(RAID、LVM 等)通常也有一个名称。RAID 和 LVM 卷是根据物理卷中的唯一标识符进行组装的,无论卷如何连接。因此需要引用磁盘本身是不寻常的。

\n\n

如果您确实需要根据磁盘的连接方式来访问磁盘,则可以使用/dev/disk/by-id. 条目的形式为或。顺便说一句,所有子目录都由udev维护,特别是持久存储规则BUS-SERIALBUS-NAME-SERIAL/dev/disk/

\n\n

另一个解决方案是在 下创建您自己的符号链接/dev。您可以编写 udev 规则来执行此操作。/etc/udev/rules.d/50-local-persistent-disks.rules添加包含如下规则的文件

\n\n
SUBSYSTEM=="block", ATTRS{model}=="Yoyodine HD9001", \\\n  ATTRS{serial}=="123-456-789", \\\n  SYMLINK+="myfancyname"\n
Run Code Online (Sandbox Code Playgroud)\n\n

运行udevadm info -a /dev/sda看看\xe2\x80\xa6==\xe2\x80\xa6您可以使用哪些模式。如果您使用多个模式,它们必须来自同一输出块,您不能混合来自不同父设备的模式。

\n