导言

NFS(Network File System),即网络文件系统。功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据。

NFS服务端、RPC协议、NFS客户端之间的关系

NFS.png

服务端NFS配置

安装NFS和RPC

  • CentOS
1
$ yum install -y nfs-utils rpcbind
  • Ubuntu
1
$ sudo apt-get install nfs-utils rpcbind

新建NFS共享文件并修改权限

1
2
3
$ mkdir -p share_dir
$ chmod 777 -R share_dir
$ chmod nobody:nobody share_dir

NFS 配置/etc/exports文件

1
2
3
$ cat >> /etc/exports <<EOF
share_dir client_ip(rw,sync, insecure, no_root_squash)
EOF
  • 其中share_dir 为服务器端共享目录(绝对路径),client_ip为客户端IP地址
  • 后面括号里的rw代表读写权限
  • sync代表数据同步写入到NFS服务端的硬盘中,所有数据在请求时写入共享
  • insecure 控制不让端口超过1024
  • no_root_squash root用户具有根目录的完全管理访问权限

启动NFS服务

设置RPC服务和NFS服务开机启动

1
2
$ systemctl enable rpcbind.service
$ systemctl enable nfs-server.service

注:必须先开启rpc服务,下同

开启RPC和NFS服务

1
2
systemctl start rpcbind.service
systemctl start nfs-server.service

重新设置权限生效

  • 重启NFS服务
1
$ systemctl restart nfs-server.server
  • 利用exportfs重新扫描/etc/exports文件
1
2
$ exportfs -au    #卸载所有共享目录
$ exportfs -rv #重新共享所有有目录并输出详细信息

查看配置是否生效

1
2
$ exportfs
$ share_dir client_ip

客户端配置

##安装与启动

  1. 安装部分与服务端相同,见上面步骤
  2. 客户端不需要启动nfs服务,只需要启动rpc服务

检查NFS服务端是否有目录共享

1
$ showmount -e nfs server_ip

挂载NFS服务端目录

1
2
$ mount -t nfs server_ip:/data/nfs mnt_point
$ df -h

挂载NFS服务端的/data/nfs目录到 客户端的挂载点mnt_point,并查看是否挂载成功

可能出现的错误

1
RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
  • 解决办法:
  1. 关闭服务端的防火墙
  2. 添加相应端口的防火墙规则

查看客户端RPC服务使用端口

1
$ rpcinfo -p client_ip