我们有一些linux文件服务器,我们的系统管理员拒绝进行任何NFS交叉安装,交叉安装是指将服务器A的nfs共享安装在服务器B上,并将服务器B的共享安装在A上。
有谁知道这种交叉安装有什么问题吗?
答案1
订购两台服务器的启动可能具有挑战性。
理想情况下,您希望服务器能够在没有操作员干预的情况下从电源故障中恢复。但是,当然,某些服务器需要先于其他服务器启动,例如,在尝试启动外部连接的服务器之前,您可能需要先启动防火墙。或者,您需要在客户端之前安装 NFS 服务器。
实现此目的的一种方法是获取智能电源板(例如,APC 管理的 PDU),然后您可以为每个插座配置开机延迟。因此,您可以确保您的防火墙和交换机首先打开,然后是 DNS 服务器,然后是 NFS 服务器等。即使您在清单中手动执行此操作(“打开 A,等待其启动,打开 B,然后C,等待它们启动,...”)您仍然想要简单性。
但是,如果 A 依赖于 B,而 B 依赖于 A,则不能这样做。在简单的情况下,它很容易解决——A 和 B 只需要先启动自己的 NFS 服务器(并导出其本地文件系统)尝试挂载任何 NFS 共享(尽管这与默认顺序相反)。当然,除非您最终使用嵌套路径,例如,本地文件系统安装在 NFS 挂载下。或者您添加第三台服务器,然后可能将 A 的共享安装在 C 上的 B 的共享之下。
当然,手动解决此类问题并不太难,但您不想在断电后这样做。你可能已经有计划外的需要解决的问题(例如,由于意外断电而损坏的东西,或者您不知道的依赖项),而每个人都在抱怨它已关闭,因此最好不要设置已知的、可避免的问题,这些问题会占用您的时间。
此外,如果没有其他原因,除了发送所有数据两次的网络开销之外,安装然后重新导出 NFS 共享可能是不明智的。不像客户端不能只安装两台服务器。
编辑:还有一个原因 - 当 NFS 服务器出现故障时,尝试访问该服务器的客户端上的任何进程都会进入磁盘(“不间断”)睡眠状态。这可能会导致从一台 NFS 服务器故障到另一台故障的“传染”(由于基本进程进入磁盘睡眠状态,或者由于 cron 作业产生但未完成而耗尽资源,等等)。 (如果您想知道,这显示了D
in )ps
答案2
只要这些文件系统(如必要的操作系统库)上没有任何机器需要的任何内容,那么交叉挂载这样的文件系统就不是问题。
例如,您可以让每个 NFS 服务器导出其文件系统,然后让它们使用自动挂载程序挂载所有文件系统。
或者,在 fstab 中挂载文件系统,但使用挂载选项,让挂载等待,直到 NFS 服务器可用。我相信这是 bg 选项。