简介

NFS(NetworkFileSystem)即网络文件系统,是Linux/Unix支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT(centos5之前,之后是rpcbind)的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传输。

NFS服务端

安装NFS

yum -y install nfs-utils rpcbind

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

激活服务,设置开机启动 nfs相关服务

systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap

启动nfs服务

systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap

创建共享目录

mkdir -p /data/web_data         # -p 联级创建
chmod -R 777 /data/web_data     # 更改共享文件夹权限为777

配置 /etc/exports

格式为:

共享文件夹路径 允许访问的ip地址(权限1,权限2.....)

此处配置为

echo "/data/web_data 192.168.157.*(rw,sync,no_root_squash)" >> /etc/exports
权限名 作用
rw 读/写
sync 实时同步
no_root_squash 登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限

检查共享目录

[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/data/web_data 192.168.157.*
[root@localhost ~]#

配置防火墙

firewall-cmd --add-service=nfs --permanent
firewall-cmd --add-service=mountd --permanent
firewall-cmd --add-service=rpc-bind --permanent
firewall-cmd --reload       # 重载防火墙

客户端

安装nfs(无需安装其他服务)

yum -y install nfs-utils

检查服务端的共享

[root@localhost ~]# showmount -e 192.168.157.2
Export list for 192.168.157.2:
/data/web_data 192.168.157.*
[root@localhost ~]#

挂载服务端共享目录到本地

mkdir /home/nfs-client      #创建本地挂载目录
mount -t nfs 192.168.157.2:/data/web_data /home/nfs-client  #挂载服务端共享目录到本地

挂载命令格式解读:

mount -t nfs -o nolock,vers=2 10.0.0.147:/work/nfs /mnt

解释一下:

参数 作用
mount 挂载命令
nfs 协议
nolock 不阻塞
vers 实用的nfs版本号
IP nfs的服务端的ip地址
/work/nfs 服务端的共享目录
/mnt 本地挂载目录

取消挂载

umount 192.168.157.2:/data/web_data

umount /home/nfs-client

验证nfs网络文件共享是否成功

服务端[192.168.157.2在共享目录下创建一个文件

[root@localhost ~]# cd /data/web_data
[root@localhost web_data]# echo "Hello,World!" > 1.txt

客户端[192.168.157.136打开本地挂载点验证

[root@localhost /]# cd /home/nfs-client/
[root@localhost nfs-client]# ls
1.txt
[root@localhost nfs-client]# cat 1.txt 
Hello,World
[root@localhost nfs-client]#

在客户端查看挂载情况

[root@localhost nfs-client]# df
文件系统                        1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root      17811456 1007976 16803480    6% /
devtmpfs                       488792       0   488792    0% /dev
tmpfs                          499848       0   499848    0% /dev/shm
tmpfs                          499848    6988   492860    2% /run
tmpfs                          499848       0   499848    0% /sys/fs/cgroup
/dev/sda1                     1038336  127448   910888   13% /boot
tmpfs                           99972       0    99972    0% /run/user/0
/dev/sr0                      4414592 4414592        0  100% /iso
192.168.157.2:/data/web_data  8370176   32768  8337408    1% /home/nfs-client
[root@localhost nfs-client]#

如需客户端开机自动挂载nfs共享目录

编辑 /etc/fstab

在末尾添加一条

192.168.157.2:/data/web_data /home/nfs-client nfs default 0 0

最后修改:2021 年 03 月 30 日
如果觉得我的文章对你有用,请随意赞赏~