容忍失败的自动挂载的文件系统

容忍失败的自动挂载的文件系统

(我运行的是 openSUSE 13.2)

我当前的设置

我有一个外部备份驱动器,我在启动时使用以下行安装该驱动器/etc/fstab

/dev/mapper/cr_backup    /backup    ext4     comment=systemd.automount,nofail 0 2

我有这个nofail选项,因为有时备份驱动器不存在,并且我不希望启动在这种情况下挂起。

问题

当备份驱动器不存在时,ls在我的根目录上运行会进入无限循环,我必须使用 ctrl+c 取消该循环。错误信息是:

ls: cannot access /backup: Interrupted system call

似乎ls失败了,因为它试图访问备份驱动器但不能。

一种解决方案是将备份驱动器嵌套在此处,/backup/backup以免ls /出现故障。然而,这感觉像是一个肮脏的黑客,我想知道是否有一个更优雅的解决方案(我渴望了解更多有关系统如何工作的信息!)。

根据我的(有限)经验mount,如果未安装设备,则安装点是一个空目录。我可以在这里实现类似的目标吗?不过,我需要小心,因为我安排了每小时自动备份,如果未安装设备,当前备份不会运行。如果备份尚未安装备份驱动器,我绝对不希望备份将所有内容转储到空目录中!

答案1

在我看来,尝试在启动时挂载备份文件系统是一种不好的做法,因为如果出现问题(rm -rf / [enter] ops),备份上的数据可能会被一起删除。

因此,如果您使用脚本来执行此操作,请在脚本内或 cron 内挂载,并在完成后卸载。

这样您的启动将不再挂起,文件系统也将正常工作。

但是,另一个解决方案是将其从 fstab 中删除,并将其作为挂载命令放入 rc.local 中,并使用“&”字符在后台运行:

mount /dev/mapper/cr_backup /backup -t ext4&

对于可移动设备,您也有 autofs 解决方案: https://linuxconfig.org/automatically-mount-usb-external-drive-with-autofs

答案2

我知道您正在运行 SUSE,但是来自 Ubuntu fstab wiki 的此声明(https://help.ubuntu.com/community/Fstab)可能会为您指明正确的方向:

可移动设备,例如闪存驱动器添加到 fstab,但通常由 gnome-volume-manager 挂载,超出了本文档的范围。

更新:这可能很有趣http://www.novell.com/coolsolutions/tip/17785.html,一篇关于 SUSE 的旧文章。

相关内容