NFS即网络文件系统,是linux系统中实现跨主机文件共享的常用协议,通过NFS可以让多台linux主机访问同一个共享目录,无需频繁传输文件。本文以CentOS和Ubuntu两个主流发行版为例,讲解NFS的安装与配置完整流程。

一、NFS服务端安装
不同linux发行版的包管理工具不同,安装NFS服务端的命令也有区别。
1. CentOS/RHEL系统
CentOS系统需要先安装rpcbind和nfs-utils两个包,rpcbind是NFS的依赖服务,负责端口映射。
# 安装NFS相关包 yum install -y rpcbind nfs-utils # 启动rpcbind服务并设置开机自启 systemctl start rpcbind systemctl enable rpcbind # 启动nfs服务并设置开机自启 systemctl start nfs systemctl enable nfs
2. Ubuntu/Debian系统
Ubuntu系统需要安装nfs-kernel-server包,该包已经包含了所有依赖。
# 安装NFS服务端 apt-get install -y nfs-kernel-server # 启动服务并设置开机自启 systemctl start nfs-kernel-server systemctl enable nfs-kernel-server
二、NFS服务端配置共享目录
NFS的共享目录配置文件是/etc/exports,所有需要共享的目录都需要在该文件中定义规则。
1. 配置文件格式说明
/etc/exports的每一行代表一个共享规则,格式为:
共享目录路径 允许访问的客户端(参数1,参数2,...)
常见的客户端表示方式:
- 单个IP:192.168.1.100
- IP段:192.168.1.0/24
- 所有客户端:*
常用配置参数:
| 参数 | 含义 |
|---|---|
| rw | 客户端对共享目录有读写权限 |
| ro | 客户端对共享目录只有只读权限 |
| sync | 数据同步写入内存和硬盘,安全性高 |
| async | 数据先写入内存,再定期写入硬盘,性能更高 |
| no_root_squash | 客户端root用户访问时保留root权限,不建议生产环境使用 |
| root_squash | 客户端root用户访问时映射为匿名用户,默认配置 |
2. 配置示例
假设我们要共享/data/nfs_share目录,允许192.168.1.0/24网段的所有客户端读写访问,配置步骤如下:
首先创建共享目录并设置权限:
mkdir -p /data/nfs_share chmod 777 /data/nfs_share
然后编辑/etc/exports文件,添加如下内容:
/data/nfs_share 192.168.1.0/24(rw,sync,root_squash)
配置完成后,使用exportfs命令让配置生效:
# 重新加载exports配置 exportfs -r # 查看当前已生效的共享规则 exportfs -v
三、NFS客户端配置与挂载
客户端不需要安装完整的NFS服务端,只需要安装客户端工具即可。
1. 客户端工具安装
CentOS系统安装命令:
yum install -y nfs-utils
Ubuntu系统安装命令:
apt-get install -y nfs-common
2. 查看服务端共享目录
安装完成后,可以使用showmount命令查看服务端的共享列表:
# 查看192.168.1.10服务器的NFS共享目录 showmount -e 192.168.1.10
3. 挂载共享目录
创建本地挂载点,然后执行挂载命令:
# 创建挂载点 mkdir -p /mnt/nfs_share # 挂载服务端共享目录,假设服务端IP是192.168.1.10 mount -t nfs 192.168.1.10:/data/nfs_share /mnt/nfs_share
如果需要开机自动挂载,可以编辑/etc/fstab文件,添加如下内容:
192.168.1.10:/data/nfs_share /mnt/nfs_share nfs defaults 0 0
四、验证与常见问题排查
挂载完成后,可以在客户端挂载目录下创建测试文件,到服务端共享目录查看是否存在,验证共享是否正常。
如果挂载失败,可以按照以下步骤排查:
- 检查服务端rpcbind和nfs服务是否正常运行:
systemctl status rpcbind nfs - 检查服务端防火墙是否开放NFS相关端口,或者直接临时关闭防火墙测试:
systemctl stop firewalld - 检查
/etc/exports配置是否有语法错误,客户端IP段是否匹配 - 使用
showmount -e 服务端IP确认服务端共享规则是否生效
注意:生产环境中不建议关闭防火墙,应该根据实际需求开放NFS使用的端口,包括rpcbind的111端口和nfs的2049端口,以及rpc相关动态端口。