NFS v4,HA迁移和客户端上的陈旧句柄

我正在使用Pacemaker / OpenAISpipe理运行NFS v4的服务器。 NFSconfiguration为使用TCP。 当我将NFS服务器迁移到Pacemaker集群中的另一个节点时,即使元数据保持不变,客户端的挂起连接也会在90秒后超时。 在90秒之后,旧的挂载点变成“陈旧”,挂载的文件不能再被访问。

90秒宽限期似乎是服务器configuration的一部分,而不是客户端configuration。 我在服务器上看到这个消息:

内核:NFSD:启动90秒的宽限期

如果我在迁移(卸载,然后重新安装共享)后重新启动客户端节点上的NFS客户端,然后我没有遇到问题,但连接和文件传输仍然中断。

三个问题:

  1. 什么是90秒的宽限期? 那里有什么?
  2. 在将NFS服务器迁移到另一个节点后,如何防止文件在客户机上过时而不重新启动?
  3. 实际上是否可以迁移NFS服务器而不需要大file upload?

NFS在服务器上存储很多客户端的状态。 起搏器/ OpenAIS不能弥补NFS在这方面的缺点。 宽限期是服务器和客户端重新获得状态的地方。 这是协议的一部分。

无论如何,你似乎没有完全移动客户端状态(如/ var / lib / nfs内容)。 看到这个想法和什么需要在服务器端进行状态同步。

物理光盘是单元之间共享的,例如它是否是SAN光盘?

你用一个常量fsid导出光盘吗?

/ share *(rw,sync,fsid = 6667)

除此以外:

为NFS服务的设备的inode-Number,IP,次要和主要编号必须保持相同的NFS文件句柄。 所以在设备上使用lvm,保持lvm的小/大部分同步。

而使用NfSv3,您可以指定UDP传输来实现即时故障转移,而客户端/服务器也不会更聪明,而NFSv4使其更为棘手。 首先,因为TCP是唯一可用的传输方式,TCP连接的本质不是TCP连接,而是像正常一样继续。

您可以减less传输时间。 尤其是如果您遵循有关通用服务器状态目录和维护FSID的build议。 尝试在停止NFS之前拉取监听界面,并确保安装不缩回( exportfs -ua )。 但绝对不会是瞬间的。

你也应该记住,从一台服务器切换到另一台服务器是一个不好的select。 以前的服务器仍然可以保持以TIME_WAIT状态打开的以前的连接,并将拒绝长达20分钟的新连接。

这个Heartbeat维基页面上的很多细节都是有点老派,但仍然是中肯的。

NFSv4是一个有状态的协议,这意味着各方(客户端,服务器)在进行通信时应该始终注意对方。 换句话说,如果服务器停止并在别处重新启动,客户端应该在移动之前断开连接,然后在移动完成时重新连接(我猜Pacemaker + NFSd!= love 🙂

也许你应该尝试glusterfs HA /集群