首先我们先了解一下NFS究竟是什么东西

NFS其实是Network File System的缩写,翻译过来也就是网络文件系统,主要是可以让不同服务器之间通过网络共享文件,我们也可以通过挂载让NFS共享的目录挂载到NFS客户端本地的目录下。

而我们的NFS传输文件是依赖RPC进行的,这时,有人会问RPC是什么

RPC就是Remote Procedure Call 的缩写,也就是远程过程调用,它是一种能使客户端执行其他系统程序的协议,也就是说NFS本身是没有传输文件的功能的,只是个文件系统,是因为依赖RPC协议才能哦那个过网络共享文件。

NFS支持的功能很多,当我们每次想访问不同功能时就需要不同的程序来访问,每次启动一个功能就会启动一些端口来传输数据,这样一来端口总是变化,对客户端连接服务器造成困扰,因为客户端得知道相应端口才能连接服务器,这个时候怎么办呢?

这个时候就得需要我们的RPC了,RPC其主要功能是为每个NFS配置相应的port number,然后回报给客户端,让客户端可以正常连接到正确的端口上去,可是它又是怎么知道我们NFS的每个端口呢?

这是因为每次启动NFS时都会随机选取几个小于1024的端口,并都会向RPC注册,这样RPC就能通过这些端口知道其对应功能,并且RPC是固定使用 port 111来监听客户端的需求并且回报客户端的正确端口,所以使NFS的配置更轻松了。


 

nfs rpc端口 nfs和rpc的关系_共享目录

 

 

 

接下来就是我们再linux下如何配置nfs了

1.安装NFSserver端口映射服务

nfs rpc端口 nfs和rpc的关系_客户端_02

 

 通过apt会去自动安装nfs-common、rpcbind等13个软件包

2.重启portmap服务

nfs rpc端口 nfs和rpc的关系_RPC_03

   portmap:Linux的RPC服务,它响应RPC服务的请求和与请求的RPC服务建立连接

3.编写/etc/exports,添加目标系统的根文件系统映射目录,假如目标系统的根文件系统最后映射到/opt/filesystem

  打开文件/etc/export

  

nfs rpc端口 nfs和rpc的关系_nfs rpc端口_04

 

   

nfs rpc端口 nfs和rpc的关系_共享目录_05

 

   前面的/opt/filesystem是你要共享的目录, 如果我们要共享多个文件时,就得像这样在下面再加所要共享的文件的权限,如:

nfs rpc端口 nfs和rpc的关系_RPC_06

 

配置格式如下:

<share Directory> <Host1(args)> <Host2(args)>   ........
 <share Directory>表示服务器中导出的共享文件路径
<Hostn>表示客户端主机标识
<args>表示赋予每个客户端主机的访问权限

 

 *号表示允许所有网络段进行访问

    

Exports文件中可以设定的参数主要有以下这些:

  参数 说明

(1) ro 该主机对该共享目录有只读权限

(2) rw 该主机对该共享目录有读写权限

(3) root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户

(4) no_root_squash 客户机用root访问该共享文件夹时,不映射root用户

(5) all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户

(6) anonuid 将客户机上的用户映射成指定的本地用户ID的用户

(7) anongid 将客户机上的用户映射成属于指定的本地用户组ID

(8) sync 资料同步写入到内存与硬盘中

(9) async 资料会先暂存于内存中,而非直接写入硬盘

(10) insecure 允许从这台机器过来的非授权访问 
  
(11) subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

(12) no_subtree_check 和上面相对,不检查父目录权限

(13) wdelay 如果多个用户要写入NFS目录,则归组写入(默认)

(14 )no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

(15) hide 在NFS共享目录中不共享其子目录

(16) no_hide 共享NFS目录的子目录

(17) secure NFS通过1024以下的安全TCP/IP端口发送

(18) insecure NFS通过1024以上的端口发送

 

 

4.重启服务

nfs rpc端口 nfs和rpc的关系_客户端_07

 

 

 

 

nfs rpc端口 nfs和rpc的关系_共享目录_08

  

 

最好在每次修改过 /etc/exports 时执行一次

 

 exportfs命令: 新增、更改某些机器或共享的目录可以用到

     -a 全部挂载或者全部卸载

   -r 重新挂载

   -u 卸载某一个目录

   -v 显示共享目录

 

5.我们可以测试一下

    (1)在我们的用户主目录下建立一个挂载点,也就是建立一个文件夹

nfs rpc端口 nfs和rpc的关系_nfs rpc端口_09

nfs rpc端口 nfs和rpc的关系_nfs rpc端口_10

 

 

 (2)挂载,这里我们挂载的是我在/opt下的一个文件系统filesystem

nfs rpc端口 nfs和rpc的关系_共享目录_11

 

 

nfs rpc端口 nfs和rpc的关系_RPC_12

 

进去发现挂载上了,也就是说NFS可用

 

nfs rpc端口 nfs和rpc的关系_RPC_13

 

 已经挂载的文件系统目录不要直接删除,需要卸载挂载

nfs rpc端口 nfs和rpc的关系_共享目录_14

 

喜欢吉他、篮球、旅游、摄影的linux学习者