一、什么是NFS?
文件系统,共享文件
NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS(hadoop),caph
二、为什么用NFS?
1.实现多台服务器之间数据共享
2.实现多台服务器之间数据一致
集群没有共享存储
1.A用户上传图片经过负载均衡,负载均衡将上传请求调度至WEB1服务器上。
2.B用户访问A用户上传的图片,此时B用户被负载均衡调度至WEB2上,因为WEB2上没有这张图片,所以B用户无法看到A用户传的图片。
集群有共享存储
1.A用户上传图片无论被负载均衡调度至WEB1还是WEB
2, 最终数据都被写入至共享存储2.B用户访问A用户上传图片时,无论调度至WEB1还是WEB2,最终都会上共享存储访问对应的文件,这样就可以访问到资源了
三、NFS原理
本地文件的操作方式
1.当用户执行mkdir命令, 该命令会调用shell解释器翻译给内核。
2.内核解析完成后会驱动对应的硬件设备,完成相应的操作。
NFS远程原理
1.用户进程访问NFS客户端,使用不同的函数对数据进行处理
2.NFS客户端通过TCP/IP的方式传递给NFS服务端。
3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。
4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。
5.Rpc.mount进程判断客户端是否有对应的权限进行验证。
6.idmap进程实现用户映射和压缩7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
四、NFS服务安装
1、环境准备
服务器 | 内网IP | 外网IP | 角色 |
---|---|---|---|
backup | 172.16.1.41 | 10.0.0.41 | 客户端 |
nfs | 172.16.1.31 | 10.0.0.31 | 服务端 |
web01 | 172.16.1.7 | 10.0.0.7 | 客户端 |
2、关闭防火墙和selinux
#1.关闭Firewalld防火墙
[root@nfs ~]# systemctl disable firewalld
[root@nfs ~]# systemctl stop firewalld
#2.关闭selinux防火墙
[root@nfs ~]# sed -ri '#^SELINUX=#cSELINUX=Disabled' /etc/selinux/config
[root@nfs ~]# setenforce 0
3、下载安装(客户端和服务端)
[root@web01 ~]# yum install -y nfs-utils rpcbind
[root@nfs ~]# yum install -y nfs-utils rpcbind
[root@backup ~]# yum install -y nfs-utils rpcbind
4、启动rpcbind(客户端和服务端)
[root@web01 ~]# systemctl start rpcbind
[root@nfs ~]# systemctl start rpcbind
[root@backup ~]# systemctl start rpcbind
[root@web01 ~]# systemctl enable rpcbind
[root@nfs ~]# systemctl enable rpcbind
[root@backup ~]# systemctl enable rpcbind
5、配置NFS服务端(服务端)
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)
6、创建一个NFS共享的目录(服务端)
[root@nfs ~]# mkdir /data
#目录授权
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/
7、启动服务(服务端)
[root@nfs ~]# systemctl start nfs
8、验证服务启动(服务端)
[root@nfs ~]# netstat -lntp | grep rpc
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 84580/rpc.mountd
tcp 0 0 0.0.0.0:40832 0.0.0.0:* LISTEN 84547/rpc.statd
tcp6 0 0 :::20048 :::* LISTEN 84580/rpc.mountd
tcp6 0 0 :::42106 :::* LISTEN 84547/rpc.stat
9、客户端验证可挂载目录(客户端)
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
10、挂载目录(客户端)
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /backup/
11、查看挂载
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
172.16.1.31:/data 19G 1.4G 18G 8% /backup
[root@web01 ~]#
12、测试挂载
#客户端创建文件
[root@web01 backup]# mkdir 111
#服务端查看
[root@nfs data]# ll
total 0
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 2 20:18 111
13、取消挂载
[root@web01 html]# umount /backup
挂载失败排错:
1、先查看是否有挂载目录
[root@web01 backup]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
2、如果没有可挂载目录,查看服务端配置文件
[root@nfs data]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)
挂载注意事项:
1、取消挂载时不要在目录里面操作,到其他目录操作
[root@web01 backup]# umount /backup/
umount.nfs4: /backup: device is busy
[root@web01 backup]# cd ..
[root@web01 /]# umount /backup/
[root@web01 /]#
2、挂载前目录下的文件在挂在后不是丢失,而是盖起来了,取消挂载后还会显示
[root@web01 /]# ll /backup/
total 0
drwxr-xr-x 2 root root 48 Dec 2 17:10 web01_172.16.1.7_2019-12-02
[root@web01 /]# mount -t nfs 172.16.1.31:/data /backup/
[root@web01 /]# ll /backup/
total 0
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 2 2019 111
[root@web01 /]# umount /backup/
[root@web01 /]# ll /backup/
total 0
drwxr-xr-x 2 root root 48 Dec 2 17:10 web01_172.16.1.7_2019-12-02
[root@web01 /]#
3、服务端不要挂载自己
4、客户端挂载,当服务端停止服务后,挂载目录会down住
5、挂载时在目录下,则还是看到原文件,需要退出再进入才会刷新
五、提交作业系统
1、安装httpd和PHP(客户端)
[root@web01 backup]# yum install -y httpd php
2、上传上交作业代码
[root@backup backup]# cd /var/www/html
#上传代码
[root@backup html]# rz kaoshi.zip
[root@backup html]# unzip kaoshi.zip
#修改上传文件地址
[root@web01 html]# vim upload_file.php
$wen="/var/www/html";
3、启动httpd服务
[root@backup html]# systemctl start httpd
4、访问页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AMedCaIA-1577169350879)(C:\Users\oldboy\AppData\Roaming\Typora\typora-user-images\1575258353358.png)]
5、客户端挂载上传文件
[root@backup www]# mount -t nfs 172.16.1.31:/data /var/www/html/
来源:CSDN
作者:慕欣
链接:https://blog.csdn.net/gaolaotou0323/article/details/103682727