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特性,除了需要ESXi 4.1以上的版本外,还需要存储阵列厂商提供并实现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的实现主要需要两个部分:
1. Pluggable Storage Architecture (PSA) device filter
2. VAAI filter
PSA架构全称Pluggable Storage Architecture,系vSphere 4.0开始引入的一个可插拔式存储架构,这个架构负责一些在VM内核的任务。允许通过APIs的方式来嵌入第三方的软体来执行到存储的管理与路径选择,即通过扫描处理物理路径的发现和移除。
通过PSA,允许第三方软件开发商自行根据自己的存储特性设计负载均衡和故障切换的算法,这样可以有效的提升ESXi到存储之间的性能。
PSA框架在VMKernel中的如下图所示
PSA主要由部分组成:NMP和MPP。
两者下面都有
SATP的用途
SATP(Storage Array Type Plugin)被用于阵列类型匹配。
使用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)
可以通过一下命令查询。
【参考资料&延伸阅读】
[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
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2078055
[3] VMware APIs For Aray IIntegration for NAS (VAAI NAS)
https://vdc-download.vmware.com/vmwb-repository/dcr-public/d8906187-e988-474f-87af-2fdc68917add/306ea451-7619-4463-ab8f-2c52e1208a9e/VAAINAS%20Program%20Guide%20Oct2015.pdf
[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