-
纠删码(erasure codes)[1-2]是云存储中一种较为先进的数据容错技术,相较于传统的多副本技术,采用纠删码提供数据冗余存储,会极大地降低系统的存储开销。如QFS文件系统(qunantcast file system)和MapReduce框架的数据存储后台采用纠删码进行冗余存储,比原来的HDFS采用多副本技术节省了50%的存储空间[3]。然而,纠删码也引发了2个新问题:数据修复[4]和数据更新[5]。在数据更新中,由于纠删码提供的冗余校验数据是多个原始数据的线性变换组合,因此,当原始数据更新时,为了保证数据一致性,其校验数据也需要进行更新(称为校验更新)。根据文献[6-7]提供的数据访问记录,可以得出以下两个结论。
1) 更新非常普遍,在大约1.73亿次的写请求中,超过91%的请求是更新数据;
2) 更新的数据量小,在所有的更新请求中,超过60%的更新小于4 KB。
数据中心由成千上万个节点组成,其网络拓扑结构非常复杂,数据中心的数据更新性能往往受到网络的限制[8],如何降低校验更新的网络开销是纠删码中亟待解决的问题。为了优化网络开销,国内外学者提出了很多数据更新方法。如PUM-P算法是利用更新管理器(update manager)计算数据变化(delta值),并传输delta值给相关的校验节点进行更新[9];PDN-P算法摒弃更新管理器,直接通过数据节点计算并传输delta值到相关的校验节点[9];T-Update算法发现传统的数据传输模型是星型结构,不利于充分利用网络带宽,同时容易造成单点瓶颈,因此,将传输模型改为树型结构,增加网络并行度[10]。文献[8]提出CAU(cross-rack-aware updates)算法,将数据中心的各个存储节点按照机架(rack)分组,为了减少机架之间的网络开销,提出了2种可选的更新方式:
1)校验增量更新(parity-delta update),当数据机架(专用于存放数据节点)的更新量大于校验机架(专用于存放校验节点)的更新量时,选择将同一机架中的所有delta值都汇聚到一个数据节点(数据转发节点),再由数据转发节点计算并转发校验更新给各个相关的校验节点;
2)数据增量更新(data-delta update),当数据机架的更新量小于校验机架时,分别将各个数据节点的delta值发送给同一个校验节点(校验转发节点),再由校验转发节点计算校验更新并转发给其他校验节点[8]。
本文的主要目标是对数据更新的网络传输进行优化,基于CAU算法的思想,提出了改进算法—TAR-CAU,该算法针对更新数据量普遍较小的现象,借鉴tar打包原理,提出将同一个节点中的多个更新数据打包成一个块,再利用CAU算法更新,从而减少网络往返时间,降低发送端与接收端的更新处理频率,提高数据更新的效率。
本文的主要研究工作有以下3点。
1) 基于CAU算法,提出了TAR-CAU算法。该算法基于XOR进行数据更新,同时,利用更新数据量小的特点,将多个更新打包传输,从而减少网络往返次数,提高数据更新效率。
2) 实现原型系统。本文基于Go语言在Ubuntu 18.04平台实现了TAR-CAU原型系统,该系统包含中央控制器、算法调度器和节点代理的统一调度框架,不仅可以稳定运行TAR-CAU算法,同时,可以方便扩展并运行其他数据更新算法。
3) 验证算法的有效性。本文基于仿真实验和本地集群实验,利用微软剑桥研究院和哈佛NSR提供的真实数据集进行实验,与CAU算法进行了对比,从实验的结果来看,本文提出的算法能够有效提高数据更新吞吐量。
-
本文通过微软剑桥研究院提供的真实数据集进行仿真实验,数据集记录了来自微软13个服务器,179块磁盘中36个分区一周内的访问日志,每条记录包含访问时间、请求地址、访问数据大小等信息,本文随机选择了3个数据集进行仿真测试,仿真实验平台采用Go语言环境搭建,通过改变块大小、节点数量等参数,以平均更新时间、吞吐量为指标点,与CAU算法、基本更新算法(简称Base)进行了比较。仿真环境如表1所示。
属性 值 CPU Intel Core i7 内存 16 GB DDR3 磁盘 1 TB SSD 网络带宽/MB 100 操作系统 Mac OS 数据集 hm_0, hm_1, rsrch_1 仿真实验平台 自建(Go语言) 1) 平均更新时间
如图8所示,本文比较了3个数据集的平均单块更新时间,发现TAR-CAU算法更新效率最高,平均更新时间为0.0094 s,时间效率比BASE提高54%,比CAU提高30%。
2) 吞吐量
如图9a中,尽管本文提出的算法TAR-CAU需要在进行网络传输之前进行打包处理,增加了CPU开销,但是由于降低了网络传输的频率,因此,更新效率大大提高,在3种数据集中表现最佳,吞吐量比BASE提高了119%,比CAU提高了43%。
如图9b中,本文比较了常见的RS(
$ n $ ,$ {k} $ )配置:RS(4, 2)、RS(9, 6)、RS(16, 12),机架容量(rack size)分别设置为2、3、4。仿真结果表明,TAR-CAU的吞吐量比CAU提高了44%。如图9c中,通过改变块大小(block size)的实验对比发现,TAR-CAU的吞吐量提高了60%。
-
本文采用Go语言在Ubuntu 18.04平台实现了基于TAR-CAU算法的原型系统,并在本地局域网搭建集群进行测试,以了解在较为真实的环境中TAR-CAU算法的性能。局域网内部署了3台服务器(2台华为H12M-03,1台华为H22M-03),利用pve虚拟管理平台[14]搭建了虚拟机集群环境,共有13台虚拟机,网络拓扑结构如图10所示,主要由3个部分组成:中央控制器(central controller)、算法调度器(scheduler)以及节点代理(agent)。其中,中央控制器位于元数据服务器(metadata server, ms)中,负责整个流程控制,包括发送命令给节点代理、收集代理返回的响应ACK、统计时间和跨域流量等;而算法调度器是整个系统的大脑,负责根据指定的算法指挥中央控制器进行调度,算法调度器也位于元数据服务器中;节点代理负责接受中央控制器的命令,执行相关任务,并返回给上级ACK。
每台虚拟机的配置如表2所示。
属性 值 CPU 2核 内存/GB 2 磁盘/GB 32 带宽/GB·s−1 1/0.2 操作系统 Ubuntu 18.04 数据集 hm_0, hm_1, rsrch_1 为了模拟真实的网络环境,本文采用Linux tc工具[15]进行网络带宽限制,设置机架内部带宽1 Gbps,机架外部200 Mbps,该设置可以根据具体的应用场景自行配置。与仿真实验一致,本文采用hm_0、hm_1、rsrch_1这3个数据集进行测试。
1) 平均更新时间
如图11所示,设置块大小为4 MB,实验结果与仿真结果大体相同,TAR-CAU算法表现最佳,平均单块更新时间为0.4544 s,相比Base节省约78%的时间开销,相比CAU节省近70%的时间开销。
2)吞吐量
如图12a所示,设置块大小为4 MB,通过3种数据集对比,在吞吐量方面,本文提出的TAR-CAU算法大大优于Base和CAU,平均吞吐量比Base高出9倍,比CAU也高出206%,这样的表现也是出乎意料。当然,值得注意的是,如前所述,TAR-CAU的算法性能依赖于用户访问数据的位置,如果rangeL和rangeR过于靠近边界(0和blockSize),TAR-CAU的算法表现甚至会略弱于CAU。
图12b展示了不同块大小对各个算法的影响,当块大小较小时(如1 M),CAU算法略优于TAR-CAU,原因可能是rangeL和rangeR过于靠近边界,导致打包产生的收益不如打包带来的额外开销。而随着块大小的逐渐增大,TAR-CAU算法的优势愈发明显,尤其是在块大小达到16 M以上时,频繁IO的开销逐渐成为了性能的主导因素,所以,仅传输delta值的TAR-CAU算法表现更佳。
由于引入了打包和解包过程,因此,TAR-CAU算法相比于CAU算法会产生额外的CPU开销,如图13所示,设置数据块大小分别为1、4、16、64 MB,同时随机产生100个数据块更新,每个数据更新的大小都不超过数据块大小的
$ 1/100 $ ,本文在一台虚拟机中测试打包与解包性能发现,打包与解包时间均不超过300 ms。因此,对于整体的数据更新性能影响可以忽略不计。
TAR-CAU: An XOR-Based Data Update Scheme
doi: 10.12178/1001-0548.2022156
- Received Date: 2022-05-23
- Rev Recd Date: 2022-10-10
- Available Online: 2023-10-08
- Publish Date: 2023-09-30
-
Key words:
- cloud storage /
- data update /
- erasure coding /
- network /
- tar
Abstract: In an erasure-coded cloud storage system, the performance of data updates is often limited by network overhead. To end this, based on Cross-Rack-Aware Update (CAU) data update scheme, we propose an XOR based Tape ARchive Cross-Rack-Aware Updates (TAR-CAU) data update scheme. TAR-CAU is designed in terms of the two design primitives: 1) as the updates are small, we can pack several data blocks of data update into one block to reduce the number of network round trips, and accelerate the data transmission; 2) XOR-based data update scheme is used to accelerate data encoding and decoding. The simulation experiments and local cluster experiments show that, when the data updates are small, TAR-CAU can increase the data update throughput by at least 44% compared with the CAU.
Citation: | XIAO Yifei, ZHOU Shijie. TAR-CAU: An XOR-Based Data Update Scheme[J]. Journal of University of Electronic Science and Technology of China, 2023, 52(5): 773-779. doi: 10.12178/1001-0548.2022156 |