1. NFS服务介绍

一、NFS和RPC概念

1、什么是NFS服务器创作中心

NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;

3.什么是rpc服务

RPC(Remote Procedure Call)即远程过程调用。RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的port上去

 

二:NFS通讯原理

RPC与NFS如何通讯

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,且RPC有固定的111端口

那么RPC又是如何知道每个NFS功能的端口呢?

首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。

注意:

先启动RPC再启动NFS,因为NFS要向RPC注册端口号,RPC重启,NFS也需要在RPC重启之后重启来重新注册端口号!!

特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接exportfs –r即可使修改的/etc/exports生效。

 三、portmap

功能:主要是把RPC程序号转化为Internet的端口号。

特点:只在第一次建立连接时候帮助网络应用程序找到正确的port,当当双方正确连接时,端口就和应用绑定,portmap就无用。相当于媒婆。

 

四、NFS的三个守护进程的作用

1、nfsd

最主要的NFS服务提供程序,这个daemon主要的功能就是管理客户端是否能够使用服务器文件系统挂载信息,其中还包含判断这个登录用户的ID。

2、rpc.mountd

这个daemon主要功能则是管理NFS的文件系统。当client端顺利通过rpc.nfsd登入主机后,在它可以使用NFS服务器提供规定文件之前,还会经过文件使用权限的认证程序。它会去读取NFS的配置文件/etc/exports来对比客户端的权限,当通过这一关之后,client端也就取得使用NFS文件的权限。

3、rpc.statd(非必要)

这个daemon可以用来检查文件的一致性,若发生因为客户端同时使用同一个文件造成文件损坏时,rpc.statd可以用来检测并尝试恢复该文件

 

五、配置文件/etc/exports

输出目录           客户端                        [访问权限,用户映射,其他]   
例:/test      192.168.1.0/24或*或192.168.1.1        [rw,all_squash]等等

 

访问权限选项:

参数命令

参数用途

rw

表示可读写

ro

Read-only表示只能读权限

用户映射选项:

             

参数命令

参数用途

no_root_squas

访问nfs server共享目录的用户如果是root的话,它对该目录具有root权限。这个配置原本为无盘用户准备的。用户应避免使用!

root_squash

对于访问NFS server共享目录的用户,如果是root的话会被压缩成为nobody用户身份。

all_squash

不管访问nfs server共享目录的用户身份如何包括root,它的权限都将被压缩成为匿名用户,同时他们的udi和gid都会变成nobody或nfsnobody账户的uid,gid。在多个nfs客户端同时读写nfs server数据时,这个参数很有用可以确保大家写入的数据的权限是一样的。

但不同系统有可能匿名用户的uid,gid不同。因为此处我们需要服务端和客户端之间的用户是一样的。比如说:服务端指定匿名用户的UID为2000,那么客户端也一定要存在2000这个账号才可以

anonuid

anonuid就是匿名的uid和gid。说明客户端以什么权限来访问服务端,在默认情况下是nfsnobody。Uid65534.

anongid

同anongid,就是把uid换成gid而已

搭建访问NFS的过程:

1、开启NFS服务

nfs pod一直处于ContainerCreating nfs rpc error_RPC

2、配置/etc/exports文件

nfs pod一直处于ContainerCreating nfs rpc error_nfs服务器_02

3、重新读取/etc/exports文件

nfs pod一直处于ContainerCreating nfs rpc error_nfs服务器_03

4、客户端查看nfs服务器共享的文件

nfs pod一直处于ContainerCreating nfs rpc error_服务器_04

5、客户端挂载服务端共享的目录到自己的mnt目录下

nfs pod一直处于ContainerCreating nfs rpc error_服务器_05

特别注意:若要限定某个用户才能和nfs服务器共享文件,则要对用户映射和文件系统权限,文件权限进行修改