飞牛从上次内核更新后,至今版本存在NFS故障,表现为其他设备连接到飞牛,可正常上传下载删除等操作,但是不能重命名,重命名报错。
系统版本:X86
设备环境:虚拟机内安装飞牛、局域网访问、系统1.1.3106
出现频率:必现
联系方式:447群-~
问题现象
- PVE vzdump 备份到 NFS 存储
FN-PVE 时,文件写入成功但 rename 失败
ERROR: unable to rename ... .vma.dat to ... .vma.zst
排查过程
- 最初以为是
all_squash 导致的 UID 映射问题 → 改为 no_root_squash 后问题依旧
touch、dd 写文件成功,stat/ls 能看到文件,但 mv 报 ENOENT
- 加
actimeo=0、noac 等挂载选项无效
- NFSv3 和 NFSv4 均受影响
strace 证据
renameat2(AT_FDCWD, "srcfile", AT_FDCWD, "dstfile", RENAME_NOREPLACE) = -1 EINVAL
renameat(AT_FDCWD, "srcfile", AT_FDCWD, "dstfile") = -1 ENOENT
结论
- NAS(FN-NAS)的 NFS 服务端存在 rename 操作 bug
- NFSv3 和 NFSv4 均受影响,问题与 NFS 版本无关
os.listdir() 能列到文件,os.path.exists() 返回 True,但 os.rename() 报 FileNotFoundError
- 客户端
stat/ls 用 LOOKUP/GETATTR 能读到文件,但 RENAME 走不同路径返回 ENOENT
NFS 导出配置
/fs/1000/nfs *(rw,async,insecure,all_squash,no_subtree_check,insecure_locks,sec=sys,anonuid=1000,anongid=1001,fsid=1000)