Linux:更改 /dev 中的设备名称会导致启动问题

Ond*_*žka 5 linux mount filesystems

我的系统中有许多磁盘和卷。一些磁盘IDE,一些SATA。

SATA 磁盘上的卷给我带来了问题 - 我将它们列在 中etc/fstab,但在每次启动时,它们都有不同的名称:

  • /dev/sdd* 变成 /dev/sdb*
  • /dev/sde* 变成 /dev/sdc*

等每次启动。

1)为什么会这样?
2)如何预防?
3)如果我不能,是否有解决方法?

Maj*_*nko 7

这通常是因为设备以不同的顺序被检测到 - 特别是当多个不同的设备技术共享相同的名称时,例如 SATA、SCSI 和 USB 磁盘。它们都共享 /dev/sd* 名称,并且它们会根据您当时插入的内容而变化。

有多种方法可以解决它。

  1. 标记分区然后通过标签挂载它们
  2. 通过 UUID 挂载它们

来自man fstab

可以不明确地给出设备,而可以通过其 UUID 或卷标(参见 e2label(8) 或 xfs_admin(8))指示要挂载的(ext2 或 xfs)文件系统,写 LABEL= 或 UUID=,例如, LABEL=Boot' orUUID=3e6be9de-8139-11d1-9106-a43f08d823a6'。这将使系统更加健壮:添加或删除 SCSI 磁盘会更改磁盘设备名称,但不会更改文件系统卷标。

可以使用(例如)标记磁盘

# tune2fs -L MyDiskLabel /dev/sde2
Run Code Online (Sandbox Code Playgroud)

然后在 /etc/fstab 中使用 LABEL=MyDisklabel 作为设备名称

可以通过在 /etc/fstab 中使用 UUID= 代替设备名称来完成挂载。

可以通过以下方式获得 UUID blkid(至少在 Ubuntu 中 - 不确定其他发行版)