目录
前言
配置文件
工作原理
NFS服务器的配置
查看服务器是否安装
查看服务器状态
开启服务
编写配置文件
客户端挂载
前言
NFS(Network File System)是一种分布式文件系统协议,它允许网络中的不同计算机共享文件和目录,就像它们是本地存储的一部分一样。主要用于UNIX/Linux系统之间的文件共享。
配置文件
/etc/exports
工作原理
NFS的工作原理基于客户端-服务器架构。服务器端配置并启动相关服务进程,通过/etc/exports文件定义哪些目录可以被哪些客户端以哪种权限访问。客户端访问服务器端的共享资源时,会通过Portmapper(或rpcbind)服务查询到NFS服务器所监听的实际端口,并向这些端口发送挂载请求。一旦服务器验证并批准该请求,客户端就可以将远端的共享目录挂载到本机的一个指定路径下。这时,访问服务端的共享文件,就如同访问本地文件一样。
NFS服务器的配置
查看服务器是否安装
rpm -qa | grep nfs
查看服务器状态
systemctl status nfs
开启服务
systemctl start nfs
编写配置文件
vim /etc/exports
配置文件打开后,需要自己添加配置
格式为:共享目录或文件的路径 客户端IP/IP段 (选项)
下表为一些基本的选项和说明
访问权限 | ro | 只读访问权限 |
rw | 读写访问权限 | |
数据同步 | sync | 数据同步写入到内存与硬盘中 |
async | 数据先暂存于内存当中,而非直接写入硬盘 | |
用户映射 | root_squash | 将客户端的 root 用户映射为匿名用户 nfsnobody |
no_root_squash | 保留客户端root用户的权限 | |
all_squash | 将所有用户映射为匿名用户 | |
anonuid | 设定匿名用户的UID | |
anongid | 设定匿名用户的GID | |
安全设置 | secure | 限制客户端仅能通过小于1024的TCP/IP端口连接 |
insecure | 允许客户端从大于1024的端口连接 | |
写入延迟 | wdelay | 默认设置,归组写入,提高效率 |
no_wdelay | 立即写入,应与 async 配合使用 | |
子目录检查 | subtree_check | 如果共享子目录,则检查父目录权限(默认) |
no_subtree_check | 不检查父目录权限,提高性能 | |
子目录共享 | hide | 不共享子目录 |
no_hide | 共享子目录 |
比如:服务端想要共享给客户端的目录为home目录下的files目录
那么服务端配置文件应该根据具体情况添加类似如下的语句:
#任意IP的客户端都可以以只读的形式访问/home/files:
/home/files *(ro)#只允许IP为192.168.100.88的客户机访问/home/filws:
/home/files 192.168.100.88(rw)#允许192.168.100.0这个网段的用户以读写从形式访问/home/files并且不限制用户身份:
/home/files 192.168.100.0/24(rw,all_squash)#只允许uid和gid都为900且在192.168.100.0这个网段的用户以读写形式访问/home/files:
/home/files 192.168.100.0/24(rw,anonuid=900,anongid=900)
具体怎么配置,根据实际需求来,总之,结构都一样:目录或文件 ip(选项)
这里我们演示允许192.168.100.0网段的用户已读写的方式访问/home/files
/home/files 192.168.100.0/24(rw)
编辑好配置文件后,需要配置防火墙允许nfs开启服务,然后重启防火墙,重启nfs服务,还可以看一下nfs状态(如果配置文件出错了,重启nfs并不会报错,但nfs状态可能会标红,影响nfs连接)
firewall-cmd --add-service=nfs --zone=public --permanent
setenforce 0
systemctl restart firewalld
systemctl restart nfs
systemctl status nfs
客户端挂载
这里的挂载,只是一种映射,并不是实际的挂载到了客户端下面
来到客户端,将服务端/home/files目录挂载到自己新建的一个目录:
mkdir /home/guazai
mount -t nfs 192.168.100.2:/home/files ./guazai
值得注意的是NFS共享文件的最终访问权限取决于服务器端配置的共享权限和文件本身的权限。