在集群中经常要对用户家目录等信息进行统一管理,便需要将Home文件夹作为共享存储分享给整个集群;所以在这里记录一下NFS共享存储的配置过程

NFS服务器

安装 NFS 和 rpcbind 服务

检查是否已经安装
# rpm -q nfs-utils rpcbind
进行安装
# yum install -y nfs-utils rpcbind
编辑 /etc/exports 文件 exports文件详解1/exports文件详解2
vim /etc/exports
输入
/public 10.0.35.110/255.255.255.0(rw,sync,no_root_squash,no_all_squash)
格式为:
被共享的目录 / 共享的IP / 掩码或者域名(权限,同步更新)
启动服务

先rpcbind后nfs (安装完nfs-utils后,rpcbind默认是启动的)

centos6以前
# service rpcbind restart
# service nfs restart

centos7以后
# systemctl restart rpcbind
# systemctl start nfs-server
# systemctl start nfs-lock
# systemctl start nfs-idmap
设置开机启动服务
# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl enable nfs-lock
# systemctl enable nfs-idmap
在NFS服务器查询NFS共享状态
# showmount -e  //默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错
# showmount -a  //显示已经与客户端连接上的目录信息****
修改文件属性和用户权限
# chown -R cams:cams /home/cams/
# chmod -R 755 /home/cams/

同时,要保证各服务器用户的uid和gid一致,这里因为用户已存在,对uid、gid进行修改。
# usermod -u 520 cams
# groupmod -g 520 cams

NFS客户端

安装 NFS 和 rpcbind 服务

检查是否已经安装
# rpm -q nfs-utils rpcbind
进行安装
# yum install -y nfs-utils rpcbind
启动服务
查询NFS共享状态
# showmount -e NFS服务器IP
# showmount -e 10.0.35.110
临时挂载
# mount -t nfs IP:/目录 挂载到的目录 (此为临时挂载)
# mount -t nfs 10.0.35.110:/public /home
开机自动挂载 /etc/init.d/fstab详解
# vim /etc/init.d/fstab
添加一行
10.0.35.110:/public /home nfs deafults 0 0

设置防火墙

关闭防火墙或设置通过端口 111

挂载命令

1、exportfs
如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs 命令来使改动立刻生效,该命令格式如下:
  # exportfs [-aruv]
  -a 全部挂载或卸载 /etc/exports中的内容 
  -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
  -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
  -v 在export的时候,将详细的信息输出到屏幕上。
具体例子: 
  # exportfs -au 卸载所有共享目录
  # exportfs -rv 重新共享所有目录并输出详细信息
2、nfsstat
查看NFS的运行状态,对于调整NFS的运行有很大帮助。
3、rpcinfo
查看rpc执行信息,可以用于检测rpc运行情况的工具,利用rpcinfo -p 可以查看出RPC开启的端口所提供的程序有哪些。
4、showmount
  -a 显示已经于客户端连接上的目录信息
  -e IP或者hostname 显示此IP地址分享出来的目录
5、netstat
可以查看出nfs服务开启的端口,其中nfs 开启的是2049,portmap 开启的是111,其余则是rpc开启的。
最后注意两点,虽然通过权限设置可以让普通用户访问,但是挂载的时候默认情况下只有root可以去挂载,普通用户可以执行sudo。
NFS server 关机的时候一点要确保NFS服务关闭,没有客户端处于连接状态!通过showmount -a 可以查看,如果有的话用kill killall pkill 来结束,(-9 强制结束)

参考文章