你需要了解NFS网络文件系统

嵌入式技术

1343人已加入

描述

一、NFS概念:

透过网络,让不同的主机能“共享”文件。通过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



 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • NFS

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分