我试图在我的文件服务器上创建几个 NFS 共享,但失败了。经过几个小时的反复试验,我注意到,如果我直接共享 zfs 数据集,它会在客户端上显示为一个空文件夹,但如果我共享同一数据集的子目录,一切都会按预期工作。
我将尝试稍微详细阐述一下:
我的测试设置是 macOS v10.15.5、服务器上的 OSX v1.9.4 上的 OpenZFS 以及客户端上的 Ubuntu Mate 20.04。Zpool 对所有数据集都设置了“com.apple.ignoreowner=on”,并且所有数据集及其所有子目录的文件权限都为“drwxr-xr-x”。在“设置”>“安全和隐私”>“隐私”中,“nfsd”具有“完全磁盘访问”权限。
- 如果数据集通过 NFS 共享,则
#/etc/exports
/Volumes/tank/Music -mapall=-2:-2 -ro
它可以由客户端挂载,但打开时,挂载点显示为空目录。Caja 正确报告已挂载卷“空空间”,但显示“0 个项目”。更有趣的是,“ls”命令返回“输入/输出错误”。但“cd Concerts”按预期工作。并且在 Concerts 目录中,“ls”命令也按预期工作。请注意,“tank”是 zpool,“Music”是数据集,“Concerts”是常规目录。
- 如果数据集的子文件夹通过 NFS 共享,则它会按预期工作。正常挂载,并且挂载点可通过 Caja 和 cd/ls 浏览。例如:
#/etc/exports
/Volumes/tank/Music/Concerts -mapall=-2:-2 -ro
- 如果通过 NFS 共享常规非 zfs 驱动器(如 APFS 驱动器),它将按预期工作。正常挂载,并且挂载点可通过 Caja 和 cd/ls 浏览。例如:
#/etc/exports
/Volumes/VMs -mapall=-2:-2 -ro
请注意“VMs”是 APFS 格式的驱动器。
- 如果通过 NFS 共享非 zfs 驱动器上的常规子目录,它将按预期工作。正常挂载,并且挂载点可通过 Caja 和 cd/ls 浏览。例如:
#/etc/exports
/Volumes/VMs/Linux -mapall=-2:-2 -ro
请注意,“VMs”是 APFS 格式的驱动器,“Linux”是常规目录。
我不确定,但我认为这只会在直接共享 zfs 数据集时发生。我很难解决这个问题。任何帮助都非常感谢。