Vmware虚拟SAN对阵Microsoft集群存储空间虚拟化
VMware和微软主导了当前服务器虚拟化的大局,但就虚拟SAN(Virtual SAN)和集群存储空间(Clustered Storage Spaces)而论,两家在其软件定义存储架构方面采取了截然不同的方法。
软件定义存储(SDS)是在存储基础设施中将控制通路与数据路径相分离。它是这样一种架构:通过把传统的专有存储阵列控制器抽象出来,以增值软件功能的形式通过商用硬件进行提供,并把它置于服务器虚拟机管理程序软件堆栈之上,从而创建存储即应用(storage as an application)。
VMware实现的是通过在其hypervisor微内核堆栈中创建一个新层,称为虚拟SAN(Virtual SAN),该架构最早由StarWind软件公司提出并研究。借助VMware在hypervisor堆栈领域的有利地位,VMware将hypervisor内部,内部直连存储,以及后端所有参与组成最少三节点虚拟SAN集群的主机服务器全部做了规范化。软件控制器还能管理集群硬件/软件堆栈之间的工作负载数据的镜像或复制。这与VMware以前的实现方法是背道而驰的,它依赖于特殊的SCSI命令来切换大容量数据复制到相连的存储阵列硬件控制器上。 VMware宣称这个决定使他们成为“纯软件定义存储”的一部分。他们已经将硬件阵列控制器的所有功能全部集成到其软件当中。
而在微软这边,这可以被看作一个小小的讽刺,与VMware的做法正相反,他们并没将存储的所有功能从存储硬件中抽象出来。微软倾向的实现方法包括将SAS磁盘和服务器后端的JBOD汇集池化,并利用Windows Server 2012引入的存储空间技术。并非将一切智能从商用存储硬件中剥离,存储空间与Windows集群服务相结合,实现了集群存储空间池,它仍旧依赖于SAS协议和硬件来为逻辑卷提供锁机构。
当然,还是有很多阵列控制器的功能已经被转移到微软的软件层,例如在集群存储空间中没有RAID,因为Windows Server 2012中的存储空间服务允许用户采用和管理不同类型的数据保护和冗余方案。也没有必要在阵列控制器中为固态硬盘(SSD)和硬盘驱动器之间设置分层,因为热块(访问频繁的数据块)会被自动转移到SSD组件(如果存在的话)以提高性能。
集群存储空间形成的“虚拟SAN”包括安装在集群服务器背后的外部JBOD磁盘。它本身就可被用于存放来自任何来源的块数据——从像SQL Server和Exchange这样的企业级应用到Hyper-V虚拟化应用程序和桌面应用。也许最有趣的用例是在Windows文件服务器后面简单地创建一个群集存储空间,从而实现可共享和可扩展的面向文件的存储。这种横向扩展的文件服务器充分利用了微软的服务器消息块(SMB)协议,目前版本是3.0。
关于Microsoft方法的大多数抱怨是它缺乏对廉价的SATA磁盘的支持,SATA硬盘能有效减少存储空间的成本。此外,微软也没有提供有效利用DRAM的回写式高速缓存,以及通过日志结构或其他方式实现的写入合并,这些功能都有助于缓解闪存在经历百万次小数据块写操作而磨损导致数据丢失。可以说,微软的原生重复数据删除技术提高了写入次数,因为数据是先写入然后去重。
在最后的分析中,一个比较明智的策略是在确定某一家特定SDS方案之前,比较VMware和微软,以及其它诸如StarWind和DataCore这样宣称硬件无关和hypervisor无关的备选方案在SDS架构上的功能和限制。VMware和微软两家公司都提供其软件产品的试用版,并且与现有的hypervisor管理控制台集成很好。