如何在不影响服务的情况下迁移NFS服务器(Linux)

我们必须迁移Linux NFS服务器。 我们想要使用相同的生产IP地址。 有一个bin /共享文件夹和生产中使用它的许多服务器…

所有的数据已经被复制。 所有的/ etc / exports已经configuration好了。

/ var / lib / nfs可以根据需要复制。

我只需要停止nfs服务,从旧的服务器中删除IP,把相同的IP放在新的服务器上,启动nfs服务。

有没有办法做到这一点,没有客户注意到它?

这是一个相当复杂的尝试,这是事先与其他系统进行了最好的testing。

我从经验中知道,可能需要将timeo NFS挂载选项设置得更低,并且应该设置为hard

timeo=50 – 5秒后重试NFS请求(在十分之一秒内指定)

因为除非用SIGKILL杀死,否则hard处理访问NFS共享的进程,以阻止永远不可用的进程

这样客户端就会locking,等待新系统启动。 他们会经常因为时间而重试。

除了下面的答案之外,你可能想要确保新服务器上的fsid是相同的,这样你的客户就会认为他们连接到同一个共享,而不是一个会导致一些头痛的新的。

这个计划可能会奏效。 确保你有一个方法进入这两个不是像em0:1接口(所以没有别名接口)的机器。 IPMI或drac甚至更好。 一旦新的ip出现在新机器上运行arpla更新路由器和交换机。

如果你想确保这一切顺利,你应该有一个计划来重新挂载所有客户端上的NFS挂载。 自动化这种事情通常很容易。 尝试使用sshpass和ssh-agent。 我并不是说你肯定会这样做,但它是一个非常现实的可能性。 我也不会在NFS挂载上使用硬错误,它们会使软件locking。

有一个替代方式做事情。 如果你已经想出了如何在所有客户端上运行mount -o remount,那么你也可以考虑改变所有客户端上的ip。 有必要弄清楚它是否会更顺畅。 这些步骤将停止使用NFS挂载目录的任何软件,更改/ etc / fstab中的ip,运行mount -o remount / path / from / fstab,如果挂载正确,则重新启动软件。 这样做会更长一些,但是如果没有注意到一个系统处理这个变化的可能性就会降低。