NFS (Network File System) 是一种分布式文件系统协议,允许不同服务器通过网络共享文件和目录。以下是实现NFS多服务器文件共享的详细步骤:
在NFS服务器上执行:
# 对于基于RPM的系统(CentOS/RHEL/Fedora)
sudo yum install -y nfs-utils
# 对于基于Debian的系统(Ubuntu/Debian)
sudo apt-get install -y nfs-kernel-server
sudo mkdir -p /shared/data
sudo chown nobody:nogroup /shared/data # 设置权限
sudo chmod 777 /shared/data # 简化权限设置,生产环境应根据需要调整
编辑/etc/exports
文件:
sudo vi /etc/exports
添加以下内容(根据实际需求调整):
/shared/data client1_ip(rw,sync,no_subtree_check)
/shared/data client2_ip(rw,sync,no_subtree_check)
或者允许整个子网访问:
/shared/data 192.168.1.0/24(rw,sync,no_subtree_check)
参数说明:
- rw
:读写权限
- ro
:只读权限
- sync
:同步写入,更安全
- async
:异步写入,性能更好但风险更高
- no_subtree_check
:禁用子树检查,提高性能
# 对于基于RPM的系统
sudo systemctl enable --now nfs-server
sudo exportfs -a # 重新加载exports配置
# 对于基于Debian的系统
sudo systemctl enable --now nfs-kernel-server
sudo exportfs -a
# 对于firewalld
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
# 对于UFW(Ubuntu)
sudo ufw allow from client_ip to any port nfs
sudo ufw enable
# 对于基于RPM的系统
sudo yum install -y nfs-utils
# 对于基于Debian的系统
sudo apt-get install -y nfs-common
sudo mkdir -p /mnt/nfs/data
临时挂载(重启后失效):
sudo mount -t nfs nfs_server_ip:/shared/data /mnt/nfs/data
永久挂载(编辑/etc/fstab
):
sudo vi /etc/fstab
添加以下行:
nfs_server_ip:/shared/data /mnt/nfs/data nfs defaults 0 0
然后执行:
sudo mount -a
df -h
mount | grep nfs
避免长期挂载,按需自动挂载:
# 安装autofs
sudo yum install -y autofs # CentOS/RHEL
sudo apt-get install -y autofs # Ubuntu/Debian
# 配置/etc/auto.master
echo "/mnt/nfs /etc/auto.nfs --timeout=300" | sudo tee -a /etc/auto.master
# 创建auto.nfs文件
echo "data -fstype=nfs,rw,soft,intr nfs_server_ip:/shared/data" | sudo tee /etc/auto.nfs
# 启动服务
sudo systemctl enable --now autofs
挂载时可添加性能优化参数:
nfs_server_ip:/shared/data /mnt/nfs/data nfs rw,sync,hard,intr,rsize=32768,wsize=32768,timeo=600 0 0
参数说明:
- rsize
/wsize
:读写缓冲区大小
- hard
/soft
:硬/软挂载
- intr
:允许中断挂起操作
- timeo
:超时时间(十分之一秒)
sec=krb5
)/var/log/messages
或journalctl -u nfs-server
中的NFS日志no_root_squash
选项挂载失败:
/var/log/messages
或journalctl -u nfs-server
日志权限问题:
性能问题:
rsize
和wsize
参数async
选项(但会增加数据丢失风险)通过以上步骤,您可以成功设置NFS实现多服务器间的文件共享。根据实际需求调整配置参数以获得最佳性能和安全性。