VMware VAAI

概述

VMware在VMware vSphere 4.1中以插件形式引入了vStorage API for Array Integration(VAAI),并通过VMware vSphere 5提供了本机VAAI支持。VAAI通过将锁定和块操作无缝地卸载到存储阵列上,显著增强了存储和服务器的集成。

LIO为VMware vSphere 5提供了本机VAAI支持,另请参见Datera. vStorage APIs for Array Integration, Linux Target wiki, 2013.

功能

LIO目标支持以下VAAI功能:

VAAI原语概述

名称T10原语描述NFSLIO
ATS硬件辅助锁定
COMPARE_AND_WRITE
启用对块存储设备的精细锁定,从而提高性能。支持N/A支持
Zero块清零
WRITE_SAME
精简配置阵列的通信机制。 在创建VMDK时使用。支持N/A支持
Clone完全复制 XCopy
EXTENDED_COPY
命令阵列复制LUN中的数据。用于克隆和VMotion操作。支持N/A支持
Delete空间回收
UNMAP
允许精简配置的阵列清除未使用的VMFS空间。支持N/A支持(默认禁用)

可以从VMware ESX 5 CLI验证VMware VAAI的存在及其功能,如下所示:

~ # esxcli storage core device vaai status get
naa.6001405a2e547c17329487b865d1a66e
VAAI Plugin Name:
ATS Status: supported
Clone Status: supported
Zero Status: supported
Delete Status: unsupported

**注意:**默认情况下,删除是禁用的,有关更多详细信息,请参见下文。

原语

ATS

ATS(原子测试和设置)可以说是VMware推出的最有价值的存储技术之一。 与前面的T10永久预留相比,它可以更精细地锁定块存储设备,请参见Datera. Persistent Reservations, Linux Target wiki, 2013.,后者只能在完整LUN上运行。 因此,ATS允许更多的并发性,从而显着提高共享LUN的性能。

例如,惠普报告说,使用VAAI,每个LUN支持的虚拟机数量是不使用VAAI的虚拟机数量的六倍。ATS使用T10 COMPARE_AND_WRITE命令来允许在一个原子操作中比较和写入SCSI块。

NFS不需要ATS,因为锁定不是问题,VM文件的共享与LUN的共享不同。

可以从VMware ESX 5 CLI验证功能是否存在:

~ # esxcfg-advcfg -g /VMFS3/HardwareAcceleratedLocking
Value of HardwareAcceleratedLocking is 1

VMware实际上根据底层文件系统类型和历史记录使用ATS:

VAAI硬件上新的VMFS-5升级的VMFS-5VMFS-3
Single-extent datastore
reservations
仅支持ATS [1]ATS,但也支持回退到SCSI-2 ReservationATS,但也支持回退到SCSI-2 Reservation
Multi-extent datastore
当锁在非头部时
仅支持在ATS硬件上生成ATS,除了non-head extent被锁定ATS,除了non-head extent被锁定

\1. 如果再非ATS存储设备上创建新的VMFS-5,则会使用SCSI-2 Reservation。

\2. 当使用ATS创建multi-extent datastore时,vCenter Server将过滤掉非ATS设备,所以只有支持ATS原语的设备会被使用。

Zero

精简配置很难实现,因为存储阵列不知道主机中发生了什么。VAAI包括一个用于传递空闲空间的通用接口,因此允许大范围的块立即清零。

Zero使用T10 WRITE_SAME命令,并且默认为1 MB块大小。 Zero仅适用于VMDK内部的容量。 vSphere 5可以将WRITE_SAME与T10 UNMAP命令结合使用。

可以从VMware ESX 5 CLI验证功能是否存在:

~ # esxcfg-advcfg -g /DataMover/HardwareAcceleratedInit
Value of HardwareAcceleratedInit is 1

要从ESX 5 CLI禁用Zero,请执行以下操作:

~ # esxcfg-advcfg -s 0 /DataMover/HardwareAcceleratedInit
Value of HardwareAcceleratedInit is 0

此更改将立即生效,而无需VMware进行“重新扫描全部”。

Clone

这是签名VAAI命令。ESX管理程序可以命令阵列代表它复制一系列数据,而不是从阵列中读取每个数据块然后将其写回。如果支持并启用克隆,VMware的虚拟机克隆和虚拟机vMotion等操作可以变得非常快。提速10倍以上是可以实现的,特别是在速度较慢的网络连接(如1 GbE)上基于快速闪存的备份存储上。

克隆使用T10 EXTENDED_COPY命令,默认为4MB的块大小。

可以从VMware ESX 5 CLI验证功能是否存在:

~ # esxcfg-advcfg -g /DataMover/HardwareAcceleratedMove
Value of HardwareAcceleratedMove is 1

要从ESX 5 CLI禁用克隆,请执行以下操作:

~ # esxcfg-advcfg -s 0 /DataMover/HardwareAcceleratedMove
Value of HardwareAcceleratedMove is 0

此更改将立即生效,而无需VMware进行“重新扫描全部”。

Delete

克隆和vMotion等VMFS操作没有向存储阵列提供任何提示,以清除未使用的VMFS空间。因此,一些最大的存储操作无法加速或“减少”。

Delete使用T10 UNMAP命令允许具有自动精简功能的阵列卸载清理未使用的VMFS空间。

但是,vCenter 5无法正确处理等待存储阵列返回UNMAP命令状态的情况,因此在vSphere 5中默认禁用Delete功能。

可以从VMware ESX 5 CLI验证功能是否存在:

~ # esxcli –server=<my_esx_server> -u root system settings advanced list -–option /VMFS3/EnableBlockDelete
Type: integer
Int Value: 0
Default Int Value: 0
Min Value: 0
Max Value: 1
String Value:
Default String Value:
Valid Characters:
Description: Enable VMFS block delete  when UNMAP is issued from guest OS

要从ESX 5 CLI启用删除(另请参见[16]):

~ # esxcli –server=<my_esx_server> -u root system settings advanced set –int-value 1 -–option /VMFS3/EnableBlockDelete
Value of EnableBlockDelete is 1

许多SATA ssd有正确处理UNMAP的问题,所以在LIO中默认禁用UNMAP。

要启用UNMAP,请启动targetcli shell,输入相应的Backstore设备的上下文,并设置emulate_tpu属性:

/backstores/iblock/fioa> set attribute emulate_tpu=1
Parameter emulate_tpu is now '1'.
/backstores/iblock/fioa>

重启ESX主机,或重新登录到Backstore,以使Delete操作得到认可,然后从VMware ESX 5 CLI验证其是否存在:

~ # esxcli storage core device vaai status get
naa.6001405a2e547c17329487b865d1a66e
VAAI Plugin Name:
ATS Status: supported
Clone Status: supported
Zero Status: supported
Delete Status: supported

性能

概述

VAAI提供的性能改进可分为三类:

  • 减少了完成虚拟机克隆和块清零操作的时间。
  • 减少了服务器计算和存储网络资源的使用。
  • 从每个数据存储的虚拟机数量和一个数据存储所连接的ESX服务器数量方面提高了VMFS数据存储的可伸缩性。

在任何给定环境中看到的实际改进取决于许多因素,将在下一节中讨论。在某些环境中,改进可能很小。

克隆,迁移和清零虚拟机

完全复制和块清零操作的最大因素是限制因素是在存储控制器的前端还是后端。如果存储网络的吞吐量慢于后端存储的处理能力,则可以分担读、写虚拟磁盘以进行克隆和迁移以及为虚拟磁盘初始化写入零的大量工作,这将大有帮助。

ESX服务器使用1 GbE iSCSI连接到具有SSD或闪存的Linux存储系统时,可能会出现实质性改善的一个示例。 1 Gbps的前端不能支持足够的吞吐量以饱和后端。 但是,当卸载克隆或块清零操作时,只有小负载的小命令会通过前端,而实际的I/O则由存储控制器本身直接完成到磁盘的操作。

VMFS数据存储的可扩展性

传统上,来自各种来源(包括VMware专业服务最佳实践)的文档建议每个VMFS数据存储区推荐20至30个VM,有时甚至更少。 VMware Lab Manager的文档建议将集群中的ESX服务器数量限制为八个。这些建议的限制部分是由于SCSI预留对性能和可靠性的影响。大量使用某些功能(例如VMware快照和链接克隆)会触发大量VMFS元数据更新,因此需要锁定。在vSphere 4.1之前,可以通过使用SCSI永久预留短暂锁定整个LUN来获得对较小对象的可靠锁定。在预留期间尝试访问LUN的任何其他服务器都将失败,并且默认情况下将等待并重试多达80次。这种等待和重试增加了虚拟机的感知延迟并降低了吞吐量。在极端情况下,如果另一台服务器超过重试次数,则错误将记录在VMkernel日志中,并且I / O可能会作为故障返回到VM。

当所有共享数据存储的ESX服务器都支持VAAI时,ATS可以消除SCSI永久预留,至少由于获得较小的锁而导致的预留。 结果是,可以将数据存储区扩展到比以前更多的VM和连接的服务器。

Datera在单个VMFS数据存储中最多测试了128个VM。 由于ESX中最大可寻址LUN大小为2 TB,因此在测试中将VM的数量限制为128个,这意味着每个VM最多可占用16 GB,包括虚拟磁盘,虚拟交换和任何其他文件。 小于此大小的虚拟磁盘通常无法为OS和任何应用程序提供足够的空间。

使用iometer在虚拟机上生成和测量负载。对于某些测试,所有虚拟机都有负载。在其他情况下,例如当一组虚拟机启动、停止或挂起时,负载只被放置在运行中的虚拟机上。

当iometer工作负载运行在其他没有启动、停止或挂起的虚拟机上时,会运行诸如启动、停止和挂起大量虚拟机的测试。在所有运行iometer的虚拟机上运行其它测试,并在所有或某些较大的虚拟机子集上尽可能快地创建和删除VMware快照。

这些测试的结果表明,使用VAAI时,在使用VAAI之前或未使用VAAI之前测得的性能影响已被消除或显着降低,以至于数据存储可以可靠地扩展到单个LUN中的128个VM。

统计

ESX 5中的VMware esxtop命令在“磁盘设备”视图下提供了两组用于VAAI操作的新计数器。两组计数器都包含三个VAAI密钥原语。要查看VAAI统计信息,请从VMware ESX 5 CLI运行esxtop,然后执行以下步骤:

~ # esxtop
  1. 按“u”切换到磁盘设备统计视图。

  2. 按“f”选择字段,或按“o”更改其顺序。

    注意:这将选择一组计数器,而不是单个计数器。

  3. 按“o”选择VAAI统计和/或“p”选择VAAI延迟统计。

  4. (可选)通过分别按“f”、“g”和“I”来取消选择Queue Stats、I/O Stats和Overall Latency Stats,以简化显示。

  5. 要查看整个LUN字段,请按“L”(大写),然后输入一个数字(“36”足够宽,可以看到一个LUN的完整NAA ID)。

esxtop的输出类似于以下内容:

4:46:50am up 44 min, 281 worlds, 0 VMs, 0 vCPUs; CPU load average: 0.00, 0.00, 0.00
DEVICE CLONE_RD CLONE_WR CLONE_F MBC_RD/s MBC_WR/s ATS ATSF ZERO ZE-
RO_F MBZERO/s DELETE DELETE_F MBDEL/s
naa.60014050e4485b9bdc841d09478888e6 0 0 0 0.00 0.00 23 0 0
0 0.00 0 0 0.00
naa.600140515743d5195b0498b8aad6fdd2 1583 792 0 0.00 0.00 1322 0 23
0 0.00 0 0 0.00
naa.60014053937c69d44ff4e0b9e5a95398 0 0 0 0.00 0.00 0 0 0
0 0.00 0 0 0.00
naa.60014055fcf891d0c5b4a60a66942400 4746 3955 0 0.00 0.00 4402 0 45
0 0.00 0 0 0.00
naa.600140573d94f8e531d4d1ab5c8a72ef 0 0 0 0.00 0.00 23 0 0
0 0.00 0 0 0.00
naa.6001405a2e547c17329487b865d1a66e 3164 4746 0 0.00 0.00 5692 0 54
0 0.00 0 0 0.00
naa.6001405a3a17fe4483c46f994f74b4e6 0 0 0 0.00 0.00 0 0 0
0 0.00 0 0 0.00
t10.ATA_____ST3400832AS_____________ 0 0 0 0.00 0.00 0 0 0
0 0.00 0 0 0.00

esxtop中的VAAI计数器为:

计数器名称描述
DEVICE支持VAAI(支持的存储系统上的LUN)的设备按其NAA ID列出。可以从vCenter中的数据存储属性、虚拟存储控制台中的存储详细信息SAN视图或使用:
vmkfstools -P/vmfs/volumes/
命令获取数据存储的NAA ID。LIO LUN以naa.6001405开始。
注意:列出了除外部存储系统上的LUN以外的设备或数据存储,如CD-ROM、内部磁盘(可能是内部RAID控制器上的物理磁盘或LUN)和NFS数据存储,但VAAI计数器的值均为零。
CLONE_RD从该LUN中Full Copy执行读的次数
CLONE_WRFull Copy写入到该LUN的次数
CLONE_F此LUN上已经失败的Full Copy命令数
MBC_RD/sFull Copy命令从该LUN读的有效吞吐量(MB/秒)
MBC_WR/sFull Copy命令写到该LUN的有效吞吐量(MB/秒)
ATS此LUN上成功锁定命令的数量
ATSF此LUN上已经失败的锁定命令的数量
ZERO此LUN上成功完成的块清零命令的数量
ZERO_F此LUN上失败的块清零命令的数量
MBZERO/s此LUN上的块清零命令的有效吞吐量(以兆字节/秒为单位)

除非重启服务器,否则对操作进行计数的计数器不会返回零。 当没有相应原语的命令正在进行时,吞吐量计数器为零。

使用VAAI的VMFS数据存储和Storage VMotion操作之间的克隆,对一个LUN进行增量克隆读,对另一个LUN进行克隆写。 无论如何,克隆读列和克隆写列的总数应相等。

最佳实践

对于VAAI克隆操作,ESX可以增加或减少传输的数据块的大小,以适应可用的网络带宽。 在ESX 5 Shell中,过程如下。

检查VAAI克隆操作的当前数据传输块大小:

~ # esxcfg-advcfg -g /DataMover/MaxHWTRansferSize
Value of MaxHWTransferSize is 4096

对于vSphere 5,默认块大小为4096 kB。

增大VAAI克隆块的大小会导致使用单个EXTENDED_COPY命令复制更多数据,从而减少了协议开销和克隆操作所需的总时间:

~ # esxcfg-advcfg /DataMover/MaxHWTRansferSize –s 16384
Value of MaxHWTransferSize is 16384

通常,最大块大小为16384 kB可获得最佳性能。

LIO SCSI目标还允许调整命令队列大小,即正在运行的未完成SCSI命令的最大数量。 为了获得最佳性能,应将队列大小设置为最大值。

在相应的TPG上下文中,从targetcli shell中执行以下步骤:

/iscsi/iqn.20...a0e4a11/tpgt1> set attribute default_cmdsn_depth=128
/iscsi/iqn.20...a0e4a11/tpgt1>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值