NFS共享存储
1.NFS概述
NFS(Network File System)主要功能是通过网络来做文件存储。
使用NFS可以实现多台服务器之间数据共享,也可以实现多台服务器之间的数据一致
2.NFS工作原理
1.当用户发送请求通过用户进程访问NFS客户端,会根据不同的请求来使用不同的函数对数据进行处理
2.NFS客户端通过TCP/IP协议的方式传递给NFS服务端
3.NFS服务端接收到请求,会先调用portmap进程进行端口映射
4.rpc.nfsd进程用于判断NFS客户端是否拥有权限链接NFS服务端
5.Rpc.mount进程判断客户端是否有对应的权限进行验证
6.idmap进程实现用户映射和压缩
7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,再由内核驱动硬件

3.安装部署NFS
3.1.服务端
1.先安装nfs服务:
centos5,centos6:yum install -y nfs rpcbind
centos7:yum install -y nfs-utils
2.配置NFS服务:vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash
nfs共享参数 |
参数作用 |
rw* |
读写权限 |
ro |
只读权限 |
root_squash |
当NFS客户端以root身份访问时,映射为NFS服务器的匿名用户 |
no_root_squash |
当NFS客户端以root身份访问时,映射为NFS服务器的root管理员 |
all_squash |
无论NFS客户端使用什么身份访问,都映射为NFS服务器的匿名用户 |
no_all_squash |
无论NFS客户端使用什么身份访问,都不进行压缩 |
sync* |
同时将数据写入到内存和硬盘中,不丢失数据 |
async |
优先将数据保存到内存中,然后在写入到硬盘中,效率高,但有可能丢失数据 |
anonuid* |
配置all_squash使用,指定NFS的用户uid,系统中必须存在 |
anongid* |
指定NFS的用户gid,系统中必须存在 |
3.创建共享目录:mkdir /data
4.修改共享目录的属主和属组为nfs的匿名用户:
chown nfsnobody:nfsnobody /data
5.关闭防火墙和selinux:
systemctl stop firewalld
setenforce 0
6.启动服务并加入开机自启
systemctl start nfs
systemctl enable nfs
7.检查进程:ps -ef|grep nfs
8.检查配置文件是否生效:cat /var/lib/nfs/etab

3.2.客户端操作
1.安装nfs:yum install -y nfs-utils
2.查看服务端里面可以挂载的目录:
showmount -e 172.16.1.31

3.挂载共享目录:
mount -t nfs 172.16.1.31:/data /opt
4.NFS共享存储实战
4.1 环境
主机名 |
WanIP |
LanIP |
角色 |
部署应用 |
web01 |
10.0.0.7 |
172.16.1.7 |
网站服务(nfs客户端) |
httpd,php,nfs |
web02 |
10.0.0.8 |
172.16.1.8 |
网站服务(nfs客户端) |
htppd,php,nfs |
nfs |
10.0.0.31 |
172.16.1.31 |
共享储存(nfs服务端) |
nfs |
4.2.部署交作业网站
1.安装apache和php:
yum install - y apache php
2.下载代码到站点目录中
3.解压代码:
unzip kaoshi_modify.zip
4.让apache和nfs统一使用用户www uid和gid为666:
创建用户及用户组:groupadd www -g 666
useradd www -u 666 -g 666
5.修改apache的配置文件,将用户和用户组改成www:
vim /etc/httpd/conf/httpd.conf

6.将站点目录的属主和属组改成www:
chown www:www /var/www/html

7.启动apache服务:
systemctl start httpd
8.检查进程:
ps -ef|grep httpd
9.端口检查:
ntestat -lntup|grep httpd

10.打开浏览器访问

11.上传文件

12.查看站点目录下是否有user_data目录,查看该目录下是否有上传的文件,并查看它们的属主与属组是否是www用户

4.3 给交作业网站部署共享储存
1.先安装nfs服务:
centos5,centos6:yum install -y nfs rpcbind
centos7:yum install -y nfs-utils
2.配置NFS服务:vim /etc/exports
/data 172.16.1.0/24(rw,sync,anonuid=666,anuogid=666,all_squash

3.创建www用户:
groupadd www -g 666
useradd www -u 666 -g 666

4.创建共享目录并修改共享目录的属主与属组为nfs指定的匿名用户:
mkdir /data
chown www:www /data

5.关闭防火墙和selinux:
systemctl stop firewalld
setenforce 0
6.启动服务并加入开机自启
systemctl start nfs
systemctl enable nfs
7.检查进程:ps -ef|grep nfs
8.检查配置文件是否生效:cat /var/lib/nfs/etab

9.在客户端挂载nfs服务端的目录:
mount -t nfs 172.16.1.31:/data /var/www/html/user_data

10.上传文件查看服务端是否能够获取到文件


11.将第二台客户端挂载到服务端上,查看是否能够共享到文件

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异