UNRAID 做存储、Ubuntu 做计算,是我家的标准配置。片子存在 UNRAID 上,剪辑在 Ubuntu 的 DaVinci Resolve 里做。一开始用的 Samba,小文件还行,大素材 4K 原片走起来直接拉胯——千兆网只跑到 30-40MB/s 左右,还经常断流。
换了 NFS 之后稳在 110MB/s 满速。配置不复杂,但有几个点是 UNRAID 特有的坑,不搞清楚的话很容易配完了也能用、但用着别扭。记一下全过程。
UNRAID 端:开 NFS 服务
进 Settings → NFS,三个关键参数:
| 参数 | 值 | 为什么 |
|---|---|---|
| Enable NFS | Yes | 开 |
| Tunable (fuse_remember) | 330 | FUSE 层的属性缓存时间。UNRAID 的 NFS 不是直接导出 ext4,是经过 FUSE 聚合层再出去的,这个缓存值直接影响响应速度。330 秒在稳定不常改动的场景下比较平衡 |
| Number of threads | 8 | 等于或略大于 CPU 核数,别太小。我 N100 只有 4 核所以设 8 有点溢出,但实测没什么副作用 |
然后到 Shares → 你的共享文件夹 → NFS Security Settings:
192.168.x.0/24(rw,secure,async,no_subtree_check)几句说明:async 是性能关键——代价是断电可能丢数据,有 UPS 的话放心开。no_subtree_check 避免重命名文件时报 ESTALE 错误,这个 UNRAID 的 FUSE 层特别容易触发。no_root_squash 看需求,我是做视频剪辑需要 root 写权限就加了。
点 Apply,UNRAID 自动重写 /etc/exports 并重启 NFS 服务。
Ubuntu 端:挂载
先装工具:
sudo apt install nfs-common -y
sudo mkdir -p /mnt/unraid_nfs
验证服务端导出了什么:
showmount -e 192.168.8.244
# 输出:/mnt/user/video 192.168.x.0/24
注意这里导出的路径是 /mnt/user/,不是 /mnt/diskX/。UNRAID 的 user share 是跨多盘的聚合视图,NFS 走的就是这一层。
手动挂载测试:
sudo mount -t nfs \
-o nfsvers=4,hard,timeo=600,retrans=3 \
-o rsize=1048576,wsize=1048576 \
-o noatime,nodiratime \
192.168.8.244:/mnt/user/video \
/mnt/unraid_nfs
参数选择理由:rsize/wsize=1MB 是千兆网上限——一般教程写 65536,那是百兆时代的遗产。hard 挂载保证数据完整性,配合 timeo=600(60 秒超时)在断网时不会立刻报错退出。noatime 对大文件场景是必须的——每次读文件写一次 atime 元数据,对 HDD 阵列是灾难。
验证:
mount | grep unraid_nfs
# 看 rsize=1048576 是否生效
持久化:/etc/fstab
编辑 /etc/fstab,加一行:
192.168.8.244:/mnt/user/video /mnt/unraid_nfs nfs nfsvers=4,hard,timeo=600,retrans=3,rsize=1048576,wsize=1048576,noatime,nodiratime,_netdev,x-systemd.automount,x-systemd.requires=network-online.target 0 0
_netdev 和 x-systemd.automount 是关键——网络不可用时不会卡住启动。x-systemd.requires=network-online.target 确保网卡 ready 后再挂。
重载验证:
sudo systemctl daemon-reload
sudo mount -a
df -h | grep unraid_nfs
一个坑:UNRAID NFS 和 SMB 混用
UNRAID 允许同一个 share 同时开 SMB 和 NFS。但不要同时从两个协议写同一个文件——锁机制不互通,会损坏文件。我做法是:大文件编辑用 NFS 的 Ubuntu 端,手机/平板看片用 SMB,错开读写场景就行。
总结
NFS 在 UNRAID 上的配置本身不复杂,坑在几个默认值上:rsize/wsize 的默认值太小、fuse_remember 默认保守、FUSE 层的 ESTALE 问题容易被忽略。把这些点踩过了,局域网内千兆满速不是什么难事。