NFS服务搭建与配置详解 目录前言一、NFS 服务介绍1.1 什么是 NFS1.2 企业应用场景1.3 核心组件1.4 思维脑图​编辑二、配置文件深度解读2.1 基本语法格式2.2 共享目录2.3 客户端地址主机2.4 常用权限选项三、NFS 服务管理命令四、NFS 服务端搭建实战步骤第一步安装服务软件第二步设置开机自启第三步创建共享目录第四步配置共享资源第五步启动服务第六步验证服务状态1. 检查 RPC 端口2. 查看本机发布的 NFS 共享目录两台 web服务器上挂载 NFS1. 安装 NFS 客户端工具2. 创建本地挂载点3. 手动挂载测试4. 验证挂载是否成功5. 设置开机自动挂载6. 重启 web服务前言在企业级应用架构中为了实现多台服务器之间的数据共享例如 Web 集群的后端存储我们通常会使用 NFSNetwork File System。本文将详细介绍 NFS 的核心概念、配置文件解读以及从零搭建 NFS 服务的详细步骤。一、NFS 服务介绍1.1 什么是 NFSNFSNetwork File System即网络文件系统是 FreeBSD 支持的文件系统中的一种它允许网络中的计算机之间通过 TCP/IP 网络共享资源。主要用途主要用于 Linux/Unix 系统之间实现文件共享。安全性注意NFS 本身没有提供用户认证机制且数据在网络上传送时通常是明文传送因此一般只在安全的局域网内使用。并发能力支持多节点同时挂载及并发写入。1.2 企业应用场景最典型的应用是为集群中的 Web Server如 Nginx/Apache 集群提供统一的后端存储。当用户上传文件到其中一台服务器时其他服务器也能通过 NFS 访问到该文件。1.3 核心组件NFS 的运行依赖于以下两个关键组件RPC (Remote Procedure Call Protocol)远程过程调用协议。它是一种通过网络从远程计算机程序上请求服务而不需要了解底层网络技术的协议。NFS 依赖 RPC 来传输数据。rpcbind负责 NFS 的数据传输监听 TCP/UDP 的111端口。nfs-utils包含 NFS 的主服务程序控制共享哪些文件以及权限管理。1.4 思维脑图二、配置文件深度解读NFS 的主配置文件位于/etc/exports。我们可以通过man 5 exports获取帮助。2.1 基本语法格式共享目录 客户端地址(选项1,选项2,...)示例/nfs/share *(ro,sync)2.2 共享目录指定要共享给客户端的本地文件夹路径。2.3 客户端地址主机定义谁可以访问这个共享目录*代表允许所有主机访问。192.168.0.0/24代表允许该网段内的所有 IP 访问。192.168.0.0/24(rw) 192.168.1.0/24(ro)针对不同网段设置不同权限前一个读写后一个只读。192.168.0.254仅允许单个特定 IP 访问。*.itcast.com允许特定域名下的所有主机访问。2.4 常用权限选项选项说明ro只读 (Read-Only)客户端只能查看不能修改。rw读写 (Read-Write)客户端拥有读写权限。sync同步模式。数据会实时同步写入磁盘安全性高但性能稍低推荐生产环境使用。async异步模式。数据先写入内存缓冲区不立即写入磁盘性能好但断电可能丢数据。no_root_squash重要安全选项。当客户端以 root 身份访问时服务端也将其视为 root 用户拥有最高权限。默认情况下root 会被映射为 nobody普通用户。三、NFS 服务管理命令安装完成后我们可以使用exportfs命令来管理 NFS 共享列表而无需重启服务。exportfs -a根据/etc/exports的配置打开或取消所有目录共享常用于配置修改后生效。exportfs -r重新读取配置文件Re-export相当于先卸载再挂载所有共享。exportfs -u取消某个目录的共享。exportfs -v显示详细的共享选项信息。四、NFS 服务端搭建实战步骤以下是基于 CentOS/RHEL 系统的标准搭建流程第一步安装服务软件需要安装nfs-utilsNFS主程序和rpcbindRPC服务。[rootlocalhost ~]# yum -y install nfs-utils rpcbind第二步设置开机自启确保服务器重启后服务自动运行。[rootlocalhost ~]# systemctl enable rpcbind [rootlocalhost ~]# systemctl enable nfs第三步创建共享目录创建一个用于测试或生产的目录。[rootlocalhost ~]# mkdir -pv /opt/wwwroot第四步配置共享资源编辑/etc/exports文件。假设我们要将/opt/wwwroot共享给192.168.11.0/24网段并赋予读写权限。[rootlocalhost ~]# vim /etc/exports文件内容添加如下行/opt/wwwroot 192.168.11.0/24(rw,sync,no_root_squash)注意no_root_squash表示如果客户端用 root 登录在服务端也是 root 权限方便管理但在公网环境需谨慎使用。第五步启动服务关键点NFS 依赖 RPC所以必须先启动rpcbind再启动nfs。[rootlocalhost ~]# systemctl restart rpcbind [rootlocalhost ~]# systemctl restart nfs第六步验证服务状态1. 检查 RPC 端口确认 rpcbind 正在监听 111 端口。[rootlocalhost ~]# netstat -anpt | grep rpcbind tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 11551/rpcbind tcp6 0 0 :::111 :::* LISTEN 11551/rpcbind2. 查看本机发布的 NFS 共享目录使用showmount命令检查配置是否生效。[rootlocalhost ~]# showmount -e Export list for localhost.localdomain: /opt/wwwroot 192.168.11.0/24或者使用exportfs查看详细信息[rootlocalhost ~]# exportfs -rv exporting 192.168.11.0/24:/opt/wwwroot两台 web服务器上挂载 NFS我们需要在Nginx1 (154)和Nginx2 (155)上执行相同的操作。1. 安装 NFS 客户端工具首先确保系统安装了nfs-utils包它包含了挂载 NFS 所需的命令。yum install -y nfs-utils2. 创建本地挂载点在本地创建一个目录作为远程 NFS 共享目录的映射入口。mkdir -p /var/www/html/uploads3. 手动挂载测试使用mount命令尝试将 NFS 服务器的共享目录挂载到本地。NFS Server IP192.168.30.156服务端共享路径/opt/wwwroot本地挂载路径/var/www/html/uploadsmount -t nfs 192.168.30.156:/opt/wwwroot /var/www/html/uploads注意如果等待时间过长或报错请优先检查服务器防火墙是否放行了 NFS 相关端口如 111, 2049 等或者检查 SELinux 状态。4. 验证挂载是否成功挂载完成后查看本地目录内容确认是否能读取到 NFS 服务器上的文件。ls /var/www/html/uploads df -h | grep nfs5. 设置开机自动挂载为了防止服务器重启后挂载失效需要将挂载信息写入/etc/fstab文件。echo 192.168.30.156:/opt/wwwroot /var/www/html/uploads nfs defaults,_netdev 0 0 /etc/fstab_netdev表示这是一个网络设备系统会在网络启动后再进行挂载避免启动报错。6. 重启 web服务为了确保权限和配置生效建议重启 Nginx 服务。systemctl restart nginx