在虚拟服务器环境中,其存储硬件和Hypervisor管理程序的通讯非常复杂。VMware为简化其通讯并提高效率,研发了vStorage阵列集成应用接口(VAAI)。该应用接口为Hypervisor管理程序和存储设备规范了不同的职责,使其各自关注工作效能最大化,即Hypervisor致力于虚拟化相关的工作而存储相关的工作则留给存储阵列。
通过VAAI,存储阵列厂商可以直接将其存储硬件及应用程序和vSphere进行集成。VAAI使得某些存储层的工作,诸如克隆等,可以在存储阵列上离线运行,这较在主机端完成更为高效。主机端可以简单地将相关工作转到存储阵列上完成,而主机端只负责过程监控,而非使用主机端的资源来完成(在VAAI之前的产品即是如此)。存储阵列更擅长此类数据工作,可以较主机端更为快速的完成相关服务请求。
vStorage阵列集成应用接口工作原理
VAAI目前使得vSphere对于某些存储相关操作更为高效,主要体现在以下三个领域:
离线拷贝。拷贝虚拟磁盘文件的操作,比如虚拟机克隆或通过模板部署新的虚拟机,可以通过阵列离线进行的方式实现硬件加速,而不是在ESX服务器端进行文件级的拷贝操作。这种技术同样可以应用于Storage vMotion功能,将一个虚拟机的数据从一台存储移动到另一台。VMware的Fully Copy可以极大程度上提升如何拷贝相关的操作,这可以非常快速地部署新虚拟机。这对于虚拟机频繁创建提供或在同一时刻需创建大量虚拟机的应用场合尤其有用。
离线并发写。在所有虚拟磁盘初始写入之前,必须进行清零操作(一个没有如何数据的磁盘数据块里有空值;这时要在该磁盘数据块中写入零,以清除所有可能从之前删除的虚拟机中遗留的数据。默认的“慢速清零”虚拟磁盘(具体数据块根据是否需要初始写入,进行清零)直到有首次写入操作请求时才对该磁盘数据块进行清零操作。这造成了极大的性能影响,而且陈旧的数据可能会遗留给其它客户端操作系统。“提前清零”虚拟磁盘(所有的磁盘数据块在创建时一次性清零)可以用于取代原有方式以取消原首次写入磁盘数据块时的性能影响,并消除任何原有虚拟机数据保存在其它磁盘数据块上的可能性。在该格式化过程中,大量的零数据从ESX/ESXi主机发送到要清零的阵列上的磁盘数据块(因此也叫“并发写”),这可能是一项耗时且耗资源的过程。通过VMware Block Zeroing操作,阵列可以处理所有的清零过程,更为高效。磁盘阵列无需让主机端等待操作完成,其立刻提示操作完成,然后处理清零操作,这期间不涉及到主机端的任何操作。
硬件辅助锁定。VMFS文件系统允许多主机对同一共享逻辑卷的并发访问,这是vMotion运行的必要条件。VMFS有一个内置的安全机制,防止虚拟机被超过一台的主机同时运行或修改。vSphere采用“SCSI预留”作为其传统文件锁定机制,这种方式在某项存储相关的指令操作期间,比如增量快照增长或发生时,均使用“RESERVE SCSI”命令锁定整个逻辑卷。这有助于防止冲突,不过也拖延了存储工作的完成,因为主机必须等待逻辑卷的解锁命令“RELEASE SCSI”才能继续写入。使用Atomic Test and Set(ATS)命令是一种硬件辅助的锁定机制,可以离线地对存储阵列加锁,这样就可以对个别磁盘数据块而非整个逻辑卷。这样可以使得余下的逻辑卷在锁定期间继续被主机访问,十分有助于避免性能下降。该功能同时通过VMFS数据存储,允许同一集群中部署更多的主机,以及更多的虚拟主机部署在同一个逻辑卷上。
VAAI的厂商支持
目前,vStorage阵列集成应用接口只针对基于数据块的存储阵列(光纤存储或iSCSI)有效,并不支持NFS存储。厂商对于VAAI的支持一更不相同,某些厂商,诸如EMC,很快地支持了这些功能,而另一些厂商花费了很长的时间将其整合到他们的所有存储阵列型号中。你可以通过查看VMware对光纤存储的兼容列表来了解哪些存储阵列支持特定的vStorage应用接口特性。
通过VMware光纤存储兼容列表,你可以搜索你的存储阵列是否可以支持VAAI,如果这样,其它的应用接口也是支持的。
该列表易于搜索,并告知各存储阵列是否支持多路径插件,以及支持何种VAAI特性等信息。如果你的存储阵列目前尚不支持VAAI,可以和供应商确认其是否有这方面的规划。你也可能要升级更新发布的vSphere或更新的存储阵列型号来支持VAAI。
关闭VAAI
vStorage阵列集成应用接口在vSphere 4.1版中默认激活(不过在vSphere 4.0版中并不支持),并且只要存储阵列支持,该功能就会被激活。不过你也可能希望关闭VAAI功能,比方说你发现你的存储阵列无法兼容或出于测试的需要,你要比较VAAI打开和关闭的性能比较。你可以使用如下高级主机设置功能逐个关闭这些功能:配置->软件->vSphere客户端中高级设置菜单。
关闭离线拷贝,设置DataMover.HardwareAcceleratedMove为0。
关闭离线并发写,设置DataMover.HardwareAcceleratedInit为0。
关闭硬件辅助锁定,设置VMFS3.HardwareAssistedLocking为0。
你可以通过“配置->软件->vSphere中的高级设置菜单关闭VAAI设置
VAAI为特定的存储操作提供了极大的性能改善,并且已有大量存储厂商使用了这种应用接口。VMware将在每次发布新的vSphere时持续改善vStorage应用接口;我们期待在新版本中可以看到更多应用接口集成在NFS增强的领域,离线快照领域以及阵列管理领域。