Linux 每次都会尝试为驱动器赋予相同的字母吗?
例如,如果我将两个驱动器连接到我的计算机,然后断开它们并以相反的顺序重新连接它们,sdb 和 sdc 是否会对应相同的物理驱动器?
这就是我要的:
First:
Plug in HDD A, which becomes sdb.
Plug in HDD B, which becomes sdc.
Then:
Plug in HDD B, which becomes sdc.
Plug in HDD A, which becomes sdb.
问题是 Linux 会自动执行此操作吗?如果不是,我该怎么做?(我希望有三个驱动器可以按任何顺序初始化,但仍安装到同一点)。
答案1
不,sd*
名称是根据首先检测到的磁盘按顺序分配的。
如果您需要一个持久名称,udev 已经根据多种属性提供了它们,例如文件系统标签/UUID;分区标签/UUID(仅限 GPT);磁盘附件路径;SCSI WWN;等等。
看一眼/dev/disk
:
┌下雨〜 ┘ 树 /dev/disk/ /dev/磁盘/ │ ...(基于硬件的 ID) │ ... │ ... │ ... │ ... │ ... │ │ │ ── wwn-0x5000c5002f0e9ce1 -> ../../sda │ ... │ └── … ═── 按标签(文件系统头中编码的名称) │ ... │ │ ── 雨 -> ../../sda6 │ │ ── rainhome -> ../../sda5 │ └── … │ ...(GPT 分区表中编码的名称) │ │ │ │ │ │ │ │ │ │ ── EFI -> ../../sda1 │ │ ── 首页 -> ../../sda5 │ │ ── 交换 -> ../../sda8 │ └── … │ ...(GPT 分区表中编码的 UUID) │ │ │ │ 14420948-2cea-4de7-b042-40f67c618660 -> ../../sda4 │ ... │ ... │ └── … └── by-uuid(文件系统头中编码的 UUID) │ │ 0C5C17E25C17C57C -> ../../sda7 │ │ 413b42fe-77f7-41d0-8d40-a7578f70995d -> ../../sda4 │ │ 4b30e8db-563e-4947-8d41-f242d94a6d3a -> ../../mmcblk0p1 │ │ 8594cc4c-9c42-436a-8723-9a0611b1f97d -> ../../sda5 └── …
您可以这样使用它们:
/dev/disk/by-label/arch_boot /boot ext4 rw,auto 0 1
在 fstab 中,另一种语法也适用于label
和uuid
字段:
LABEL=arch_boot /boot ext4 rw,auto 0 1
注意:在一些较旧的 Linux 发行版中,各种 udev 规则试图以使sd*
名称持久。但它不能工作可靠;“重命名”经常会失败,因为另一个磁盘被分配了所需的名称。此功能在更高版本的 udev 中被删除。不要依赖于sd*
名称的持久性,即使它们看起来是。