VAAI(VMWare vSphere Storage API - Array Integration)是目前虚拟化领域的标准语言之一,也被称为硬件加速或硬件负载分担APIs,是一组用于VMWare vSphere ESXi主机与存储设备通信的API。
VAAI给虚拟化管理程序和存储设备规范了不同的职责,使其各自关注工作效能最大化,即虚拟化管理程序致力于虚拟化相关的工作而存储相关的工作则留给存储阵列。
通过VAAI,允许ESXi主机将某些存储操作从ESXi主机转移给存储(例如克隆、zeroing等等),从而减少ESXi主机的资源开销,极大改进了storage-intensive operation的性能。
VAAI的目标是帮助存储厂商通过提供硬件协助来加速那些能在存储硬件上更高效完成的VMWare I/O操作。有了存储硬件的帮助,主机可以更快地执行这些操作并且占用更少的 CPU、内存和存储结构带宽,而主机端只负责过程监控。
一、VAAI的特性
目前,VAAI主要有以下几个方面的特性,见下图所示:
主要有VAAI Block Primitives、VAAI NAS Primitives和VAAI Thin Provisioning Primitives三块原语(primitves),其中在ESXi/ESX 4.1(vSphere4.1)版本中只支持VMFS的VAAI Block Primitives。
在 ESXi 5.0 (vSphere5.0)中添加了对 Thin Provisioning VAAI 原语和NAS VAAI原语的支持。
详细特性介绍见官方文档PDF
http://www.vmware.com/files/pdf/techpaper/VMware-vSphere-Storage-API-Array-Integration.pdf
二、判断知道是否已启用 VAAI?
从官网中得知,如果要使用VAAI ,需要具备:
- ESXi/ESX 4.1 或更高版本
- ESXi/ESX 主机的 Standard、Enterprise、Enterprise Plus 或 Remote Office Branch Office 许可
- 支持基于 VAAI 存储的硬件加速的存储阵列
注意:- ESXi/ESX 4.1 不支持 NAS 存储设备的硬件加速。
- 在 ESXi 5.x 中引入了对 NAS 存储设备的支持。
从上述可知道,要实现VAAI特性,除了需要ESXi 4.1以上的版本外,还需要存储阵列厂商提供并实现VAAI功能。
首先,要确定您的存储阵列是否支持 VAAI,请参见硬件兼容性列表(http://www.vmware.com/resources/compatibility/search.php)或者咨询您的存储供应商。
判断你的存储设备是否支持VAAI,可以测试Full Copy VAAI原语:
1. 使用vSphere Client,打开datastore并选定一个至少4MB大的,未在使用的虚拟磁盘(VMDK)。
2. 将虚拟磁盘复制到一个新文件中。
3. 检查硬件加速状态是否由未知变成了支持或不支持。
或者,可以通过测试Block Zero VAAI原语:
1. 使用vSphere Client,打开datastore,在该Datastore上创建一个eagerZeroedThick
三、VAAI的架构与实现
VAAI的实现主要需要两个部分:
1. Pluggable Storage Architecture (PSA) device filter
2. VAAI filter
PSA(Pluggable Storage Architecture )
PSA架构全称Pluggable Storage Architecture,系vSphere 4.0开始引入的一个可插拔式存储架构,这个架构负责一些在VM内核的任务。允许通过APIs的方式来嵌入第三方的软体来执行到存储的管理与路径选择,即通过扫描处理物理路径的发现和移除。
通过PSA,允许第三方软件开发商自行根据自己的存储特性设计负载均衡和故障切换的算法,这样可以有效的提升ESXi到存储之间的性能。
PSA框架在VMKernel中的如下图所示
PSA主要由部分组成:NMP和MPP。
- NMP(Native Multipath Plugin),默认的多路径插件,在没有指定的插件时使用NMP。NMP的子插件负责管理多路径与负载均衡。
- MPP(Multi Pathing Plugin)是指第三方的一些多路径插件,安装后可以使用,MPP只对自己对应的物理存储设备负责。
两者下面都有
SATP - Storage Array Type PluginPSP - Path Selection Policy
SATP的用途
SATP(Storage Array Type Plugin)被用于阵列类型匹配。
- 它的首要任务就是监控硬件的健康状态
- 其次是检查是否存在硬件路径故障faileover
- 最后一项任务就是当检测到故障之后,执行物理路径切换动作;
使用CLI命令查询
# esxcli storage nmp satp list
PSP的用途
PSP(Path Selection Policy)负责在物理链路上执行负载均衡操作,它负责根据负载情况和配置策略选择一条最优链路进行I/O到Logical Device的传输。当虚拟机发生I/O请求时,NMP或者MPP会根据配置的PSP子策略来选择存储设备。
默认情况下,ESXi Host的配置里有三种PSP子策略,分别是MRU(Most Recently Used)、Fixed和RR(Round Robin)
- VMW_PSP_MRU:全称是Most Recently Used,它会优先选择一条系统启动时所能看到的最近使用过的路径来进行I/O传输。
- VMW_PSP_Fixed:固定路径
- VMW_PSP_RR:全称Round Robin,自动选择所有的可用链路来执行I/O传输,进而帮助实现Load Balancing。
可以通过一下命令查询。
【参考资料&延伸阅读】
[1] VAAI官方说明PDF
http://www.vmware.com/files/pdf/techpaper/VMware-vSphere-Storage-API-Array-Integration.pdf
[2] Knowledge Base: Frequently Asked Questions for vStorage APIs for Array Integration
[3] VMware APIs For Aray IIntegration for NAS (VAAI NAS)
[4] 硬件厂商集成VAAI(NAS):
https://developercenter.vmware.com/web/dp/programs/vaai-nas
[5] ESXi Configuration Guide(ESXi 4.1 vCenter Server 4.1)的Storage Hardware Acceleration
https://www.vmware.com/pdf/vsphere4/r41/vsp_41_esxi_server_config.pdf#unique_157
[6] thin还是thick?虚拟磁盘格式的选择题
http://delxu.blog.51cto.com/975660/278156/
[7] 自动精简配置技术(thin provisioning)
http://blog.sina.com.cn/s/blog_722532880100lm1o.html
[8] Part01 - Pluggable Storage Architecture(PSA)
http://cormachogan.com/2013/02/04/pluggable-storage-architecture-psa-deep-dive-part-1/
中文翻译版 http://bbs.vmanager.cn/thread-7787-1-1.html
[9] Pluggable Storage Architecture (PSA) Package
http://developercenter.vmware.com/web/dp/vmware-ready-programs/storage/psa
[10] 什么是 Pluggable Storage Architecture (PSA) 和本机多路径 (NMP)?
[11] Program Guide:VMware Pluggable Storage Architecture(PSA) for vSpere 5.x and 6.x
https://vdc-download.vmware.com/vmwb-repository/dcr-public/317d2709-0c6f-4d63-a159-c311d3b15ee7/9be613a8-e94a-48f0-b7e4-e896c6eb801a/PSA%20Program%20Guide%20Oct2015.pdf
[12] vStorage APIs for Array Integration
http://www.linux-iscsi.org/wiki/VAAI
[13] White Paper:VMware vSTORAGE APIs FOR ARRAY INTEGRATION WITH EMC VNX SERIES FOR SAN_Benefits of EMC VNX for Block Integration with VMware VAAI
http://www.emc.com/collateral/hardware/white-papers/h8293-vaai-vnx-wp.pdf
[14]White paper : ETERNUS DX S2 series and VMware VAAI deliver agile solution for virtualization
http://www.fujitsu.com/downloads/STRSYS/system/DXS2-VAAI-whitepaper-en_01.pdf
[15] VMware連携によるサーバ仮想化環境の運用効率化
http://www.fujitsu.com/jp/products/computing/storage/disk/eternus-dx/feature/059/
[16] Understanding and Using vStorage APIs for Array Integration and NetApp Storage
http://www.netapp.com/cn/media/tr-3886.pdf
[17] 基于5.x VAAI的vMotion实战,不同的datastore/LUN之间迁移虚拟机的问题
https://community.emc.com/docs/DOC-30813