这对我来说是 Linux 的新领域,所以我希望我只是错过了一些东西。
我有 1 个 SSD 作为操作系统驱动器(在最初安装 Ubuntu 时配置了交换空间和所有其他分区),6 个驱动器,每个驱动器都采用 2 设备 RAID 1 配置,另外还有 2 个驱动器,每个驱动器有 2 个分区,采用另一个 RAID 1 配置。
我使用 mdadm 设置它们,当我设置 RAID 时,我希望它们具有文本名称(而不仅仅是 md1 等)。我决定用将要使用驱动器的用户的名称来命名它们。但是,mdadm 会提示我这/dev/mdjohn
无效,并让我尝试/dev/md/john
。我这样做了,重新启动后,/dev/md/
包含所有以计算机名称为前缀的用户名称(在本例中为 FILESERVER)。所以我刚刚创建的新 RAID 实际上是/dev/md/FILESERVER:john
。不是最干净的,但还可以。
现在,为了将其自动挂载到 /mnt/john,我fstab
通过调用将其添加到/dev/md/FILESERVER:john
。这工作正常。当我到达最后一对驱动器时,它们在 2 个 RAID 中有两个分区,事情变得棘手。第一个分区是FILESERVER:shared
,第二个分区是FILESERVER:private
。当我将它们添加到fstab
(特别是FILESERVER:shared
)时,服务器将无法启动。检查服务器上的日志时,它说共享驱动器在安装时超时。
如果我将其省略并手动挂载,则需要一秒钟,但不会接近启动期间超时的约 2 分钟。 我的解决方案是将FILESERVER:name
中的调用替换fstab
为中列出的 md# lsblk
。 例如,/mnt/john
是的挂载/dev/md127
,/mnt/shared/
是的挂载/dev/md123
,等等。 这种方法的问题在于,md# 每次启动都会打乱。 因此一个启动 /mnt/john 指向他的驱动器,但另一次启动,它指向共享驱动器等。(这会创建一个实例,其中文件/mnt/john
夹由用户 doe 拥有,并且/mnt/doe
由用户 doe 拥有。 用户可以访问他们对应的文件夹,这些文件夹仍然有正确的文件,但这会使事情变得混乱并导致我的 ssh 启动文件夹规则无法正常运行。
如何才能让驱动器每次都挂载到正确的文件夹,而不会在启动时超时?
答案1
我能够使用 UUID 修复它。
我跑了:
sudo blkid
列出我的所有设备。然后我绘制出哪个/dev/md#
是谁的驱动器,并更新/etc/fstab
为。/dev/md#
UUID=long-UUID-string-here
显然,/dev/md#
每次添加/删除设备(或在我的情况下每次启动)时都会发生变化,而UUID
保持静态。
更多信息请访问Ubuntu Fstab 社区帮助 Wiki