目录
背景说明
解决办法
执行步骤
数据移动
取消挂载
停nfs服务;客户端;
卸载nfs;客户端;
重启主机;客户端;
卸载nfs;服务端;
背景说明
nfs可以完成集群多个主机之间共享目录;如图所示;
服务器集群中/new目录为共享目录;里面放置有各种安装软件及配置文件。
想要实现服务器集群高可用;要求当集群某一主组件挂掉的时候;需要有另一从组件完成替换;并继续提供服务;并且当集群中其中任何一台主机关机的时候;其他主机依然能够提供服务;对于用户来说没有任何影响。
但是nfs对于高可用来说存在一个隐患;客户端nfs中有一个内核级别的线程;nfsv4.1-svc;该线程会一直和nfs服务端进行通信;且无法被kill掉。;停止客户端Nfs服务;设置开机不自启动;并卸载nfs;重启主机才能让该线程停掉;。
一旦nfs服务端停掉;或者所在主机关机;那么nfs客户端就会找不到nfs服务端;导致nfs客户端所在主机一直处于卡死状态;表现为无法ssh到该主机;不能使用 df -h 等命令;会对客户造成比较严重的影响。
解决办法
如果想要高可用;那么可能就不需要使用Nfs来实现共享目录;而是将/new目录设置为主机本地目录
执行步骤
数据移动
- 在nfs服务端所在主机上;通过scp;将 /new 目录复制到nfs客户端所在主机上;但是目录名字需要修改一下;执行如下命令;建议后台执行;因为有时候该目录比较大;或者压缩后再发送;;
-
- scp -r /new root;其他主机名://new_tmp
取消挂载
- 由于nfs客户端都是挂载在nfs服务端所在主机的 /new 上;需要取消挂载;执行如下命令;
- 取消挂载以后; /new 变为了空目录;删除 /new 目录;将 /new_tmp 目录重命名为 /new
停nfs服务;客户端;
-
- systemctl status nfs
- ps -ef | grep nfs
卸载nfs;客户端;
-
- rpm -qa | grep nfs
-
-
- rpm -e --nodeps libnfsidmap-0.25-19.el7.x86_64
- rpm -e --nodeps nfs-utils-1.3.0-0.66.el7.x86_64
- rpm -e --nodeps nfs4-acl-tools-0.3.3-20.el7.x86_64
-
- rpm -qa | grep nfs
-
- 观察 nfsv4.1-svc 线程是否还存活;执行如下命令;
-
- ps -ef | grep nfs
-
- 可以观察到此时 nfs该线程还存在;所以当nfs服务端停止的时候;还是会存在当前主机卡死的情况。
重启主机;客户端;
- 每重启一台主机之后;观察nfs进程是否还存在;执行如下命令;
-
- ps -ef | grep nfs
-
卸载nfs;服务端;
-
- rpm -e --nodeps libnfsidmap-0.25-19.el7.x86_64
- rpm -e --nodeps nfs-utils-1.3.0-0.66.el7.x86_64
- rpm -e --nodeps nfs4-acl-tools-0.3.3-20.el7.x86_64