1.简介
NFS是Network File System的缩写及网络文件系统
2.主要功能
NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录
3.应用流程
1.用户访问NFS客户端,将请求转化为函数
2.NFS通过TCP/IP连接服务端
3.NFS服务端接收请求,会先调用portmap进程进行端口映射
4.Rpc.nfsd进程用于判断客户端能否连接服务端
5.Rpc.mount进程用于判断客户端对服务端的操作权限
6.如果通过权限验证,可以对服务端进行操作,修改或读取
4.实践
4.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.配置挂载点
格式:
[挂载点] [可以访问的ip]([权限])
eg:
[root@nfs ~]# vim /etc/exports
/web/nfs1 172.16.1.0/20(rw,sync,all_squash)
4.关闭selinux和防火墙
[root@nfs ~]# setenforce 0 # 关闭selinux
[root@nfs ~]# systemctl disable --now firewalld # 关闭防火墙
5.启动NFS和rpcbind服务
[root@nfs ~]# systemctl start nfs-server
[root@nfs ~]# systemctl start rpcbind
6.检查服务端是否正常
格式:
showmount -e [服务端的地址(默认是本机地址,可以忽略不写)]
eg:
[root@nfs ~]# showmount -e 172.16.1.31
[root@nfs ~]# showmount -e
7.给挂载点授权
[root@nfs ~]# chown -R nfsnobody.nfsnobody /web
4.2客户端
1.安装NFS
[root@web01 ~]# yum install nfs-utils -y
2.创建目录
[root@web01 ~]# mkdir /opt/nfs/
3.挂载NFS
[root@web01 ~]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/
4.测试NFS文件同步功能
在任意一客户端nfs目录下创建一个文件,如果查看其他客户端nfs目录下也有这个文件,则测试NFS文件同步功能成功
5.配置详解
5.1控制读写
rw(可读可写)
ro(只读)
5.2控制文件权限
root_squash(当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用))
no_root_squash(当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用))
all_squash(无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用))
no_all_squash(无论NFS客户端使用什么账户访问,都不进行压缩(不常用))
5.3控制写模式
sync(同时将数据写入到内存与银盘中,保证不丢失数据(常用))
async(优先将数据保存到内存,然后再写入银盘;这样效率更高,但可能会丢失数据(不常用))
5.4控制用户
anonuid(配置all_squash使用,指定NFS的用户UID,必须存在系统(常用))
anongid(配置all_squash使用,指定NFS的用户GID,必须存在系统(常用))
统一用户:
1.创建用户
[root@nfs nfs1]# groupadd www -g 666
[root@nfs nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin
[root@nfs ~]# vim /etc/exports # 修改配置文件,指定NFS的用户GID和UID
[root@nfs ~]# systemctl restart nfs-server rpcbind # 重启NFS和rpcbind
2.修改挂载点权限
[root@nfs ~]# chown -R www.www /web/
3.使用
1.卸载挂载文件
2.挂载
3.创建一个文件
6.搭建考试系统
6.1搭建WEB服务
1.安装web软件
[root@web01 opt]# yum install httpd php php-devel -y
2.将代码放置于网站的根目录
[root@web01 opt]# cd /var/www/html # 先切换目录
# 上传代码
[root@web01 html]# unzip kaoshi.zip # 解压代码压缩包
3,授权
[root@web01 html]# chown -R www.www /var/www/html
4.关闭selinux和防火墙
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl disable --now firewalld
5.修改web软件的用户
[root@web01 html]# vim /etc/httpd/conf/httpd.conf # 修改User和Group和上面的用户一致
eg:
User www
Group www
[root@web01 html]# systemctl restart httpd # 重启
[root@web01 html]# mkdir upload
[root@web01 html]# chown www.www upload
6.启动web软件
[root@web01 html]# systemctl start httpd
7.测试
1.上传文件
172.16.1.7
2.访问
http://172.16.1.7/upload/12_23.md
6.2配合NFS实现共享
1.修改NFS配置文件
[root@nfs nfs1]# vim /etc/exports # 修改NFS配置文件,增加一行
eg:
/web/upload 172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)
2.创建挂载点
[root@nfs ~]# mkdir /web/upload
[root@nfs ~]# chown www.www /web/upload
3.重启NFS
[root@nfs ~]# systemctl restart nfs-server rpcbind
4.客户端安装NFS软件
[root@web01 html]# yum install nfs-utils -y
[root@web02 html]# yum install nfs-utils -y
[root@web03 html]# yum install nfs-utils -y
5.挂载
[root@web01 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
[root@web02 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
[root@web03 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
6.测试
1.在客户端1上传
2.在客户端2可以查看
3.则共享成功