4.1. nfs简介

Date:

2018-09

4.1.1. nsf介绍

参考:
NFS

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。 在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

  1. nfs为什么需要RPC?

    因为NFS支持的功能很多,不同功能会使用不同程序来启动,因此,NFS对应的功能所对应的端口无法固定。 端口不固定造成客户端与服务端之间的通信障碍,所以需要RPC来从中帮忙。 NFS启动时会随机取用若干端口,然后主动向RPC服务注册取用相关端口和功能信息,RPC使用固定端口111来监听来自NFS客户端的请求, 并将正确的NFS服务端口信息返回给客户端,这样客户端与服务端就可以进行数据传输了。

  2. NFS的工作流程
    • 由程序在NFS客户端发起存取文件的请求,客户端本地的RPC(rpcbind)服务会通过网络向NFS服务端的RPC的111端口发出文件存取功能的请求。

    • NFS服务端的RPC找到对应已注册的NFS端口,通知客户端RPC服务。

    • 客户端获取正确的端口,并与NFS daemon联机存取数据。

    • 存取数据成功后,返回前端访问程序,完成一次存取操作。

    • 所以无论客户端,服务端,需要使用NFS,必须安装RPC服务。

    • NFS的RPC服务,在Centos5下名为portmap,Centos6下名称为rpcbind。

  3. 端口服务

    CentOS5.x动态随机端口都小于1024,CentOS6.x动态随机端口比较大。 NFS服务器需要开放的端口:mountd,nfs,nlockmgr,portmapper,rquotad这五个服务对应的端口号。 其中端口信息:

NF端口信息

服务名称

端口信息

备注

portmapper

111

nfs

2049

nlockmgr

动态端口号

可以通过“/etc/services”文件固定端口号

rquotad

动态端口号

可以通过“/etc/services”文件固定端口号

mountd

动态端口号

可以通过“/etc/services”文件固定端口号

4.1.2. nfs适用场景

nfs适用的场景:
  1. 通过网络远程共享存储;

  2. 用户上传的文件适合存储在nfs上;

  3. nfs适合网站访问量不是太大的情况,如果高并发且访问量大的情况不太适合nfs。

  4. nfs数据安全性比较好,一般不会丢数据。

  5. 一般中小网站都会用到nfs。

4.1.3. nfs发展历史

参考下图:

../../../_images/nfs-history01.svg

4.1.4. nfs软件包

nfs服务需要的软件包:
nfs-utils

nfs服务器的主程序包,包括rpc.nfsd、rpc.mountd和相关文档。

portmap

CentOS5.x系统rpc的主程序,CentOS6.x名字是rpcbind。

rpcbind

CentOS6.x系统的rpc主程序。在nfs服务器启动之前此服务需要正常启动运行,否则nfs会不能运行。 因为这个服务软件负责端口和服务的映射。