NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS 功能:可以通过网络,让不同的机器、不同的操作系统课可以共享彼此的文件
NFS服务器可以使PC将服务器共享的文件挂载在本地,且PC相当于远程控制、使用这个挂载的文件。
挂载点和设备的对应情况:
1、同一个挂载点可以连接多个设备
2、不同的设备可以挂载多个挂载点 生效为最近挂载的
NFS体系组成至少有两个主要部分:
一台NFS服务器和若干台客户机,如右图所示。
客户机通过TCP/IP网络远程访问存放在NFS服务器上的数据。
在NFS服务器正式启用前,需要根据实际环境和需求,配置一些NFS参数。
功能:在指定每个NFS功能所对应的端口号,并且将结果回报给客户端,让客户端可以连接到正确的端口。
NFS工作原理
RPC与NFS如何通讯
因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。
那么RPC又是如何知道每个NFS功能的端口呢?
首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。
NFS客户端和NFS服务端通讯过程
NFS客户端和服务端的通讯过程:
服务端启动RPC服务,并开启111端口
服务端启动NFS服务,并向RPC注册端口信息
客户端启动RPC服务,向服务端请求NFS端口信息
服务端的RPC将NFS端口信息反馈给客户端
客户端获得服务端的NFS端口信息,并与服务端建立数据连接
注:当客户端和服务端建立连接后,服务端的RPC将不再进行活动,RPC相当于介绍人,相识之后不再起作用。
NFS的优缺点:
优点:
1、节省本地存储空间
2、简单、易上手、使用率高
3、方便部署、维护简单
缺点:
1、容易发生单点故障、以及当server宕机时,所有客户端都不能访问。
2、NFS效率、性能有限
3、安全性低,对数据完整性不做验证
4、多台机器挂载NFS服务器时,连接维护麻烦。
预配:
关闭防火墙和SELinux
服务端:
安装nfs:
创建需要分享的文件
配置文件
格式:输出目录 客户端 选项
输出目录:需要共享的文件目录路径
客户端:指定ip、指定域名、指定域中所有主机、指定子网内所有主机
选项:共享的权限,紧跟客户端列
选项1:访问权限选项:
ro 只读
rw 读写
选项2:用户映射选项:
all_squash 将所有普通用户和组映射为匿名用户和组,即都为nfsnobody
no_all_squash 对普通用户不映射(默认设置)
root_squash 将root用户和组映射为匿名用户和组(默认设置)
no_root_squash 对root用户和组不映射,即显示为root
anonuid=xxx 将root用户映射为服务器上的指定UID
anongid=xxx 将root用户组映射为服务器上的指定GID
其他选项:
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
关闭防火墙和SELinux:
重新挂载:
重启nfs服务:
客户端:
查看共享的nfs:
挂载:
客户端检查:
无权限时添加文件,不能添加成功
服务端修改权限:
服务端修改文件权限:
客户端创建文件: