一、NFS概念:
透过网络,让不同的主机能“共享”文件。通过NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
二、版本:
共三个版本,NFSv2,NFSv3,NFSv4(包含4.0和4.1)。其中NFSv2和NFSv3由Sun公司起草。NFS4.0主要由NetApp。
三、版本特点
V2:实现基本的网络共享及存取功能
V3:修正了V2的一些bug。
——————V3与V2区别——————
1.V2对每次读写操作中传输数据的最大长度限制:8192字节,V3无限制
2.V2对文件名长度限制:255字节,V3无限制
3.V2对文件长度限制:0xFFFFFFF,V3无限制
4.V2对文件句柄长度固定为32B,V3中句柄长度上限为64字节
5.V2只支持同步写,V3支持异步写操作。V3增加了commit请求,commit可以将服务器缓存中的数据刷新到磁盘中。
*注:同步写指当客户端向服务器端写入数据时,服务器必须将数据写入磁盘中才能发送应答消息。异步写指服务器只需要将数据写入缓存中就可以发送应答消息。
6.V3增加了ACCESS请求
*注:ACCESS用来检查用户的访问权限。因为服务器端可能进行uid映射,一次客户端的Uid和gid不能正确反映用户的访问权限。NFS2的处理方法是不管访问权限,直接返送请求,如果没有访问权限就出错。NFS3中增加了ACCESS请求,客户端可以检查是否有访问权限。
7.V3中一些请求调整了参数和返回信息。
——————V4与V3区别——————
1.V2和V3都是无状态协议,即服务器端不需要维护客户端的状态信息。无状态协议的优点是当服务器出现问题后,客户端只需要重复发送失败请求就可以了,直到收到服务器的响应信息。但某些操作必须需要状态,如文件锁。如果客户端申请了文件锁,但是服务器重启了,但NFSv3是无状态的,客户端再执行锁操作可能会出错。NFSv3需要NLM(Network Lock Manager)协助才能实现文件锁功能,但有时两者的配合不够协调。NFSv4设计成了一种有状态的协议,自身实现了文件锁功能,从而不再需要NLM协议。
2.NFSv4 增加了安全性,支持RPCSEC-GSS身份认证。
3.NFSv4 只提供了两个请求NULL和COMPOUND ,所有的操作都整合进了COMPOUND中,客户端可以根据实际请求将多个操作封装到一个COMPOUND 请求中,增加了灵活性。
4.NFSv4 文件系统的命令空间发生了变化,服务器端必须设置一个根文件系统(fsid=0) ,其他文件系统挂载在根文件系统上导出。
5.NFSv4 支持delegation( 代表) 。由于多个客户端可以挂载同一个文件系统,为了保持文件同步, NFSv3 中客户端需要经常向服务器发起请求,请求文件属性信息,判断其他客户端是否修改了文件。如果文件系统是只读的,或者客户端对文件的修改不频繁,频繁向服务器请求文件属性信息会降低系统性能。NFSv4 可以依靠delegaTIon 实现文件同步。
*如:当客户端A 打开一个文件时,服务器会分配给客户端A 一个delegaTIon 。只要客户端A 具有delegaTIon ,就可以认为与服务器保持了一致。如果另外一个客户端B 访问同一个文件,则服务器会暂缓客户端B 的访问请求,向客户端A 发送RECALL 请求。当客户端A 接收到RECALL 请求时将本地缓存刷新到服务器中,然后将delegaTIon 返回服务器,这时服务器开始处理客户端B 的请求。
6.NFSv4 修改了文件属性的表示方法。
——————V4.1与V4.0区别——————
NFSv4.1 支持并行存储,服务器由一台元数据服务器(MDS) 和多台数据服务器(DS) 构成,元数据服务器只管理文件在磁盘中的布局,数据传输在客户端和数据服务器之间直接进行。由于系统中包含多台数据服务器,因此数据可以以并行方式访问,系统吞吐量迅速提升。
四、Linux NFS相关文件
/etc/exports:
NFS 的主配置文件有的linux 版本中默认不存在,需要手动建立.
/usr/sbin/exportfs:
在Server端 维护NFS 共享资源的命令。
/usr/sbin/showmount:
在Client端 来查看NFS 共享的资源
/var/lib/nfs/xtab:
NFS 的记录文件,可以客户端查看链接服务器的信息
五、搭建NFS服务 【默认服务端口:2049】
Serve端:
①:安装软件
yum install nfs-utils.x86_64 -y
②:启动服务
systemctl start nfs-server.service
如果报错请先开启“rpcbind.service”后再开启“nfs-server.service”
③:检查服务状态
systemctl status nfs-server.service
netstat -lantu |grep 2049
④:编辑配置文件
/etc/exports: /nfsserver *(rw,sync)
格式: 共享目录path 允许的IP/hostname (权限)
⑤:重启服务
systemctl restart nfs-server.service
Clinet端:
挂载方式分:手动、自动
手动挂载:
①:执行命令: mount.nfs nfs_server_ip:/共享目录path /local/path
自动挂载:
①:利用 fstab
nfs_server_ip:/共享目录path /local/path nfs defaults 0 0
②:使用automount
安装软件:yum install -y autofs
启动服务:systemctl start autofs systemctl enable autofs
检查服务:systemctl status autofs
新建配置文件:/etc/auto.master.d/xxxxxx.autofs(新建文件)
内容:/- /etc/xxxxx.nfs(/- 指定配置文件)
编辑配置文件:/etc/xxxxx.nfs(新建、制作配置文件)
内容:/local/path -type=nfs,rw,sync nfs_server_ip:/共享目录path
重启服务:systemctl restart autofs.servic