如何将多个磁盘之一挂载到 fstab 中的特定位置

如何将多个磁盘之一挂载到 fstab 中的特定位置

我有少量可移动硬盘。在任何时候,其中之一都将被安装到/backup除非更改驱动器时。我定期更换驱动器。也就是说,我有 4 个硬盘,并且我会轮换它们。

目前我手动安装/卸载驱动器。但有时这台机器会关闭,更糟糕的是,有时它会在我不知情的情况下关闭。如果未安装驱动器,每日备份脚本将会失败。

这些驱动器当前不共享 UUID 或标签。我不能保证磁盘将始终可用/dev/sdb1。当我不知道将插入哪个驱动器时,有没有一种好方法可以从 /etc/fstab 自动安装多个驱动器之一?


请注意,这是一个没有显示器或键盘的 Linux (debian) 系统。目前,在插入之后/拔出之前,驱动器是通过 ssh 手动安装/卸载的。

答案1

很久以后回到这个问题后,我意识到解决方案实际上与选择在 /etc/fstab 中安装驱动器相同。这是在这里讨论的https://wiki.archlinux.org/index.php/fstab#External_devices

简而言之,我的解决方案就是简单地将两个几乎相同的条目安装到同一位置。例如:

UUID=cd49ca72-db24-47ba-b3bc-f0ba8e290599 /backup    ext4    nofail,x-systemd.device-timeout=1  0       0
UUID=d28c6d3a-461e-4d7d-8737-40a56e8f384a /backup    ext4    nofail,x-systemd.device-timeout=1  0       0

只要系统启动时只插入其中一个,另一个就会在 1 秒后“静默”超时。因此,插入的任何一个都将被安装,并且另一个条目不会导致启动过程失败。

注意:仅当玩具确信一次仅安装一个驱动器时才使用此解决方案。

答案2

如果您不一次将所有这些驱动器都插入,那么如果为所有这些驱动器生成一个新的 uuid 会怎么样?

使用命令生成一个新的uuid uuid(在某些系统上,这是uuidgen命令。示例:

# uuid
30dcffac-1187-11e8-8338-0050569774ad

检查您当前的 UUID,如果需要,请将其写在任意位置:

# vol_id /dev/sdb1 | grep UUID
ID_FS_UUID=224990ae-1187-11e8-ba4c-0050569774ad
ID_FS_UUID_ENC=224990ae-1187-11e8-ba4c-0050569774ad

使用 更改 UUID tune2fs。对您拥有的每个外部驱动器执行一次此操作:

# tune2fs /dev/sdb1 -U 30dcffac-1187-11e8-8338-0050569774ad
tune2fs 1.41.3 (12-Oct-2008)

使用新生成的 UUID 挂载它fstab。例子:

UUID=30dcffac-1187-11e8-8338-0050569774ad  /backup  ext4  defaults    0       0

这样,mount -a应该足以动态挂载驱动器,并且如果计算机重新启动,它将自动挂载带有 UUID 的分区30dcffac-1187-11e8-8338-0050569774ad。由于我尚未在物理机上对此进行测试,因此我不知道同时插入其中 2 个磁盘并尝试安装它们会产生什么后果。

如果磁盘是 GPT 格式,PARTUUID则应在 fstab 中使用。

相关内容