NFS文件存储
一、概述
NFS是Network File System的缩写,默认监听2049端口号。它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
NFS工作原理
NFS服务端和客户端之间通过随机选择端口来传输数据,NFS服务端利用RPC协议与客户端进行沟通决定使用的随机端口,然后利用这个端口来传输数据,使用的随机端口通常小于1024。RPC协议用来统一管理NFS的随机端口,其使用的端口默认为111。
RPC与NFS通讯过程
- 首先服务器端启动RPC服务,并开启111端口
- 服务器端启动NFS服务,并向RPC注册端口信息
- 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
- 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
- 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
准备工作:
准备3台:1台服务器,2台网站端
每台主机都安装mysql、nfs、php并且每台主机都需要关闭防火墙,关闭上下文。
#关闭防火墙
systemctl stop firewalld
#关闭上下文
setenforce 0
#安装mysql、nfs、php
[root@localhost mysql]# yum install -y nfs-utils nginx
[root@localhost mysql]# yum install -y php-mysqlnd php php-fpm
[root@localhost mysql]# yum install -y mysql-server.x86_64
配置
启动服务
systemctl start nfs-server.service
systemctl status nfs-server
创建目录
mkdir -p /home/data
//直接读取服务器上的 /etc/exports 配置文件(这是定义所有 NFS 共享的核心文件)。
vim /etc/exports
/home/data 192.168.49.0/24(rw,sync,no_root_squash)
//管理 NFS 共享的导出。它的核心功能是 让对 /etc/exports 配置文件所做的修改立即生效,而无需重启 NFS 服务(如 nfs-server 或 nfs-kernel-server)。
[root@server home]# exportfs -arv
// 查询一个 NFS(Network File System)服务器,列出该服务器当前导出的(共享出来的)文件系统目录。
[root@server data]# showmount -e
Export list for lnmp-server:
/data 192.168.49.0/24
[root@server data]# vim mysql_conn.php
<?php
$link =mysqli_connect('localhost','root','');
if ($link) {
echo "连接成功!";
}else {
echo "连接失败!";
}
mysqli_close($link);
?>
web1端设置
挂载
查看共享文件,将其挂载到nginx的默认网站根目录路径
[root@web1 ~]# showmount -e 192.168.49.154
Export list for 192.168.49.154:
/home/data 192.168.49.0/24
挂载
[root@lnmp-web1 ~]# mount 192.168.49.154:/home/data /usr/share/nginx/html/
重载
[root@web1 ~]# systemctl start php-fpm
[root@web1 ~]# systemctl restart nginx.service
[root@web1 ~]# systemctl restart mysqld
[root@web1 ~]# systemctl restart php-fpm
web2端设置
挂载
[root@web2 ~]# showmount -e 192.168.49.154
Export list for 192.168.49.154:
/home/data 192.168.49.0/24
[root@web2 ~]# mount 192.168.49.154:/home/data /usr/share/nginx/html/
重载
[root@web2 ~]# systemctl start php-fpm
[root@web2 ~]# systemctl restart nginx.service
[root@web2 ~]# systemctl restart mysqld
[root@web2 ~]# systemctl restart php-fpm
验证
使用客户端访问web
![在这里插入图片描述](https://i-blog.csdnimg