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


24

目前,我的PC上安装了Linux Mint,并且USB硬盘驱动器分区安装为/home。这运作良好。

如果我安装了第二个USB硬盘驱动器,那么Linux是否有可能在两者之间造成混淆,并尝试/home在启动时挂载第二个硬盘驱动器的分区?那将是不好的。

来自Windows,我已经看到经常发生这样的情况:未正确“记住”驱动器号,从而导致各种问题。

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


装有USB硬盘驱动器分区的,/home您可以解释一下如何做到的吗?
AL

我是在Linux Mint安装期间完成的。那时,这很容易。我的SSD显示为sda,USB硬盘显示为sdb。我把/swapSDA,并/home深发展。但是我不知道该如何更改现有安装的/home安装架,因为它太新了!
misha256

答案说明了您应该执行的操作,但我不认为它们直接说出它们sd[a-z]是按检测顺序简单命名的。完全不会尝试保持名称相同。它通常是确定性的(相同硬件上的相同内核将给出相同的命名),但是对SATA控制器驱动程序进行更新的新内核可以使其以相反的顺序扫描SATA驱动器。甚至没有尝试重命名块设备(nameif通常使用udev规则对以太网设备名称进行命名或用以太网设备名称完成),而是存在UUID,标签和ID(按驱动器序列号)。
彼得·科德斯

我已经看到了SAS磁盘的服务器,其中重启通常会导致不同的排序sd[a-z]:磁盘的探测是同时进行(并行)和任何磁盘发生会首先检测成为sda等等
wurtel

Answers:


26

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

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

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

$ sudo blkid /dev/sdb1

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

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

UUID=7e839ad8-78c5-471f-9bba-802eb0edfea5 /home ext4 defaults 0 2

这样就不会混淆在/ home上要挂载什么磁盘。

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


1
太棒了,fstab直到现在我都还不知道(这对Linux来说我是多么陌生)。我查看了我的fstab文件,所有内容都已由UUID标识。Linux Mint安装程序表现良好。
misha256

您可以通过简要解释什么是UUID以及为什么UUID是唯一的使其成为可靠的标识符来改善此答案。
AL

11

如果您的fstab引用分区为/dev/sdx,那么添加新驱动器肯定会使系统困惑。但是,最近的实践是使用分区UUID来标识分区。

如果您的系统已udev安装(2.6+ Linux内核必须是这种情况),则可以在中使用持久命名fstab。默认情况下,分区是通过UUID标识的:

/dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591

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

/dev/disk/by-label/home

这些ID可以代替/dev/sdxin fstab


希望我也能将您的答案标记为正确的。Wurtel稍早有联系。但是无论如何,谢谢你,我得到了+1。
misha256

@ misha256具有讽刺意味的是,我甚至不使用我的系统的UUID(因为从输出dfmount变得不可读)。内部HDD具有很高的机会被首先检测到,并且每次都以相同的顺序被检测到。
德米特里·格里戈里耶夫

1
如果使用标签,则可以LABEL=home在fstab中使用。我喜欢t-home在机器上使用名为tesla的主目录之类的标签。因此,如果将磁盘粘贴到另一个系统中,则不会有两个带有相同标签的文件系统。这就是Linux安装程序生成随机UUID并在fstab中使用它们的原因,而不是使用具有默认标签的默认标签,这些默认标签将为大多数系统提供与其FS相同的标签。@ misha256,如果标记了FS,则可能要考虑一下。
彼得·科德斯

1
@PeterCordes我确实使用过标签,并且我有一个命名方案旨在使这些标签唯一。
德米特里·格里戈里耶夫

1
如答案中所述,UUID很棒并且可以正常工作。但是,它们不是人类友好的。每当我创建分区(任何位置)时,我都会给它们分配对我来说有意义的独特的人类可读标签。在编写处理多个驱动器的备份脚本时,这特别有用。您不希望意外颠倒源和目的地!另外,每当您重新格式化分区时,它都会获得一个新的UUID,您必须编辑使用该UUID的任何内容,而您仍可以使用与以前相同的标签,而不必进行任何更改。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.