一、前言
参考链接:
VMware Docs 存储硬件加速
VMware vSphere APIs: Array Integration (VAAI)
vSphere 6.7 Storage Guide
在虚拟化环境中,从资源的角度来看,传统的存储操作是昂贵的。存储系统可以比ESXi主机更有效地执行诸如克隆和快照之类的功能。
VAAI (vSphere APIs for Array Integration)是 VMware 提供的 API 框架,用于ESXi主机和存储系统之间的通信,它通过定义一组存储原语(Storage Primitives)提供存储硬件加速功能,将涉及到数据跨数据存储(Datastore)移动的操作,如快照、克隆、置零等存储密集型操作卸载(offload)到存储系统来做,以提升数据拷贝的效率,同时减少ESXi主机对计算资源和带宽的消耗。
注:各存储厂商可与VMware做兼容性认证,如通过VMware VAAI认证测试,可通过VMware HCL version 2查询所有获得VAAI认证的存储厂商列表
VAAI (vSphere APIs for Array Integration)是vSphere与存储系统结合的一组API,支持块存储(Block Storage Devices)和文件存储(NAS Devices ),主要包括Hardware Acceleration APIs
和Array Thin Provisioning APIs
两部分,前者主要提供硬件加速功能,后者主要提供空间管理功能
二、Hardware Acceleration APIs
硬件加速接口,这部分主要提供硬件加速功能,使ESXi主机能够与兼容的存储系统集成,ESXi主机可以将部分虚拟机和存储的管理操作卸载给存储系统。
有了存储硬件的帮助,ESXi主机执行这些操作的速度更快,消耗的CPU、内存和带宽更少。
1、支持范围
当支持硬件加速功能时,ESXi主机可以获得硬件帮助,更快更有效地执行以下操作任务
- 使用
Storage vMotion
迁移虚拟机 - 从模板部署虚拟机
- 克隆虚拟机或模板
- VMFS对虚拟机文件进行集群锁和元数据操作(如虚拟机批量关机、开机)
- 分配厚置备虚拟磁盘
- 创建容错虚拟机(fault-tolerant)
- 在NFS存储上创建或克隆厚置备虚拟磁盘
2、前提条件
硬件加速功能只有在使用合适的ESXi主机和存储系统结合时才能发挥作用,要求如下:
ESXi | Block Storage Devices | NAS Devices |
---|---|---|
ESXi(>vSphere 5.x) | 支持T10 SCSI标准,或支持VAAI-Block | 支持VAAI-NAS |
注:如果SAN和NAS支持硬件加速,但与VMware对接时使用了中间设备(如存储虚拟化设备、I/O加速设备、加密设备等),那么中间设备也必须要支持硬件加速并经过适当的认证
3、状态说明
对于每个存储设备和数据存储,vSphere客户端会显示硬件加速支持情况,状态通常有未知
、受支持
、不受支持
三种,初始值为未知
当存储系统不支持或部分支持ESXi主机操作时,ESXi主机会恢复到原始的方式执行不受支持的操作
3.1、Block Storage Devices
- 当ESXi主机执行卸载(offload)操作成功之后,则块设备状态将变为
受支持
- 当ESXi主机执行卸载(offload)操作失败之后,则块设备状态将变为
不受支持
- 当块设备提供了部分硬件加速支持,则块设备状态将保持为
未知
3.2、NAS Devices
- 当ESXi执行可以至少执行一次卸载(offload)操作成功之后,则NAS设备状态将变为
受支持
4、接口说明(VAAI-Block)
VAAI-Block硬件加速功能支持Full copy
、Block zeroing
、Hardware assisted locking
三个接口,默认启用硬件加速功能
4.1、Full copy
也被称为clone blocks
或copy offload
,当进行虚拟机克隆、虚拟机迁移和从模板部署虚拟机等操作时,VAAI可以避免ESXi主机读取和写入数据,ESXi主机将数据复制工作通过特殊指令(SCSI EXTENDED_COPY指令,该指令携带待复制数据的源、目的地址,待复制数据总空间)卸载到存储系统内部进行,节省处理时间,减少ESXi主机计算和网络资源消耗
注:
a、涉及到数据复制,源端存储和目标端存储须为同一个存储系统同一个target
b、虚拟机读写过程中不能进行Full copy
操作,故虚拟机需处于关机状态
4.2、Block zeroing
也被称为write same
,当进行虚拟磁盘创建(尤其是厚置备置零格式)、虚拟磁盘格式化等操作时,ESXi主机下发特殊指令(SCSI WRITE_SAME指令,该指令携带待格式化的数据范围、数据模板)给存储系统,由存储系统将大量块置零,以提供新分配的存储,避免ESXi主机与存储系统大量数据交互
4.3、Hardware assisted locking
也被称为atomic test and set (ATS)
,当进行虚拟机批量开关机、虚拟机批量创建等批量操作时,存储系统锁住某一个扇区,而不是整个锁住整个LUN,从而提高并发操作性能
VMware将LUN格式化为VMFS文件系统,提供给多个虚拟机使用,当存在多个虚拟机同时访问VMFS文件系统时存在写冲突,故需要使用锁机制仲裁控制写入过程。传统方式下,某个虚拟机读写时会锁住整个VMFS系统,导致其他虚拟机不能读写,无法实现多虚拟机并发读写。ATS锁可以缩小锁机制锁定范围,只对写的单个数据块上锁,从而提高整个VMFS系统并发IO
5、接口说明(VAAI-NAS)
VAAI-NAS硬件加速功能支持Full File Clone
、Reserve Space
、Array-based Snapshots
、Extended Statistics
接口,支持NFS存储v3和v4.1两个NFS版本
对于NAS设备,硬件加速集成是通过特定供应商实现的NAS插件,这些插件通常由供应商创建,并通过网站作为VIB包分发,因此,如需要使用VAAI-NAS硬件加速功能,需要安装对应NAS设备供应商提供的NAS插件
5.1、Full File Clone
完整文件克隆,支持NAS设备克隆虚拟磁盘文件的能力,这个操作类似于VMFS块克隆,只是NAS设备克隆的是完整的文件,而不是文件分片
5.2、Reserve Space
保留空间,支持NAS设备为厚置备虚拟磁盘文件分配存储空间
通常来说,当使用NFS数据存储创建虚拟磁盘,NAS服务器决定分配策略,大多数NAS服务器分配策略为精简配置(thin),然而,保留空间操作可以指示NAS设备使用特定厂商机制为虚拟磁盘预留空间,因此,可以在NFS数据存储上创建厚置备虚拟磁盘
5.3、Array-based Snapshots
基于阵列的快照,虚拟机快照创建可以卸载到存储阵列中进行
注:Storage DRS
不检测NFS存储基于阵列的快照,因此,当执行克隆具有基于阵列快照的虚拟机等操作时,Storage DRS
不提供任何建议
5.4、Extended Statistics
扩展统计信息,支持NAS设备上空间使用的可见性,此功能对于精简配置非常有用
6、开关控制
6.1、Block Storage Devices
查询VAAI支持情况
- web操作
登录vSphere Client,选中ESXi主机,选择配置
-存储设备
,查看存储设备硬件加速状态显示
- 命令行操作
ESXi主机后台执行esxcli storage core device vaai status get -d <device-id>
命令查询
[root@node46:~] esxcli storage core device vaai status get -d naa.60000000000000000e00000000010002
naa.60000000000000000e00000000010002
VAAI Plugin Name:
ATS Status: supported
Clone Status: supported
Zero Status: supported
Delete Status: supported
关闭VAAI硬件加速
- web操作
登录vSphere Client,选中ESXi主机,选择配置
-高级系统设置
,修改DataMover.HardwareAcceleratedMove
、DataMover.HardwareAcceleratedInit
、VMFS3.HardwareAcceleratedLocking
参数值为0
DataMover.HardwareAcceleratedMove
:启用硬件加速 VMFS 数据移动(需要兼容硬件)DataMover.HardwareAcceleratedInit
:启用硬件加速 VMFS 数据初始化(需要兼容硬件)VMFS3.HardwareAcceleratedLocking
:启用硬件加速的 VMFS 锁定 (需要使用符合要求的硬件)。在禁用此选项之前,请参见 http://kb.vmware.com/kb/2094604
6.2、NAS Devices
查询VAAI支持情况
- web操作
登录vSphere Client,选中ESXi主机,选择数据存储
,查看当前NFS存储硬件加速
状态即可
- 命令行操作
ESXi主机后台执行esxcli storage nfs list
命令查询
[root@node46:~] esxcli storage nfs list
Volume Name Host Share Accessible Mounted Read-Only isPE Hardware Acceleration
----------- ------------ ------------------- ---------- ------- --------- ----- ---------------------
NAS 192.16.21.41 /cephfs/NAS true true false false Not Supported
三、Array Thin Provisioning APIs
阵列精简配置接口,这部分主要提供空间管理功能,监控精简配置存储阵列的空间使用情况,以防止出现空间不足的情况,可以进行空间回收操作
1、支持范围
可以在ESXi中使用精简配置存储阵列,ESXi主机集成了基于块的存储,完成以下任务:
- ESXi主机可以识别底层精简LUN,监控它们的空间使用情况,避免耗尽物理空间。LUN空间可能发生变化,例如,VMFS存储扩展,或者使用
Storage vMotion
将虚拟机迁移到精简LUN。ESXi主机会在物理LUN空间破坏和空间不足情况下发出警告 - VMFS6可以自动执行
unmap
命令从存储阵列回收未使用的空间,VMFS5只支持手动回收空间的方式
注:ESXi主机不支持在存储设备上启用或禁用精简配置,通常在删除虚拟机场景下会触发unmap
操作回收空间
2、前提条件
若需要使用精简配置监控和空间回收特性,需要遵循以下要求:
- 选择合适的ESXi版本
Supported thin provisioning components | ESXi 6.0 and earlier | ESXi 6.5 and later |
---|---|---|
Thin provisioning | Yes | Yes |
Unmap command originating form VMFS | Manual for VMFS5. Use esxcli storage vmfs unmap |
Automatic for VMFS6 |
Unmap command originating from guest OS | Yes. Limited support | Yes (VMFS6) |
- 存储系统支持VAAI,包括精简配置(thin provisioning)和空间回收(space reclamation)