(我运行的是 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 的旧文章。