Linux 中的 HDD 命名?

Linux 中的 HDD 命名?

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 中,另一种语法也适用于labeluuid字段:

LABEL=arch_boot               /boot  ext4  rw,auto  0  1

注意:在一些较旧的 Linux 发行版中,各种 udev 规则试图以使sd*名称持久。但它不能工作可靠;“重命名”经常会失败,因为另一个磁盘被分配了所需的名称。此功能在更高版本的 udev 中被删除。不要依赖于sd*名称的持久性,即使它们看起来是。

相关内容