CentOS 6.4 下 NFS 配置实战指南
在分布式系统或服务器集群环境中,共享存储是常见的需求,NFS(网络文件系统)作为经典的解决方案,凭借其透明访问和易用性,在CentOS系统中广泛应用,本文将以CentOS 6.4为例,详细演示NFS服务端与客户端的配置过程,助您快速搭建共享文件系统。
基础准备与环境确认

- 系统要求: 确保您拥有两台或以上的 CentOS 6.4 服务器(物理机或虚拟机均可),一台作为NFS服务端(Server),其余作为客户端(Client)。
- 网络互通: 所有参与NFS共享的服务器必须位于同一网络或路由可达,并能通过主机名或IP地址相互解析(建议配置
/etc/hosts或使用DNS)。 - 权限管理: 操作需具备
root或具有sudo权限的账户。 - 软件包: CentOS 6.4 默认仓库已包含所需软件包(
nfs-utils,rpcbind),执行yum list installed | grep -E 'nfs-utils|rpcbind'可检查是否已安装。
NFS服务端配置详解
安装必要软件包:
yum install nfs-utils rpcbind
启动并设置开机自启:
service rpcbind start chkconfig rpcbind on service nfs start chkconfig nfs on
rpcbind:管理RPC服务端口映射,NFS依赖它。nfs:NFS服务主程序。
创建共享目录并设置权限:
mkdir /shared_data chmod 777 /shared_data # 根据实际安全需求调整权限,此处仅为示例
创建您希望共享的目录(如
/shared_data),并根据客户端访问需求设置合适的权限。配置共享目录(/etc/exports): 编辑NFS的核心配置文件:

vi /etc/exports
添加共享规则,格式如下:
/shared_data client_ip_or_network(rw,sync,no_root_squash)/shared_data: 要共享的本地目录路径。client_ip_or_network: 指定允许访问的客户端。- 单IP:
168.1.100 - 网段:
168.1.0/24(允许该C段所有IP访问) - 主机名:
client1.example.com(确保服务端能解析)
- 单IP:
- 权限选项(括号内):
rw:读写权限(ro为只读)。sync:数据同步写入磁盘,保证一致性(更安全,性能略低)。async为异步写入(性能好,风险高)。no_root_squash:信任客户端root用户,使其在服务端也拥有root权限。重要安全警告:仅在绝对信任的封闭网络环境使用,生产环境强烈建议使用root_squash(默认)将客户端root映射为匿名用户。- 其他常用选项:
all_squash(所有客户端用户映射为匿名用户)、anonuid/anongid(指定映射的匿名用户UID/GID)。
示例配置:
/shared_data 192.168.1.0/24(rw,sync,no_root_squash) # 允许192.168.1.0网段读写,同步写入,不压制root(谨慎!) /backup 192.168.1.100(ro,sync) # 仅允许192.168.1.100只读访问/backup使配置生效: 修改
/etc/exports后,执行以下命令之一使新配置生效:exportfs -a # 重新导出所有共享目录 service nfs restart # 重启NFS服务(会中断现有连接)
检查防火墙(重要): CentOS 6.4 默认使用
iptables,NFS 依赖多个端口(包括动态端口),配置较复杂,建议在测试或内网环境临时关闭防火墙以验证连通性:service iptables stop
生产环境必须配置精确规则:
- 允许
rpcbind(端口 111 TCP/UDP)。 - 允许
nfs(端口 2049 TCP/UDP)。 - 允许
mountd,statd,lockd等服务使用的端口(通常需要配置/etc/sysconfig/nfs固定这些端口范围,然后在防火墙开放该范围)。
- 允许
验证服务端共享:

showmount -e localhost
输出应列出您配置的共享目录及其允许访问的客户端。
NFS客户端配置详解
安装客户端软件:
yum install nfs-utils
(
rpcbind通常也会被安装,启动方法同服务端)。创建本地挂载点:
mkdir /mnt/nfs_share
创建用于挂载NFS共享的本地空目录。
手动挂载NFS共享:
mount -t nfs server_ip:/shared_data /mnt/nfs_share
server_ip:NFS服务端的IP地址或主机名。/shared_data:服务端共享的目录路径。/mnt/nfs_share:客户端本地的挂载点目录。
验证挂载:
df -hT | grep nfs
或
mount | grep nfs
输出应显示挂载的NFS共享信息,尝试在挂载点内创建/读取文件测试权限。
配置开机自动挂载(推荐): 编辑
/etc/fstab文件:vi /etc/fstab
添加一行:
server_ip:/shared_data /mnt/nfs_share nfs defaults,_netdev 0 0_netdev:告知系统该设备需要网络,在网络就绪后再挂载,避免启动失败。defaults:包含常用选项(rw, suid, dev, exec, auto, nouser, async)。- 最后两个
0:分别表示不备份(dump)和不进行文件系统检查(fsck)。
保存后,可以测试挂载:
mount -a
若无错误输出,则配置成功,重启后会自动挂载。
关键问题排查与注意事项
showmount -e server_ip失败:- 确认服务端NFS和rpcbind服务已启动。
- 检查服务端防火墙是否阻止了访问(111, 2049 等端口)。
- 检查客户端能否ping通服务端IP。
- 检查服务端
/etc/exports配置是否正确(客户端IP/网段是否允许)。
挂载失败:
- 检查挂载命令或
/etc/fstab中的路径和IP是否正确。 - 检查客户端和服务端的共享目录权限设置。
- 检查服务端
/etc/exports中的权限选项(如只读ro配置下无法写入)。 - 检查客户端和服务端的
selinux状态(可临时setenforce 0设置为Permissive模式测试是否由SELinux引起)。
- 检查挂载命令或
性能考虑:
- 网络带宽和延迟是NFS性能的关键因素。
- 在要求高性能的场景,考虑使用
async选项(有数据丢失风险)或升级硬件/网络。 - 调整NFS版本(CentOS 6.4 默认支持v3, v4),例如在挂载时指定
-o nfsvers=4,NFSv4 在防火墙穿越、状态管理上通常更优。
安全加固:
- 慎用
no_root_squash:这是重大安全风险点,仅在绝对必要且受控环境使用。 - 限制访问范围:
/etc/exports中严格限定允许访问的客户端IP或网段。 - 使用防火墙: 精确开放所需的最小端口范围。
- 考虑SELinux: 理解并配置合适的SELinux策略。
- 定期更新: 及时应用系统与NFS相关软件的安全补丁。
- 慎用
NFS的配置逻辑清晰,但实际部署中网络环境、权限控制和安全性是需要特别关注的环节,根据多年运维经验,在类似CentOS 6.4这样的稳定系统上部署NFS,关键在于理解权限选项(尤其是root_squash系列)的深层影响,以及防火墙规则与动态端口的适配,对于现代环境,如果条件允许,评估NFSv4或更先进的分布式文件系统(如Ceph、GlusterFS)通常是值得考虑的演进方向,稳定的共享存储是支撑关键业务的重要基础设施,值得投入精力进行严谨的配置与测试。
