基于分布式存储的windows odx实现与优化 -九游会j9官网ag登录入口

引用
作者简介:文刘飞,杉岩数据联合创始人 引擎架构师

编者按:服务器虚拟化技术在提高服务器利用率的同时,也消耗了大量的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操作变得没有任何意义。

图1 windows odx基于令牌的复制操作

如上图所示,利用odx实现数据复制的主要操作流程如下所示:
  • 用户通过windows explorer或命令行执行文件复制/移动。
  • windows 8或windows server 2012发送一个读请求给存储控制器要求执行数据拷贝(populate_token命令,包含了源lba/block length pair list)
  • 存储控制器创建代表数据的令牌并发送回主机(sp创建pit token)
  • 主机使用令牌发起写请求给存储控制器(write_using_token命令,包含一个目标lba/block length pair list)
  • 存储控制器根据令牌信息,验证令牌的有效性和源数据位置,并把数据传输数据到目标位置。
  • 最后存储控制器把odx复制的结果发送给主机(主机使用receive_rod_token_information命令查询结果)

为了实现odx功能,odx增加了如下几个scsi命令:
  • populate_token命令,发送卸载读请求给存储控制器,请求针对虚拟磁盘lun a的某段数据产生一个数据令牌。
  • write_using_token命令,携带数据令牌发送卸载写请求给存储控制器,请求把该令牌所代表的数据复制到指定位置。
  • receive_rod_token_information 命令,发送卸载查询请求给存储控制器,查询卸载读/写的结果。

3.odx在分布式存储的优化

3.1令牌的管理和同步
对于分布式存储集群,通常会提供多个存储控制器来实现io的并发访问以及io路径的高可用(如图2所示)。同时windows服务器通过iscsi mpio和分布式存储连接以后,odx可能会对不同的存储控制器分别下发populate_token命令和write_using_token命令。这就要求某一个存储控制器产生的数据令牌需要和其他存储控制进行实时同步。同时令牌具有一定的生命周期, 因此存储控制器需要保证数据令牌的唯一性,并且定期清理已经过期的数据令牌。

图2 提供多个iscsi服务端的分布式存储集群


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资源。下图为windows 2012服务器通过1g网络连接sandstone usp进行数据复制的测试。

从任务管理器可以看到,在做数据复制时,网络带宽和内存、cpu消耗都不大,特性是网络带宽只占用了200k左右,但是数据复制显示的速度平均有200mb,远超过1g网络带宽的限制。(说明一下:200k是windows和存储控制器直接带宽,windows只是发送控制命令,实际的数据传输是在存储网络间进行的。)

以上,就是我们在windows odx上的具体优化实践,本着开放、务实的技术理念,未来,将积极吸取行业的优秀经验和技术产品,从而为用户打造一套更加完善的需求九游会j9官网ag登录入口的解决方案。(责编/魏伟)
  • 大小: 69.9 kb
  • 大小: 120.7 kb
  • 大小: 144.8 kb
1
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • dds(data distribution service数据分发服务)是对象管理组织omg的有关分布式实时系统中数据发布的一个较新的规范(2004年12月发布1.0版,2007年1月发布1.2版)。dds规范采用了发布/订阅体系结构,但对实时性要求提供更...

  • 品牌:微软操作系统1windows server 2012概论 与往常不同的是,今年在服务器领域发生了翻天覆地的变化。从底层的新品架构推动服务器基础设施扑面而来的升级换代,到构建云基础架构平台上分布式处理系统应对大数据...

  • 例如,一个分布式群集的节点,可以是server,pc,hpc,可以是跨机房,跨地区,跨国,可以是windows,linux,unix,可以分布式计算里面再包括多个群集,多个节点,基本上分布式群集最大的一个特点,就是对提供计算的...

  • 首先我们先来看下高性能群集与其它几种群集的不同   高可用群集:群集所有节点,来维持一个应用的持续运作,如果当前应用所在节点失败,自动故障转移至其它节点 负载均衡群集:群集所有节点来平衡一个应用的访问...

  • 存储和交付体系结构组合在一起,使基于编排的应用场合的吞吐率有了极大的提高。 该编排引擎通过自动事务缓冲池进一步优化了性能。此外,该引擎的向外扩充模型允许编排处理以负载平衡的方式分散在一个 biztalk 群集...

  • 我们就用这个来实现发送端口与接收端口的关联。在条件表达式中设置: bts.receiveportname == receivefiles  10. 启动biztalk 应用程序验证程序  右击hello world应用程序选择start。打开刚才配置的接收文件夹...

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • stm32单片机fpga毕设电路原理论文报告基于ide硬盘的数字图像存储技术研究本资源系百度网盘分享地址

  • 适合rust入门。深入浅出,事无巨细,远胜市面上所有入门书。而且是免费的

  • vb语言vb房屋租凭管理系统毕业设计(源代码 系统)本资源系百度网盘分享地址

  • 这个示例代码,我们实现了一个用 c 语言判断一个数是否为素数的函数,并通过 main() 函数来测试这个函数。整个过程简单明了,代码结构清晰,易于理解和修改。这个示例展示了 c 语言中函数的定义和调用,以及条件判断和循环等基本语法的使用。

  • 层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例层次化网络设计案例

  • 1、嵌入式物联网单片机项目开发实战,每个例程都经过实战检验,简单好用。 2、代码同系列芯片理论是通用的。其他单片机型号请自行更改。 3、软件下载时,请注意下载方式以及对应的下载工具。 4、技术v:wulianjishu666; 5、如果接入其他传感器,请查看发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。

  • 四脚板凳u型焊接端子冲压成形机sw18可编辑_零件图_机械工程图_机械三维3d建模图打包下载.zip

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • vb语言vb毕业生管理系统设计(论文 源代码)本资源系百度网盘分享地址

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • 安装 swoole-loader 扩展 1、确定 php 版本,线程安全和非线程安全,可在终端(需要登录到服务器,宝塔面板可直接在菜单——终端)中输入 php -v 2、查找扩展路径:php -i | grep extension_dir 3、配置 php.ini,在 php.ini 的最后一行添加:extension=swoole_loader74.so 4、重启php

global site tag (gtag.js) - google analytics
网站地图