NFS 全称 Network File System(网络文件系统),是由 SUN 公司研制的 UNIX 系统下的网络文件系统,允许多个用户之间共享文件,并成为分布式文件系统的基础,此协议从 1984 年问世,是一款老牌经典网络文件共享协议。
详细说明见维基百科:https://en.wikipedia.org/wiki/Network_File_System
下面介绍在 OpenWrt 下安装并搭建 NFS 文件服务器。
准备工作
- 安装 NFS 服务器界面:luci-i18n-nfs-zh-cn
- 已连接可用的存储设备EXT4格式。(路由器格式化硬盘教程)
配置共享目录
打开 “NAS”-“NFS服务器”界面,参照示例添加即可,也可直接修改配置文件 /etc/exports
注意:NFS 协议不是“网络共享”,需要专门支持 NFS 协议的客户端才能访问。
常用共享示例
#只读共享 /mnt/sda 目录,允许任何主机访问。
/mnt/sda *(ro,all_squash,insecure,sync,no_subtree_check)
#可写共享 /mnt/sdb/tmp 目录,只允许指定 IP 地址访问。
/mnt/sdb/tmp 192.168.9.100(rw,all_squash,insecure,sync,no_subtree_check)
#只读共享 /mnt/sda 目录,只允许指定的局域网段访问。
/mnt/sda 192.168.9.0/24(ro,all_squash,insecure,sync,no_subtree_check)
#也可写为
/mnt/sda 192.168.9.0/255.255.255.0(ro,all_squash,insecure,sync,no_subtree_check)
#可写共享 /mnt/sdb/ftp 目录,只允许指定的域名地址访问,且将远程访问权限映射为本地 FTP 用户权限。
/mnt/sdb/tmp *.iyzm.net(rw,all_squash,insecure,sync,no_subtree_check,anonuid=55,anongid=55)
#可写共享 /mnt/sdb/test 目录,允许 root 用户权限访问。
/mnt/sdb/test *(rw,no_root_squash,insecure,sync,no_subtree_check)
NFS 配置选项说明
选项 | 用途 |
---|---|
ro | 只读访问。 |
rw | 允许读写。 |
sync | 同步写入,内存数据实时写入磁盘。 |
async | 异步写入,内存数据延时写入磁盘。 |
wdelay | 延迟写操作,合并写入操作。(默认启用) |
no_wdelay | 若有写操作则立即执行。 |
subtree_check | 若目录是一个子目录,则检查其父目录的权限。(默认启用) |
no_subtree_check | 即使目录是一个子目录,也不检查其父目录的权限。 |
all_squash | 将所有访问用户都映射为匿名用户。 |
no_all_squash | 将访问用户先与本机用户匹配,匹配失败后再映射为匿名用户。(默认启用) |
root_squash | 将 root 用户映射为匿名用户。(默认启用) |
no_root_squash | 允许 root 用户权限。 |
anonuid | 指定匿名用户所使用的本地 UID,(默认 65534) |
anongid | 指定匿名用户所使用的本地 GID,(默认 65534) |
secure | 限制客户端只能从小于 1024 的 TCP 端口连接服务器。(默认启用) |
insecure | 允许客户端从大于 1024 的 TCP 端口连接服务器。 |
NFS 服务器公网访问
如需对公网提供 NFS 文件服务,需要打开这些防火墙端口 TCP与UDP :111,2049,32777,32778,32779,32780
OpenWrt 或 Linux 挂载 NFS 共享目录
1、需要先安装 nfs-utils
2、使用挂载命令示例:mount -t nfs 192.168.9.1:/mnt/share /mnt/nfs
Windwos 挂载 NFS 共享目录
1、先启用 Windows 的 NFS 客户端功能。
2、使用命令挂载即可。
# 简单挂载
mount \\192.168.9.1\mnt\sda z:
# 追加常用参数进行挂载
mount -o nolock -o mtype=hard -o timeout=60 \\192.168.9.1\mnt\sda z:
# 卸载命令(直接通过界面断开网络驱动器也可以)
umount z:
# 查看挂载点信息
mount
3、如果想进行写入操作,需要添加注册表条目。(NFS 服务器端也要启用 no_root_squash 参数。)
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
添加 DWORD (32位)值,AnonymousGid 和 AnonymousUid
这两个注册表项目用于将默认的匿名用户标识修改为 0,即表示 root 用户。
4、修改 NFS 客户端的“属性”,勾选默认文件权限的写入。
然后重新挂载 NFS 目录就可以写入文件了。
Windows 自带的 NFS 客户端仅支持到 NFSv3 协议,如果想支持 NFSv4 协议,请尝试安装其他软件。
注意:Windows 系统下建议优先使用 SMB 共享服务,Windows 对 NFS 共享的支持并不是太好,效率远不如 SMB 共享。
评论(0)