基于分布式存储的Windows ODX实现与优化
个性八八九九 2022年10月21日发布
头像下载到手机:长按需要下载的头像保存图片到手机
基于分布式存储的Windows ODX实现与优化
***虚拟化技术在提高***利用率的同时,也消耗了大量的CPU、内存和网络带宽资源,*文从存储卸载加速的背景出发,探讨基于分布式存储的Windows ODX的实现与优化。
1.存储卸载加速的背景
***虚拟化成为数据中心的主流技术,大量运行的虚拟机大大提高了***的利用率,对虚拟机进行批量的创建、**、迁移极大的简化了IT运维的同时,也带来了大量的数据拷贝*作,进而消耗了***的大量CPU、内存和网络带宽资源。
针对于这些问题,VMware提出了VAAI(vStorage API for Array Integration)接口,希望将VMware基*架构的某些*能委托给存储阵列去实现,通过减少数据对于虚拟机和物理***的资源消耗,从而提升VMware基*架构的*能。
同时,Microsoft也在Windows 8或Windows Server 2012中新增了卸载数据传输(Offloaded Data Transfer ODX)这一*能,期望把数据拷贝*能卸载到存储硬件中,降低虚拟化***的开销。
*文将和您一起探讨Windows ODX的实现与优化
通过配合支持卸载的存储硬件使用,ODX可在不占用 Hyper-V 宿主机 CPU 资源的情况下通过存储设备执行文件***作,由存储设备直接从一个存储位置读取数据,并写入到另一个位置。卸载数据传输的设计符合T10 XCOPY Lite规范,对数据拷贝加速进行了端到端的设计,理论上支持在不同存储厂商的存储设备之间进行数据**。
2.ODX实现原理概述
ODX使用基于令牌的机制在智能存储阵列内部或之间**数据。待**的源文件和目标文件可以在同一个卷上、同一*****的两个不同卷、或者多个***共享的群集共享卷上。
令牌是一个512字节的随机数,令牌代表了一个或多个extent(最多128MB的实际数据),一般是一个文件或文件的一部分。令牌由存储控制器通过哈希算法产生,同时令牌具有一定的生命周期。因此微软一直认为安全*和兼容*是Windows ODX区别于 VMware VAAI的一个显著特征。
由于传给主机的是代表数据的令牌,而不是数据*身,因此大大提高了数据**的*能。同时由于ODX的命令交互比较多,因此ODX文件**要求文件至少为256KB,太小的文件所产生的开销会使得XCOPY*作变得没有任何意义。
用户通过Windows Explorer或命令行执行文件**/移动。
Windows 8或Windows Server 2012发送一个读请求给存储控制器要求执行数据拷贝(POPULATE_TOKEN命令,包含了源**A/Block len*** pair list)
存储控制器创建代表数据的令牌并发送回主机(SP创建PIT token)
主机使用令牌发起写请求给存储控制器(WRITE_USING_TOKEN命令,包含一个目标**A/Block len*** pair list)
存储控制器根据令牌**,验证令牌的有效*和源数据位置,并把数据传输数据到目标位置。
最后存储控制器把ODX**的结果发送给主机(主机使用RECEIVE_ROD_TOKEN_INFORMATION命令查询结果)
为了实现ODX*能,ODX增加了如下几个S**I命令:
POPULATE_TOKEN命令,发送卸载读请求给存储控制器,请求针对虚拟磁盘LUN A的某段数据产生一个数据令牌。
WRITE_USING_TOKEN命令,携带数据令牌发送卸载写请求给存储控制器,请求把该令牌所代表的数据**到指定位置。
RECEIVE_ROD_TOKEN_INFORMATION 命令,发送卸载查询请求给存储控制器,查询卸载读/写的结果。
3.ODX在分布式存储的优化
3.1令牌的**和同步
对于分布式存储集群,通常会提供多个存储控制器来实现IO的并发访问以及IO路径的高可用。同时Windows***通过iS**I MPIO和分布式存储连接以后,ODX可能会对不同的存储控制器分别下发POPULATE_TOKEN命令和WRITE_USING_TOKEN命令。这就要求某一个存储控制器产生的数据令牌需要和其他存储控制进行实时同步。同时令牌具有一定的生命周期, 因此存储控制器需要保证数据令牌的唯一*,并且定期清理已经过期的数据令牌。
3.2 ODX相关参数调优
ODX进行数据**时,默认传输的一个数据片段大小为64MB,支持传输的最大数据片段为256MB。由于不同的分布式存储环境,所配置的HDD、SSD磁盘数量各不相同,因此不同环境最有的数据传输切片大小也各不一样。ODX支持通过存储的VPD描述去建议最优的数据切片大小。因此可以结合分布式存储的配置情况,选择最优的数据传输片段大小。
考虑到分布式存储在产生数据令牌时,需要在各存储控制器之间通过网络进行实时同步,时延开销比较大,因此可以通过配置参数,最大化数据令牌所代表的数据块大小,减少POPULATE_TOKEN命令的发送次数。
3.3 ODX相关的流量控制以及一些异常处理
ODX进行数据**时,通常都是大数据块的读写,这样会对存储***的硬盘带来很大的压力,进而影响对其他IO业务的处理。因此有必要在同时存在其他业务IO时,对ODX相关的IO做一定的流量限制。
在某些异常场景,WRITE_USING_TOKEN命令的目标位置和源文件位置会发生重叠,这样有可能会导致数据处理不正确,因此在执行写*作前需要增加一些位置校验。
4.ODX的优化效果
杉岩数据的SandStone UPS作为企业级软件定义存储产品,对Windows ODX实现了完美的支持,借助ODX,SandStone UPS大大节省***的网络带宽和CPU资源。
从任务**器可以看到,在做数据**时,网络带宽和内存、CPU消耗都不大,特*是网络带宽只占用了200K左右,但是数据**显示的速度平均有200MB,远超过1G网络带宽的限制。(说明一下:200k是Windows和存储控制器直接带宽,Windows只是发送控制命令,实际的数据传输是在存储网络间进行的。)
以上,就是我们在Windows ODX上的具体优化实践,*着开放、务实的技术理念,未来,将积极吸取行业的优秀经验和技术产品,从而为用户打造一套更加完善的需求解决方案。