linux基础之网络文件系统NFS详述

NFS

1、NFS简介

NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。

NFS系统和Windows网络共享、网络驱动器类似, 但是windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统比如FastDFS,glusterfs,HDFS,ceph。

2、NFS应用

1.用户访问NFS客户端,将请求转化为函数
2.NFS通过TCP/IP连接服务端
3.NFS服务端接收请求,会先调用portmap进程进行端口映射
4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端;
5.Rpc.mount进程用于判断客户端对服务端的操作权限
6.如果通过权限验证,可以对服务端进行操作,修改或读取

nfs原理-1024x754

3、NFS实践

3.1 服务端

1、安装NFS和rpcbind
[root@nfs ~]# yum install nfs-utils rpcbind -y

2、创建挂载点
[root@nfs ~]# mkdir /web
[root@nfs ~]# mkdir /web/nfs{1..9}
 
3、配置挂载点
[root@nfs ~]# vim /etc/exports
格式:[挂载点] [可以访问的IP]([权限])
	/web/nfs1  172.16.1.0/20(rw,sync,all_squash)

4、关闭selinux和防火墙
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl disable --now firewalld

5、启动Nfs和rpcbind服务
[root@nfs ~]# systemctl start nfs-server 
[root@nfs ~]# systemctl start rpcbind

6、检查服务端是否正常( showmount -e [服务端的地址,默认是本机地址]   # 结果没有报错就是正常)
[root@nfs ~]# showmount -e  # 和 showmount -e 172.16.1.31结果是一样的

7、给挂载点授权
[root@nfs ~]# chown -R nfsnobody.nfsnobody /web

3.2 客户端

1、安装NFS
[root@web01 ~]# cd /opt/
[root@web01 opt]# yum install -y nfs-utils

2、创建目录
[root@web01 opt]# mkdir /opt/nfs/

3、挂载NFS(命令:mount -t nfs 挂载对象 挂载路径)
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1  /opt/nfs/

4、测试NFS文件同步功能(创建文件看看能否同步到服务端)
[root@web01 opt]# touch nfs/2.txt
[root@web02 opt]# touch nfs/3.txt
[root@web03 opt]# touch nfs/1.txt
[root@nfs web]# ll /web/nfs1
[root@web03 opt]# rm -rf nfs/*  # 随便在客户端执行都能同步到服务端
[root@nfs web]# ll /web/nfs1

4、NFS配置详解

1、控制读写
rw、ro

2、控制文件权限
root_squash
no_root_squash
all_squash
no_all_squash

3、控制写模式
sync : 同步写,重要数据建议用
async :异步写,常用于不重要数据

4、控制用户
anonuid
anongid
	
5.统一用户(所有的平台都使用www用户,形成统一)
5.1 创建用户
[root@nfs nfs1]# groupadd www -g 666
[root@nfs nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin
[root@web01 nfs1]# groupadd www -g 666
[root@web01 nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin
[root@web02 nfs1]# groupadd www -g 666
[root@web02 nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin
[root@web03 nfs1]# groupadd www -g 666
[root@web03 nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin

5.2 修改配置文件和挂载点权限
[root@nfs web]# vim /etc/exports
/web/nfs1  172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)
[root@nfs web]# systemctl restart nfs-server rpcbind
[root@nfs nfs1]# chown -R www.www /web/

5.3 使用:每个客户端都先卸载挂载再重新挂载,接着创建文件看看能否同步到服务端
[root@web01 opt]# umount /opt/nfs
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1  /opt/nfs/
[root@web02 opt]# umount /opt/nfs
[root@web02opt]# mount -t nfs 172.16.1.31:/web/nfs1  /opt/nfs/
[root@web03 opt]# umount /opt/nfs
[root@web03 opt]# mount -t nfs 172.16.1.31:/web/nfs1  /opt/nfs/
[root@web01 opt]# touch nfs/10.txt
[root@web02 opt]# touch nfs/11.txt
[root@web03 opt]# touch nfs/12.txt
[root@nfs web]# ll /web/nfs1  # 查看服务端是否有客户端创建的文件,创建文件的属组属组是否www.www

image-20211230153401671

5、搭建考试系统

5.1 搭建web服务

1、安装web软件(每个平台)
[root@web01 opt]# yum install httpd php php-devel -y
[root@web02 opt]# yum install httpd php php-devel -y
[root@web03 opt]# yum install httpd php php-devel -y

2、将代码放置于网站的根目录:切换到网站的根目录
[root@web01 opt]# cd /var/www/html/
[root@web02 opt]# cd /var/www/html/
[root@web03 opt]# cd /var/www/html/

# 上传代码压缩包并解压
[root@web01 html]# unzip kaoshi.zip
[root@web02 html]# unzip kaoshi.zip
[root@web03 html]# unzip kaoshi.zip

3、授权
[root@web01 html]# chown -R www.www /var/www/html
[root@web02 html]# chown -R www.www /var/www/html
[root@web03 html]# chown -R www.www /var/www/html

4、关闭selinux和防火墙
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl disable --now firewalld
[root@web01 ~]# setenforce 0
[root@web01 ~]# systemctl disable --now firewalld
[root@web02 ~]# setenforce 0
[root@web02 ~]# systemctl disable --now firewalld
[root@web03 ~]# setenforce 0
[root@web03 ~]# systemctl disable --now firewalld

5、修改web软件的用户:
[root@web01 html]# vim /etc/httpd/conf/httpd.conf
[root@web02 html]# vim /etc/httpd/conf/httpd.conf
[root@web03 html]# vim /etc/httpd/conf/httpd.conf
    User apache  :改成 User www
    Group apache  :改成 Group www

6、启动web软件
[root@web01 html]# systemctl restart httpd
[root@web02 html]# systemctl restart httpd
[root@web03 html]# systemctl restart httpd

7、测试:访问 http://172.16.1.7/;访问 http://172.16.1.8/;访问 http://172.16.1.8/
	7.1 创建目录并授权
	[root@web01 html]# mkdir upload
	[root@web01 html]# chown www.www upload
	[root@web02 html]# mkdir upload
	[root@web02 html]# chown www.www upload
	[root@web03 html]# mkdir upload
	[root@web03 html]# chown www.www upload
	
	7.2 上传图片
	
	7.3 查看是否上传成功
    浏览器访问:http://172.16.1.7/upload/1_linux.jpg;http://172.16.1.8/upload/2_linux.jpg;http://172.16.1.9/upload/3_linux.jpg
    [root@web01 html]# ll /var/www/html/upload

5.2 NFS实现文件共享

5.2.1 服务端

1.安装 nfs-utils、rpcbind
# yum install nfs-utils rpcbind -y

2.创建挂载点
# mkdir /web
# mkdir /web/upload

3.修改NFS配置文件
# vim /etc/exports
	/backup 172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)
    /web/upload  172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)

4.创建统一用户
# groupadd www -g 666
# useradd www -u 666 -g 666 -M -r -s /sbin/nologin

5.授权
# chown -R www.www /web/upload

6.关闭防火墙和selinux
# setenforce 0
# systemctl disable --now firewalld

7.启动nfs-server和rpcbind
# systemctl start nfs-server rpcbind

8.检查服务端是否正常(shownmount -e 服务端私网ip)
# showmount -e 172.16.1.31

5.2.2 客户端

1.客户端安装NFS软件
# yum install nfs-utils -y

2.创建统一用户
# groupadd www -g 666
# useradd www -u 666 -g 666 -M -r -s /sbin/nologin

3.将代码放置于网站的根目录:切换到网站的根目录,上传代码包并解压
# cd /var/www/html/
# 上传代码包
# unzip kaoshi.zip

4.授权
# chown -R www.www /var/www/html

5.关闭防火墙和selinux
# setenforce 0
# systemctl disable --now firewalld

6.修改web软件的用户:
# vim /etc/httpd/conf/httpd.conf
    User apache  :改成 User www
    Group apache  :改成 Group www
    
7、启动web软件
# systemctl restart httpd

8.挂载(命令格式:mount -t nfs 服务端私网ip:挂载目录 挂载对象目录)
# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload

9、重启NFS(服务端)
# systemctl restart nfs-server rpcbind

10、测试:
在浏览器用不同服务器上传图片,再用不同的服务器查看别的服务器上传的图片,能正常查看则实现共享了。
posted @ 2021-12-30 21:02  90啊  阅读(319)  评论(0编辑  收藏  举报