第0步:准备两台虚拟机,作为服务端和客户端
以下是在 CentOS 7 环境下配置和使用 NFS 服务 的详细步骤,包含实际应用示例:
一、环境说明
- 服务器:CentOS 7(IP:
192.168.1.100
) - 客户端:CentOS 7(IP:
192.168.1.200
) - 共享目录:
/data/project
(服务器端) - 挂载目录:
/mnt/nfs_project
(客户端)
二、服务器端配置
1. 安装NFS服务
# 安装NFS服务端软件
sudo yum install -y nfs-utils rpcbind
2. 创建共享目录并设置权限
sudo mkdir -p /data/project
sudo chmod 755 /data/project # 设置目录权限
sudo chown nobody:nobody /data/project # 设置属主为匿名用户(可选)
3. 配置NFS共享规则
编辑 /etc/exports
文件:
sudo vi /etc/exports
添加以下内容:
/data/project 192.168.1.200(rw,sync,no_root_squash) # 允许单个客户端
# 或允许整个子网:
# /data/project 192.168.1.0/24(rw,sync,no_subtree_check)
- rw:读写权限
- sync:同步写入
- no_root_squash:允许客户端root用户保留权限(谨慎使用)
4. 启动NFS服务
# 启动服务并设置开机自启
sudo systemctl start rpcbind nfs-server
sudo systemctl enable rpcbind nfs-server# 重新加载exports配置
sudo exportfs -arv
5. 配置防火墙(重要!)
# 允许NFS服务通过防火墙
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload
三、客户端配置
1. 安装NFS客户端工具
sudo yum install -y nfs-utils
2. 创建挂载点目录
sudo mkdir -p /mnt/nfs_project
3. 挂载NFS共享目录
sudo mount -t nfs 192.168.1.100:/data/project /mnt/nfs_project
4. 验证挂载
df -h | grep nfs # 查看挂载状态
ls /mnt/nfs_project # 查看共享内容
5. 设置开机自动挂载
编辑 /etc/fstab
:
sudo vi /etc/fstab
添加以下行(注意这里的地址是服务器的ip地址):
192.168.1.100:/data/project /mnt/nfs_project nfs defaults,_netdev 0 0
_netdev
:确保网络就绪后再挂载
四、实际应用示例
场景:多服务器共享代码目录
- 服务器端:将
/data/project
作为共享目录存放项目代码 - 客户端:通过NFS挂载到本地目录,直接运行代码
操作步骤:
- 在服务器端创建测试文件:
echo "Hello from NFS Server" > /data/project/test.txt
-
在客户端查看文件:
cat /mnt/nfs_project/test.txt # 应显示服务器端内容
-
在客户端写入文件:
echo "Client writes to NFS" >> /mnt/nfs_project/test.txt
-
在服务器端验证同步:
cat /data/project/test.txt # 应包含客户端写入的内容
五、高级配置选项
1. 用户权限管理
- 使用
anonuid
和anongid
指定匿名用户UID/GID:/data/project 192.168.1.200(rw,sync,all_squash,anonuid=1000,anongid=1000)
2. 性能优化
- 调整挂载参数(客户端):
mount -t nfs -o rsize=8192,wsize=8192,timeo=14 192.168.1.100:/data/project /mnt/nfs_project
3. 安全增强
- 限制IP访问范围:
/data/project 192.168.1.200(rw) 192.168.1.201(ro)
六、常见问题排查
1. 挂载失败:Connection refused
- 检查服务器端防火墙和NFS服务状态:
sudo systemctl status nfs-server sudo firewall-cmd --list-all
2. 客户端无写入权限
- 确保服务器端
exports
文件配置了rw
权限 - 检查共享目录的本地文件系统权限:
ls -ld /data/project
3. 文件修改不同步
- 检查是否使用了
sync
参数 - 尝试手动同步:
sudo exportfs -arv # 服务器端重新导出共享
七、注意事项
-
生产环境安全:
- 避免使用
no_root_squash
- 尽量缩小IP访问范围
- 定期检查共享目录权限
- 避免使用
-
SELinux问题:
# 如果遇到权限问题,临时关闭SELinux sudo setenforce 0 # 永久关闭需修改/etc/selinux/config
通过以上步骤,可以在CentOS 7环境下快速搭建NFS服务,并实现跨服务器的文件共享。