到目前为止,我们通过前面一系列文章,已相当深入地介绍了Hyper-V在可扩展性方面的改进、NUMA、虚拟机监控和复制等特性。现在不妨把注意力转到一个热门话题,看看Hyper-V在存储方面有什么改进:将虚拟机存储在文件共享区上、集群共享卷(CSV)方面的改进、访客光纤通道、DirectDMA和卸载数据传输,另外还有新的VHDX格式。
不妨先从文件共享说起;如果我非要从Windows Server 2012中选择一项迎来最大飞跃发展的根本性技术,那就是SMB 3.0。这项出色的文件共享技术自Windows问世以来就存在了,但是Server 2012(和Windows 8)里面的文件共享技术较之前几代技术大不一样。它的性能可以达到直接连接存储(DAS)的97%至98%,并且针对在普通的文件共享区托管运行应用服务器的应用程序工作负载(如SQL Server 2012和Hyper-V虚拟机磁盘)进行了优化,从而提供了前所未有的灵活性。
图1:如果你打算将虚拟机存储在文件共享区上,就要确保你创建了合适类型的文件共享区。
将VHD(X)文件存储在SMB 3.0文件共享区上的虚拟机可以在Hyper-V主机之间进行实时迁移,但是别扔掉你的集群架构——这项特性并不意味着它就能提供高可用性。要是某个Hyper-V主机出现了故障,其他主机不会接到通知(因为它们不在同一个集群中),因而虚拟机也就不会自动重启。
虽然微软概述了融合集群的设计:在这种集群中,一些节点是存储节点,为Hyper-V主机节点提供了共享式存储,但是要注意的是,一个主机既是文件共享区主机,同时又是Hyper-V主机,这并未得到支持。如果Hyper-V主机与其存储系统的联系临时受到了中断,Hyper-V在两端都会缓存输入/输出流量,缓存时间长达1分钟。SMB 3.0多通道技术会充分利用主机与文件共享区之间所有可用的网络路径,不需要任何额外的配置(只有你需要聚合其他协议时,才需要我在前面介绍的网卡聚合这种配置),为防范不小心断开的网线提供了保护。
如果你考虑使用存储区域网(SAN)作为SMB 3.0文件共享区的后端存储基础设施,并且使用微软的集群共享卷(CSV)文件系统的新版本CSV 2.0,潜在的数据中心设计变得更加令人关注了。这种架构名为横向扩展文件服务器(SOFS),适合服务器的应用程序工作负载(SQL Server和Hyper-V),但不适合一般的文档文件共享(传统的文件共享区集群角色应该适合这种共享)。在这种场景下,每个文件共享区主机可以访问同一后端数据,并将该数据提供给Hyper-V节点。如果一个文件共享区主机出现了故障,它就会以透明的方式,故障切换至另一个文件共享区主机。
CHKDSK在Windows Server 2012服务器中已得到了改进,它将耗费大量时间的磁盘分析操作从修复阶段中分离出来,使分析阶段能够在磁盘正常工作的时候运行。这意味着,CHKDSK现在可以检查并修复大容量卷,而停机时间极短(只有几分钟,而非几小时)。不过在SOFS中,快速修复阶段可以由一个节点来执行,而其他节点仍可以访问该卷。结果就是,磁盘检查期间停机时间为零。
既然我们讨论Windows Server 2012中Hyper-V的存储方面,免不了要提到存储空间(Storage Spaces),这项特性让你可以使用大众化的硬件服务器和存储设备,构建“类似SAN”的可扩展存储环境,又有内置的数据保护机制。虽然存储空间并不取代高端SAN,但是在许多场景下(包括在中小企业和大企业环境),这种类型的存储卓有成效。实现高可用性Hyper-V存储的另一个选择就是内置支持共享式SAS底座,每个主机里面的RAID控制器可以同步其信息。这项技术名为集群PCI RAID。
高速文件共享方面的最后一部分是SMB Direct,具有远程直接内存访问(RDMA)功能的网卡可提供异常出色的存储访问性能。Hyper-V里面的种种改进都帮助提高了性能级别,比如虚拟机里面每16个虚拟处理器有一条输入/输出通道(Windows Server 2008 R2只为整个虚拟机提供一条输入/输出通道),每只SCSI磁盘有一个输入/输出队列(Windows Server 2008 R2局限于每个控制器有一个队列),以及跨虚拟处理器实现输入/输出中断的动态扩展,而不是像之前版本中那样只使用一个。微软演示了单个虚拟机可以达到每秒100万次输入/输出操作。
卷影复制服务(VSS)同样得到了改进,因而有可能从远程共享区备份状态一致的数据源,就像你用Windows Server 2008 R2里面的本地存储来备份那样。
CSV:另一种文件系统?
如果你关注一下启用Windows Server 2012中CSV的服务器管理器(Server Manager)里面的共享卷,会发现它指定文件系统为CSVFS,但是仍依赖底层的NTFS。除了前面提到的零停机时间CHKDSK外,CSV 2.0里面还有其他的改进;它也得到了改进,与备份软件更加兼容。旧版本使用自定义的重解析点(reparse point)来挂载共享式存储,这就需要备份软件开发商定制其应用软件,以便知道如何备份共享式存储。Windows Server 2012使用了标准的挂载点,有望为独立软件开发商(ISV)们带来方便。
还有一项新特性名为CSV缓存,它使用文件共享区主机上的系统内存来缓存读取内容,这能大幅提升性能,尤其是在输入/输出常常是个瓶颈的虚拟桌面基础设施(VDI)场景下。建议的缓存大小是512 MB,但是你需要在自己的环境中拿实际负载测试一番。你有多少个CSV卷没有限制,你在每个卷上有多少个文件也没有限制,所以任何限制取决于你的硬件支持什么。#p#
卸掉负载
现代的SAN功能强大,有许多高级特性;提供卸载数据传输(ODS)增添了让Windows能够以智能方式直接使用这些特性的功能:表明ODX如何用于Hyper-V的一个例子是,创建一个80 GB大小的固定VHD磁盘:Windows只向ODX SAN要求这个大小的文件,没必要通过网络传输数据。非ODX SAN与之形成了鲜明对照:主机必须向SAN上的新文件发送80 GB的数据,网络、处理器和内存等方面都有相应的负载。拷贝文件以及将文件从一个位置转移到另一个位置时,Windows仅仅处理ODX权标,所有传输工作都在SAN里面直接完成。
Windows Server 2012以两种方式来实现ODX:首先,当Hyper-V主机连接到ODX SAN后,创建或删除VHD(X)文件或者合并快照等任何操作卸载到SAN上。其次,如果你有Windows 2012虚拟机驻留在支持ODX的SAN上,虚拟机里面的文件操作也将得到加速。这将这些操作所需的时间从几分钟缩短到了几秒钟,对大文件来说尤为如此。
一种新的虚拟硬盘
新的VHDX虚拟硬盘格式在之前文章已多次提到,但是添加的X看似不重要,实际上带来了许多好处。首先,如果元数据操作过程中发生停电事故,VHDX有更强的弹性,更能适应破坏;因为它为这些操作保留了内部日志。此外,现在开发人员和用户有机会把自己的管理数据嵌入到VHDX文件里面。但是最大的改进在于虚拟硬盘最大大小是64TB(理论最大大小是1.4 PB)。
有一些内置工具可用于把VHD文件转换成VHDX文件(反之亦然,只要文件小于2 TB)。新格式还在新硬驱上与4K扇区或512e扇区正确地对齐,不像VHD格式在512e磁盘上可能有问题。如果你在Windows Server 2012中创建一个新的VHD,也可以解决这个问题。你可以把2008 R2中的现有VHD转换成Windows Server 2012中的VHD,这还有望解决扇区对齐问题。
图2:由于磁盘大小每年在变大,能够创建64 TB大小的虚拟硬盘让平台能够适应未来需要。
固定大小磁盘(自动完全配置)、动态磁盘(自动精简配置)和直通磁盘之间的性能差异一直在稳步缩小;而在Windows Server 2012中,没有理由为了性能而使用直通磁盘,特别是由于你使用直通磁盘后,虚拟化技术的大部分优点也就荡然无存。固定大小磁盘与动态磁盘之间的性能差异也很小。所以,如果你果真决定使用动态磁盘,千万要小心,确保你有一种机制来跟踪和预测磁盘使用情况——磁盘存储空间很容易被耗尽。
图3:由于固定VHD(X)与动态VHD(X)之间的性能差异现在很小,在生产环境中使用动态磁盘是一个切实可行的选择。
VHDX还支持收回未使用的空间,这类似TRIM为固态硬盘(SSD)收回未使用空间以及unmap为SAN收回未使用空间。传统的文件系统并不是真正删除文件,而是仅仅删除了数据指针;如果使用TRIM,操作系统收回存储空间。在平常的VHDX操作中,这在后台缓慢进行,所以如果你在使用动态磁盘,又删除了文件,该空间实际上将用于新文件,没必要让物理VHDX文件再次扩大。如果你关闭了虚拟机,VHDX文件的实际尺寸会缩小,而VHD文件不会出现这种情况。#p#
虚拟光纤通道
VMware之前处于领先的另一个方面是这一点:如果你想在Windows Server 2008 R2 Hyper-V中创建访客集群(确保应用程序高可用性),就不得不使用iSCSI,因为没有办法把虚拟机连接至光纤通道SAN。这个问题在Windows Server 2012中得到了解决;虚拟光纤通道(VFC)提供了将虚拟机与得到支持的应用程序集群起来(访客集群)的功能,而每个虚拟机能够有多达四个VFC HBA。微软虚拟主机总线适配器(HBA)直接将光纤通道的逻辑单元号(LUN)呈现在虚拟机面前,所以要留意:SAN、光纤通道交换机和HBA必须支持N_Port ID虚拟化(NPIV)。即使在测试实验室环境中,也无法使用直接光纤通道线缆连接就应付得了——你需要光纤通道交换机。
图4:建立虚拟光纤通道很容易,只要你的HBA有针对Windows Server 2012的驱动程序。
与该版本Hyper-V的主题相吻合的是,微软并不满足于仅仅模仿VMware功能,它还更进了一步,让用户有可能使用VFC,实时迁移虚拟机。不过,SAN撤除LUN的映射这个操作通常要花30秒到60秒的时间,而暴露端口显然并不适用于实时迁移。每个虚拟机而是使用两个全局端口名称(World Wide Port Name)和两个全局名称(World Wide Name),其中一个处于闲置状态;如果虚拟机转移,另一个端口就会接过重任,使得原始端口成为闲置端口。如果你在虚拟机里面运行SAN厂商的管理工具,它又没有更新,不知道这种交换机制,那么交换端口时有可能发出警报。
存储方面的其他改进
Windows Server 2012提供了内置的文件重复数据删除功能,但是这只适用于没有在使用的文件,所以它对VHD(X)库来说会很方便,它将达到惊人的删除效果(90%以上),因为大多数虚拟硬盘上存在大量的重复内容。另一个出色的特性就是,新的服务器管理器让你可以将角色和特性直接部署到离线VHD文件上,这为管理你的虚拟机模板提供了另一条途径。
存储方面已经介绍了不少。下一篇我们将介绍虚拟机的移动性。
http://virtualizationreview.com/articles/2013/04/29/hyper-v-dive-7-storage.aspx