news 2026/5/1 7:08:43

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/5/1 3:42:51

国自然申报技术路线图模板

对于每一位奋战在国自然申报一线的科研人员而言,撰写申请书是一项系统性工程。除了需要锤炼核心思想与创新点,如何将复杂的研究内容、技术路线、实验方案清晰、专业、直观地呈现出来,同样是决定评审专家印象分的关键。其中,技术路…

作者头像 李华
网站建设 2026/4/23 18:28:12

SillyTavern版本升级3步走:新手也能轻松搞定

SillyTavern版本升级3步走:新手也能轻松搞定 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 还在担心升级SillyTavern会把精心设置的角色数据弄丢吗?害怕复杂的命令…

作者头像 李华
网站建设 2026/4/21 2:08:55

Google Drive下载神器:3分钟掌握高效文件获取技巧

Google Drive下载神器:3分钟掌握高效文件获取技巧 【免费下载链接】gdrivedl Google Drive Download Python Script 项目地址: https://gitcode.com/gh_mirrors/gd/gdrivedl 还在为Google Drive大文件下载烦恼?面对"下载配额超额"提示束…

作者头像 李华
网站建设 2026/4/26 18:30:17

MockGPS终极使用指南:5分钟快速掌握位置模拟技巧

MockGPS是一款专为Android系统设计的开源位置模拟应用,能够帮助用户轻松修改设备GPS定位信息。这款神器基于百度地图SDK实现,支持离线地图加载和历史定位记录管理,是开发测试和日常使用的必备工具。本文将从基础配置到高级功能,为…

作者头像 李华
网站建设 2026/4/28 20:58:11

Linly-Talker:构建智能多模态对话系统指南

Linly-Talker:构建智能多模态对话系统指南 你有没有想过,只需一张照片和一段文字,就能让一个“数字人”为你娓娓道来一段科普知识?或者,在银行APP里那个面带微笑、语音亲切的虚拟柜员,其实背后并没有真人配…

作者头像 李华
网站建设 2026/4/28 19:44:30

LobeChat企业版功能前瞻:更多权限与审计能力

LobeChat企业版功能前瞻:更多权限与审计能力 在AI助手从个人工具迈向企业级基础设施的今天,一个看似简单的聊天界面背后,往往隐藏着复杂的治理挑战。当市场还在讨论“谁家的UI更像ChatGPT”时,真正决定能否上生产环境的问题其实是…

作者头像 李华