新手学习第二阶段:搭建NFS服务并使用php简单实现测试

1、什么是NFS

共享网络文件存储服务器

2、NFS的原理

1.用户访问NF客户端,将请求转化为函数

2.NFS通过TCP/IP连接服务端

3.NFS服务端接收请求,会先调用portmap进程进行端口映射

4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端

5.Rpc.mount进程用于判断客户端对服务端的操作权限

6.如果通过权限验证(依赖系统用户),可以对服务端进行操作,修改或读取

新手学习第二阶段:搭建NFS服务并使用php简单实现测试

3、部署NFS服务

1.安装nfs服务

 yum install nfs-utils rpcbind -y 
注:rpsbind是为nfs提供网络,默认安装nfs-utils 会自动安装rpcbind

2.关闭防火墙和selinux

 setenforce 0 临时关闭 
 setenforce 1 开启服务 
 cat /etc/selinux/config 
SELINUX=disabled s
ystemctl stop firewalld 关闭防火墙 
systemctl disable firewalld 关闭开机自启

新手学习第二阶段:搭建NFS服务并使用php简单实现测试

3.创建一个目录,用于存放文件的仓库

 mkdir /data

4.创建一个系统用户,用于权限验证(权限验证时,真正验证的是UID)

 useradd www -r -M -s /sbin/nologin -u 996 
说明: 
    -r:创建系统用户 
    -M:不创建用户的home目录 
    -s:指定默认登录shell 
    -u:为账户指定一个唯一的UID

新手学习第二阶段:搭建NFS服务并使用php简单实现测试

5.修改NFS的配置文件(作用:指定NFS的仓库及权限)

NFS的配置文件路径:

 /etc/exports

设置仓库地址:

 vi /etc/exports 
/data 172.22.1.0/20(rw,all_squash,sync,anonuid=996,anongid=996) 
/仓库路径 允许放通IP段/20(rw,all_squash,sync,anonuid=996,anongid=996)

NFS参数详解:

控制NFS读写权限

rw 读写权限(常用)
ro 只读权限(不常用)

控制访问NFS时,NFS基于的权限

root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用)
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用)
no_all_squash 无论NFS客户端使用什么账户访问,都不进行压缩(不常用)

控制NFS同步方式

sync 同时将数据写入到内存与硬盘中,保障不丢失数据,但是会产生延时(常用)
async 优先将数据保存到内存,然后在写入硬盘,这样效率较高,但可能会导致数据丢失(不常用)

控制默认的用户(非必须

anonuid 配置all_squash使用,指定NFS的用户UID,必须存在系统(常用)
anongid 配置all_squash使用,指定NFS的用户GID,必须存在系统(常用)

6.启动NFS服务

 systemctl start nfs-server rpcbind

7.查看NFS的挂载点是否设置成功

查看指定服务器的挂载点
 showmount -e 172.22.1.66
查看本机的挂载点
 showmount -e

新手学习第二阶段:搭建NFS服务并使用php简单实现测试

8.给服务端设置权限

 chown www.www /data/

9.挂载使用(客户端必须安装nfs-utils)

 客户端安装: 
	 yum install nfs-utils -y 
挂载目录: 
mount -t nfs 172.22.1.66:/data /opt 
注:需要挂载到本地哪个目录,把/opt 改为需要挂载的就可以,172.22.1.66 为nfs地址,/data 为nfs的挂载目录

注:如挂载失败,排查一下几个原因

selinux没有关闭
防火墙没有关闭
nfs客户端未安装

无权限

NFS服务端是root权限,查看当前目录权限,更改权限:chown www.www /data/

四、RPC与NFS如何通讯

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,即客户端可以连接到正常端口上去。

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

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

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

5、详解NFS的权限参数

新手学习第二阶段:搭建NFS服务并使用php简单实现测试

6、使用php简单上传实例,进行测试NFS 挂载是否成功

1.在web机器中,安装web服务,并安装NFS服务

 yum install htppd php -y nfs-utils

2.上传测试代码

 上传地址:/var/www/html/目录下

3.开启web服务

 systemctl start httpd

4.修改httpd的启动用户

 vi /etc/httpd/conf/httpd.conf 
	User www 
	Group www 
  重启服务 
  	systemctl restart httpd 
  查看服务运行 
  	ps -ef | grep http

5.修改站点目录的用户

 chown -R www.www /var/www/html

6.挂载目录到NFS

 mount -t nfs 172.22.1.66:/data /var/www/html/upload #挂载 
 umount -t nfs 172.22.1.66:/data /var/www/html/upload #卸载

7.配置开启自动挂载、开机自启服务

 vi /etc/rc.local tail -1 
/etc/rc.local mount -t nfs 172.22.1.66:/data /var/www/html/upload 
systemctl enable rpcbind 
systemctl enable nfs 
rpcinfo -p #查看端口是否生效

注:所有机器需要使用NFS时,都需要安装NFS服务:nfs-utils,并关闭防火墙及selinux,权限必须设置一致。

新手学习第二阶段:搭建NFS服务并使用php简单实现测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值