searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

VAAI特性之XCOPY实现以及测试

2023-12-15 06:52:25
53
0

VAAI功能简介

VMware进行虚拟机迁移克隆等操作时,都涉及到虚拟机文件的数据传输,传统的数据管理过程如图1所示。

步骤1,通过网络将数据从存储阵列读取到EXSI主机。

步骤2,数据处理。

步骤3,通过网络将数据重写回存储阵列。

一定数量VMware虚拟机同时进行迁移、克隆等操作时,会出现网络带宽消耗严重、CPU和内存资源大量占用等问题。

针对上述问题,VMware vSphere 5.0及以上版本推出VAAI存储特性(VMware vSphere Storage APIs Array Integration,也称为硬件加速)。VAAI工作是将VMware主机的存储数据工作卸载到共享存储阵列,这样不仅可以减轻VMware主机CPU、内存的压力,而且降低对网络资源的要求。VMware VAAI集成特性如下:

1、Full Copy,虚拟机迁移、克隆场景,数据复制工作卸载到存储阵列。

2、Block Zero,创建虚拟机、格式化虚拟磁盘场景,大量块置零工作卸载到存储阵列。

3、Hardware-Assisted Locking(ATS),VMFS作为多主机共享的集群文件系统,通过锁机制保障数据读写安全性。VMware通过ATS细化锁粒度、缩小锁范围,提高VMFS的IO并发能力。

4、Thin Provisioning Unmap,存储精简配置场景下的空间回收,减少存储空间的使用。

VAAI特性原理

VAAI工作是将VMware主机的存储数据工作卸载到存储阵列,本质是数据卸载,其卸载功能是嵌入到数据流的处理过程,而数据流走的是SCSI。因此,VAAI集成特性都是采用SCSI命令,更确切地说,都是走带内SCSI命令,VAAI集成特性指令集如表1所示。

VAAI特性原理如图2所示,其主要应用如下:

  1. VMware作为存储阵列的主机侧,开启VAAI后,上述VAAI特性的数据处理不再走传统SCSI数据处理流程,而是走带内SCSI数据处理流程。
  2. SCSI命令经过iSCSI传送到存储阵列的SCSI Target Module,如果SCSI Target Module支持该SCSI命令,则会对该SCSI命令解析并执行相应操作,返回正确的执行结果给VMware;否则返回异常给VMware并告知VMware主机,存储阵列不支持该SCSI命令对应的VAAI特性。
  3. VMware主机接收相应的SCSI错误消息,将会重启传统SCSI数据管理流程。以Full Copy为例,当VMware主机收到存储阵列SCSI异常消息,则采用传统SCSI 数据处理流程,Full Copy会在VMware主机和存储阵列多次SCSI命令交互,数据从存储阵列读取到主机,再从主机写回存储阵列。

XCOPY特性原理

Full Copy工作原理是当VMware进行虚拟机文件复制或虚拟机迁移时,把SCSI指令卸载到存储阵列,让存储阵列在底层完成复制功能。

如图3所示,Full Copy完全复制,VMware下发SCSI EXTENDED_COPY指令,该指令携带待复制数据的源、目的地址,待复制数据总空间。存储阵列直接基于EXTENDED_COPY信息进行数据复制操作,这样避免VMware主机无效数据拷贝,减少IO路径和网络负载,提高数据复制效率。

STGT架构

VMware vSphere 5.0及以上版本支持VAAI存储特性,这就要求SCSI Target Module支持VAAI SCSI Primary Command。我们采用开源STGT。backing store支持SSAN,使其支持VAAI特性,其架构如下图所示。

  1. STGT中tgtd运用EPOLL机制实现与tgtadm、initiator的通信,tgt负责处理tgtadm控制面、initiator数据面的请求。
  2. iSCSI SPC协议支持VAAI 特性指令EXTENDED_COPY、WRITE_SAME_16、COMPARE_AND_WRITE、UNMAP。
  3. STGT支持多种backing store后端存储,Backing store注册函数中实现VAAI存储特性的数据处理。

 

XCOPY实现流程

XCOPY实现的本质是数据复制工作卸载到存储阵列,在存储阵列处理SCSI Primary Command,操作时序如下图所示。其大致可分为iSCSI SPC协议对VAAI XCOPY的支持,VAAI Full Copy数据处理过程。

SPC-3协议文档指出“A Third-Party Copy(3PC) bit set to one indicates that the SCSI target device supports third-party copy commands such as the EXTENDED COPY command”,因此spc_inquiry函数对Standard INQUIRY data format(见下图)第5个字节中比特位3PC置1操作,保证iSCSI协议支持VAAI Full Copy。

Xcopy数据处理部分对SCSI Primary Command指令0x84、0x83处理,spc_recv_copy_result(0x84)用来处理指令0x83需要的协议字段target_descriptors、segment_descriptors;spc_xcopy(0x83)解析协议字段target_descriptors、segment_descriptors获取数据复制所需源卷、目的卷的offset、size信息,bs_rbd_request实现从源卷到目的卷的数据复制。

XCOPY代码实现

定义了一个XCOPY的结构体,记录CSCD和segment的相关信息;

 

 

Libiscsi测试XCOPY

测试xcopy:iscsi-test-cu --test=SCSI.ExtendedCopy iscsi://x.x.x.x/target1/1 -d

测试ReceiveCopyResults:

iscsi-test-cu --test=SCSI.ReceiveCopyResults iscsi://x.x.x.x/target1/1 -d

 

Vmware测试

所需资源如下:

ESXi版本:6.5

VMware版本:6.5

设备

配置

数目

备注

ESXi

ESXi 6.5

2台

每台需要至少两个网卡,需要冗余;内存至少4个G;

vSphere vCenter 6.5

操作系统为Windows2012

1台

内存至少8个G;2个CPU;

存储ceph环境

Centos7

4台

开启iSCSI

 

Windows Server 2012中需要安装 Adobe Flash Player

访问vcenter web client,用户名以及密码https://x.x.x.x/vsphere-client/?csp

如图:

测试结果如下:

打开xcopy开关,时间需要几十秒;

 

网络带宽,ens33是外网,ens37是ceph内网,主要带宽是在ceph内网;

日志记录如下:

可以通过高级设置关闭xcopy特性;

 

修改这个选项值为0;

 

通过esxcli命令行确认一下;

 

克隆一个虚拟机需要的时间大概几几十分钟;

 

网络带宽如下图,ens33是iscsi网关与vmware交互的,ens37是ceph内部使用;

 

 

0条评论
0 / 1000