开始新对话

未解决

此帖子已超过 5 年

5080

2013年5月23日 19:00

【分享】VMWare VAAI & VASA API

     在虚拟化环境中,从资源的角度来看,存储操作的开销一直以来都是很大的,类似克隆快照这样的功能在存储上执行相比在主机上来的更高效。

     VMWare vSphere Storage API - Array Integration (VAAI),也被称为硬件加速硬件减负API,是一组用于VMWare vSphere ESXi主机与存储设备通信的API,她定义了一组“storage primitives(原语)”,允许ESXi主机将某些存储操作从主机下嫁给存储,从而减少ESXi主机的资源开销,极大改进了storage-intensive operation的性能,例如克隆、zeroing等等。VAAI的目标是帮助存储厂商提供硬件协助来加速那些能在存储硬件上更高效完成的VMWare I/O操作。

     如果没有VAAI,vSphere VMkernel Data Mover执行的虚拟机克隆或迁移涉及软件数据移动。Data Mover通过发起I/O从源读取数据块并写入目标DataStore。有了VAAI,如果可能的话,DataMover会使用API Primitive将操作下嫁给阵列。例如,如果想要在阵列内部将虚拟机VMDK文件从一个DataStore复制到另一个DataStore,存储会被要求直接完成整个复制操作。只要有数据移动请求且硬件加速功能被启动了,Data Mover就会首先使用硬件加速。如果硬件加速失败,Data Mover再转用传统的软件方式来移动数据。

     几乎在任何情况下,硬件数据移动相比软件数据移动的执行要好的多,消耗更少的CPU资源,更少的storage fabric带宽。

     最初的vSphere 4.1实现发布了三个VAAI primitive,且仅适用于块存储(FC、iSCSI、FCoE),没有给NAS使用的VAAI primitive。vSphere 5.0引入了用于NAS和vSphere Thin Provisiong的VAAI primitive。

===================================================

     VMWare vSphere Storage API - Storage Awareness (VASA)是vSphere 5.0引入的一组API,实现存储阵列与vCenter的集成管理功能。在没有VASA之前,想要确认物理LUN的特征属性,比如LUN_ID、LUN是否是Thin Provisoned、是否启用了去重、是否在分层存储上、LUN的RAID级别等等存储端的信息,是无法直观的从vCenter获得的。管理员只能通过自制表格来记录或给LUN使用有意义的名字来解决问题,但这显然不是好方法,而这正是VASA的用武之地。


     VASA可以显示物理存储设备的功能,存储阵列合作伙伴可以创建被称为vendor provider的插件,她位于vCenter和存储阵列中间,作为粘合剂。Vendor Provider从阵列获取storage capability并告知vCenter,vCenter就可以在UI中显示这些信息了。除了LUN的信息,VASA还可以提供阵列健康状态、配置和容量信息。

     VASA框架的第一个版本只能为每一个LUN呈现单个“StorageCapabiity”数据对象给vCenter Server,“StorageCapabiity”包括名字和详细描述信息,名字可以显式的说明其所要描述的信息,而详细信息则是具体每一个信息的呈现。例如,你有一个DataStore,其StorageCapability名称是Performance,详细信息为组成该卷的磁盘数量和类型,所能提供的IOPS、MB/s等信息,而这些都是与性能相关的信息。又例如,StorageCapability的名字是Space Efficient,在详细信息中你可能会见到Deduplication & Compression的信息。

     之前的例子只是想说明StorageCapability可能的实现,具体想要呈现什么信息取决于storage vendor的实现,她们实现的vendor provider决定呈现哪些storageCapability给vCenter。

     StorageCapability并非VASA唯一的目标,除了capability discovery,VASA还提供容量和存储健康状态监控,它还能与VM Storage Profiles、Storage DRS协作。

补充:VAAI和VASA的方向是正确的,允许主机和存储更多的共鸣,但他们还做得不够好,说到底都是在DataStore上做文章,而这种级别的的粒度太大,无法将策略应用到VM级别,因为通常一个DataStore上会有多个VM。VMware正在搞VM Granular Storage之类的东西来解决这个问题,之后我会持续更新,今天就先到这吧。

1.6K 消息

2013年5月23日 19:00

有哪些公司用这些API写的一些例子,或者solution demo sample,或者vmware自己提供的一些展示给大家看看不?

2 Intern

 • 

1.4K 消息

2013年5月23日 19:00

DELL、HP、EMC、IBM等存储厂商都有自己的实现,Demo我没能在EMC或VMWARE的网站上看到,在Yutube上应该会有(但国内不容易访问)。就EMC来说,VNX提供了两篇白皮书还是可以实实在在看到VAAI是如何工作的,VASA目前EMC还没有看到有白皮书可参考。

White Paper: VMware vStorage APIs for Array Integration with EMC VNX Series for NAS

White Paper: VMware vStorage APIs for Array Integration with EMC VNX Series for SAN

2 Intern

 • 

605 消息

2013年5月23日 23:00

这个东西还是蛮好的,某些场景下实实在在为主机减负。原理就是让存储厂商放开更多的SCSI命令给主机,需要VMware和存储厂商直接互相认证。

如果没记错,主要亮点有:

1. 数据拷贝性能。

2. 精简分配空间回收

3. SCSI操作锁粒度。

更多亮点,楼下的补充。

2 Intern

 • 

483 消息

2013年5月31日 02:00

VAAI的4大功能:

1.块清零,即创建厚格式虚拟机文件很快搞定

2.全拷贝,即将拷贝文件操作下放到存储(表现在VM克隆,Storage vMotion等)

3.硬件辅助锁定(ATS),体术VMFS锁操作速度

4.Thin Provisioning空间释放(vSphere5.0新加入)

超哥说的VM Granular Storage之类的东西,应该是让阵列处不在有LUN这样的颗粒度,而是将其变为VM这样的颗粒度。

2 Intern

 • 

483 消息

2013年5月31日 02:00

VASA需要让vCenter在StorageCapability中显示的内容是存储提供商来提供的哦?vmware没有指定需要显示些什么吗?或者说必须得显示些什么,因为你也说了VASA还会与VM Storage Profiles、Storage DRS协作,如果要与他们协作,肯定得有他们需要的一个统一信息才能给协作起来吧!

2 Intern

 • 

4K 消息

2013年5月31日 05:00

目前来看似乎每家提供的都不同:EMC Symm/VNX主要是Unprotected, Capacity, Performance, Extreme Performance, Multi-Tier;VPLEX的是Distributed; Synchronous, Distributed; Asynchronous, Local。具体可以看一下文档:

VMware vSphere Storage APIs for Storage Awareness (VASA)

还有Dell EqualLogic是RAID, SSD, REPLICATED;NetApp是Dedupe, Replication;HP是Drive Type, RAID Type, Provisioning Type, VV Type, Remotecopy。有兴趣可以去各自厂商的网站查一下。

2 Intern

 • 

1.1K 消息

2013年5月31日 05:00

期待持续更新

2 Intern

 • 

1.4K 消息

2013年5月31日 06:00

是,差不多就是这个意思,目前所有的策略只能应用到LUN(datastore)级别,无法应用到某个VM,所以VMWare正在做这样一件事情,把颗粒度调整到支持VM级别。

2 Intern

 • 

483 消息

2013年6月3日 02:00

好像这个思想,2012年的时候就提出来了哦!

2 Intern

 • 

483 消息

2013年6月3日 02:00

哦,这样啊,感谢Roger W.的总结,嘿嘿

找不到事件!

Top