NFS(Network File System,网络文件系统)是一种分布式文件系统协议,由Sun Microsystems于1984年开发。它允许用户通过网络访问远程计算机上的文件系统,就像访问本地文件一样。
版本 | 发布时间 | 主要特点 |
---|---|---|
NFSv2 | 1989年 | 最初广泛使用的版本,32位限制 |
NFSv3 | 1995年 | 支持64位文件大小,异步写入,更好的错误处理 |
NFSv4 | 2000年 | 引入状态协议,安全性增强,性能改进 |
NFSv4.1 | 2010年 | 并行NFS(pNFS),会话模型 |
NFSv4.2 | 2016年 | 服务器端复制,空间预留等新特性 |
在大多数Linux发行版上:
# Ubuntu/Debian
sudo apt-get install nfs-kernel-server
# RHEL/CentOS
sudo yum install nfs-utils
编辑/etc/exports
文件,添加要共享的目录:
/path/to/share client_ip(rw,sync,no_subtree_check)
示例:
/home/data 192.168.1.0/24(rw,sync,no_root_squash)
/var/www 192.168.1.100(ro)
常用选项:
- rw
:读写权限
- ro
:只读权限
- sync
:同步写入
- async
:异步写入
- no_root_squash
:允许root用户保持权限
- root_squash
:将root用户映射为匿名用户
- subtree_check
:子树检查
- no_subtree_check
:不进行子树检查
# Ubuntu/Debian
sudo systemctl start nfs-kernel-server
sudo systemctl enable nfs-kernel-server
# RHEL/CentOS
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
sudo exportfs -v
# Ubuntu/Debian
sudo apt-get install nfs-common
# RHEL/CentOS
sudo yum install nfs-utils
sudo mount -t nfs server_ip:/path/to/share /local/mount/point
示例:
sudo mount -t nfs 192.168.1.10:/home/data /mnt/nfs/data
在/etc/fstab
中添加:
server_ip:/path/to/share /local/mount/point nfs defaults 0 0
示例:
192.168.1.10:/home/data /mnt/nfs/data nfs rw,hard,intr 0 0
常用挂载选项:
- hard
:硬挂载(推荐)
- soft
:软挂载
- intr
:允许中断
- timeo=n
:超时时间(十分之一秒)
- retrans=n
:重试次数
- rsize=n
:读取块大小
- wsize=n
:写入块大小
mount | grep nfs
使用防火墙限制访问:
sudo ufw allow from 192.168.1.0/24 to any port nfs
考虑使用Kerberos认证(NFSv4支持)
限制导出范围:只导出必要的目录给必要的客户端
使用安全的挂载选项:避免使用no_root_squash
除非必要
调整块大小:
mount -t nfs -o rsize=32768,wsize=32768 server:/share /mnt
使用TCP协议(默认):
mount -t nfs -o proto=tcp server:/share /mnt
考虑使用NFSv4:通常比早期版本性能更好
网络优化:确保网络带宽和延迟满足需求
连接问题:
rpcinfo -p server_ip
showmount -e server_ip
权限问题:检查服务器和客户端的用户/组ID是否匹配
性能问题:
nfsstat -c # 客户端统计
nfsstat -s # 服务器统计
日志查看:
dmesg | grep nfs
journalctl -xe
服务器配置:
/home/media 192.168.1.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
客户端挂载:
sudo mkdir /mnt/media
sudo mount -t nfs 192.168.1.10:/home/media /mnt/media
服务器配置:
/var/www 192.168.1.100(ro) 192.168.1.101(ro)
客户端挂载:
sudo mount -t nfs -o ro,hard,intr 192.168.1.10:/var/www /var/www
NFS是Linux环境下实现文件共享的强大工具,特别适合需要高性能文件访问的场景。通过合理配置和安全设置,可以构建高效可靠的网络文件系统。根据实际需求选择合适的NFS版本和配置选项,可以显著提升系统性能和用户体验。