飞行器自主保障系统海量数据存储设计与研究

2019-05-16 09:20麻雨欣曾贵明
宇航计测技术 2019年2期
关键词:存储系统副本哈希

曾 发 麻雨欣 梁 君 曾贵明 荣 刚

(1.中国运载火箭技术研究院研发中心,北京 100076; 2.航天材料及工艺研究所,北京 100076)

1 引言

某飞行器长期在轨运行,为对其上各设备进行健康管理、故障预测和分析,在地面设立自主保障信息系统,接收健康诊断的数传数据和遥测数据,并在全寿命周期内存储,其中,原码数据每天约为0.186TB,经解码后,数据约为2TB,总数据将达1PB,且包含大量非格式化的图片和视频文件,重复执行任务时,数据随任务次数等量增加,存储系统需要扩容使用,现有单块磁盘或磁盘阵列的存储方案,在存储容量、读写速度、数据安全性和存储扩展性上,都无法满足要求。本文针对该飞行器自主保障系统海量数据及其应用特点,设计一种采用完全对称架构和改进哈希算法的数据存储系统。

2 系统架构

2.1 总体架构

本文设计的数据存储系统,类似于亚马逊公司的AWS S3[1]架构,采用去中心化扁平对称结构,通过软件定义虚拟化存储,物理层面使用普通服务器+磁盘阵列来构建冗余可扩展的分布式存储集群,数据写入、数据读出等应用服务器和存储集群通过光纤交换机相连,飞行器自主保障原码数据通过测发控系统经光纤交换机写入,故障推理原码数据经光纤交换机读出,再将推理过程数据和结果数据经光纤交换机写入。自主保障系统数据存储总体架构见图1。

图1 数据存储总体架构Fig.1 Overall architecture of data storage

2.2 数据组织结构

本文采用无中心节点和扁平化的数据组织结构,将数据存储系统划分为三层逻辑结构:账户、容器和对象,如图2所示。账户表示一个存储区域,并对应一个飞行器分系统用户,若一个分系统切换到另一个分系统下,将看到属于另一个存储区域的容器和对象。本文根据该飞行器分系统划分,设为不同的账户,如GNC分系统用户、遥感分系统用户、电源分系统用户、热控分系统用户、遥测分系统用户、综合电子分系统、结构分系统等。容器是存储对象的存储空间,其内部扁平,没有目录概念,所有对象直接隶属于其对应容器;每个飞行器分系统可拥有多个容器;容器内对象数目没有限制。对象作为存储对象,由对象元信息、用户数据和文件名组成,并由容器内唯一的文件名标识,其生命周期从上传磁盘到被删除为止,整个周期内,对象信息不可变更。

图2 数据组织结构Fig.2 Structure of data organization

2.3 存储架构

本文设计的数据存储系统通过软件定义存储服务,采用完全对称架构,其软件逻辑组成见图3,硬件部署如图4所示,主要包括四个组成部分:代理服务组件、存储服务组件、存储一致性服务组件和哈希环,其中代理服务组件、哈希环部署在代理服务器上,存储服务组件和存储一致性服务组件部署在用于数据存储的物理存储服务器上。

图3 软件逻辑组成Fig.3 Logic composition of Software

图4 硬件部署Fig.4 Devices deployment

2.3.1 代理服务组件

代理服务组件负责系统其余组件间的相互通信, 并提供系统对外接口的服务进程。对飞行器每个分系统数据存储请求,代理服务组件在哈希环中查询账户、容器或对象的位置,并相应转发请求。若某个物理存储服务器不可用,代理服务组件将查询哈希环中可用物理服务器,将存储请求转发过去。代理服务组件对用户提供Rest-ful API接口和TCP/IP协议规范,其部署所在服务器相当于一台对外提供通信交互服务的HTTP服务器。

2.3.2 存储服务组件

存储服务组件提供存储服务器磁盘阵列上的存储服务,包括三类存储服务模块:账户服务模块、容器服务模块和对象服务模块。账户服务模块处理对账户请求,使用SQLite数据库文件保存账户相关信息。容器服务模块负责处理对象列表和跟踪统计对象总数、容器使用情况,同样使用SQLite数据库文件保存容器相关信息。对象服务模块负责处理对对象的请求,直接操作对象,读写存储对象。存储服务组件组成及工作机制见图5。

图5 存储服务组件组成及工作机制Fig.5 Composition and working mechanism of storage service components

2.3.3 存储一致性服务组件

存储一致性服务组件用来查找并解决由数据损坏和硬件故障引起的错误,保证对象的最终一致性,主要有三个服务模块:审计服务模块、更新服务模块和副本服务模块。审计服务模块检测每台物理服务器上的账号、容器和对象完整性,发现损坏后将数据移动到隔离区域,再由副本服务模块用一个完好副本替代。更新服务模块分别更新账户列表和对象列表,若账户服务模块和容器服务模块繁忙,则待其正常后再更新。副本服务模块保持数据合理副本数,并确认存放位置是否正确,保证各物理服务器面临故障时保持数据一致性。存储一致性服务组件组成见图6,工作机制见图7。

图6 一致性服务组件组成Fig.6 Composition of consistency service components

图7 一致性工作机制Fig.7 Working mechanism for consistency

2.3.4 哈希环

本存储系统引入哈希环,记录存储对象与物理位置间的映射关系,哈希环分布于所有代理服务器,是整个数据存储系统核心,存取对象都需哈希环参与。哈希环包括账户哈希环、容器哈希环、对象哈希环,查询账户、容器、对象信息时,需查询集群中各自的哈希环信息,并用分区、设备、节点和副本等信息维护映射。哈希环中同一个节点包含3个副本。每个节点的位置由哈希环来维护,并存储在映射中。系统初始化时创建哈希环,此后增减存储节点都要更新哈希环中信息,重新达到平衡,以保证最少迁移文件数量。

本文将哈希算法进行改进,哈希环采用分区、设备、浮动虚拟节点、权重和副本来维护映射信息,相关概念见下文。

3 存储工作机理

一个优秀数据存储系统需满足如下几项要求:增减存储节点迁移数据少;数据存储安全;数据访问安全;存储资源分配均衡。本文设计的数据存储系统存储工作机理主要采用以下几个概念来满足这些要求。

3.1 改进哈希算法

本数据存储系统在普通哈希算法[2~3]的基础上,采用引入浮动虚拟节点的一致性哈希算法,以在改变物理节点数量时尽量少改变已存在键值和物理节点间的映射关系,减少数据迁移量。该算法便于构建冗余可扩展分布式数据存储系统,适应自主保障数据存储特点。该算法分六个步骤:

(1)每个物理节点设置2X倍个虚拟节点,并形成一对多映射;

(2)计算每个虚拟节点哈希值,并将其分配到1个0~232的圆环上;

(3)计算存储对象哈希值,并将其分配到(2)中圆环上,算法与(2)相同;

(4)从数据映射到的位置起顺时针查找,将其保存到找到的第1个虚拟节点,若超过232仍未找到,则保存到第1个虚拟节点;

(5)将虚拟节点反射到物理节点,确定对象存储的物理位置;

(6)根据每个物理节点负载特性,浮动调整X值,以调整虚拟节点数。

为简化分析,先设每个物理节点对应1个虚拟节点,假设在这个环形哈希空间中存在4个节点,分别为节点1~节点4,若增加1个节点5,根据上述算法,得出节点5被映射在节点3和节点4之间,则仅需将从节点3顺时针到节点5之间的数据进行迁移,其分布如图8所示,图中节点是虚拟节点,也是物理节点。

图8 一致性哈希环结构Fig.8 Structure of Consistent Hash Ring

为提高存储系统扩展性能,进一步减少增减节点引起的数据迁移量,先将每个物理节点的虚拟节点个数设置为25倍数值,使每个物理节点对应多个虚拟节点,即增加图8中哈希环的节点数。通过两层映射,将对象与相应物理节点联系起来,先将对象映射到虚拟节点,再将虚拟节点映射到物理节点,建立对象与相应物理节点的多对多映射关系。对象与虚拟节点的映射关系由一致性哈希算法实现,虚拟节点与物理节点的映射关系主要遵循多个副本应分布在不同物理节点的原则,并由哈希环文件中的Partition Assignment List二维数组实现。引入虚拟节点后的映射关系和哈希环结构如图9所示。

图9 引入虚拟节点后的映射关系和哈希环结构Fig.9 Mapping relation and structure of Hash Ring after introducing virtual nodes

实际运行时,因设备性能差异和忙闲随机性等,各物理节点负载动态变化,且大小不一,为实现不同物理节点间负载均衡,将每个物理节点的虚拟节点个数设置为24~26倍浮动数值,再在某时间间隔内,根据各个虚拟节点访问量反馈值进行动态调整,并设置阙值决定是否调整。

当飞行器重复执行任务、等量增加数据、数据存储系统再增设物理节点时,采用改进哈希算法,可减少已有物理节点的数据迁移量。

3.2 副本

若数据在系统中没有冗余副本,一旦发生故障就可能永久丢失,存储安全性得不到保障。本存储系统不采用传统的RAID磁盘阵列保护数据安全方式,而引入数据副本概念,理论依据源于NWR策略[4,5],其中:N为同1个数据的副本份数;W为更新1个数据需更新成功的份数;R为读取1个数据需读取的副本份数。该策略中,为保证某个数据不同时被不同事务读和写,要求W+R>N;为保证两个事务不能并发写某个数据,要求W>N/2。本数据存储系统设置1份数据有3份副本,即N=3,并取W=2,R=2,可知符合NWR策略,系统无单点故障,可保证数据存储安全。

3.3 分区

若所有物理节点都布置在一个机柜或一个机房时,一旦发生掉电、断网、怠机等故障,都将造成自主保障系统中飞行器各分系统用户无法读写。因此在哈希环中引入分区概念,把集群的物理节点分配到各个分区中,其中:同一个虚拟节点的副本不放在同一物理节点,也不放在同一分区;分区大小根据自主保障应用需求和硬件基础自定义,如一个机房或一个机柜、一台服务器甚至一块磁盘。根据该飞行器测发控系统特点,存储设备分别布设在发射场、测控站,构建多个分区。通过分区机制,对存储设备的物理位置进行隔离,可满足分区容忍性[6],确保数据读写安全。

3.4 权重

哈希环引入权重的目的是解决未来飞行器任务增加,自主保障系统添加存储能力更大的物理节点时,可分配到更多的虚拟节点,其权重大小与物理节点容量大小成正比,以此实现存储资源均衡分配。如40TB容量的物理节点,其虚拟节点数为20TB物理节点的两倍,可设置40TB节点的权重为4000,而10TB节点的权重为2000。系统运行后,每个物理节点的权重,需根据其分配的全部虚拟节点访问量反馈值动态修正,动态调整其虚拟节点个数,特别是增减物理节点时,各个权重需更大幅度修正。

4 设计结果与测试

4.1 原理样机

本文设计的该飞行器自主保障系统的数据存储原理样机如图10所示,由图可见其存储原理及算法。

图10 飞行器自主保障系统数据存储原理样机Fig.10 Prototype of data storage for autonomous logistics system of some aerocraft

系统存储容量为1000TB,将存储集群分为5个分区,1个分区为1个节点,每个分区为1台服务器,每台物理服务器上安装112块1.8TB容量7.2K转速的SAS磁盘,2块磁盘以RAID1构建操作系统盘,其余磁盘全部作为存储盘。每台服务器虚拟成2台服务器,其中1台为存储代理服务器,1台为数据存储服务器,作为存储节点。系统采用完全对称的架构,每台服务器硬件和软件配置完全一样,并安装代理服务组件、对象服务组件、容器服务组件和账户服务组件等全部存储服务软件,以确保其角色完全对等。出于安全和性能考虑,在业务前部署1台负载均衡服务器,但不属于数据存储系统。

图10中分别有执行存储和读取文件的数据流,操作同一个对象,即飞行器上有效载荷CCD拍摄的1个10GB原码图片文件Satelite.png。存储时,有效载荷分系统用PUT写指令通过负载均衡随机挑选1台代理服务器,将写请求转发到后者,其代理服务组件通过查询本地哈希环文件,选择3个不同分区中的存储服务器存储该图片,然后同时将其发送到这3个存储节点,存储服务组件通过预设置的文件切割程序,将其分为21段,每段500MB,并行发送到某个分区下有效载荷分系统所属容器中。该过程需满足NWR策略,即3份副本至少写成功2份,再给有效载荷分系统返回图片存储成功消息。下载时,有效载荷分系统用GET读指令通过负载均衡随机挑选1台代理服务器,其代理服务组件中的哈希环文件查询到该图片存储在哪3个节点,再同时向后端查询,至少有2个节点回信可提供该图片,最后代理服务器选择其中1个节点下载该图片。

4.2 性能测试

本数据存储系统性能测试针对请求响应、吞吐量、负载均衡3个指标进行,并对算法改进前后进行对比,每个物理存储节点的配置见表1,测试数据大小介于1KB~5GB之间,随机选取飞行器自主保障系统中各分系统数据。

表1 物理节点配置Tab.1 Configuration of the physical nodes

表2为哈希算法改进前后集群的用户请求响应对比情况,可看出,在访问量不大时,哈希算法改进前后的响应时间基本一致,访问量逐渐增加后,哈希算法改进后的响应时间略长,因为对象动态复制过程需要一定时间,随该过程完成,响应时间就明显短于哈希算法改进前。

表2 哈希算法改进前后对请求响应的影响Tab.2 Influence on request response before and after improving Hash algorithm

表3为哈希算法改进前后集群的吞吐量对比情况,可看出,在访问量不大时,访问量逐渐增加后,哈希算法改进前后的吞吐量基本一致,都保持增长,访问量继续增加后,哈希算法改进前的吞吐量开始下降,而哈希算法改进后的吞吐量继续增长,明显大于改进前。

表4为哈希算法改进前后集群的负载均衡度对比情况,可看出,改进后的均衡度远比改进前的均衡度小,说明采用改进算法后比改进前能更好保持集群的负载均衡,因为对访问量大的物理节点,其虚拟节点数动态减小,访问量减小使其负载减轻,对访问量小的物理节点,其虚拟节点数动态增加,访问量增大使其负载加大,而物理节点加入或退出集群时,虚拟节点的访问频率影响其到物理节点之间的映射关系,过度负载和过度空闲物理节点间虚拟节点的调整有助于提高集群负载均衡。

表3 哈希算法改进前后对吞吐量的影响Tab.3 Influence on throughput before and after improving Hash algorithm

表4 算法改进前后对负载均衡度的影响Tab.4 Influence on load balancing before and after improving Hash algorithm

由上面测试可知,哈希算法改进后的对象存储在用户访问的响应时间、吞吐量和负载均衡3个性能指标都有所优化,特别是吞吐量和负载均衡有明显提高。

4.3 性能优势

结合完全对称架构的固有优点和上述性能测试结果显示,本文设计的海量数据存储系统,性能上具有如下几个优势:

(1)数据存储完全均匀随机分布,并引入副本概念,默认存储3个副本,无一个单点,可靠地保证了系统安全性。

(2)采用各节点角色对等的完全对称架构,可无限扩充存储容量,只需简单新增磁盘或存储服务器,自动完成数据迁移,各节点重新达到平衡。

(3)可将数据切细,并行地存储到不同磁盘上,读写速度快,数据可靠性高,采用改进哈希算法后,读写速度明显提高,负载均衡更好。

5 结束语

针对某飞行器自主保障系统海量数据及其应用特点,设计了一种海量数据存储系统,通过软件定义虚拟化存储,采用完全对称架构和改进哈希算法,具有很高存储安全性、容量无限扩展性和良好读写速度,很好满足了该飞行器自保系统海量数据存储需求。

猜你喜欢
存储系统副本哈希
分层式大数据存储系统缓存调度策略与性能优化
基于特征选择的局部敏感哈希位选择算法
哈希值处理 功能全面更易用
文件哈希值处理一条龙
主动容错云存储系统的信息自适应管理调度模型
天河超算存储系统在美创佳绩
面向4K/8K的到来 存储该怎么办?
国家知识产权局公告:专利证书改版
巧用哈希数值传递文件
新副本“战歌之城”怨灵BOSS面面观