首页 > 其他 > 详细

NFS服务

时间:2020-09-01 22:30:57      阅读:73      评论:0      收藏:0      [点我收藏+]

NFS是什么

NFS(Network File System,网络文件系统),基于RPC(Remote Procedure Call)实现,允许系统在网络上与他人共享文件系统。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据(通过NFS客户端就像访问本地文件一样访问远程NFS服务器上的文件),是在类Unix系统间实现磁盘文件共享的一种方法。

NFS的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器共享的目录就好像自己的磁盘分区和目录一样。

NFS一般用来存储共享视频、图片等静态数据(尽量不要存储脚本文件、数据库文件等变化较为频繁的文件)。

 

NFS挂载原理

NFS服务器端和客户端是如何通信的?

NFS是通过网络来进行服务端和客户端之间的数据传输。两者之间要传输数据就要有相对应的网络端口来进行传输。NFS服务器端随机选择端口来进行数据传输,NFS客户端如何知道NFS服务器使用哪个端口的呢?NFS服务器通过远程过程调用(RPC)协议/服务来实现,即RPC服务会统一管理NFS的端口,客户端和服务端通过RPC预先沟通NFS使用哪些端口,然后再利用这些端口(小于1024)进行数据传输。即RPC管理服务端的NFS端口分配,客户端要传输数据,那么客户端的RPC会先跟服务端的RPC去要服务端的端口,然后再建立连接传输数据。

RPC和NFS之间是如何通信的?

当NFS启动后,会随机使用一些端口,并且NFS会去向RPC注册这些端口(首先启动RPC,再启动NFS,NFS主动去向RPC注册端口信息)。RPC记录下这些端口并开启111端口等待客户端RPC的请求。如果客户端有请求,那么服务端的RPC会将记录的NFS端口信息告知客户端。

RPC和NFS的启动顺序是怎样的?

在启动NFS Server之前,首先要启动RPC服务,否则NFS Server无法向RPC服务区注册。且如果RPC服务重新启动,原来已经注册好的NFS端口数据会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。

停止NFS运行时,需要先停止NFS服务再停止rpcbind服务,对于系统中有其他服务(如NIS)需要使用时,不需要停止rpcbind服务。

客户端NFS和服务端NFS的通信过程

  • 首先服务端启动RPC服务,并开启111端口
  • 接着服务端启动NFS服务,并向RPC注册端口信息
  • 客户端启动RPC,向服务端的RPC服务请求服务端的NFS端口
  • 服务端的RPC服务反馈NFS端口信息给客户端
  • 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输

 

软件信息和守护进程

软件信息

nfs-utils-*:包括NFS命令与监控程序

rpcbind-*:支持安全NFS RPC服务的连接

守护进程

nfs:基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器

rpcbind:主要功能是进行端口映射工作,当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务

 

NFS服务器配置

NFS服务器的配置只需要在其配置文件/etc/exports(NFS的主配置文件,不过系统没有默认值,因此文件不一定存在,需要vim手动建立)写入配置内容即可。

/etc/exports文件内容格式:

        共享目录    客户端1(访问权限,用户映射,其他)    客户端2(访问权限,用户映射,其他)

  • 共享目录:NFS服务器共享给客户机使用的目录
  • 客户端:客户端是指网络中可以访问这个NFS共享目录的计算机
    客户端常用的指定方式:
            指定ip地址的主机
            指定子网中的所有主机
            指定域名的主机
            指定域中的所有主机
            所有主机
  • 设置输出目录的访问权限、用户映射等
    访问权限选项:
            设置输出目录只读:ro
            设置输出目录读写:rw
    用户映射选项:
            root_squash:将root用户的访问映射为匿名用户(nfsnobody)uid和gid(默认生效)
            no_root_squash:保留管理员权限,以服务器管理员的权限管理
            all_squash:将远程访问的用户以及所属组都映射为指定的uid、gid的匿名用户
                    anonuid=xxx:将远程访问的所有用户都映射为指定uid的匿名用户
                    anongid=xxx:将远程访问的所有用户组都映射为指定gid匿名组用户
    其它选项:
            sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据一致性(同步)
            async:将数据先保存在内存缓冲区中,必要时才写入磁盘(异步)

 

 

 

NFS服务

原文:https://www.cnblogs.com/wanao/p/13597504.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!