睡眠后,Mac OS无法连接到SMB共享


15

我曾经在我最近(3周龄)的MacBook Pro上访问我当地的Windows 2008文件服务器的SMB共享没有问题。但是,几天后,它从睡眠模式唤醒后无法(重新)连接到服务器。

Finder只显示“连接......”并无限期挂起。当我从命令行尝试它时会发生同样的事情( mount -t smbfs )。这通过WiFi和电缆发生,我也尝试关闭和重新打开网络。唯一有帮助的是重启。

任何提示?

编辑澄清:这是Mac正在睡觉,而不是服务器。我还发现,如果我在让它进入睡眠状态之前断开它的连接,它将能够在唤醒后重新连接。

另一个编辑:

我做了一些调查,并嗅探了网络流量。 Mac向服务器发送NetBIOS名称查询和状态请求(NBSTAT),服务器响应,一切似乎都很好。之后,Mac应该打开SMB连接,但它没有做任何事情。不再有数据包了。

然后我发现真正的问题更深层次。它似乎没有打开一个新连接,因为它认为旧的连接,当然在服务器端超时,仍然是活动的。但是,任何试图访问其挂载点或只是/ Volumes目录的程序都会挂起,甚至无法终止。 umount /Volumes/share - 挂起 ls /Volumes - 挂起 kill -9 任何这些 - 没有帮助。此外,在任何应用程序中打开文件打开对话框也会导致它挂起!

唯一有帮助的是硬重启。在我看来,如果超时连接可以触发这样的事情,OSX的SMB实现中存在根本性的错误。

Answers:


6

我的MacBook Pro遇到了同样的问题。我按照这里的说明 - http://blog.djmnet.org/2009/02/09/macs-needing-unix-network-geekery/ 我的问题似乎得到了解决。


1
哇谢谢!这似乎已经做到了。我在smb.conf中禁用了darwin_streams并将其添加到我的sysctl.conf中: net.inet.tcp.delayed_ack=0 net.inet.tcp.mssdflt=1440 kern.ipc.maxsockbuf=500000 net.inet.tcp.sendspace=250000 net.inet.tcp.recvspace=250000 重新启动后,我连接到我的SMB共享(已经花费的时间比以前少了很多),经过几次睡眠之后,我仍然可以完美地访问它们。
Andreas

实际上,我在应用这些更改后仍然遇到了问题。但是,OSX Lion似乎已经解决了这个问题。
Andreas

4

嘿,我最近和我的2010 MBP有同样的问题,我发现解决方案是两件事的组合。

第一个是内核调整(基本上是 TCP_NODELAY 在连接上),可以在终端中完成:

sudo sysctl -w net.inet.tcp.delayed_ack=0

其次,是处理文件权限/ DS_Store文件。通常,当您设置Windows共享时,Mac将只具有读取权限。 Finder尝试在您查看的每个文件夹中创建它们,并最终可以挂起。因此,有两种方法可以解决此问题 - 在Windows计算机上启用足够的文件权限,或者停止Finder在网络共享上创建这些文件。我更喜欢禁用finder来创建它们,这可以通过在终端中运行以下命令来完成:

defaults write com.Apple.desktopservices DSDontWriteNetworkStores true

运行它们后需要重新启动。


在我的Mac OS 10.7.2系统上,默认值(您需要还原它)是“net.inet.tcp.delayed_ack:3”(您可以通过运行“sudo sysctl -a”获取默认值)。
Per Noalt

@PerNoalt:回应这个帖子因为我一直在处理这样的问题。默认设置 net.inet.tcp.delayed_ack3 10.6,1.7& 1.8。将其设置为 0 解决问题。但 2 也应该工作。
JakeGould

2

我无法帮助解决问题,但我可以添加更多细节。它也发生在Windows 7上,当Windows共享进入休眠状态时,OS X设备仍必须连接。如果您断开连接或睡眠OS X,然后睡眠备用Windows,则不会遇到此问题。

我也非常想要解决这个问题。

编辑:经过一些搜索后,许多其他人也有类似的问题:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.