Linux 如何知道哪个 USB 硬盘驱动器是哪个?

mis*_*256 24 automounting mount hard-disk

目前,我的 PC 上安装了Linux Mint,并将 USB 硬盘分区安装为/home. 这运行良好。

如果我安装第二个 USB 硬盘驱动器,Linux 是否有可能在两者之间混淆,并尝试/home在启动时挂载第二个硬盘驱动器的分区?那会很糟糕。

来自 Windows,我经常看到驱动器号没有正确“记住”导致各种问题。

我想主要问题是:Linux 如何真正知道哪个 USB 硬盘驱动器是/dev/sdb哪个/media/misha/my_2nd_drive

wur*_*tel 26

通常 USB 端口(总线/设备)的位置决定了它被检测到的顺序。但是,不要依赖于此。

每个文件系统都有一个UUID,它代表通用唯一标识符FATNTFS使用略有不同的方案,但它们也有一个可以用作 UUID 的标识符)。您可以依赖 (Linux) UUID 是唯一的。有关 UUID 的更多信息,请参阅此 Wikipedia 文章

使用磁盘 UUID 作为装载参数。要找出 UUID 是什么,请运行以下命令:

$ sudo blkid /dev/sdb1
Run Code Online (Sandbox Code Playgroud)

blkid需要读取设备,因此它需要 root 权限,因此sudo。如果您已经成为 root,sudo则不需要。)

然后,您可以/etc/fstab像这样使用该 UUID :

UUID=7e839ad8-78c5-471f-9bba-802eb0edfea5 /home ext4 defaults 0 2
Run Code Online (Sandbox Code Playgroud)

这样就不会混淆要安装在 /home 上的磁盘。

对于手动安装,您可以使用 /dev/disk/by-uuid/.....


Dmi*_*yev 11

如果您fstab引用分区为/dev/sdx,那么添加新驱动器肯定会混淆系统。然而,最近的做法是使用分区 UUID来标识分区。

如果您的系统已udev安装(必须是 2.6+ Linux 内核的情况),您可以在fstab. 默认情况下,分区通过 UUID 标识:

/dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591
Run Code Online (Sandbox Code Playgroud)

但是,您可以创建一个有意义的分区标签,例如“home”,并像这样引用您的分区:

/dev/disk/by-label/home
Run Code Online (Sandbox Code Playgroud)

这些 ID 可以用作/dev/sdxin的替代品fstab