Ubuntu 服务器间 NFS 共享配置指南
本文将详细介绍如何在 服务器A(应用服务器) 和 服务器B(数据盘服务器) 之间通过 NFS 实现数据共享的完整配置流程。
目录
服务器B(数据盘服务器)配置
1. 格式化磁盘
sudo mkfs.ext4 /dev/vdb
sudo mkfs.ext4 /dev/vdc
sudo mkfs.ext4 /dev/vdd
2. 创建挂载点并永久挂载
sudo mkdir -p /mnt/data1 /mnt/data2 /mnt/data3
sudo vim /etc/fstab
添加以下内容:
/dev/vdb /mnt/data1 ext4 defaults 0 0
/dev/vdc /mnt/data2 ext4 defaults 0 0
/dev/vdd /mnt/data3 ext4 defaults 0 0
注意:
确保挂载点目录已创建
fstab 修改后不需要手动执行 systemctl daemon-reload
3. 测试挂载
sudo mount -a
验证挂载是否成功:
df -h | grep /mnt/data
4. 安装 NFS 服务
sudo apt update && sudo apt install nfs-kernel-server
5. 配置 NFS 共享
编辑 /etc/exports 文件:
sudo vim /etc/exports
添加以下内容(根据实际情况调整 IP 地址和权限):
/mnt/data1 服务器A的IP(rw,sync,no_root_squash,no_subtree_check)
/mnt/data2 服务器A的IP(rw,sync,no_root_squash,no_subtree_check)
/mnt/data3 服务器A的IP(rw,sync,no_root_squash,no_subtree_check)
配置说明:
rw:允许读写
sync:同步写入,确保数据一致性
no_root_squash:允许 root 用户访问(谨慎使用)
no_subtree_check:禁用子树检查,提高性能
安全建议:
生产环境建议限制访问 IP 范围(如 192.168.1.0/24)
避免在生产环境中使用 no_root_squash
6. 启动 NFS 服务
sudo systemctl restart nfs-kernel-server
sudo systemctl enable nfs-kernel-server
7. 检查 NFS 导出情况
sudo exportfs -v
确保 /mnt/data1、/mnt/data2、/mnt/data3 已正确导出。
服务器A(应用服务器)配置
1. 安装 NFS 客户端
sudo apt update && sudo apt install nfs-common
2. 创建挂载点
sudo mkdir -p /mnt/data1 /mnt/data2 /mnt/data3
3. 测试挂载
先测试手动挂载:
sudo mount -t nfs 服务器B的IP:/mnt/data1 /mnt/data1
sudo mount -t nfs 服务器B的IP:/mnt/data2 /mnt/data2
sudo mount -t nfs 服务器B的IP:/mnt/data3 /mnt/data3
验证挂载是否成功:
df -h | grep nfs
4. 永久挂载
编辑 /etc/fstab 文件:
sudo vim /etc/fstab
添加以下内容:
服务器B的IP:/mnt/data1 /mnt/data1 nfs defaults 0 0
服务器B的IP:/mnt/data2 /mnt/data2 nfs defaults 0 0
服务器B的IP:/mnt/data3 /mnt/data3 nfs defaults 0 0
注意:如果网络不稳定,可以添加 soft,timeo=180,retrans=3 等选项
5. 测试永久挂载
sudo mount -a
df -h | grep nfs
补充建议
1. 防火墙配置
确保服务器B的防火墙允许 NFS 流量(默认端口 2049):
sudo ufw allow from 服务器A的IP to any port nfs
如果使用 iptables:
sudo iptables -A INPUT -p tcp --dport 2049 -s 服务器A的IP -j ACCEPT
sudo iptables -A INPUT -p udp --dport 2049 -s 服务器A的IP -j ACCEPT
2. SELinux 配置(如果启用)
如果服务器B启用了 SELinux,可能需要调整策略:
sudo setsebool -P nfs_export_all_rw 1
3. 测试 NFS 权限
在服务器A上创建测试文件:
sudo touch /mnt/data1/testfile
sudo rm /mnt/data1/testfile
4. 日志检查
如果挂载失败,检查日志:
sudo tail -f /var/log/syslog