题外话:Microsoft Hyper-V Server 2012开启虚拟化从4月份开始写,由于期间将其整理为书籍,预计在10月份左右出版,所以在5月8号之后就没有更新,所以在这里补全剩下的内容。由于Windows Server 2012 R2,citrix XenDesktop 7 和VMware vsphere 5.5相继发布,所以我会尽量赶上进度,能力有限,只能尽心尽力。
——————————————————————————————————————————
一、SMB 3.0简介
服务器消息块 (SMB) 协议是网络文件共享协议,其让计算机上的应用程序可读取和写入文件,以及从计算机网络的服务器程序中请求服务。SMB 协议可在其 TCP/IP 协议或其他网络协议上使用。使用SMB协议时,应用程序(或应用程序用户)可访问远程服务器上的文件或其他资源。这让应用程序可以读取、创建和更新远程服务器上的文件。它还可以与任何设置为接收SMB客户端请求的服务器的程序通信。Windows Server 2012 引入了全新3.0版的SMB协议。Windows Server 2012通过更新的SMB协议 (SMB 3.0) 提供了很多新SMB功能,大大提高了文件服务器的可靠性、可用性、可管理性和其它性能。
SMB3.0部分新功能或更新功能
特性/功能 | 新功能或更新功能 | 摘要 |
SMB 透明故障转移 | 新功能 | 让管理员可执行群集文件服务器中节点的硬件或软件维护,且不会中断将数据存储在这些文件共享上的服务器应用程序。此外,如果群集节点出现硬件或软件故障,SMB 客户端将以透明方式重新连接到其他群集节点,且不会中断将数据存储在这些文件共享上的服务器应用程序 |
SMB 横向扩展 | 新功能 | 使用群集共享卷 (CSV) 版本 2 时,管理员可以通过文件服务器群集中的所有节点,创建可供同时访问含直接 I/O 的数据文件的文件共享。这可更好地利用文件服务器客户端的网络带宽和负载平衡,以及优化服务器应用程序的性能 |
SMB 多通道 | 新功能 | 如果在 SMB 3.0 客户端和 SMB 3.0 服务器之间提供多条路径,则支持网络带宽和网络容错的聚合。这让服务器应用程序可以充分利用可用网络带宽并在发生网络故障时恢复 |
SMB 直接 | 新功能 | 支持使用具有 RDMA功能且可全速运行的网络适配器,其中延迟非常低且CPU非常少。对于 Hyper-V 或 Microsoft SQL Server 等工作负载,这让远程文件服务器如同本地存储一样 |
用于服务器应用程序的性能计数器 | 新功能 | 全新 SMB 性能计数器提供有关吞吐量、延迟和 I/O/秒 (IOPS) 的、按共享列出的详细信息,从而让管理员可以分析用于存储数据的 SMB 3.0 文件共享的性能。这些计数器专为将文件存储在远程文件共享上的服务器应用程序而设计,如 Hyper-V 和 SQL Server |
性能优化 | 更新功能 | SMB 3.0 客户端和 SMB 3.0 服务器均已针对小型随机读/写的I/O 提供了优化,这种 I/O 在 SQL Server OLTP 等服务器应用程序中很常见。此外,默认情况下打开大型最大传输单元 (MTU),这将大幅提高大型连续传输性能,如 SQL Server 数据仓库、数据库备份或还原、部署或复制虚拟硬盘 |
SMB-专用 Windows PowerShell cmdlet | 新功能 | 借助用于 SMB 的 Windows PowerShell cmdlet,管理员可以从命令行以端对端的方式管理文件服务器上的文件共享 |
SMB 加密 | 新功能 | 提供 SMB 数据的端对端加密并防止数据在未受信任网络中遭受窃听。无需新部署成本,且无需 Internet 协议安全性 (IPsec)、专用硬件或 WAN 加速器。它可按共享配置,也可针对整个文件服务器配置,并且可针对数据遍历未受信任网络的各种方案启用 |
下面我们具体介绍SMB的一些重要新功能。
1.SMB连续可用性
连续可用性是指连续可用软件和硬件平台,指在支持不会造成任何数据损失的透明故障转移。而透明的故障转移是指进行计划内移动或处理计划外故障的能力,它不会出错,也不会丢失数据,而且在任何规模上都能很好地执行。SMB连续可用性主要是提供对SQL Server 数据库或 Hyper-V应用程序的很好的支持。通过SMB连续可用性可以在执行存储的维护时不停止存储的服务,而且能应对计划外的故障,从而使SQL Server 或 Hyper-V 等应用程序能连续运行,而不管存储层是否出现故障。
2. SMB透明故障转移
SMB 透明故障转移可以让群集配置中的文件服务器以这样的方式进行故障转移:没有停机,且在故障转移期间只有很小的 I/O 延迟。故障转移对于将群集用作文件存储的应用程序(例如,SQL Server 或 Hyper-V)而言是完全透明的。
SMB 透明故障转移支持各种情况,包括计划内移动、负载平衡、操作系统重新启动、计划外故障和用于扩展群集的客户端重定向。SMB 透明故障转移支持文件级别和目录级别的操作。例如,访问 SMB 文件服务器群集的计算机(运行 SQL Server)在正常操作中会打开很多文件,这需要能以透明方式进行故障转移。目录操作也必须能以透明方式进行故障转移。例如,在虚拟机存储为文件服务器群集的Hyper-V环境中,当部署新VM时,Hyper-V将在每个群集节点上创建文件夹结构。这些文件夹创建操作需要以透明方式进行,以便可以部署VM,即使在计划外故障转移中也应如此。要支持 SMB 透明故障转移,文件服务器群集必须为Windows Server 2012 群集。SQL Server 或 Hyper-V 之类的应用程序也必须运行在 Windows Server 2012 服务器上。SMB 透明故障转移工作原理示意图如图所示。
完成透明故障转移涉及很多组件,用以确保文件句柄和SMB连接在两个服务器之间的实际移动对于应用程序而言完全透明。这些组件中的一部分是SMB 3.0中新增的组件。
3. 性能优化与DAS等效
性能对于运行SQL Server或Hyper-V的组织特别重要。当前很多组织在直接连接存储 (DAS)、Internet小型计算机系统接口 (iSCSI) 或光纤通道存储区域网络 (SAN) 上运行 SQL Server或Hyper-V来帮助最大化 I/O 性能。SMB 3.0 的一个性能目标是在以太网上拥有1Gbps的文件访问速度,从而能匹配DAS的性能。Microsoft已展开自上而下的性能分析和调节,包括SMB服务器优化、添加新跟踪设备来帮助识别瓶颈和实质性重构 SMB 2 客户端。Windows Server 2012中的 SMB 3.0在以下条件下可以发挥大约98%的DAS提供的事务性能。SMB 3.0可以让管理员利用基于文件的远程存储的灵活性。存储可以轻松移动,因为它对于应用程序服务器来说属于远程存储,而应用程序服务器可以位于不同的物理机器上来充分利用其性能优势。性能优化与DAS等效示意如图所示。
4. SMB 多通道
SMB多通道为每个可用SMB会话使用多个TCP连接。例如,如果服务器配置在运行 SQL Server和后端文件存储的计算机之间具有多个1 G网络接口卡 (NIC),则SMB多通道将自动聚合可用的带宽。SMB多通道支持透明故障转移,如果有可用的其他连接,它将从网络故障进行恢复。这提供了一个恢复能力很强的网络环境,可以支持SQL Server和 Hyper-V,以及其他关键应用程序的业务。除了自动在多个 NIC 之间聚合带宽外,SMB多通道通过为网络处理使用多个CPU和支持接收方缩放 (RSS)的多个NIC提高了吞吐量。SMB多通道配置自动进行,SMB 3.0自动检测和使用多网络路径。SMB 多通道工作示意图如图所示。
5. SMB Direct
诸如SQL Server和Hyper-V之类的应用程序可能对CPU和内存资源有很高的需求。 SMB 3.0有助于最大化SQL Server或Hyper-V服务器的性能,通过将处理器的任务转移到网卡来减少I/O处理的CPU使用率。
SMB Direct使用远程直接内存访问 (RDMA)支持在两个计算机之间移动数据,而不需要使用TCP/IP堆栈。这允许高吞吐量、低延迟网络,但需要依赖具有RDMA功能的NIC (R-NIC)。
通过SMB多通道,SMB Direct可以自动发现和使用R-NIC。SMB Direct可以与SMB 多通道配合使用,聚合多个R-NIC,并使用SMB多通道来进行负载平衡和故障转移。SMB Direct的工作示意如图所示。
SMB Direct具有SMB文件存储的传统优势:易于配置、管理和迁移,它不要求应用程序更改或管理配置。
二、创建SMB文件共享
无论是建立SMB共享还是NFS共享,都必须先添加Windows文件服务器,而创建SMB共享或者是NFS共享,其步骤大致相同。在了解了SMB共享后,接下来我们在一台Windows Server 2012中添加文件服务器并创建SMB共享。
步骤1 在服务器管理器中,选择服务器角色,在添加所选服务器的角色功能时选择文件服务器,同时也可以添加文件服务器资源管理器。
步骤2 按照添加角色的安装向导,完成文件服务器的安装,文件服务器安装完成后不需要重新启动服务器,安装完成后单击“关闭”完成安装向导。
步骤3 成功安装后,在Windows Server 2012服务器上的服务器管理器中打开文件服务器,在“共享”选项中,可以看到服务器上的所有共享。由于我们是新添加共享角色,所以这里没有任何共享。首先我们要建立一个共享,单击“若要创建文件共享,启动新加共享向导”链接。
步骤4 在新加共享向导中,我可以选择文件配置文件的共享方式,主要是SMB共享和NFS共享。但是在这两种共享里,又分快速和高级, SMB还有应用程序形式。快速部署是只分配磁盘位置和权限,并设置共享名称和属性。而高级设置里还包括了磁盘的配额等功能,而应用程序则是建立的SMB共享为Hyper-V或者是SQL Server服务。非常规文件存储。这里我们选择“SMB共享-高级设置。
步骤5 选择服务器和共享的路径,和建立iSCSI相同,会在建立共享时,系统默认建立路径为\Shares的目录,Windows Server 2012之前的版本不会添加此目录,这里选择存放共享文件夹的位置,选择好以后单击“下一步”按钮。
步骤6 设置共享的名称和描述。我们在“共享名称”对话框中输入要设置的共享名称,这里笔者输入的是“FS”,然后在“共享描述”文本框中添加相应的文字说明。选择这里的路径,在这里我们可以把默认建立的\Shares目录删除,并设置要共享的远程路径。
步骤7 配置共享存储的设置。可以启用基于存取的枚举。基于存取的枚举就是显示用户有权访问的文件和文件夹,其他没有权限访问的文件夹则是隐藏的。可以设置允许共享缓存,如果开启共享缓存,就可以让脱机用户访问共享的内容。如果安装了BranchCache,可以在缓存中开启BranchCache功能,最后就是开启加密的数据访问,顾名思义,开启这个访问就是为了在数据访问的时候,确保传输数据的保密性。
步骤8 在控制访问权限设置中,设置本机用户或者域中的用户和用户组,并授予相应的权限。单击“自定义权限”按钮,会弹出“FS高级安全设置”对话框。
步骤9 在共享高级设置中,可以设置用户访问权限,及共享、审核、有效的访问,这里可以添加用户并设置访问权限,设置完成后单击“应用”按钮。在该界面中单击“下一步”按钮。
步骤10 设置文件夹管理属性,指定文件夹的用途以及文件夹中存储的文件类型,这有利于文件服务器对数据管理的策略。
步骤11 设置文件夹或卷的磁盘配额。如果是快速设置,则不会有磁盘配额,这里可以选择windows系统默认的模版配置,在设置完成后,还可以更改模版配置。选择基于模版应用配额,单击“下一步”按钮。
步骤12 在“确认选择”界面中,查看设置信息,确认无误后单击“创建”按钮。
步骤13 创建过程非常快,创建完成后,可以单击“关闭”按钮,完成新建SMB共享。
步骤14 在服务器管理器共享中,可以看到我们设置的共享文件夹,这时候就可以通过地址\\Mabf-win2012\fs进行访问,在实际部署时,为了提高SMB文件服务器的效率,在网络上可以结合NIC Teaming以提高访问带宽,可以使用删除重复资料角色来节省存储空间。
三、配置文件服务器群集
单台文件服务器存在单点故障,使用SMB无缝故障转移技术,可供管理员对文件服务器群集的节点执行硬件或软件维护任务,不会中断在文件共享中存储数据的服务器应用程序的正常运行。如果群集节点遇到硬件或软件故障,SMB 客户端可以不中断地重新连接到其他群集节点,不会对在这些共享中存储了数据的服务器应用程序造成中断。SMB 无缝故障转移支持计划内故障转移(例如维护操作)以及计划外故障转移(例如停电)。
实施该功能要求使用故障转移群集,运行应用程序和文件服务器角色的服务器都需要使用 Windows Server 2012 操作系统,并且文件服务器上的文件共享必须具备持续可用性。
下面我们就来在设置好的故障转移群集中建立SMB共享。
步骤1 在故障转移群集中,角色配置里,添加角色,在“选择角色”界面中选择文件服务器所示。
步骤2 选择创建文件服务器的类型,文件服务器的类型分为常规使用的文件服务器和应用程序数据的横向扩展文件服务器。常规使用的文件服务器是指可以在网络上提供一个中心位置,以使用户在此处共享文件以及由经常打开和关闭文件的应用程序使用。此项支持服务器消息块(SMB)和网络文件系统(NFS)协议。文件服务器的常规使用支持数据删除重复、文件服务器资源管理器、DFS复制以及其他文件服务。
应用程序数据的横向扩张文件服务器可以为服务器应用程序或者虚拟机提供存储以将保持文件长时间打开。可以横向扩展文件服务器客户端连接,以获得更好的带宽。横向扩张文件服务器只支持SMB协议,不支持数据删除重复、DFS复制或者文件服务器资源管理器。
由于我们要为Hyper-V建立高可用文件服务器,所以这里选择应用程序数据的横向扩张文件服务器。
步骤3 在客户端访问点界面中,输入访问此群集角色时客户端将使用的名称。
步骤4 在确认界面中,查看配置信息并确定添加设置,单击“下一步”按钮,直到完成高可用性的配置。
步骤5 在故障转移群集管理器中,我们就可以看见建立好的横向文件共享服务器,所建的文件共享服务器所处在mabofeng02节点服务器上。
步骤6 当完成建立群集文件服务器后,就在群集的横向文件扩展服务器上添加共享存储了,右击,在弹出的快捷菜单中选择“添加文件共享”命令。
步骤7 此时,我们就可以为群集设置SMB共享,由于我们建立的是横向文件扩展服务器,不支持NFS协议,所以这里只能选择SMB协议。而且建立的文件群集服务器是用于Hyper-V,所以这里选择“SMB共享-应用程序”,单击“下一步”按钮。
步骤8 在共享位置中,选择群集共享磁盘卷,在建立共享时,系统默认建立路径为\Shares的目录,Windows Server 2012之前的版本不会添加此目录,单击“下一步”,。
步骤9 设置共享的名称和描述,选择这里的路径,在这里,我们可以把默认建立的\Shares目录删除,并设置要共享的远程路径。
步骤10 之前在单台Windows Server 2012上配置SMB服务器已近介绍了启用基于存取的枚举、允许共享缓存和加密数据访问,而在群集中,多了一个启用连续可用性,启用连续可用性是指群集监控高度可用的文件共享上的文件操作,可以将客户端毫无中断的故障转移到该群集的其他节点。
步骤11 在控制访问权限设置中,设置本机用户或者域中的用户和用户组,并授予相应的权限。可以单击自定义权限。在共享高级设置中,可以设置用户访问权限,共享、审核和有效的访问,这里可以添加用户并设置访问权限,之后单击“下一步”按钮。
步骤12 确认后查看创建结果,我们会发现已经成功创建了SMB共享。此时,我们就可以通过网络共享的方式连接到群集的共享目录。此时的文件服务器已经处于高可用性群集中。
步骤13 为了验证群集中的横向扩展文件服务器的高可用性,我们这里做一个简单的测试,看是否在切换节点时,服务会出现中断。之前在设置中我们已经启用了连续可用性,应该保证是毫无中断的保证迁移节点,我们通过ping命令来进行检测。
步骤14 通过Ping命令我们发现,没有出现任何的中断。连接在网络群集共享上的虚拟机还是正常的在运作,由此可以看出windows Server 2012中SMB3.0提供了更为可靠的技术。
四、Hyper-V over SMB设计
Hyper-V over SMB设计应该从3个方面来设计,文件服务器SMB的设计、网络的设计和Hyper-V主机的设计。从这3个方面来看,每一种都非常重要,既要确保整体的环境运营正常,又要确保系统稳定运行。为确保业务的连续性,不造成服务中断,其中的某一项或者是某一环节都不可以出现问题,要有很好的机制去保护它们,这是Hyper-V over SMB设计中都要考虑到的问题。
1. 文件服务器节点
如果采用单节点文件服务器,风险是最大的,当这一台出现问题后,可能会造成整个的虚拟化环境完全宕机,完全终止了业务。如果是硬件造成损害,那么恢复起来是相当的困难的,而且可能会造成数据的丢失。但节点的文件服务器不能提供连续保护的共享方式,对于生产环境,不建议使用单点文件服务器。
如果采用双节点文件服务器,在可靠性上更上一层楼,将两个节点组成一个文件服务器群集,就可以实现连续保护的共享方式,并且在投资方面也是比较低的。但是这种双节点的文件服务器具有有限的扩展能力,最多可提供几百块磁盘,所以不适合中型或者大型的数据中心建设。一般企业都采用的是双节点文件服务器方案。
多节点的文件服务器方案可以支持更多磁盘的扩展,由于是多个文件服务器作为群集服务,可增加访问文件服务器的效率,同时可以应对灾难性的事故。但是多台文件服务器可能会造成硬件上的浪费,相对双节点的成本也是成倍的增加。但是比起专业的存储,其价格还是相当的便宜。
2.网络设计
在目前的大部分企业中,比较常见的就是千兆网络和服务器自带的千兆网口,如果在 SMB 3.0 客户端和 SMB 3.0 服务器之间提供多条路径,则支持网络带宽和网络容错的聚合。这让服务器应用程序可以充分利用可用网络带宽并在发生网络故障时恢复。如果SMB客户端或者服务器拥有两块以上网卡,SMB多通道技术可以自动侦测使用多种网络路径,可以合并使用所有网卡带宽,SMB多通道技术可以结合多核处理器的RSS(RSS可以将IO请求均衡分发到不同处理器核心)技术。SMB多通道可以利用操作系统现有网卡绑定技术,但是不依赖。如果一块网卡出现故障,SMB多通道可以自动进行故障切换。SMB3.0以前客户端无法使用SMB多通道技术。
3.Hyper-V主机设置
当我们已经使用了SMB文件服务器的群集,提供高可用的SMB共享服务,那么在Hyper-V主机中,也要保证业务的连续性,将多台Hyper-V主机组建成群集,实现高可用性,如果Hyper-V采用独立服务器,VHD文件使用共享storage,那么Hyper-V的虚拟机不具有高可用性。当环境中只有1台主机时,则不适合生产环境中使用,可以用来做测试环境。如果Hyper-V主机采用群集的模式,并且文件服务器也采用群集的模式,这样无论是Hyper-v主机还是文件服务器,都可以实现高可用性,并且迁移共享存储具有灵活性,文件共享的权限相对简单,具有低购置及运营成本,可以实现存储容错。
五、部署基于SMB的Hyper-V
通过非常灵活的方式来提供和管理存储,虚拟化的SMB文件存储可以帮助组织以节省成本的方式最大化其Hyper-V环境的可靠性、可用性和性能。Hyper-V over SMB可以通过SMB 3.0协议在共享中存储Hyper-V文件;可以在SMB 3.0共享上存储VM配置文件、虚拟硬盘 (VHD)文件,甚至快照;可以存储独立和群集服务器的文件。其结构如图所示。在群集环境中,文件存储用作群集共享存储。Hyper-V over SMB增加了灵活性,简化了设置、管理和迁移。Hyper-V over SMB可以利用汇集网络,减少了资本支出 (CapEx) 和操作费(OpEx)。
实施 Hyper-V over SMB 3.0 除了需要一个域的环境外,同时还需要在一个或者多个计算机上安装Hyper-V 角色且运行 Windows Server 2012;对于文件存储的要求是一个或者多个计算机安装装文件服务角色且运行 Windows Server 2012。文件服务器必须安装 Windows Server 2012,以便能使用新 SMB 3.0 协议。可以使用来自其他供应商(而非 Microsoft)的服务器来实施SMB 3.0协议,如EMC,NetApp等。Hyper-V 不会阻止旧版本的 SMB;但是 Hyper-V 最佳实践分析程序会在检测到旧版本的SMB后发出一条警报。配置Hyper-V环境使用SMB 3.0文件共享的过程类似于配置简单的文件共享,必须创建和共享文件夹,并应用合适的权限。要配置虚拟化的文件存储,Hyper-V管理员账户要对NTFS文件夹和SMB共享具有完全权限。如果Hyper-V位于群集中,则Hyper-V管理员账户应为Hyper-V群集账户。
Hyper-V必须配置VM才能使用 SMB 共享。可以通过使用图形管理工具或使用命令行来完成该任务。在Hyper-V管理器中,可以进行VM设置。只需要选择要连接VHD(存储在共享上)的硬盘通道,然后指定该位置为UNC路径就可以完成VM设置。另外,也可以使用 Windows PowerShell 3.0 cmdlet 来创建和配置新VHD和VM。应该再次指定VHD或 VM的位置作为UNC路径,如图5-94所。
在创建虚拟硬盘的时候,可以指定虚拟机硬盘存储的位置,可以设置为SMB 共享。
如果使用Powershell配置,则过程的第一步是在目标文件服务器或群集上创建文件夹。例如,可以从命令提示中创建名为VMS的文件夹,使用的命令如下:
MD F:\VMS
接下来共享该文件夹并应用共享权限。以下命令示例是使用上一步创建的 VMS 文件夹:
New-SmbShare -Name VMS -Path F:\VMS -FullAccess Dom\HAdmin, Dom\HV1$, Dom\HV2$, Dom\HVC$
最后,必须应用 NTFS 权限。可以通过检索共享权限并将其用作 NTFS 文件夹权限来完成。 以下命令示例使用VMS共享:
(Get-SmbShare –Name VMS).PresetPathAcl | Set-Acl
本文转自 mabofeng 51CTO博客,原文链接:http://blog.51cto.com/mabofeng/1294287 ,如需转载请自行联系原作者