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

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

我以前在最近(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 实现存在根本性问题。

答案1

我的 MacBook Pro 也遇到了同样的问题。我按照以下说明操作 -http://blog.djmnet.org/2009/02/09/macs-needing-unix-network-geekery/我的问题似乎已经解决了。

答案2

嘿,我最近在 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

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

答案3

我无法帮助解决问题,但我可以补充一些细节。这种情况也发生在 Windows 7 上,当 Windows 共享处于睡眠状态时,OS X 设备仍必须保持连接。如果您断开连接或让 OS X 进入睡眠状态,然后让 Windows 待机,则不会遇到此问题。

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

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

相关内容