一.概述   

网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机、不同的操作系统可以共享存储的服务。

二.需要的资源

资源

IP

服务器端

47.97.112.209

客户端

192.168.132.64

三.服务器端

1.安装NFS

yum install -y nfs-utils 
systemctl enable nfs-server rpcbind --now

2.创建nfs共享目录,授权

mkdir -p /home/ydxc && chmod -R 777 /home/ydxc

3.写入exports

cat > /etc/exports << EOF

/home/ydxc *(rw,sync,insecure,no_root_squash)

EOF

如果客户端 IP 不在该区间也想要挂载的话,可以设置 IP 区间更大或者设置为 * 即允许所有客户端挂载,例如:/home *(ro,sync,insecure,no_root_squash) 设置 /home 目录允许所有客户端只读挂载。

参数    说明
ro    只读访问
rw    读写访问
sync    所有数据在请求时写入共享
async    nfs 在写入数据前可以响应请求
secure    nfs 通过 1024 以下的安全 TCP/IP 端口发送
insecure    nfs 通过 1024 以上的端口发送
wdelay    如果多个用户要写入 nfs 目录,则归组写入(默认)
no_wdelay    如果多个用户要写入 nfs 目录,则立即写入,当使用 async 时,无需此设置
hide    在 nfs 共享目录中不共享其子目录
no_hide    共享 nfs 目录的子目录
subtree_check    如果共享 /usr/bin 之类的子目录时,强制 nfs 检查父目录的权限(默认)
no_subtree_check    不检查父目录权限
all_squash    共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录
no_all_squash    保留共享文件的 UID 和 GID(默认)
root_squash    root 用户的所有请求映射成如 anonymous 用户一样的权限(默认)
no_root_squash    root 用户具有根目录的完全管理访问权限
anonuid=xxx    指定 nfs 服务器 /etc/passwd 文件中匿名用户的 UID
anongid=xxx    指定 nfs 服务器 /etc/passwd 文件中匿名用户的 GID

4.启动nfs

systemctl start nfs-server

四.客户端

1.安装NFS

yum install -y nfs-utils

2.验证能否正常连接

showmount -e 47.97.112.209

此时出现报错:clnt_create: RPC: Port mapper failure - Timed out 或者mount.nfs: Connection timed out 。

这是因为rpc端口或者NFS端口没有被开启。

centos查看nfs版本 centos开启nfs_服务器端

 将111/udp,111/tcp,20048/tcp,20048/udp,2049/tcp,2049/udp防火墙端口打开。

firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=20048/tcp --permanent
firewall-cmd --zone=public --add-port=20048/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=2049/udp --permanent

firewall-cmd --reload

然后就能正常连接了:

centos查看nfs版本 centos开启nfs_IP_02

 3.挂载远端目录到本地目录。

客户端创建目录

mkdir -p /home/ydxc

挂载:

mount -t nfs 47.97.112.209:/home/ydxc /home/ydxc

4.测试文件能否正常读取写入

在服务器端共享目录/home/ydxc创建文件ai.txt:

centos查看nfs版本 centos开启nfs_centos查看nfs版本_03

登录客户端查看是否有该文件:

centos查看nfs版本 centos开启nfs_服务器端_04

可以看到客户端可以看到有文件了。

在客户端创建文件夹upload: 

centos查看nfs版本 centos开启nfs_centos查看nfs版本_05

服务器端可以看到已经客户端创建的文件了:

centos查看nfs版本 centos开启nfs_IP_06