nfs是什么意思(nfc是什么意思)

lxf2023-03-18 18:33:01

NFS是指网络文件系统,是FreeBSD支持的文件系统之一,允许网络中的计算机通过TCP/IP网络共享资源。NFS是基于UDP/IP协议的应用程序。事实上,RPC机制主要采用远程过程调用。RPC提供了一组与机器、操作系统和低层传输协议无关的远程文件访问操作。

nfs是什么意思(nfc是什么意思)

本教程操作环境:linux7.3系统、Dell G3电脑。

1. nfs简介

网络文件系统,英文Network File System(NFS),UNIX是由SUN公司开发的UNIX表层协议(presentation layer protocol),使用者可以访问网络上其他地方的文件,就像使用自己的电脑一样。

NFS是基于UDP/IP协议的应用。事实上,RPC机制主要采用远程过程调用。RPC提供了一组与机器、操作系统和低层传输协议无关的远程文件访问操作。RPC采用XDR支持。XDR是一种与机器无关的数据描述编码协议。它以独立和任何机器系统结构的形式编码和解码在线传输的数据,并支持异构系统之间的数据传输。

1.1 nfs特点

  • NFS(Network File System)也就是说,网络文件系统是FreeBSD支持的文件系统之一,允许网络中的计算机通过TCP/IP网络共享资源
  • 在NFS应用程序中,本地NFS客户端应用程序可以透明地读写远端NFS服务器上的文件,就像访问本地文件一样
  • nfs适用于Linux与Unix之间的文件共享,不能实现Linux与Windows之间的文件共享功能
  • nfs是运行在应用层的协议,监控在2049/tcp和2049/udp套接字上
  • nfs服务只能基于IP进行认证

1.2 nfs的应用场景

nfs有很多实际的应用场景,以下是一些常见的场景:

  • 多台机器共享一台CDROM或其他设备。这对于在多台机器中安装软件来说更便宜、更方便
  • 在大型网络中,配置一个中央NFS服务器来放置所有用户的home目录可能会带来方便。这些目录可以输出到网络,以便用户总是可以获得相同的home目录,无论他们登录到哪个工作站
  • 不同的客户端可以在NFS上观看影视文件,节省本地空间
  • 在客户端完成的工作数据可以在用户自己的路径下备份并保存到NFS服务器上

1.3 nfs的系统组成

nfs系统至少有两个主要部分:

  • nfs服务器
  • 几台客户机

nfs系统的架构图如下:

nfs是什么意思(nfc是什么意思)

通过TCP/IP网络远程访问存储在NFS服务器上的数据
在NFS服务器正式启用之前,需要根据实际环境和需要配置一些NFS参数

2. nfs工作机制

nfs是基于rpc实现网络文件系统共享的。所以我们先来说说rpc。

2.1 RPC

RPC(Remote Procedure Call Protocol),远程过程调用协议是一种通过网络从远程计算机程序中请求服务,而不需要了解底层网络技术的协议。

RPC协议假设某些传输协议的存在,如TCP或UDP,将信息数据带到通信程序之间。在OSI网络通信模型中,RPC跨越传输层和应用层。

RPC采用客户机/服务器模式。请求程序是客户机,服务提供程序是服务器。

nfs是什么意思(nfc是什么意思)

RPC工作机制如上图所示,下面描述一下:

  • 客户端程序启动RPC系统调用,基于TCP协议将RPC系统调用到另一台主机(服务端)
  • 服务器监控在一个套接字上。收到客户端系统呼叫请求后,通过本地系统呼叫执行所收到的请求及其传输参数,并将结果返回本地服务流程
  • 在收到返回执行结果后,将服务端的服务流程封装成响应报文,然后通过RPC协议返回客户端
  • 客户端调用过程接收答复信息,获取过程结果,然后调用执行继续进行

2.2 nfs工作机制

NFS服务器端运行四个过程:

  • nfsd

  • mountd

  • idmapd

  • portmapper

idmapd

实现用户账号的集中映射,将所有账号映射为NFSNOBODY,但在访问时可以作为本地用户访问

mountd

在允许访问NFS文件系统的客户端列表中,用于验证客户端是否允许访问(发放令牌,持令牌查找NFSD),否则拒绝访问

mountd的服务端口是随机的,由RPC服务(portmapper)提供随机端口号

nfsd

在2049/tcp和2049/udp端口上监控nfs的守护过程

不负责文件存储(NFS服务器本地内核负责调度存储),用于了解客户端发起的RPC请求,并将其转移到本地内核,然后存储在指定的文件系统上

portmapper

NFS服务器的RPC服务监控在111/TCP和111/UDP套接字上,用于管理远程过程调用(RPC)

以下是NFS简单工作流程的一个例子

需求:查看file这个文件的信息file存储在远程NFS服务端主机(挂载在本地目录//shared/nfs)

nfs是什么意思(nfc是什么意思)

  • 客户端发起查看file信息的指令(ls file)对于内核,内核通过NFS模块得知,该文件不是本地文件系统中的文件,而是远程NFS主机上的文件
  • 客户端主机的核心通过RPC协议将查看file信息的指令(系统调用)封装成rpc请求通过TCP11端口发送给NFS服务端主机的portmaper
  • NFS服务端主机的portmapper(RPC服务流程)告诉客户,NFS服务端的mountd服务在某个端口上,你去找它验证

因为mortmapper在提供服务时必须向portmapper注册一个端口号,所以portmapper知道它在哪个端口工作

  • 客户端得知服务端的mountd进程端口号后,通过已知的服务端mountd端口号请求验证
  • 接到验证请求后,mountd验证发起请求的客户端是否允许访问NFS文件系统的客户端列表(发布令牌,持令牌查找nfsd),否则拒绝访问
  • 验证通过后,客户端持mountd发布的令牌到服务端的nfsd进程,请求查看某一文件
  • 服务器的nfsd流程启动本地系统调用,向内核请求查看客户端要查看的文件的信息
  • 服务器内核执行nfsd请求的系统调用,并将结果返回nfsd服务
  • nfsd过程收到内核返回结果后,将其封装成rpc请求报文,并通过tcp/ip协议返回给客户端

更多相关知识,请访问常见问题栏目!

以上是nfs的详细内容,更多请关注AdminJS的其他相关文章!