我负责管理 Linux (CentOS 8) VM 和硬件的复杂结构,托管各种 SMB 和 NFS 导出等。它们中的大多数同时是服务器和客户端,使用一种或两种协议。
当然,理想情况下,我希望每台机器都包含所有文件系统/etc/fstab
,这样一切都会自动启动。问题是,我无法物理访问硬件或控制台访问虚拟机,只能通过 SSH 访问所有内容。而且,据我所知,在默认选项下,如果启动时其中一个挂载不可用,系统将无限期挂起。因此,如果两台机器宕机但只有一台启动,并且一些挂载变得无法访问(或者如果我在其中一个挂载中犯了一个错误fstab
),那么一切都可能最终无法启动,而且没有直接的修复方法。
设置它的最佳方法是什么?soft
挂载是一种选择,但据我了解,它有导致静默数据损坏的风险,考虑到工作量的性质,我绝对不能冒这个风险。我考虑过nofail
,但我对手册页:
nofail
如果该设备不存在,则不要报告该设备的错误。
显然,我确实希望报告某种错误,但我确实希望机器能够启动,以便我可以修复它。
有什么想法吗?提前致谢。
答案1
在 CentOS 8 上挂载文件系统/etc/fstab
由 systemd 处理,其文档更详细地介绍了您需要了解的内容。例如,关于nofail
:
使用
nofail
,此挂载将仅为 或 所需,而非 所要求local-fs.target
。remote-fs.target
此外,挂载单元不会排在这些目标单元之前。这意味着启动将继续,而无需等待挂载单元,无论挂载点是否可以成功挂载。
您还应该注意到,systemd 允许设置明确的超时,x-systemd.mount-timeout=
,如果远程服务器有可能瘫痪,您应该考虑这么做。
配置 systemd 在放弃来自 的条目之前应等待 mount 命令完成的时间
/etc/fstab
。指定以秒为单位的时间或明确附加一个单位,例如"s"
、"min"
、"h"
、"ms"
。注意该选项只能在中使用,并且作为单元文件中
/etc/fstab
的部分设置时将被忽略。Options=
请参阅
TimeoutSec=
下文了解详情。
答案2
根据复杂性和情况,您可能需要编写自己的 systemd 单元和/或启动脚本和/或监控脚本,甚至使用 Linux-HA 之类的东西。
在一些不太复杂的系统上,使用一些简单的故障转移解决方案,我有一个 shell 脚本,用于检查设备和网络 (VPN) 连接、启动虚拟机并发送启动报告。单独的监控系统会生成警报...