我们必须迁移 Linux NFS 服务器。我们想使用相同的生产 IP 地址。有一个 bin/ 共享文件夹,生产中有许多服务器使用它...
所有数据均已复制。所有 /etc/exports 均已配置。
如果需要的话,可以复制/var/lib/nfs。
我只需要停止 nfs 服务,从旧服务器中删除 IP,将相同的 IP 放入新服务器,然后启动 nfs 服务。
有没有办法可以做到这一点而不让客户察觉?
答案1
这是一件相当复杂的事情,最好事先用其他系统进行测试。
我从经验中知道,timeo
NFS 挂载选项可能需要设置得更低,并且hard
应该进行设置。
timeo=50
- 5 秒后重试 NFS 请求(以十分之一秒为单位)
hard
- 当 NFS 共享不可用时,导致访问 NFS 共享的进程永久阻塞,除非使用 SIGKILL 终止
这样客户端就会锁定,并等待新系统启动。由于 timeo,它们会经常重试。
答案2
除了下面的答案之外,您可能还想确保新服务器上的 fsid 是相同的,以便您的客户端会认为他们正在连接到同一个共享,而不是连接到新的共享,这会引起一些麻烦。
答案3
该计划可能会奏效。确保您有一条途径进入两台机器,该途径不是像 em0:1 这样的接口(因此没有别名接口)。IPMI 或 drac 甚至更好。一旦新 IP 出现,就在新机器上运行 arping 以更新路由器和交换机。
如果你想绝对确保这一切顺利进行,你应该有一个计划,在所有客户端上重新安装 NFS 挂载。自动化这类事情通常非常容易。尝试使用 sshpass 和 ssh-agent。我不是说你一定要这样做,但这是非常现实的可能性。我也不想在 NFS 挂载上使用硬错误,它们会使软件锁定。
还有另一种方法。如果您已经知道如何在所有客户端上运行 mount -o remount,那么您也可以考虑更改所有客户端上的 ip。值得弄清楚这样做是否会更顺利。步骤是停止使用 NFS 挂载目录的任何软件,更改 /etc/fstab 中的 ip,运行 mount -o remount /path/from/fstab,如果它正确挂载,则重新启动软件。这种方式会花费更长的时间,但您未能注意到一个系统处理更改不当的可能性要低得多。