NFS (Network File System) 是一种分布式文件系统协议,允许网络中的计算机之间共享文件和目录。它最初由 Sun Microsystems 开发,现已成为 Unix/Linux 系统间文件共享的标准协议。
在大多数 Linux 发行版上:
# Ubuntu/Debian
sudo apt update
sudo apt install nfs-kernel-server
# CentOS/RHEL
sudo yum install nfs-utils
sudo mkdir -p /shared/nfs
sudo chown nobody:nogroup /shared/nfs # 设置适当权限
编辑 /etc/exports
文件:
sudo nano /etc/exports
添加如下内容(根据需求调整):
/shared/nfs 192.168.1.0/24(rw,sync,no_subtree_check)
常用选项说明:
- rw
:读写权限
- ro
:只读权限
- sync
:同步写入(更安全但性能略低)
- async
:异步写入(性能更好但风险更高)
- no_subtree_check
:禁用子树检查(提高性能)
- root_squash
:将 root 用户映射为匿名用户(默认)
- no_root_squash
:允许 root 用户保持特权(安全风险)
sudo exportfs -a # 重新导出所有共享
sudo systemctl restart nfs-kernel-server # 重启服务
# 查看当前导出的共享
sudo exportfs -v
# Ubuntu/Debian
sudo ufw allow from 192.168.1.0/24 to any port nfs
# CentOS/RHEL
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
# Ubuntu/Debian
sudo apt install nfs-common
# CentOS/RHEL
sudo yum install nfs-utils
sudo mkdir -p /mnt/nfs
sudo mount -t nfs server_ip:/shared/nfs /mnt/nfs
编辑 /etc/fstab
文件:
server_ip:/shared/nfs /mnt/nfs nfs defaults 0 0
然后执行:
sudo mount -a
df -h
mount | grep nfs
在 /etc/exports
中使用 IP 或网络范围:
/shared/nfs 192.168.1.100(rw) 192.168.1.0/24(ro)
编辑 /etc/idmapd.conf
确保客户端和服务器有相同的域名设置:
[General]
Domain = yourdomain.com
对于纯 NFSv4 环境,可以简化配置:
/shared/nfs /shared/nfs gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
增加 NFS 线程数(编辑 /etc/default/nfs-kernel-server
):
RPCNFSDCOUNT=16
调整读写大小(客户端挂载选项):
mount -t nfs -o rsize=65536,wsize=65536 server:/share /mnt
sudo systemctl status nfs-server
rpcinfo -p server_ip
/etc/exports
中的权限设置tail -f /var/log/syslog
或 journalctl -u nfs-server
nolock
选项:mount -t nfs -o nolock server:/share /mnt
/etc/default/nfs-common
中的 NEED_IDMAPD=yes
通过以上配置,您应该能够在 Linux 系统上成功设置和使用 NFS 文件共享服务。根据实际需求调整配置参数,以获得最佳的性能和安全性平衡。