基于蒙特卡洛法的分布式存储系统仿真器的设计

2021-03-07 09:13:20张浩
电子技术与软件工程 2021年19期
关键词:仿真器副本存储系统

张浩

(武汉经济技术开发区(汉南区)行政审批局 湖北省武汉市 430056)

1 绪论

1.1 课题研究背景和意义

5G、物联网、云计算等诸多技术快速发展,海量的终端智能设备上每时每刻都在产生着庞大的信息数据[1]。数据规模呈现指数式增长,对数据存储、管理提出了更高要求,探索新型存储技术也成为了构建大规模存储系统的关键。分布式存储系统通过高速网络连接大量通用存储服务器,形成一个整体对外提供存储服务。由于其可扩展性高的特点,分布式存储系统被广泛部署于数据中心,以支持云存储与大数据等业务。

分布式存储通常包含成千上万的商品类硬件与开源软件,其中软硬件部件故障极为常见[2]。为了有效缓解部件失效导致的数据丢失等可靠性风险,副本与纠删码等冗余技术被广泛部署于分布式存储之中。当部件失效导致数据不可用或丢失时,存活的冗余数据可用来修复上述离线数据,从而保证了业务的持续性与数据的完整性。在分布式存储的实际应用中,数据可靠性受到应用规模、使用环境、运维水平、部件质量、冗余策略、修复机制等诸多条件影响,任何条件的改变均可能导致数据可靠性的急剧变化,通过在系统运行时观测可靠性指标与风险并予以应对往往为时已晚。为快速而准确评估上述因素对于数据可靠性地影响,以便部署单位能够及时发现隐患并调整策略,研究并开发了一套基于“事件驱动型模型”的分布式存储系统仿真器。本文主要探讨分布式系统中存储的部分,对客户端以及请求处理等层次暂不作讨论。

1.2 国内外发展现状

大型主机在上世纪60年代被发明出来,在很长的一段时间内因其超强的计算能力以及I/O处理能力几乎主导了计算机行业乃至商业计算领域的发展。而随着计算机系统朝着网络化的发展,传统的集中式处理-存储开始暴露出了明显的弱点:技术成本高、配置昂贵、具有明显的单点问题。一台大型主机出现了故障,将使整个系统将处于不可用的状态。阿里巴巴公司在2008年提出了“去IOE”的概念,并启动了“去IOE”计划,逐步构建自己的分布式系统——盘古[3]。目前比较著名的分布式文件系统有谷歌文件系统(Google File System,GFS)[4],以及应用最广泛的HDFS(Hadoop Distributed File System)[5]与Ceph[6]。

为准确评估分布式存储系统可靠性,谷歌公司开发了Cell Simulator[2],脸书则开发了DS-Sim[7]。但由于前者并未开源;而后者仅关注了持续时间较长的失效事件对可靠性的影响,而忽略了持续时间较短的事件,使其无法评估更加先进的容错技术。

1.3 本文研究的主要内容

通过研究分布式存储系统的结构及运作流程,设计以失效事件驱动的“蒙特卡洛”系统仿真器。模拟器可以规定不同的故障,将故障的产生、影响以及恢复过程通过类与事件的设计进行规定,并且模拟出在相应不同故障下的系统恢复操作过程。故障事件等可靠性统计数据可输出至文件。

2 原理与技术

Google、阿里巴巴等大型互联网公司催生了云计算与大数据两大热门领域,无论是研究还是商业应用,低成本、高性能、可扩展且易于使用的分布式存储系统都是其后台基础设施建设的主要目标。

典型分布式存储系统的框架如图1所示。每个机器(machine)连接到交换机(switch),设置固定个数的机器为一组,通过交换机连接,构成一个机架(Rack),而对于分布式存储器而言,通常由多个机架构成作为一个整体提供存储能力。

图1:分布式存储系统结构示意图

在分布式存储系统中,每个集群通常都会拥有一个管理节点,其他节点为普通工作节点。管理节点想要知道工作节点是否是正常的,每隔固定的时间段,会向工作节点发送一个心跳包(HeartBeat),工作节点回复“活着”。

目前大部分分布式存储系统都采用纠删码或者副本技术来提高可靠性。

2.1 副本技术

副本技术即采用复制副本的方式。为了应对计算机宕机时数据的丢失,采用冗余数据存储。HDFS和谷歌分布式存储系统都采用的是三副本机制。一般来说,数据的多个副本中有一个为主副本(Primary),其余副本为备副本(Backup)。三副本通常是第一副本放在一个机架上的硬盘上存储,第二副本放在另一个机架上,第三副本与第二副本放置在同一机架上的不同硬盘上。即可以防止数据丢失也可以在读取数据时进行校验。

2.2 纠删码

纠删码(EC)是一种前向错误纠正技术,相比于副本复制存储开销更小。对一份数据进行操作的时候将数据划分为K块,通过数学公式计算增加M段新的数据块,共K+M块。发生故障时,通过K+M个数据块中的任意K块数据就可以重新还原。

3 分布式存储系统仿真器设计与实现

仿真器的核心设计思路为:将整个分布式存储系统视为一个巨大的状态机,而现实中的磁盘损坏、宕机、机架问题等则被简化为一个个失效事件。模拟器按时序依次播放失效事件,依事件类型、当前系统状态以及预先配置的系统事件处理策略改变系统状态,并生成后续数据恢复事件。为提升仿真过程的普适性与仿真结果的全面性,仿真器并未采用传统的真实工作流驱动方式(这样会导致结果单一),而是采用了蒙特卡洛法来预先生成随机性事件,并使用这些随机事件驱动仿真过程。实践过程中,本仿真器的采用的是韦伯分布(Weibull distribution)和高斯概率触发。

3.1 系统架构

图2给出了仿真器的主要模块及其功能。其中,参数配置模块采用“文件固定了参数配置和“接口获取参数”两种方式配置系统参数。部分数据也可以综合这两种方式,通过获取的数据经过计算将文件中的一些参数设置为二次计算的结果。“文件固定数值的方式”适用于不需要频繁更改的数据;后者则是在运行开始时根据需要灵活的设置以确定系统的规模。

图2:系统模块图

随机事件处理模块集中处理不同事件,模块中根据不同事件类型分别进行各自的处理。事件根据需要的操作从开始到故障事件、恢复事件、潜在故障、擦洗事件的处理最后到结束,分别有不同的处理函数。

在处理流程中,分片进行降级和恢复的时都要对不可用计数与不可靠计数进行统计,恢复过程中需要对带宽状态进行记录,并且随时更新最大带宽。在最后系统事件处理结束之后,要将在这期间发生过的不同故障的次数、总共恢复次数,系统可靠率等结果统计打印到输出端。这些功能均由数据统计模块完成。

3.2 事件处理流程

在事件处理的流程中,先对事件不同类型的相应操作流程进行函数规定,在获得事件之后进行分类调用不同的函数进行。

在恢复事件中,需要对重构的带宽进行统计,因此有计算重构带宽、添加带宽统计以及带宽分析处理。计算重构带宽时,根据人为设置的纠删码的K值和丢失的块数量以及在参数配置中规定的块的大小进行计算。添加统计带宽的过程是对于传入的Recovery类型参数,检查带宽,并更新最大带宽数值。调用把Recovery放入带宽链表中。

带宽分析依次获取带宽列表中的节点数据,通过对比key得知是一个恢复事件的开始还是结束,如果一个事件开始,当前带宽需要加上恢复需要的带宽;如果已经结束,那么要把现在的带宽去掉。一直处理到已经放入带宽列表中的修复事件全部处理完毕。最后调用输出。

仿真器的失效与恢复事件处理流程分别如图3与图4所示。

图3:失效事件处理流程

图4:恢复事件处理流程

4 测试与结果分析

对仿真器的仿真性能进行了测试,并对结果进行了简要的分析。首先介绍测试环境与仿真参数设置。

使用一台服务器作为测试平台,具体配置为:配置,双路IntelXeonE-5267812核24线程处理器@2.5GHz,128GB内存,1TBNVMESSD系统盘,Ubuntu20.04操作系统。仿真目标系统的主要参数设置如表1所述。

表1:仿真目标系统参数设置表

不同参数的仿真实验均运行5次,报告的测试结果为5次实验时长的平均值,实验结果较为稳定,误差不超过5%,具体如图5所示。

图5:系统规模、轮询时间与仿真时间关系图

测试结果显示,仿真器对目标系统的单次全生命周期仿真时间在65.5秒至285.9秒。考虑到1000到4000块硬盘的规模足以支撑绝大部分企事业单位的应用,可认为仿真器性能已足以满足实际应用需求。且由于多次全生命周期仿真过程之间相互独立,即对于目标系统的仿真具有极大的并行性,因此,更加全面而精确的仿真完全可以通过在高端服务器甚至是服务器集群上部署多个仿真例程并行完成。

观察到仿真时间会随系统规模的增长而呈线性增长,即系统规模越大,仿真时间越长。其原因在于,当系统中的各类故障的故障率一定时,故障数量与系统规模成正比。而在事件驱动模型下,这些故障是以串行模式予以处理的。这也导致了仿真时间随系统规模线性增加。

此外,同时也观察到轮询时间间隔对仿真时间有一定影响。具体而言,轮询时间越短,仿真时间越长。其原因在于,失效事件的时长是按二阶韦伯概率分布,当轮询时间间隔较长时,部分持续时间较短的失效事件已自然结束,从而降低了事件处理量。而当轮询时间间隔较短时,这些失效事件则需要被仿真器处理,从而增加了仿真器的计算开销。此外,考虑到修复事件往往是由具有较长失效时间的事件导致,上述短周期的失效事件不会引发复杂的状态变化与后续事件,因此,轮询时间间隔对仿真时间极为有限。

5 结论

论文研究了通用分布式存储系统的架构,并以此为基础阐述了一个面向分布式存储系统的仿真器的设计与实现。分析与实验表明该仿真器具有以下特点:

(1)采用高精度蒙特卡洛法及事件驱动模型,使得仿真器对于分布式存储系统的可靠性仿真较为准确;

(2)灵活而全面的参数设计,使得仿真器适用范围较广,能够支持绝大多数的应用需求;

(3)在目标系统规模较大时,仿真器依然能够快速执行全生命周期仿真,在结合并行处理体系后,将有助于在保持可接受的仿真时间的同时进一步提升仿真结果的精确性。

猜你喜欢
仿真器副本存储系统
分布式存储系统在企业档案管理中的应用
哈尔滨轴承(2020年2期)2020-11-06 09:22:36
面向流媒体基于蚁群的副本选择算法①
天河超算存储系统在美创佳绩
副本放置中的更新策略及算法*
华为震撼发布新一代OceanStor 18000 V3系列高端存储系统
基于多线程的惯导逻辑仿真器设计
计算机工程(2015年4期)2015-07-05 08:28:57
一种基于STM32的具有断电保护机制的采集存储系统设计
树形网络中的副本更新策略及算法*
天文测量仿真器模拟星图精度分析
并行片上网络仿真器ParaNSim的设计及性能分析