03. NFS服务器

NFS 服务介绍

在计算机网络存储领域,NFS(Network File System,网络文件系统)是一种实现不同计算机之 间文件共享的经典技术。它允许网络中的客户端计算机像访问本地文件一样,透明地访问远程服 务器上的文件资源,极大地简化了跨设备的数据共享与管理流程。

NFS 的核心架构

NFS 采用客户端 - 服务器(Client-Server)架构,主要由两部分组成:

  • NFS 服务器:负责存储文件资源,并通过 NFS 协议将这些资源共享给授权的客户端。服务 器上运行着 NFS 守护进程,用于监听客户端的请求、处理文件访问操作以及维护共享目录的 权限控制。
  • NFS 客户端:通过 NFS 协议访问服务器上的共享文件。客户端需要挂载(Mount)服务器 的共享目录到本地文件系统,之后就可以像操作本地文件一样对远程文件进行读写、创建、 删除等操作。

NFS 服务最佳实践

1. 部署服务

NFS服务由nfs-utils软件包提供。

bash 复制代码
# 安装软件包
[root@server ~]# yum install -y nfs-utils
# 准备用户
[root@server ~]# useradd -u 1000 laoma
[root@server ~]# echo redhat | passwd --stdin laoma
# 准备共享目录
[root@server ~]# mkdir -p /shares/webapp
[root@server ~]# chown 48 /shares/webapp
# apache 账户ID是48
# 启用并启动服务
[root@server ~]# systemctl enable nfs-server --now
# 配置防火墙
[root@server ~]# firewall-cmd --permanent --add-service=nfs --addservice=rpc-bind --add-service=mountd
[root@server ~]# firewall-cmd --reload
命令片段 作用说明
firewall-cmd firewalld 的核心管理命令(区别于 iptables
--permanent 永久生效(不加此参数仅临时生效,重启 firewalld / 服务器后失效)
--add-service=nfs 开放 NFS 服务(对应 firewalld 预定义的 nfs 服务规则,默认端口 2049)
--addservice=rpc-bind 【笔误修正】正确写法是 --add-service=rpc-bind(你少写了 -),开放 rpc-bind 服务(RPC 绑定,默认端口 111)
--add-service=mountd 开放 mountd 服务(NFS 挂载守护进程,端口动态分配,firewalld 预定义规则已适配)
--reload 重新加载 firewalld 规则(使永久配置生效,无需重启服务)

2. 配置 NFS 导出

我们使用以下记录:

bash 复制代码
[root@server ~]# vim /etc/exports
/shares/webapp 10.1.8.0/24(rw)

每当您在/etc/exports或/etc/exports.d/*.exports中更改导出点时,请对NFS服务运行exportfs -r 命令确保更改生效,或者运行 systemctl reload nfs-server 。

bash 复制代码
[root@server ~]# exportfs -r
# 或者
[root@server ~]# systemctl reload nfs-server
# 或者
[root@server ~]# exportfs -av

3. 监视 NFS 导出

使用exportfs命令列出NFS服务器当前导出的目录。

bash 复制代码
[root@server ~]# exportfs
/shares/webapp 10.1.8.0/24

默认情况下,该命令不显示导出选项。 使用-v选项列出这些选项,包括缺省选项。

bash 复制代码
[root@server ~]# exportfs -v
/shares/webapp 10.1.8.0/24(sync,...,rw,secure,no_root_squash,...)

4. 客户端挂载

bash 复制代码
# 安装软件包
[root@client ~]# yum install -y nfs-utils httpd
[root@client ~]# id apache
uid=48(apache) gid=48(apache) 组=48(apache)
[root@client ~]# systemctl enable httpd --now
# 查看服务端提供的共享
[root@client ~]# showmount -e 10.1.8.10
Export list for server:
/shares/webapp 10.1.8.0/24
# 挂载
[root@client ~]# mkdir -p /var/www/html
[root@client ~]# mount -t nfs server:/shares/webapp /var/www/html
# root用户不能创建
[root@client ~]# touch /var/www/html/root-f1
touch: cannot touch '/var/www/html/root-f1': Permission denied
# apache 用户能创建
[root@client ~]# su -l -s /bin/bash apache
-bash-4.2$ echo apache website > /var/www/html/web1.html

访问测试

bash 复制代码
[root@server ~]# curl http://10.1.8.11/
Welcome to laoma website.
[root@server ~]# curl http://10.1.8.11/web1.html
apache website

5. 持久化挂载

修改 /etc/fstab,最后添加如下记录:

bash 复制代码
server:/shares/webapp /var/www/html nfs defaults 0 0
相关推荐
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ25 分钟前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔2 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密2 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20152 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑
卷福同学3 小时前
【养虾日记】QClaw操作浏览器自动化发文
运维·人工智能·程序人生·自动化
woho7788993 小时前
不同网段IP的网络打印机,打印、扫描设置
运维·服务器·网络
耗子会飞4 小时前
小白学习固定VM虚拟机的centos服务器的IP
运维·服务器·centos
门豪杰4 小时前
Ubuntu下安装Claude Code
linux·运维·ubuntu·claude·claude code
新新学长搞科研5 小时前
第五届电子、集成电路与通信技术国际学术会议(EICCT 2026)
运维·人工智能·自动化·集成测试·信号处理·集成学习·电气自动化
桌面运维家5 小时前
Windows/Linux双启动:BIOS/UEFI多配置桌面创建指南
linux·运维·windows