Windows Server“8”– 将服务器应用程序存储转移到 Windows 文件共享

在开发 Windows Server“8”存储的过程中,每当想到客户即将能享用的功能以及这些功能背后出色的工程工作,我都会情不自禁地露出笑容。无论您是使用基于块的存储区域网络 (SAN) 还是使用基于文件的解决方案,我们都根据您的选择对两种存储类型投入了大量精力。在本篇博文中,我们将重点介绍我们对基于文件的存储的投入。我们的团队通力合作,对整个存储堆栈进行了彻头彻尾的创新。从我们刷新数据的方式,到存储空间,到复原文件系统 (ReFS),到服务器消息块 (SMB) 协议和群集共享卷 (CSV) 中的功能改进,再到对启用 SMI-S 的存储设备的支持,Windows Server“8”从根本上改变了我们对存储结构和解决方案的思考方式。归结为一句话:Windows Server“8”将存储的资本支出和运营支出降到了最低,在某些情况下,降低幅度十分明显。如果您正在使用存储,应该停下手中的工作,花一点时间来了解一下 Windows Server“8”存储,并重新思考以下今后的工作方式。

在本篇博文中,我们探讨了由 Windows Server“8”实现的一种新的应用场景:文件共享上的服务器应用程序存储。这起源于一个简单的问题:“为什么服务器应用程序不能利用我们的文件服务器?”经过项目经理、开发人员和测试人员的全力奋战,将问题一点一点解析,终于设计出一整套全面的功能,实现了这一应用场景。建议您下载 Beta 版亲自体验一下。

本博文由文件服务器团队的首席项目经理 Claus Joergensen 和 Jose Barreto 撰写。

--谨启!Jeffrey

背景知识

在最开始,Windows 文件服务器主要用于存储终端用户数据。典型的企业应用场景是用户在家中共享那些非共享的数据以及团队共享以进行协作。Windows Server“8”文件服务器引入了对能够在 Windows 文件共享上存储实时数据的服务器应用程序的支持,像 Hyper-V™ 和 Microsoft SQL Server。举个例子,用户可以使用存储在 Windows 文件共享上的配置文件、VHD 文件和快照文件来配置 Hyper-V 虚拟机。下面的屏幕截图显示了使用其存储在 Windows 文件共享上的 VHD 文件配置的虚拟机,及其通用命名约定 (UNC) 路径:

 

实现新的应用场景

在 Windows Server“8”规划过程中,我们的客户对能够在 Windows 文件共享上存储服务器应用程序数据的功能表现出了浓厚的兴趣。对于许多中小型企业客户而言,这是一种经济的可以替代 SAN 基础结构的方式,因为他们可以利用以太网基础结构并使用行业标准的服务器。而且,在创建文件共享时,由于不需要分配逻辑单元号或配置区域,客户能够更轻松地管理文件共享。除经济实用、更易于管理之外,存储服务器应用程序数据的功能还可以使大型客户和主机托管服务提供商获得更大的灵活性,可以在数据中心中转移工作负荷,而无需重新配置存储。如果数据存储在 UNC 路径中,只要使用正确的管理凭据,就可以从数据中心的任何位置访问该数据。

有了对这一新应用场景的支持,所有客户都多了一个存储选项,并可以根据自己的偏好、预算和所需功能从光纤通道、iSCSI SAN、共享 SAS 存储阵列或文件共享中进行选择。

启用文件共享上的服务器应用程序存储

要使服务器应用程序能够将实时数据存储在文件共享上,需要满足两个要求。首先,服务器角色或应用程序应支持该功能。这包括在应用程序的安装和管理工具中将其更新为支持 UNC 路径 (\\server\share\file.vhd),以及在此应用场景的使用情况中完全测试应用程序。Microsoft SQL Server 2008 R2 中提供了对在 SMB 文件共享中存储 SQL 用户数据库的支持。而Microsoft SQL Server 2012 则增加了对 SQL 系统数据库以及将 SQL Server 配置为群集的支持。正如 //BUILD 大会上展示的那样,Windows Server“8”还增加了对在 SMB 文件共享中存储虚拟机文件的支持。

其次,文件服务器自身应该支持服务器应用程序在文件共享上存储数据。在 Windows Server“8”客户规划互动活动中,我们明确了以下几项文件服务器要支持存储服务器应用程序所应满足的首要要求:

- 连续可用性 。服务器应用程序要求存储始终可用,并且一般情况下不处理输入/输出 (I/O) 错误或文件句柄的意外关闭。这些事件类型可能会导致虚拟机崩溃(因为虚拟机无法再写入到磁盘),或导致数据库脱机。客户通常会部署硬件冗余(例如多个网络适配器、网络交换机和 Windows 群集配置)来降低硬件停机造成的影响。尽管这种配置可以使文件服务器迅速从故障中恢复,但这种恢复对于应用程序而言并不是透明的,并且必须重新启动虚拟机并使数据库恢复联机状态。Windows Server“8”文件服务器解决方案必须能够快速并且透明地从网络或节点故障中恢复,避免停机或管理员干预。

- 性能 。一些服务器角色(例如 Hyper-V 和 SQL Server)对存储性能十分敏感,包括带宽、延迟和每秒 I/O (IOPS)。另外一点非常重要的是,应将访问存储时的 CPU 使用率保持在最低水平,以尽可能为应用程序提供更多的 CPU 时间。最后,服务器应用程序更倾向于使用与用户应用程序完全不同的访问模式。在用户应用程序通常会完整读取或写入文件的场合,服务器应用程序更倾向于附加或更新现有数据。Windows Server“8”文件服务器解决方案必须能够为服务器应用程序提供几乎相当于具有多个 10Gbps 以太网网络或 Infiniband 适配器的存储带宽,其延迟、IOPS 和 CPU 使用率应该可以与光纤通道相匹敌。

- 可扩展性 。Windows 文件服务器群集的配置通常部署在主动/被动配置中,这种配置会至少保留一个节点不使用。一种解决方法是在一个群集中配置多个文件服务器实例。这使您可以使用群集中的所有硬件。然而,这会增加管理工作,并且共享可用的带宽仍旧受其当前在线的节点上可用带宽的限制。Windows Server“8”文件服务器必须能够支持主动/主动配置,在这种配置中可以通过任何节点访问共享,从而将最大可用带宽提高到群集节点的总计带宽,并简化管理工作。

- 数据保护 。另外一项重要功能是为数据创建应用程序一致的卷影副本,以用于备份目的。在 Windows 中,这通常是使用卷影复制服务 (VSS) 基础结构实现的。当前形式的 VSS 仅支持本地存储。Windows“8”文件服务器解决方案必须能够通过与 VSS 完全集成支持应用程序一致的卷影副本,并将对现有 VSS 请求程序、写入程序和提供程序的影响降到最低。

很显然,这是一系列相当严格的要求。但我们知道必须解决所有这些问题,才能提供一个可靠、可用和可服务的文件服务器,从而为服务器应用程序存储提供最佳性能。

功能概述

在 Windows Server“8”中提供对文件共享上的服务器应用程序存储的支持是产品团队做出的一个重大决定。为此,专门引入了几项功能来确保文件存储能够满足或超过通常适用于块存储的要求,同时又不丢失文件存储素有的管理轻松和经济效益的优势。这还需要引入新版本的 Windows 主要远程文件协议 SMB。这些新功能包括:

SMB 透明故障转移 :使管理员能够在群集式文件服务器上执行节点的硬件或软件维护,而不妨碍服务器应用程序在这些文件共享上存储数据。此外,如果群集节点上发生硬件或软件故障,此功能可以使 SMB 客户端以透明的方式重新连接到其他群集节点,而不妨碍服务器应用程序在这些文件共享上存储数据。无论故障发生时正在执行的操作是何种类型,都可以实现此目的。对于基于块的存储,这等同于拥有多控制器的存储阵列。

SMB 多通道 :使您能够同时使用多个连接和网络接口,主要有两大好处: 提高吞吐量 和实现 容错功能 。例如,如果您的 SMB 客户端和服务器上各有 4 个 10GbE 接口,那么您可以同时使用这些接口来通过 4 个 10Gbps 网络适配器有效地达到 40Gbps 的吞吐量。如果其中一个网络适配器或线缆出现故障,您的 SMB 客户端将继续使用其他未中断的网络,只是吞吐量会有所下降。最重要的是,您无需任何额外配置步骤即可实现此效果。您只需要和平时一样配置多个网络接口即可。

SMB 直通 :光纤通道块存储的一大优点是能够进行低延迟、快速、轻负荷的数据传输。为了在文件服务器环境中实现该功能,SMB 引入了对具有 RDMA 功能的网络适配器的支持,还能在全速运转的同时实现低延迟、低 CPU 使用率。当使用三种 RDMA 技术之一(Infiniband、iWARP 或 RoCE)时,SMB 客户端的 CPU 消耗非常低,这与光纤通道形成鲜明对比,并能缩短 CPU 周期以供服务器上的主要工作负荷(例如 Hyper-V 或 SQL Server)使用。最棒的是,无需额外的 SMB 配置步骤即可检测到并运行这些网络接口。如果存在 RDMA 接口,则将自动使用这些接口。

SMB 横向扩展 :借助群集共享卷 (CSV) 版本 2,管理员可以创建能够通过文件服务器群集中的所有节点以直接 I/O 方式同时访问数据文件的文件共享。这意味着,特定共享的最大文件服务容量不再受单个群集节点的容量限制,而是可以达到整个群集的总计带宽。此外,主动/主动配置使您可以通过移动文件服务器客户端来平衡群集节点间的负载,而不会出现任何服务中断。最后,SMB 横向扩展简化了群集文件服务器和文件共享的管理。

面向 SMB 文件共享的 VSS:为服务器应用程序数据创建应用程序一致的快照的功能对于数据备份而言至关重要。在 Windows 中,这是使用卷影复制服务 (VSS) 基础结构实现的。面向 SMB 文件共享的 VSS 扩展了 VSS 的基础结构,从而可面向存储于远程 SMB 文件共享中的数据制作应用程序一致的卷影副本,实现备份和恢复的目的。此外,面向 SMB 文件共享的 VSS 可启用备份应用程序,以直接从卷影副本文件中读取备份数据,而无需在数据传输过程中涉及服务器应用程序计算机。由于这一功能利用了现有 VSS 基础结构,因此用户可轻松完成与现有 VSS 感知备份软件和 VSS 感知应用程序(如 Hyper-V)的集成。

特定于 SMB 的 Windows PowerShell cmdlet: 现在,管理文件共享时使用的是新的支持文件服务器群集的 Windows 服务器管理器 GUI(其中包括一些用于创建 SMB 共享的配置文件),或使用全新的 SMB Windows PowerShell cmdlet,这些 cmdlet 使用熟悉的 Windows PowerShell 基础结构来运行命令行和脚本。这一整套新的 Windows PowerShell 版本 3 cmdlet 专门用于管理文件共享、文件共享权限、客户端映射、服务器配置和客户端配置。还有一套丰富的 cmdlet 用于监控会话、打开文件、连接、网络接口和多通道连接。这些 cmdlet 是使用 WMIv2 类创建在基于标准的管理协议基础上,使开发人员可以在 Windows 和 Linux 上创建自动解决方案,以用于文件服务器配置和监控。

SMB 性能计数器 :在应用程序服务器世界中,存储性能和测量性能的能力都至关重要。在此前提下,Windows Server“8”引入了服务器和客户端性能计数器,使管理员可以轻松地查看文件存储的关键指标,包括 IOPS、延迟、队列深度和吞吐量。这些计数器与您所熟悉的块存储性能计数器类似,使您可以轻松利用现有的 Windows Server 的存储性能相关的技能和规则。

性能 :性能也是 SMB 中需要重点关注的一个方面。除了实现默认启用大型最大传输单元 (large MTU) 之外,还需要执行大量工作来优化不同类型工作负荷的性能,这些工作负荷 I/O 有小有大,还会同时涉及顺序访问和随机访问。这些优化是在研究典型的端到端工作负荷过程中开发出来的,例如在线事务处理、数据仓库、私有云中的虚拟 Web 服务器、虚拟桌面基础结构和综合主文件夹。正是这些研究带来了操作系统许多方面的特定改进。

我们来深入探讨一下 SMB 透明故障转移。SMB 透明故障转移要求:

  • 运行 Windows Server“8”的故障转移群集,具备至少两个群集节点,并配置有文件服务器角色。该群集必须通过“验证配置向导”中的群集验证测试。
  • 使用连续可用性属性创建的文件共享,该属性是群集文件共享的默认设置。
  • 访问群集文件共享的计算机必须运行 Windows“8”Consumer Preview 或 Windows Server“8”。

当 SMB 客户端初次连接到文件共享时,客户端将确定该文件共享是否设置了连续可用性属性。如果已经设置,则表示该文件共享是一个群集文件共享,支持 SMB 透明故障转移。当 SMB 客户端随后代表应用程序在文件共享上打开一个文件时,它会请求一个永久文件句柄。当 SMB 服务器收到使用永久句柄打开文件的请求时,SMB 服务器将与恢复密钥筛选器进行互动,以将该文件句柄相关的充分信息以及一个由 SMB 客户端提供的唯一密钥(恢复密钥)留存在稳定存储中。SMB 客户端在发生故障转移后的恢复操作中会使用该恢复密钥来引用句柄。为避免将数据写入不稳定的高速缓存所导致的数据丢失,在完全写入状态下将始终打开永久文件句柄。

如果 SMB 客户端所连接到的文件服务器群集节点上发生故障,SMB 客户端会尝试重新连接到其他文件服务器群集节点。一旦 SMB 客户端成功重新连接到群集中的另一个节点,SMB 客户端将开始使用恢复密钥执行恢复操作。当 SMB 服务器收到恢复密钥时,它将与恢复密钥筛选器进行互动,以将句柄恢复到发生故障前的状态,并提供对可重复操作以及不可重复操作的端到端支持(SMB 客户端、SMB 服务器和恢复密钥筛选器)。SMB 客户端计算机上运行的应用程序在此操作期间未遇到任何故障或错误。从应用程序的角度看,似乎是 I/O 操作出现了短暂的中断。

非常重要的一点是,在故障转移期间应将 I/O 中断次数降到最低。由于 SMB 是在 TCP/IP 的基础上运行,SMB 客户端通常会依赖 TCP 超时来确定文件服务器群集节点是否发生了故障。但是,依赖 TCP 超时会导致相当长时间的 I/O 中断,因为每次超时通常都需要大约 20 秒。SMB 见证服务创建用于从计划外故障中快速恢复,使 SMB 客户端不必等待 TCP 超时。SMB 见证是随故障转移群集功能自动安装的一项新服务。当 SMB 客户端初次连接到某个文件服务器群集节点时,SMB 客户端会通知运行在同一计算机上的 SMB 见证客户端。SMB 见证客户端会从运行在文件服务器群集节点上的 SMB 见证服务获取群集成员列表。SMB 见证客户端选出一个不同的群集成员,并向该群集成员上的 SMB 见证服务发布一个注册请求。

如果该文件服务器群集节点上发生计划外的故障,另一个群集成员上的 SMB 见证服务会收到群集服务的通知。SMB 见证服务也会通知 SMB 见证客户端,后者又会通知 SMB 客户端该文件服务器群集节点已发生故障。收到 SMB 见证通知后,SMB 客户端会立即开始重新连接到其他文件服务器群集节点,这将显著提高从计划外故障恢复的速度。

部署模式

在规划 Windows Server“8”时,从端到端的角度来看,服务器应用程序的文件存储中需要重点关注的两大方面是基于 SMB 的 Hyper-V 和基于 SMB 的 SQL Server。

例如,如果使用 Hyper-V,则 Hyper-V 的单独配置和群集配置现在都完全支持 SMB 文件存储。事实上,现在完全可以仅使用文件共享作为共享存储来配置 Hyper-V 群集。

对于文件服务器配置,有三种主要的部署模式:

尽管单节点文件服务器或单独的文件服务器不具有高可用性,但它能够提供最经济的文件服务器解决方案。Hyper-V 提供额外的共享存储灵活性,使您能够使用此解决方案来群集 Hyper-V 节点(尽管整体解决方案算不上高度可用)。与块存储相比时,这相当于一个单控制器块存储阵列。

双节点文件服务器有望成为最常用的文件服务器配置,它能够以很低的成本提供连续可用性(通过 SMB 透明故障转移)。通过使用共享的串行连接的 SCSI (SAS) 存储(简单磁盘捆绑 [JBOD] 或基于 SAS 的存储阵列),这一解决方案可以扩展到数百个磁盘。通过与少数 Hyper-V 服务器和网络交换机配对,这一解决方案可以用于为私有云解决方案创建机架大小的构建块。这相当于一个双控制器块存储阵列。

第三种选项中,大量文件服务器使用光纤通道作为共享存储,因而允许进行更大型的配置。此文件服务器群集可以利用 SMB 横向扩展和 SMB 直通等功能来创建共享存储基础结构,从而服务数十个甚至数百个 Hyper-V 节点。如果使用 10GbE 或 InfiniBand 将 Hyper-V 计算机节点连接到文件服务器,限制到文件服务器节点的光纤通道连接能大大节省成本。

总结

对于出现的在文件服务器上存储服务器应用程序数据的新机遇,我们感到激动万分。事实上,我们从最早的一批用户那里收到了非常积极的反馈,在这些同意部署上述应用场景和功能的用户中,既有来自内部的用户也有外部用户。他们分享了我们对于为解决方案提供易用性、可管理性、可扩展性和高性能的满腔热忱。

如果您想要了解更多详情,可以参阅我们在 2011 年 9 月 //Build/ 大会期间发布的一系列演示文稿。这些演示文稿可从此处获取,此外还录制了长达几个小时的视频来提供更多详细信息。我们希望您能观看这些视频。下面是与本博文相关的 Windows Server“8”主要课程列表:

希望您能抱着和我们整理列表时一样的愉快心情观看这些视频…

本博文由 Windows 文件服务器团队的首席项目经理 Claus Joergensen 和 Jose Barreto 撰写。