NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
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的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
首先我们先安装NFSserver
apt install nfs-kernel-server systemctl enable nfs-server #然后设置开机启动 systemctl status nfs-server #查看当前nfs-server状态
创建共享文件目录
mkdir -p /data/nas
创建好以后还需要给予最高权限,不然在共享时,客户端使用可能会有权限不够的情况发生
chmod -R 777 /data/nas
接着需要编辑exports来共享上述共享目录
cat /etc/exports /data/nas 192.168.1.71(rw,sync,no_subtree_check) #单个客户端使用 /data/nas 192.168.1.0/24(rw,sync,no_subtree_check) #整个网段都可以使用
上述参数解释
rw 允许读写 sync 文件同时写入硬盘和内存 no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
最后我们需要执行以下命令使配置生效
exportfs -arv
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 重新共享所有目录并输出详细信息
然后在需要挂载NFS共享目录的主机上使用showmount命令查看共享的目录
showmount -e 192.168.1.71
NFS客户端配置,首先安装NFS客户端
apt install -y nfs-common
然后创建一个需要挂载到本的目录,或者是需要挂载的路径
mkdir -p /data/share
可以直接使用以下命令进行临时挂载
mount -t nfs 192.168.1.71:/data/nas /data/share
让其永久生效可以写到fstab文件内
vi /etc/fstab #最后面添加 192.168.1.71:/data/nas /data/share nfs defaults 0 0
常用命令
nfsstat #查看NFS的运行状态,对于调整NFS的运行有很大帮助。 rpcinfo #查看rpc执行信息,可以用于检测rpc运行情况的工具,利用rpcinfo -p 可以查看出RPC开启的端口所提供的程序有哪些。 showmount -a 显示已经于客户端连接上的目录信息 -e IP或者hostname 显示此IP地址分享出来的目录 netstat #可以查看出nfs服务开启的端口,其中nfs 开启的是2049,portmap 开启的是111,其余则是rpc开启的