news 2026/6/10 14:37:33

Nfs网络文件系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nfs网络文件系统

文章目录

      • Nfs应用场景
      • NFS实现的原理
      • NFS配置文件
      • NFS使用选项参数
      • NFS存储数据的优缺点
      • NFS实验
        • 实验要求
        • 实验环境
        • 实验步骤
        • 服务端:
          • 安装NFS服务并修改配置文件
          • 创建用户并授权
          • 启动服务
        • 客户端
          • 安装nfs工具并启动
          • 本地挂载点目录文件
          • 创建对应用户
          • 查看远端的NFS共享目录是否存在
          • 挂载对应的数据目录
          • 测试权限
          • 设置开机自动挂载
        • 怎么进行协助NFS?
        • NFS扩展

主要功能就是在局域网内让不同的主机系统可以访问相同的数据资源

实现多台服务器之间数据共享

实现多台服务器之间数据一致性

Nfs应用场景

在集群中会经常进行使用,如下图所示,有了共享的服务器,用户上传的数据都会放到共享存储上,这样不管是负载的请求在那台上都可以访问到

NFS实现的原理

nfsd:基于NFS的守护进程,主要的功能是进行管理客户端是否可以登入服务器

mount:管理nfs文件系统,当客户端登入服务器之后 使用服务器提供的文件之前还需要验证权限

portmap:进行端口映射

1.****用户进程访问NFS客户端,使用不同的函数对数据进行处理

2.NFS客户端通过TCP/IP的方式传递给NFS****服务端。

3.NFS服务端接收到请求后,会先调用portmap****进程进行端口映射。

4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS****服务端。

5.Rpc.mount****进程判断客户端是否有对应的权限进行验证。

6.idmap****进程实现用户映射和压缩

7.最后NFS****服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。

rpc是一个远程过程调用,那么使用nfs必须有rpc服务

NFS配置文件

配置文件为 /etc/exports 默认里面没有任何内容,按照共享目录的路径 允许访问的NFS客户端(共享权限参数) 格式,定义要共享的目录与相应的权限

NFS使用选项参数

参数 参数作用
rw 读写权限
ro 只读权限
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid 配置all_squash使用,指定NFS的用户UID,必须存在系统
anongid 配置all_squash使用,指定NFS的用户UID,必须存在系统

NFS存储数据的优缺点

优点:NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。

NFS文件系统内数据是在文件系统之上的,所有数据都是能看得见。

缺点:存在单点故障, 如果构建高可用维护麻烦

NFS数据明文, 并不对数据做任何校验

客户端挂载无需账户密码, 安全性一般(内网使用)

生产环境建议:

将静态数据尽可能往前端推, 减少后端存储压力

静态资源必须通过CDN缓存(jpg\png\mp4\avi\css\js)

没有缓存或架构本身历史遗留问题太大, 在多存储也无用

NFS实验

实验要求

NFS服务端(A)

NFS客户端(B)

NFS客户端(C)

1.在NFS服务端(A)上共享/data/w(可写)及/data/r(只读)

2.在NFS客户端(B/C)上进行挂载

实验环境
服务器系统角色ip
Centos 7.7NFS服务端10.0.0.31
Centos 7.7NFS客户端110.0.0.41
Centos 7.7NFS客户端210.0.0.7
实验步骤
服务端:
安装NFS服务并修改配置文件
[root@nfs ~]# yum install -y nfs-utilsLoaded plugins: fastestmirror, langpacks Determining fastest mirrors base|3.6kB 00:00:00 epel|4.3kB 00:00:00 extras|2.9kB 00:00:00 nginx-stable|2.9kB 00:00:00 updates|2.9kB 00:00:00 Package1:nfs-utils-1.3.0-0.68.el7.2.x86_64 already installed and latest version#修改文件[root@nfs ~]# cat /etc/exports/data/r10.0.0.0/24(ro,sync,all_squash,anonuid=666,anongid=666)/data/w10.0.0.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
创建用户并授权
[root@nfs ~]# groupadd -g 666 www[root@nfs ~]# useradd -u 666 -g www www[root@nfs ~]# id wwwuid=666(www)gid=666(www)groups=666(www)#创建共享目录并授权[root@nfs ~ data]# mkdir /data/{r,w} -p[root@nfs ~ data]# lsr w[root@nfs ~ data]#[root@nfs ~ data]# chown -R www.www /data/[root@nfs ~ data]# ls -ld /data/drwxr-xr-x4www www24Dec1616:45 /data/
启动服务
[root@nfs ~]# systemctl restart nfs[root@nfs ~]# systemctl status nfs● nfs-server.service - NFS server and services Loaded: loaded(/usr/lib/systemd/system/nfs-server.service;disabled;vendor preset: disabled)Active: active(exited)since Tue2025-12-1616:48:23 CST;5s ago Process:3593ExecStartPost=/bin/sh -cifsystemctl -q is-active gssproxy;thensystemctl reload gssproxy;fi(code=exited,status=0/SUCCESS)Process:3573ExecStart=/usr/sbin/rpc.nfsd$RPCNFSDARGS(code=exited,status=0/SUCCESS)Process:3571ExecStartPre=/usr/sbin/exportfs -r(code=exited,status=0/SUCCESS)Main PID:3573(code=exited,status=0/SUCCESS)CGroup: /system.slice/nfs-server.service Dec1616:48:23 nfs systemd[1]: Starting NFS server and services... Dec1616:48:23 nfs systemd[1]: Started NFS server and services.
客户端
安装nfs工具并启动
客户端1[root@backup ~]# yum install nfs-utils -yLoaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Package1:nfs-utils-1.3.0-0.68.el7.2.x86_64 already installed and latest version Nothing todo[root@backup ~]# systemctl restart rpcbind客户端2[root@web01 ~]# yum install nfs-utils -yLoaded plugins: fastestmirror, langpacks Determining fastest mirrors base|3.6kB 00:00:00 epel|4.3kB 00:00:00 extras|2.9kB 00:00:00 nginx-stable|2.9kB 00:00:00 updates|2.9kB 00:00:00 Package1:nfs-utils-1.3.0-0.68.el7.2.x86_64 already installed and latest version Nothing todo[root@web01 ~]# systemctl restart rpcbind
本地挂载点目录文件
客户端1[root@backup ~]# mkdir /data/{r,w} -p客户端2[root@web01 ~]# mkdir /data/{r,w} -p
创建对应用户
客户端1[root@backup ~]# groupadd -g 666 www[root@backup ~]# useradd -u 666 -g www www[root@backup ~]# id wwwuid=666(www)gid=666(www)groups=666(www)客户端2[root@web01 ~]# mkdir /data/{r,w} -p[root@web01 ~]# groupadd -g 666 www[root@web01 ~]# useradd -u 666 -g www www[root@web01 ~]# id wwwuid=666(www)gid=666(www)groups=666(www)
查看远端的NFS共享目录是否存在
客户端1[root@backup ~]# showmount -e 10.0.0.31Export listfor10.0.0.31: /data/w10.0.0.0/24 /data/r10.0.0.0/24 客户端2[root@web01 ~]# showmount -e 10.0.0.31Export listfor10.0.0.31: /data/w10.0.0.0/24 /data/r10.0.0.0/24
挂载对应的数据目录
客户端1[root@backup ~]# mount -t nfs 10.0.0.31:/data/w /data/w[root@backup ~]# mount -t nfs 10.0.0.31:/data/r /data/r[root@backup ~]# df -hFilesystem Size Used Avail Use% Mounted on devtmpfs 974M0974M0% /dev tmpfs 991M0991M0% /dev/shm tmpfs 991M9.9M 981M1% /run tmpfs 991M0991M0% /sys/fs/cgroup /dev/mapper/centos-root 47G5.4G 42G12% / /dev/sda1 1014M 171M 844M17% /boot tmpfs 199M0199M0% /run/user/010.0.0.31:/data/w 47G5.4G 42G12% /data/w10.0.0.31:/data/r 47G5.4G 42G12% /data/r 客户端2[root@web01 ~]# mount -t nfs 10.0.0.31:/data/w /data/w[root@web01 ~]# mount -t nfs 10.0.0.31:/data/r /data/r[root@web01 ~]# df -ThFilesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 974M0974M0% /dev tmpfs tmpfs 991M0991M0% /dev/shm tmpfs tmpfs 991M9.8M 981M1% /run tmpfs tmpfs 991M0991M0% /sys/fs/cgroup /dev/mapper/centos-root xfs 47G5.4G 42G12% / /dev/sda1 xfs 1014M 171M 844M17% /boot tmpfs tmpfs 199M0199M0% /run/user/010.0.0.31:/data/w nfs4 47G5.4G 42G12% /data/w10.0.0.31:/data/r nfs4 47G5.4G 42G12% /data/r
测试权限

测试/data/r读的权限

客户端1[root@backup r]# lstest.txt[root@backup r]# cat test.txthello this is nfs[root@backup r]# touch edutouch: cannottouch‘edu’: Read-onlyfilesystem

测试/data/w写的权限

[root@web01 w]# touch test1.txt[root@web01 w]# lstest1.txt[root@web01 w]#
设置开机自动挂载

写到fstab里面实现开机自动挂载

客户端1[root@backup r]# echo "10.0.0.31:/data/r /data/r nfs defaults 0 0" >>/etc/fstab[root@backup r]# echo "10.0.0.31:/data/w /data/w nfs defaults 0 0" >>/etc/fstab[root@backup r]# mount -a客户端2[root@web01 w]# echo "10.0.0.31:/data/r /data/r nfs defaults 0 0" >>/etc/fstab[root@web01 w]# echo "10.0.0.31:/data/w /data/w nfs defaults 0 0" >>/etc/fstab[root@web01 w]# mount -a
怎么进行协助NFS?

//卸载nfs

#1.正常卸载

[root@backup ~]# umount /data/w/

#2.强制卸载

[root@backup ~]# umount -lf /data/w/

NFS扩展
无需重启NFS服务平滑加载配置文件 服务端[root@nfs w]# echo "/data/p 10.0.0.0/24(ro)" >> /etc/exports[root@nfs w]# cat /etc/exports/data/r10.0.0.0/24(ro,sync,all_squash,anonuid=666,anongid=666)/data/w10.0.0.0/24(rw,sync,all_squash,anonuid=666,anongid=666)/data/p10.0.0.0/24(ro)[root@nfs w]# exportfs -rvexporting10.0.0.0/24:/data/p exporting10.0.0.0/24:/data/w exporting10.0.0.0/24:/data/r nfs客户端挂载参数 客户端挂载 mount.nfs4 -o noatime,nodiratime,noexec,nodev,nosuid10.0.0.31:/data/r /data/r/ nfs客户端永久挂载参数10.0.0.31:/data/r /data/r nfs defaults,noatime,nodiratime,noexec,nodev,nosuid00
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 22:20:32

软路由远程访问

DDNSTO远程管理家中的openwrt软路由 文章目录DDNSTO远程管理家中的openwrt软路由引言1.注册DDNSTO2.openwrt设置DDNSTO3.DDNSTO添加域名4.远程访问软路由引言 ​ 本文将为大家详细介绍一种 OpenWRT 软路由的远程管理方法—— 相比 Zirotear 操作更简单,无需复杂配置…

作者头像 李华
网站建设 2026/6/10 2:04:18

Premiere Pro剪辑助手:LobeChat自动写视频脚本

Premiere Pro剪辑助手:LobeChat自动写视频脚本 在短视频内容井喷的今天,一个创作者每天可能要面对“今天拍什么”“脚本怎么写”“旁白怎么配”等一系列创作瓶颈。尤其对于独立制作者或小型团队而言,从零构思一段1分钟的Vlog脚本,…

作者头像 李华
网站建设 2026/6/10 14:10:24

移动端PWA安装教程:把LobeChat添加到主屏幕

移动端PWA安装教程:把LobeChat添加到主屏幕 在智能手机几乎成为人体延伸的今天,我们每天打开最多的不是家门,而是各种App。但你有没有想过——有些“应用”其实根本不需要下载?比如你常用的AI聊天工具,如果能像原生App…

作者头像 李华
网站建设 2026/6/10 14:06:53

LobeChat部署常见问题汇总及解决方案(新手必读)

LobeChat部署常见问题汇总及解决方案(新手必读) 在AI助手应用日益普及的今天,越来越多开发者希望快速搭建一个支持大模型对话的前端界面。LobeChat作为一款现代化、高可扩展性的开源聊天平台,凭借其优雅的设计和对多模型的广泛支持…

作者头像 李华
网站建设 2026/6/9 19:40:04

EmotiVoice:开源的情感语音合成引擎

EmotiVoice:开源的情感语音合成引擎 在虚拟主播动情演绎故事、游戏角色因剧情转折而声音颤抖的今天,我们对“机器发声”的期待早已超越了清晰朗读文本的基本要求。人们渴望的是有情绪的声音——一句温柔的安慰、一声愤怒的质问、一段带着笑意的独白&…

作者头像 李华