Ubuntu 上的 NFS 共享在安装时使 iMac 停止运行

Ubuntu 上的 NFS 共享在安装时使 iMac 停止运行

我们在一所大学的实验室里尝试创建一个可以在 OS X 和 Ubuntu 机器之间共享的 NFS 共享。这个问题让我的主管和我在过去几天里抓狂不已 - 之所以在这里发帖,是因为我们束手无策。

我将尽力概括一下目前的情况:

  • NFS 守护进程(1:1.2.5-3ubuntu3.1)正在 Ubuntu 服务器 12.04 上运行
  • 服务器设置(/etc/exports)如下所示:

    /export -rw,fsid=0,no_subtree_check client.computer.name
    /export/data -rw,async,subtree_check,all_squash,anonuid=2000,anongid=2000 client.computer.name
    /export/moredata -rw,async,subtree_check client.computer.name
    
  • 使用以下命令,share /data 和 /moredata 已经成功安装在 Ubuntu 机器上,没有任何问题:

    sudo mount server:/data /srv/data
    
  • 在某些运行 Lion 或 Snow Leopard 的 Mac OS X 机器上,挂载都正常工作,但由于一些我认为与当前问题无关的问题,需要修改挂载命令

    sudo mount -t nfs -o resvport,vers=4,proto=tcp,port=2049 server:/data /Volumes/data
    
  • 然而,在两台运行 OS X 10.8(Mountain Lion 的最新版本)的独立机器上,都存在着重大问题。

  • 大约有一半的时间,NFS 共享在运行 OS X 10.8 的 iMac 上安装正常,但我的计算机却停滞不前,甚至在服务器目录上运行“ls -la”也需要几分钟才能启动。服务器安装后,即使在本地目录上运行 ls 也会产生同样的效果!

另一半时间里,计算机在安装过程中会停止运行。

  • 编辑由于挂载点已添加到聚光灯排除列表中,因此聚光灯索引不是问题。

此外,运行活动监视器或“top”不会产生任何洞察,没有任何内容占用超过 10% 的处理能力,并且有足够的可用 RAM。

我该如何调试?查询哪些日志有用?

** 更新 **

  • 挂载前后的 rpcinfo 日志

http://pastebin.com/FZUxbK1s

  • 以下是共享安装过程中的一些有趣的日志结果:

http://pastebin.com/yd6JEH10

这是看起来更令人担忧的信息

2013-01-11 12:27:49.572191 PST - 348.1506 - Client: mount_nfs, UID: 0, EUID: 0, GID: 0, EGID: 0
2013-01-11 12:27:49.572191 PST - 348.1506, Module: SystemCache - Invalid name (null) for KAUTH_EXTLOOKUP_VALID_PW/GRNAM

答案1

尝试添加nolockslocallocks到那些特定的机器支架。

致谢:http://hardforum.com/showthread.php?p=1039476929

答案2

(OS X 索引/搜索服务)可能spotlight正在尝试索引新的挂载点,这意味着尝试遍历整个目录结构及其中的每个文件。您可以执行以下操作禁用这些挂载点上的索引

  1. 打开系统偏好设置
  2. 点击“聚焦”
  3. 点击“隐私”
  4. 单击+将 NFS 挂载点添加到排除列表中。

答案3

这是 IO 瓶颈,而不是 CPU 瓶颈。这就是您在任务管理器中看不到高百分比使用率的原因。

这让我想到,您与 NFS 服务器的网络连接可能存在问题。可能是路由器、集线器或交换机,中间的设备可能会丢弃您的数据包(在不同硬件的不同场合,FTP 和 SVN 都遇到过这个问题)。如果可以的话,我会尝试为服务器和 iMac 设置静态 IP,并使用一根经过测试的良好以太网电缆将它们直接连接在一起。然后看看它的表现如何。

如果问题仍然存在,也许您可​​以在 Mac 上使用第三方 NFS 安装软件,这可以精确地指出是否是 Apple 的 NFS 实现导致了问题。

也许可以尝试在 Mac 上的虚拟机中安装 Linux,看看是否可以连接到该虚拟机上的 NFS。这样可以排除 iMac 端的任何硬件问题。

工具:

  • 查看Mac和Linux端的终端应用程序“iotop”命令。
  • Wireshark,我不怎么用它,但也许它会有帮助。

答案4

您也可以尝试使用 autofs 挂载它(请参阅这里或者这里请参阅 Apple 的技术白皮书)。

这样,共享仅在访问时才会挂载,不使用时会自动卸载。如果您确保添加该soft选项,以便系统不会挂起等待共享响应,那么您可能已经解决了您的问题。

相关内容