关键字: win2008 windows server2008 内核 微软
SMB 2.0
自从文件服务功能被引入到 Windows 中以来,服务器消息块 (SMB) 远程文件系统协议(也称为通用 Internet 文件系统 (CIFS))就已成为 Windows 文件服务的基础。在过去的几年中,SMB 的设计限制制约了 Windows 文件服务的性能和利用新的本地文件系统功能的能力。例如,单个消息能传输的最大缓冲区大小为约 60KB,并且 SMB 1.0 无法识别 Windows Vista 和 Windows Server 2008 中新增的 NTFS 客户端符号链接。
Windows Vista 和 Windows Server 2008 引入了 SMB 2.0,它是客户端和服务器都支持时 Windows 所使用的一种新型远程文件服务协议。除能正确处理客户端符号链接和其他 NTFS 增强功能外,SMB 2.0 还使用批处理来最小化客户端和服务器之间的信息交换数量。批处理可提高广域网 (WAN) 之类高延迟网络的吞吐量,因为它允许同时传输更多数据。
SMB 1.0 针对单个文件按顺序执行 I/O,而 SMB 2.0 则实现了 I/O 管道,从而可针对同一文件执行多个并发 I/O。它通过衡量客户端用于未完成 I/O 的服务器内存数量来决定管道的深度。
由于 Windows I/O 内存管理器和 I/O 系统以及 TCP/IP 接收窗口自动调节方面的变化和文件复制引擎的改进,SMB 2.0 显著提高了吞吐量并减少了大型传输的文件复制时间。由于两种操作系统都实现了 SMB 2.0,所以部署 Windows Server 2008 文件服务器和 Windows Vista 客户端即可使用 SMB 2.0 并实现这些性能优点。
使用 NTFS 自修复功能提高可靠性
可靠性是一个关键服务器属性,Windows Server 2008 提供各种改进来帮助管理员顺畅运行其服务器(包括在线 NTFS 一致性修复、新的硬件错误报告体系以及对驱动程序验证程序的扩展)。
由于现在使用的存储设备一般都以 TB 为单位,因此对某个卷进行脱机一致性检查可能会使服务中断数小时。鉴于许多磁盘损坏都局限于单个文件或部分元数据,Windows Server 2008 实现了新的 NTFS 自修复功能,即可在卷保持联机的情况下修复损坏。
当 NTFS 检测到损坏时,它将阻止访问受损的文件并创建一个系统工作线程,该线程将对受损数据结构执行类似 Chkdsk 的修复,完成后再允许访问修复后的文件。在此操作期间仍然可以正常访问其他文件,因而最小化服务中断。
WHEA 基础结构
Windows Server 2008 中包含有 Windows 硬件错误报告体系 (WHEA) 基础结构,它可以简化硬件故障管理并主动响应非致命错误。服务器通常都有严格的正常工作时间保证,因此及时确定并响应此类系统中的错误至关重要。
通过对利用在线崩溃分析 (OCA) 提交到 Microsoft 的崩溃进行分析表明:约 10% 的操作系统崩溃是源于硬件故障,但确定此类崩溃的根本原因却非常困难甚至于不可能,因为崩溃时所获取的硬件错误信息非常少。此外,在 Windows Server 2008 之前,Windows 并不内置支持监控设备的运行状况,也未实现故障前的修复或通知。其原因在于硬件设备并未使用一种通用的错误格式并且不支持错误管理软件。
WHEA 为各种平台设备(包括处理器、内存、缓存和类似 PCI 和 PCI Express 之类的总线)提供了统一的错误源发现和报告机制。其原理是实现图 2 中所示的体系结构,其中核心是错误源调用来报告错误的内核 API。此 API 要求所有错误都以同一方法进行格式化,然后使用 Windows 事件跟踪 (ETW) 事件来记录错误(严重错误则在重启后再记录)。

图 2 WHEA 错误报告基础结构
ETW 早在 Windows 2000 中就已引入,而当 ETW 使用 WHEA 后,硬件制造商和软件供应商就可轻松地开发利用 WHEA 事件的设备诊断管理应用程序。如果某事件已严重到足以导致系统崩溃,WHEA 会确保将该致命错误记录存储到崩溃转储文件中,这样管理员就可确定崩溃的根本原因。
WHEA 的另一关键部分是位于 %Systemroot%\System32\Pshed.dll 中的平台特定的硬件错误驱动程序 (PSHED)。内核与 PSHED 链接,而它与平台和固件硬件连接,实质上是用作错误通知和 WHEA 错误报告 API 之间的转换层。Microsoft 为每种平台体系结构(x86、x64、Itanium)提供有一种 PSHED 并且 PSHED 公开了插件模型,所以硬件供应商和制造商可使用特定于其平台的行为来覆盖默认行为。
最后,与其他错误源相连的系统组件 — 包括设备驱动程序、硬件抽象层 (HAL) 和内核 — 可实现底层硬件错误处理程序 (LLHEL)(它将首先处理错误状况)。LLHEL 的工作是从设备中提取错误信息,通知 PSHED 允许其收集其他平台错误信息,然后调用内核的 WHEA 错误报告 API。
驱动程序验证程序
从 Windows 2000 起,每个 Windows 副本中都包含有驱动程序验证程序,它是一个用于跟踪出错的设备驱动程序和故障硬件的强大工具。管理员通常将驱动程序验证程序(%Systemroot%\System32\Verifier.exe) 配置为密切监控可能导致系统崩溃的可疑设备驱动程序的行为。驱动程序验证程序可捕获非法驱动程序操作,这样崩溃转储文件就可以直接指出罪魁祸首。
之前驱动程序验证程序的缺陷在于大多数配置更改都需要重新启动系统,而生产服务器明显不愿出现这种情形。Windows Server 2008 中的驱动程序验证程序通过取消最有用验证的重启要求而改进了这一过程,因此可在不重新启动系统的情况下对出现问题的服务器进行故障排除。
此外,驱动程序验证程序还引入了三种新的验证(如图 3 所示)。安全检查确保设备驱动程序在用于与应用程序连接的对象上设置了安全权限。强制挂起 I/O 请求测试了驱动程序对于需立即完成而非一段延迟后再完成的异步 I/O 操作的恢复能力。杂项检查则确认驱动程序有无错误释放使用中的资源、错误使用 Windows 管理规范 (WMI) 注册 API 以及泄漏资源处理程序。

图 3 选中 Windows Server 2008 选项的驱动程序验证程序



