本文记录了在 Ubuntu20 Server 上创建部署 nfs 服务端的过程。
简介
nfs 即网络文件系统,让你可以通过网络访问远程的文件系统,和本地磁盘操作方式几乎没有差异。
为了防止文件泄露,请尽量在本地部署、安装防火墙并设置密码。如部署在公网,一定要设置足够复杂的密码,避免泄露。
安装 nfs 软件包
安装 nfs-kernel-server
。相较于 nfs-utils
,nfs-kernel-server
运行在内核空间,会减少一些状态切换,能够提升性能。
sudo apt update
sudo apt install nfs-kernel-server
配置
nfs 服务器配置选项在 /etc/default/nfs-kernel-server
和 /etc/default/nfs-common
文件。基本不用修改
配置导出目录
所有的导出目录配置在 /etc/exports
。配置格式为 目录 host(选项)
,表示将 目录 导出到 host,host 可以为 ip 或者域名。简单示例如下:
/data 192.168.1.0/24(rw,sync,root_squash)
常用选项解释:
- rw:可读写
- ro:只读
- sync:数据同步写入磁盘。
- async:数据异步写入磁盘,会有部分缓存在内存中。
- root_squash:防止远程 root 用户具有 root 权限,root 用户会被映射成 nobody,可以降低远程用户权限。建议使用。
- no_root_squash:远程 root 用户可以具有 root 权限。
启动 nfs server
配置完导出目录后,可以使用以下命令启动。
sudo exportfs -ra
使用 exportfs -v
命令可以查看当前挂载详情。
文件权限配置
对于需要导出的文件夹可以通过 setfacl
来设置 nfs 匿名用户 nobody 的权限,如:
setfacl -m u:nobody:rwx -R /data
设置防火墙
ubuntu 可以使用 ufw
工具来配置防火墙。
sudo ufw allow from <ip> to any port nfs
sudo ufw reload
如果访问不通,可以先尝试将防火墙放开,然后再配置。
客户端挂载
Windows 界面配置
以下以 windows11 为例,配置挂载 nfs 远端目录。
安装相关工具
打开 启动或关闭 Windows 功能
,找到 NFS服务
,全部勾选,然后确定。
连接远端
在 我的电脑 下点击右键 -> 映射网络驱动器,然后配置远端 nfs server 地址并选择挂载磁盘,格式如下:
\\<host>\<目录>\
如:\\192.168.1.2\data\
中文乱码问题解决
按下 Win + r
,输入 intl.cpl
,选择 管理
,然后选择 更改系统区域设置
,勾选 Beta版:使用Unicode UTF-8提供全球语言支持
,最后确定并重启电脑。
Windows 命令配置
打开 cmd
,使用 mount 命令挂载远程 nfs。示例:
mount.exe -o nolock -o mtype=hard -o timeout=60 -o \\192.168.1.2\data\ Z:
表示将 \\192.168.1.2\data\
挂载到 Z:
盘符下。