NFS

NFS简介

NFS全称Network File system,主要是基于UDP/IP协议的应用,
其实现主要是采用远程过程调用RPC机制,提供一组与机器、操作系统以及底层传送协议无关的存取远程文件的操作,
最大的功能点就是通过网络,让不同的机器、操作系统可以共享彼此的文件。

NFS应用场景

NFS主要可以用在web网站中静态资源的存储,将静态资源整合在一起不仅可以减少磁盘空间的浪费而且可以保障数据一致性,
避免网页中静态资源不能访问的问题,也可以将重复性的文件整合在一个共享目录中。
image.png

nfs挂载原理

image.png

如上图所示:

1.NFS服务器设置好共享目录/nfs/data1或者/nfs/data2,其他可以访问NFS服务器的NFS客户端就可以将他们的目录挂载到共享目录,
这样就可以将web1-3的/data1挂载给/nfs/data1在三台web服务器分别可以看到data1下的所有数据。
2.NFS是通过网络实现服务端和客户端之间的数据传输,但是NFS服务器由于文件系统复杂,有些其他程序需要启动额外的端口并且都是随机的,
这样客户端和服务端之间的端口该如何确定,这时就需要远程过程调用RPC协议了,提供一组与机器、操作系统以及底层传送协议无关的存取远程文件的操作。

RPC和NFS的通讯

1.因为NFS对应端口不固定,客户端连接就需要对应的端口才能建立连接并传输数据,
RPC就是用来统一管理NFS端口的服务并且RPC对外的端口为111,
RPC会记录NFS端口信息,从而通过RPC实现NFS服务端与客户端沟通端口信息,并通知客户端可以连接到对应的端口。
2.启动服务时首先启动PRC服务,因为NFS服务启动会有注册端口信息,如果这时RPC服务未启动则无法记录端口信息,只能重新启动NFS服务。

NFS部署

NFS安装

NFS服务端安装

[root@nfs ~]# yum install nfs-utils rpcbind -y

NFS客户端安装

[root@nfs-client1 ~]# yum install nfs-utils -y

NFS配置文件

[root@nfs ~]# ll /etc/exports #配置文件为空
-rw-r--r--. 1 root root 0 Jun  7  2013 /etc/exports
[root@nfs ~]# man exports #man exports配置文件
image.png
[root@nfs ~]# cat /etc/exports #映射多个目录写多行
/data       10.0.0.0/24(rw,sync,root_squash,all_squash)

启动服务

nfs服务端

[root@nfs ~]# systemctl start rpcbind.service 
[root@nfs ~]# systemctl enable rpcbind.service 
[root@nfs ~]# systemctl start  nfs
[root@nfs ~]# systemctl enable  nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

nfs客户端启动

[root@nfs-client1 ~]# systemctl start  nfs
[root@nfs-client1 ~]# systemctl enable  nfs
[root@nfs-client2-17 ~]# systemctl start nfs
[root@nfs-client2-17 ~]# systemctl enable nfs

检查测试

nfs服务端检查

[root@nfs ~]# showmount -e 127.0.0.1
Export list for 127.0.0.1:
/data 10.0.0.0/24

nfs客户端测试

[root@nfs-client1 ~]# showmount -e 10.0.0.15
Export list for 10.0.0.15:
/data 10.0.0.0/24
[root@nfs-client2-17 ~]# showmount -e 10.0.0.15
Export list for 10.0.0.15:
/data 10.0.0.0/24
image.png

测试共享文件


image.png

NFS常用参数讲解

rw

允许在nfs卷中进行读写,不容许写可以使用‘ro’

sync

只有更改稳定后才会回复请求

root_squash no_root_squash

root用户映射和root用户不映射,客户端当前用户为root时是否映射为nfs服务端普通用户

all_squash

普通用户全映射

anonuid and anongid

使用userid来指定哪些用户可以操作共享目录

重启问题

如果通过restart进行NFS服务器重启,客户端写入数据就会出现卡顿问题,使用reload进行重新加载就会避免掉这种问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。