阻止 Windows 7 使用 SMB 查询淹没 LAN

阻止 Windows 7 使用 SMB 查询淹没 LAN

我的 Western Digital NAS(MyBook Live Duo 6 TB)有一个恼人的问题,它通过交换机连接到我的 LAN。网络中有四台 Windows 7 计算机,其中一台通过 WLAN 连接。

每一个每当有人打开 Windows 资源管理器时(无论是哪台机器,无论哪条路径),驱动器就会旋转起来,这不仅令人烦恼,而且我认为这会给驱动器带来很大的压力。

没有办法改变 NAS 的行为,所以我的问题是: 有没有办法可以防止 Windows“查询”驱动器(或所有 SMB 服务器),而不会完全破坏文件共享/网络访问?

(禁用路由器上的 DHCP 不是一个选项,因为它不支持有线和无线的单独 DHCP 设置。)

答案1

硬盘“旋转”是一种非常特殊的操作,具有以下特点和局限性:

  • 对于大多数台式机/消费级硬盘来说,完成旋转过程需要 3 到 5 秒。在旋转过程中,HDD 无法读取或写入任何数据。
  • 在旋转过程中,如果您非常靠近设备聆听,您会听到越来越高的音调。最后,您会听到硬盘滚珠轴承在磁盘“搜索”各个位置时(以满足开始旋转时排队的 I/O 请求)移动时发出的一阵轻微咔嗒声。
  • 消费级 HDD 的设计可承受数千次旋转/减速循环,一些质量较差的装置在旋转 1000-2000 次左右时就会失效,但许多 HDD 的设计可承受约 600,000 次旋转。经过这么多旋转循环后,该过程中涉及的机制开始出现故障,并最终失效。

在软件方面,配置良好系统通常会有三种围绕旋转向上/旋转向下的策略之一:

  • 为了极端节能(例如,在使用电池供电的笔记本电脑中),您可能期望的最短旋转停机时间约为 15 或 30 分钟不活动(在此期间,磁盘活动是无休止的。在现代 Windows 上,我们有许多程序一直在运行,并且几乎不停地进行 I/O,因此即使在“干净”的系统上,即使用户完全空闲,15 分钟内没有磁盘活动的可能性也几乎为零。实际上,这种配置如今并不常见。

  • 为了适度节能,台式机的典型停转时间可能约为 2 到 4 小时。这意味着,如果在 2 或 4 小时(或配置的任何时间)内没有对该硬盘进行读取或写入,则磁盘将停转,而下一个 I/O 请求将不得不使磁盘重新开始旋转。

  • 对于服务器,由于需要随时可用(响应没有任何延迟),通常会禁用因不活动而导致的停转。这适用于 NAS 以及 Web 服务器或任何其他类型的服务器。

如果你拥有的 WD NAS 开箱即用,其降速时间极短,那我会感到惊讶。然而,曾是Ubuntu Linux 中的一个错误多年前(2007 年),他们意外地将旋转停止的空闲时间设置为 0 秒。这意味着一旦磁盘停止处理 I/O 请求,旋转停止的“0 秒”计时器将立即到期,磁盘将旋转停止,磁头将停止。然后 I/O 请求将在内存中排队,而磁盘必须再次旋转以处理它们。

这种不断的旋转加速/减速正在毁掉人们的硬盘非常2007 年 Ubuntu 上出现了这个问题。没有注意到并纠正问题的人很快就会遇到正常工作的 HDD 在几天到几周内出现故障的情况(这些 HDD 要么在设计时没有考虑频繁的启动周期,要么在正常使用情况下不到 1 年就会出现故障)。

如果您的 NAS由于不断旋转,里面的磁盘会遭受某种机械磨损,这种磨损在 HDD 中并不常见(以这种频率),所以这对它们来说真的是一种折磨测试。您应该尝试在 NAS 上解决这种情况。

请尝试以下操作:

  • 查看 NAS 配置页面上的每个固件设置,并确保将所有电源管理设置更改为尽可能“宽松”(最小程度的省电/禁用)。
  • 将 NAS 的固件更新为制造商提供的最新版本。
  • 如果您愿意,请打开 NAS 机箱,找到里面硬盘的型号和序列号。然后在线输入这些数字,看看您是否可以找到硬盘本身的固件更新(如果您无法从 NAS 界面更新硬盘的固件,则可以通过将硬盘放入计算机直接从 Windows 应用固件更新)。
  • 如果磁盘可以进行 SMART 诊断,您应该使用 SMART 诊断程序进行检查,或者在 NAS 固件中查找此类信息,作为可能出现故障的迹象。
  • 如果以上方法都不能解决问题,则可能是 NAS 内部的 HDD 存在缺陷,或者 NAS 本身存在缺陷。如果 HDD 出现某些类型的内部错误,则它们可能会自行重置(关闭/打开电源),因此会降低转速,然后重新开始旋转。

现在,您怀疑 Windows 是问题所在吗?不是。NAS 的磁盘不应该在空闲几秒钟后就一直处于停止旋转状态。它们根本就不应该。就是这样。没有人会故意这样设计他们的 NAS(好吧,我不完全相信 WD 会这样做,但可能性不大)。

如果发生这种情况,Windows 7 完全没有责任,因为您的 Windows 计算机无法通过 SMB 协议控制 NAS 的 SATA 控制器的电源管理功能。只有 NAS 的操作系统才能做到这一点。

当您打开 Windows 资源管理器时,Windows 7 实际上会执行某些 SMB 操作,查询文件系统元数据以计算 NAS 共享空间上的总磁盘空间和可用磁盘空间。

对于在访问时处于旋转状态并“完全运行”的硬盘,计算总磁盘空间和可用磁盘空间应该只需不到一秒钟。该请求并不特别昂贵,而且无论如何都不算​​“泛滥”。

如果你真的相信 Windows 正在对 NAS 执行某种命令洪流,你应该通过安装来证明这一点Wireshark在您的一台 Windows 7 计算机上,使用 NAS 的 IP 目标对 SMB 协议运行数据包嗅探。如果仅通过打开 Windows 资源管理器就发送了超过 100 个请求,我会认为这是一次洪流,并且尤其如果在打开 Explorer 后,请求继续以非常高的速率发生超过 5-10 秒。否则这或多或少是正常的。

请记住,某些病毒扫描和备份产品不够智能,无法意识到映射的网络驱动器(例如 F: 或类似的东西)是共享驱动器,因此会尝试在整个驱动器(不仅仅是您有意从中访问的文件)。这些类型的错误大多是历史性的,但有时会在某些软件中出现。还有一些程序会忠实地执行用户的指令,例如,如果用户将程序配置为对共享驱动器每小时进行一次全面病毒扫描。一旦此过程开始,它确实会用 SMB 请求“淹没”NAS。

因此,您可能想排除发生此类情况的可能性,但我认为问题的根本原因是驱动器首先处于旋转停止状态。好的 NAS 不会让驱动器旋转停止,也不会让磁头停下,直到完全不活动至少 2 小时。如果您可以非常快速地打开/关闭 Windows 资源管理器并且每次都重现旋转,则 NAS 方面存在问题。

答案2

不断浏览网页后,我得到了以下“解决方案”,这对某些人来说可能会有点不舒服,但仍然保留网络访问:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\NonEnum]

"{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}"=dword:00000001

将上述双字设置为 1 会从 Windows 资源管理器中删除对网络环境的所有引用,这也会阻止我的 NAS 在有人打开 Windows 资源管理器实例时启动。缺点是,如果您想浏览可用的机器,您必须手动将网络环境的路径输入到 Windows 资源管理器路径文本框中。机器链接和其他一切仍然有效。

顺便说一下,这款 NAS 里面的硬盘是 WD RED

相关内容