网络服务-NFS

1.什么是nfs?

NFS是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。

image-20210726102458888

它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFPS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。

NFS 一般用来存储共享视频,图片等静态数据。

image-20210726102546799

2.NFS挂载原理

NFS是通过网络来进行服务端和客户端之间的数据传输。两者之间要传输数据就要有想对应的网络端口来进行传输。NFS服务器到底使用什么网络端口来传输数据的,NFS服务器端其实是随机选择端口来进行数据传输。那NFS客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?其实NFS服务器时通过远程过程调用(remote procedure call简称RPC)协议/服务来实现的。也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来先沟通NPS使用了哪些端口,之后再利用这些端口(小于1024)来进行数据的传输。

也就是RPC管理服务端的NFS端口分配,客户端要传数据,那客户端的RPC会先跟服务端的RPC去要服务器的端口,要到端口后再建立连接,然后传输数据。

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

在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同〉否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改·NFS配置文档后,是不需要重启NFS的,直接在命令执行/etc/init.d/nfs reload

通讯过程

1)首先服务器端启动RPC服务,并开启111端口

2)启动NFS 服务,并向RPC 注册端口信息

3)客户端启动RPC( portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

image-20210726102830744

3.NFS相关协议与软件安装管理

协议:

​ RPC (Remote Procedure Call Protocol) ——远程过程调用协议

软件: nfs-utils-* :包括NFS命令与监控程序 rpcbind-* :支持安全NFS RPC服务的连接

yum install nfs-utils-* -y
yum install rpcbind-* -y

4.nfs系统守护进程

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

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

5.NFS 服务器配置

nfs服务的配置文件: /etc/exports

文件内容格式:

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

1.共享目录:共享目录是指NFS服务器共享给客户机使用的目录

2.客户端:客户端是指网络中可以访问这个NFS共享目录的计算机

客户端的指定方式:

​ 指定IP的主机: 10.35.202.20

​ 指定子网中的所有主机: 10.35.202.0

​ 指定域名的主机: www.hekang.com

​ 所有主机: *

3.设置输出目录的访问权限、用户映射等。

访问权限选项:

​ 设置输出目录只读: ro

​ 设置输出目录读写: rw

用户映射选项:

​ root_squash:将root用户的访问映射为匿名(nfsnobody)用户uid和gid;(默认生效)

​ no_root_squash:保留管理员权限,以服务器管理员的权限管理;
​ all_squash:将远程访问的用户及所属组都映射为指定uid、gid的匿名用户;

​ anonuid=xxx:将远程访问的所有用户都映射为指定uid的匿名用户 anongid=xxx:将远程访问的所有用户组都映射为指定gid匿名组账户;

6.NFS服务器的启动与停止

​ 启动服务

service rpcbind start
service nfs start

​ 查看nfs服务状态

service rpcbind status
service nfs status

​ 停止NFS服务器

service nfs stop

​ 查看rpc服务器开启了哪些端口

rpcinfo -p localhost

示例:

[root@master ~]# cat /etc/exports
/hekang 10.35.202.20(rw,all_squash,anonuid=1000,anongid=1000)

​ 查看共享目录

[root@master ~]# exportfs
/hekang         10.35.202.20

​ 服务端查看nfs共享状态

[root@master ~]# showmount -e 10.35.202.10
Export list for 10.35.202.10:
/hekang 10.35.202.20

​ 客户端挂载nfs服务器共享目录

​ 命令 格式: mount nfs服务器ip:共享目录 本地挂载点目录

 mount -o vers=3 10.35.202.10:/hekang/ /hekang

​ mount -o vers=3共享本地―#指定挂载使用nfs V3版本(避免同步延迟)

exportfs 命令

​ exportfs -au # 卸载所有共享目录

​ exportfs -ra # 重新共享所有目录并输出详细信息

posted @ 2021-07-26 11:06  给我一碗炒粉  阅读(220)  评论(0)    收藏  举报