纠删码[1]广泛应用于分布式存储系统[2]来保证数据可靠性。通过将用户数据编码生成多个块并保存至多个存储节点,纠删码存储系统可以保证在部分存储节点失效的情况下恢复出用户原始数据。与此同时,纠删码存储系统能通过并行化读取存储节点中保存的用户数据来提升数据读取操作的性能[3]

跨数据中心数据备份研究

由于单个数据中心存在数据失效和网络不可达等问题,跨数据中心分布式存储系统需要在各个存储节点执行数据备份操作。在单个数据中心存储节点失效时,纠删码存储系统将使用新存储节点替换失效节点,恢复出失效节点存储的数据。

为了保证存储数据的可靠性,纠删码存储系统需要执行数据分片操作和数据编码操作,生成多个数据分片,将编码后的数据写入到各个校区存储节点。同时,为了保证存储节点存储数据的负载均衡,大规模存储系统需要引入一定数量的逻辑控制节点[3]。逻辑控制节点需要根据各个存储节点负载情况,选择适合的存储节点写入分片数据。

图1展示了大规模纠删码键值存储系统数据写入过程。当用户端设备收到数据写入请求后,逻辑控制节点会选择4个存储节点执行数据写入操作。逻辑控制节点将用户数据编码生成数据分片A和数据分片B,编码生成校验分片A+B和校验分片A+2*B,并将这些分片写入存储节点。通过执行这些数据写入操作,纠删码存储系统能保证在部分存储节点失效的情况下依然可以获取原始的用户数据分片A和数据分片B。

图1 大规模纠删码键值存储系统数据写入过程

在实际存储系统中,逻辑控制节点下属的存储节点往往部署在同一校区的数据中心。当出现跨校区的主干网络拥塞和单校区数据中心失效等故障时,基于单校区数据中心的纠删码键值存储系统往往难以保证存储数据的可用性。

为了应对可能出现单个数据中心失效的问题,数据备份方案需要将用户数据存储到分布在各个校区数据中心的存储节点。当单个数据中心存储节点失效时,纠删码存储系统可以读取存储在其他校区数据中心的数据,恢复出失效数据中心的数据,实现对多个校区用户端设备持续提供在线存储服务。同时,为了提升数据备份操作的网络传输效率,纠删码存储系统需要充分利用各个节点之间的网络带宽资源。

跨校区数据备份方案

本文设计了跨校区数据备份方案来保证数据可靠性,并将数据备份方案部署到了复旦大学校园网络。

基于网络拓扑结构的逻辑控制平面

为了充分利用跨校区主干网的带宽资源,逻辑控制节点被部署在各个校区的数据中心来转发需要备份的用户数据,将接收到的备份数据写入存储节点。同时,使用层次化存储结构[3] 来归并数据备份过程中的数据传输操作,提升跨校区数据中心之间执行数据备份操作的性能,保障用户应用的存储服务质量。

图2展示了逻辑控制与存储空间分离的纠删码存储系统结构。用户端设备根据本机的IP信息获取其所在校区的逻辑控制节点,并将数据读写请求发送到该逻辑控制节点。在接收到数据写入请求时,逻辑控制节点将数据写入到其所属校区的存储节点。当数据量较小的情况下,逻辑控制节点会将数据缓存在本地存储空间来保证数据写入的效率。

图2 逻辑控制和存储空间分离的存储架构

在此基础上,逻辑控制节点需要执行数据备份操作,即将用户写入的数据保存到其他校区数据中心的存储节点。由于小数据量读写操作会引起较大数据传输时延,数据备份方案需要优化备份数据跨校区传输过程来提升数据传输操作的执行效率。

图3展示了跨校区数据备份操作的传输过程。当接收到本校区的用户端设备和应用服务器的数据备份请求后,本校区逻辑控制节点将缓存这些数据备份请求,并将其归并后传输到其他校区的逻辑控制节点来完成数据备份操作。

图3 跨校区数据备份操作的传输过程

由于诸多用户端设备需要将数据写入本校区逻辑控制节点,逻辑控制节点需要高效的数据备份机制,充分利用跨校区网络带宽资源来处理和传输这些备份数据。

基于对象内容的数据备份方案

为了提升跨校区数据备份操作的执行效率,本文提出了基于对象内容的数据备份方案,将多个待备份对象数据归并成数据包,保障备份数据的传输效率,减少数据备份操作所消耗的时间。

图4展示了用户端设备执行数据写入操作的过程。当用户端设备向本校区逻辑控制节点执行数据写入操作时,逻辑控制节点会将接收到的数据写入缓存区。当缓存的数据量超过一个阈值,逻辑控制节点将缓存的本地存储节点的备份数据打包发送到备份逻辑控制节点。

图4 逻辑控制节点数据写入过程

此外,逻辑控制节点会接收来自其他校区逻辑控制节点的数据备份请求,将备份数据根据编码规则写入各个存储节点。由于执行跨校区数据读取操作通常会带来较大的数据读取时延,纠删码存储系统能利用各个校区的备份数据来提升用户端设备读取数据的性能。

图5展示了跨校区逻辑控制节点之间数据备份操作的执行过程。当接收其他校区节点发送的备份请求,备份逻辑控制节点会将其中的对象写入到本校区的存储节点。为了保证各个校区可以充分利用备份提升数据读取操作的性能,备份节点所在校区用户发起数据读取操作时会直接从其存储节点读取用户数据。

图5 跨校区数据备份操作的执行过程

缓存备份数据读取性能优化

为了减少在线应用执行跨校区数据读取操作所消耗的时间,本文提出了基于域名解析的读写重定向方案。根据域名和源IP地址,域名解析服务器将返回同一校区的逻辑控制节点的地址。在此基础上,用户端设备将访问同一校区的逻辑控制节点,执行用户数据的读写操作。

在日常数据读写过程中,用户端设备通过HTTP协议来访问存储在远端的用户数据。根据纠删码存储系统的域名,用户端设备能访问存储在纠删码存储系统中的用户数据。通过将用户的数据读写请求重定向到同一校区的逻辑控制节点,基于域名解析的数据重定向方案有效避免了跨校区数据传输操作带来的开销。

图6展示了基于域名解析的读写重定向方案的执行过程。逻辑控制节点将注册信息发送到域名解析服务器。在不同校区的用户端设备通常会被分配不同地址段的IP地址,域名解析服务器能根据访问的域名和源IP地址,分析用户端设备所处的校区,将相应校区的逻辑控制节点IP地址返回给用户端设备,实现将访问用户数据的请求重定向到统一校区的逻辑控制节点。

图6 读写重定向执行过程

原型纠删码键值存储系统实现

为了测试该跨校区数据备份方案的有效性,本文实现了原型纠删码键值存储系统执行数据备份操作。由于小数据量读写操作往往会带来较大时延开销,基于对象内容的数据备份算法需要缓存用户写入的数据,并将其发送到备份逻辑控制节点。

图7展示了逻辑控制节点中数据备份功能模块的软件架构。逻辑控制节点接收从用户端设备发送的数据写入请求,并将待写入的数据存放到缓存区。当缓存区的数据量超过一个阈值,备份请求生成器生成数据备份请求,实现将数据备份请求通过通信接口发送到备份逻辑控制节点和存储节点。由于缓存区的数据保存于本地存储空间,纠删码存储系统能保障在线应用读写数据的性能。

图7 逻辑控制节点缓存区设计

为了描述备份对象的特性,原型系统在逻辑控制节点之间传输的备份数据中加入了元数据,生成数据包发送到备份逻辑控制节点。

图8展示了各校区逻辑控制节点之间传输备份对象数据的过程。发起数据备份操作的逻辑存储节点将多个对象组成对象数据包,并在传输数据的头部加上元数据,发送到备份逻辑控制节点。

图8 逻辑控制节点传输对象的过程

当备份逻辑控制节点接收到其他逻辑控制节点发送的数据备份请求时,会将备份数据分解为用户写入的对象,并写入其所在数据中心存储节点。这样当备份节点所在校区用户端设备执行数据读取操作时,就可以直接从备份节点读取数据。

测试实验

实验设置

为了验证本文中提出的跨校区数据备份算法的有效性,本文设计了测试实验,在复旦大学邯郸校区和江湾校区数据中心部署了25台服务器作为用户端设备、逻辑控制节点和存储节点来测试不同数据备份方案的性能。

实验测试了在各种数据量情况下 , 分析批量传输操作对备份用户数据的影响,以及从邯郸校区向江湾校区数据备份操作的性能,主要比较了跨校区执行数据备份操作消耗的时间和吞吐率。其中,吞吐率为单位时间内备份的数据量,单位为MB/s。

此外,实验将分析数据备份存储对数据读取操作性能的影响。实验统计了不同数据量情况下数据备份操作和数据读取操作的时延和吞吐率。其中,时延为完成数据读取操作需要的时间,吞吐率为单位时间用户端设备读取的数据量。

数据备份操作性能分析

为了分析在数据备份过程中对多个对象执行数据归并操作对数据传输效率的影响,实验测试了对象归并前后备份数据的效率。图9展示了不同对象大小情况下,数据备份操作的性能。

图9(a)展示了不同对象大小情况下,数据备份操作消耗的时间。由于跨校区主干网存在较大数据传输时延,频繁执行小数据量的备份操作会消耗较多的时间。通过归并对象数据,数据备份方案能充分利用跨校区网络带宽资源,减少数据备份操作消耗的时间。

(a) 数据备份操作消耗的时间

图9 不同对象大小情况下,数据备份操作的性能

图9(b)比较了不同对象大小情况下,数据备份操作的吞吐率。当需要备份的对象数据量较小的情况下,通过归并小数据量备份操作,基于对象内容的数据备份方案可以有效提升数据备份操作的跨校区传输性能。

(b)数据备份操作的吞吐率

图9 不同对象大小情况下,数据备份操作的性能

数据读取操作性能分析

在没缓存的情况下,用户端设备将访问本校区的逻辑控制节点,获取保存在其他校区存储节点的数据。为了分析跨校区的数据读取性能,实验将测试各个校区缓存的备份数据对数据读取操作性能的影响。图10展示了不同数据量情况下,逻辑控制节点执行数据读取操作的性能。

图10(a)展示了不同数据量情况下,数据读取操作的时延。当读取数据量较小,由于需要执行跨校区数据传输操作,在没有缓存备份数据情况下用户端设备往往消耗较长的时延来读取存储节点保存的数据。

(a)数据读取操作的时延

图10 不同数据量情况下,逻辑控制节点所在校区数据读取操作的性能

图10(b)展示了不同数据量情况下,数据读取操作的吞吐率。当执行小数据量读取操作时,用户端设备能读取逻辑控制节点所在校区的存储节点保存的备份用户数据,减少跨校区数据传输带来的时延,提升纠删码键值存储系统数据读取操作的效率,保障在线应用的用户体验。

(b)数据读取操作的吞吐率

图10 不同数据量情况下,逻辑控制节点所在校区数据读取操作的性能

总结来看,本文研究了跨校区纠删码键值存储系统数据备份方案。通过合理使用跨校区主干网络资源,设计了基于网络拓扑的逻辑控制平面。为了减少小数据量传输对跨校区数据备份操作和数据读写操作的影响,提出了基于对象内容的数据备份方案和基于域名解析的读写重定向方案。同时,实现了原型纠删码存储系统,并部署了提出的数据备份方案。依托复旦大学校园网络,实验验证了该纠删码存储系统数据备份方案可以有效地提升数据备份操作的执行效率,减少跨校区数据读写操作的传输开销。

参考文献

[1]SATHIAMOORTHYM,ASTERISM,PAPAILIOPOULOSD,et al.XORing elephants: novel erasure codes for big data[C]// Proceedings of IEEE International Conference on Very Large Data Bases (VLDB 13). IEEE, 2013, 6: 325-336.

[2]GHEMAWAT S, GOBIOFF H, LEUNG S T. The Google file system[C]// Proceedings of the 19th ACM Symposium on Operating Systems Principles (SOSP 03). ACM, 2003,37: 29-43.

[3]沈佳杰,朱良杰,向望,等.大规模高校纠删码键值存储读写负载均衡研究[J].深圳大学学报理工版 ,2020,37 (S1):175-183.

作者:沈佳杰 万俨慧 向望 赵泽宇(复旦大学校园信息化办公室)

责编:项阳

声明:本文来自中国教育网络,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。