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

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: