我在 fstab 中挂载了一个网络共享。一切正常。
然后,我有第二个挂载,它将第一个挂载上的文件夹绑定在一起。如下所示:
//my-cifs-share/foo /mnt/foo-share cifs _netdev,dir_mode=0777 0 0
/mnt/foo-share /my/binded/folder none bind
现在,我的问题是,第二个挂载显然是在第一个挂载之前执行的。因此,文件夹 /my/binded/folder 在启动后将为空。当我登录并mount -a
仅执行一次时,它就会正常创建。
那么,有没有什么办法可以强制执行这个命令或者让一个挂载点依赖于另一个挂载点呢?
多谢!
//编辑:正如评论中所讨论的,似乎没有真正的保存路径。因此我决定采用以下方法:保留上面的 fstab。使用 crontabmount -a
每 5 分钟运行一次。目前看来已经足够好了。
答案1
来自 man mount:
-F, --fork
(Used in conjunction with -a.) Fork off a new incarnation of
mount for each device. This will do the mounts on different
devices or different NFS servers in parallel. This has the
advantage that it is faster; also NFS timeouts go in parallel.
A disadvantage is that the mounts are done in undefined order.
Thus, you cannot use this option if you want to mount both /usr
and /usr/spool.
我认为您的发行版将此参数用作启动时的默认参数。尝试找到并删除它。(我不知道 Redhat)
答案2
避免将静态绑定挂载定义到无法“保证”存在的文件系统上的目录。随着时间的推移,您一定会遇到多个问题,这只是一个例子。考虑一下当此 CIFS 挂载在操作过程中不可避免地丢失时会发生什么。
在大多数情况下,这种情况更适合使用符号链接而不是绑定挂载。符号链接通过成为“断开”的链接来妥善处理其目标的丢失,直到目标恢复。有什么原因不能使用符号链接吗?