FreeBSD 上的 NFS V4 托管,客户端和服务器都可以安装,但文件系统上没有读取或写入,报告输入/输出错误
Posted
技术标签:
【中文标题】FreeBSD 上的 NFS V4 托管,客户端和服务器都可以安装,但文件系统上没有读取或写入,报告输入/输出错误【英文标题】:NFS V4 at FreeBSD hosted, both client and server, mounts OK but there is no read or write on the filesystem, reporting Input/output error 【发布时间】:2016-05-09 11:37:45 【问题描述】:我已经成功安装并使用了 NFS 版本 4,其中包含 Solaris 服务器和 FreeBSD 客户端。 问题是在版本 4 中拥有 FreeBSD 服务器和 FreeBSD 客户端时。版本 3 运行良好。
我从 FreeBSD 4.5 版开始使用 FreeBSD NFS 服务器(当时有 IBM AiX 客户端)。
问题: 挂载正常,但 kerberos 缓存中没有出现任何主体,当尝试在已挂载的文件系统上读取或写入时出现错误:输入/输出错误
nfs/server-fqdn@REALM 和 nfs/client-fqdn@REALM 主体在 kerberos 服务器上创建并正确存储在双方的 keytab 文件中。
我使用上述方法从 KDC 为根的 kerberos 缓存发出 tgt 票证。
我正确启动服务: 文件 /etc/rc.conf
rpcbind_enable="YES"
gssd_enable="YES"
rpc_statd_enable="YES"
rpc_lockd_enable="YES"
mountd_enable="YES"
nfsuserd_enable="YES"
nfs_server_enable="YES"
nfsv4_server_enable="YES"
然后我启动服务 在客户端:rpcbind、gssd、nfsuserd、 在以上所有具有导出文件的服务器上:
V4: /marble/nfs -sec=krb5:krb5i:krb5p -network 10.20.30.0 -mask 255.255.255.0
我安装:
# mount_nfs -o nfsv4 servername:/ /my/mounted/nfs
#
# mkdir /my/mounted/nfs/e
# mkdir: /my/mounted/nfs/e: Input/output error
#
即使是 ls 命令也有相同的结果。 klist 不显示根缓存或任何其他缓存中的任何新主体。 我喜欢版本 3 的惊人性能,但需要 NFS4 的本地锁定文件功能。 第二个原因是安全。我需要 kerberised RPC 调用 (-sec=krbp)。
如果你们中的任何人使用 NFS 版本 4 的 FreeBSD 服务器实现了这一点,请对这个问题提供反馈,如果你这样做,我会很高兴。
【问题讨论】:
我在 FreeBSD 上都使用 V4 客户端/服务器,但没有 kerberos 身份验证。对于我来说,-mapall=1001:1001
就足够了。这可能无关紧要,但我在 V4:
行之前列出了共享(即 V3 的每个共享一行,然后所有 V3 共享的父文件夹的 V4 配置一行)。您是否可以先尝试使其在没有 kerberos 的情况下工作?例如。 V4: /marble/ -sec=sys 192.168.2.200
那么,如果可行,请尝试添加 Kerberos?
非常感谢您抽出宝贵时间回复我的问题。
非常感谢您抽出宝贵时间回复我的问题。不幸的是,即使在导出文件中使用 -sec=sys 相同的结果 :( root@lucy # mount -o nfsv4 lynx:/ /root/ela/ root@lucy # mkdir /root/ela/a mkdir: /root/ela/a: Input/output error
但感谢您的回复。我不想使用 Solaris(工作正常),因为用户使用 NIS 映射,Solaris 上的 NIS 很糟糕,ldap应该这样做,但这种情况适用于使用 NIS 的小型网络。FreeBSD 的 NIS 非常棒。谢谢
【参考方案1】:
注释不好给出代码示例。这是适用于我的 FreeBSD 客户端和 FreeBSD 服务器的设置。我不使用 Kerberos,但如果你让它使用这个最小配置,那么你可以在之后添加 Kerberos(我相信)。
服务器rc.conf
:
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
nfsv4_server_enable="YES"
nfsuserd_enable="YES"
mountd_flags="-r"
服务器/etc/exports
:
/parent/path1 -mapall=1001:1001 192.168.2.200
/parent/path2 -mapall=1001:1001 192.168.2.200
... (more shares)
V4: /parent/ -sec=sys 192.168.2.200
客户rc.conf
:
nfs_client_enable="YES"
nfs_client_flags="-n 4"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"
客户fstab
:
192.168.2.100:/path1/ /mnt/path1/ nfs rw,bg,late,failok,nfsv4 0 0
192.168.2.100:/path2/ /mnt/path2/ nfs rw,bg,late,failok,nfsv4 0 0
... (more shares)
如您所见,客户端仅尝试挂载服务器上V4
行中指定的/parent/
路径之后的内容。 192.168.2.100 是服务器 IP,192.168.2.200 是客户端 IP。此设置仅允许一个客户端连接到服务器。
我希望我没有错过任何东西。顺便说一句,请在 SuperUser 或 ServerFault 而不是 *** 上提出这样的问题。我很惊讶这个问题还没有因此而结束;)
【讨论】:
鄙视我的设置重试失败,即使安全性被降级为“sys”,我想再次感谢您的回答。我不知道我做错了什么。感谢网站提示;) 不客气,你可以随时尝试forums.freebsd.org,以防我遗漏了任何明显的东西。以上是关于FreeBSD 上的 NFS V4 托管,客户端和服务器都可以安装,但文件系统上没有读取或写入,报告输入/输出错误的主要内容,如果未能解决你的问题,请参考以下文章