APP下载

电力企业分级分类的分布式云存储系统的研究与实现

2021-05-12朱小琴张吉娜王国霞

电子设计工程 2021年8期
关键词:存储系统客户端集群

袁 晖,朱小琴,张吉娜,王国霞

(1.国网甘肃省电力公司电力科学研究院,甘肃兰州 730070;2.北京科技大学自动化学院,北京 100083)

在全球各行各业的信息化推动下,我国的电力企业开始对云计算进行研究和实践,从2010 年开始走出了第一步——资源池的研究和建设[1-3],存储池作为资源池的重要组成部分,也经过了多次升级,研究者们研究并实现了针对电力企业自身特点的分布式存储池。

电力企业作为国家的能源供给企业,关系着国计民生,同时也具有规模庞大、业务复杂的特点,其信息化系统管理的数据是企业的重资产,重要且庞杂,主要体现在以下几个方面。首先,数据的种类多,主要有运营监测分析业务所用到的业务基础数据和支撑数据的非业务数据,其中业务数据包括业务明细数据、指标数据和分析数据,非业务数据包括监测规则数据、事件数据、问题数据等。不同类型的数据对可靠性、处理能力的要求、存储资源的配置要求等都不相同。其次,电力企业的数据不仅对企业,乃至对整个国家都有着重要的影响,数据的可靠性是必须保证的。传统的网络存储系统采用集中的存储服务器存放数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。随着企业规模的扩大和业务的拓展,数据量的增加会带来存储量的增加,存储系统的可扩展性也至关重要。电力企业的数据会随着用电周期产生很大的波动,要求存储系统的负载能力也要是动态变化的。同时,电力企业的信息化建设已经进行了很长时间,具有良好的硬件基础,但硬件设备异构化严重,那么跨数据中心的数据交换又是如何实现存储平台管理的一致性也是必须考虑的问题。

针对电力企业在存储方面的需求,文中对分布式存储池进行了研究和探索,给出了分级分类的分布式云存储系统。针对不同数据对可靠性、处理能力的需求,提出分级存储系统,即存放业务数据的一级存储和存放非业务数据的二级存储。同时,在不同级别的存储系统中,根据数据处理性能和可靠性要求的不同分为两类:高IO 处理能力的分布式存储集群和普通IO 处理能力的分布式存储集群。该分布式云存储系统不但提高了系统的可靠性、存取效率、扩展性,还可以实现数据访问的一致性。

1 分布式云存储系统的设计

1.1 分布式云存储系统的总架构设计

电力企业数据复杂,数据类型不同,从公司业务角度看,数据分为业务基础数据和支撑功能数据,其中业务基础数据为实现对公司各类核心数据资源和经营管理活动的全面监测、运营分析,系统需要管理公司全业务范围的业务明细数据、指标数据和分析数据;支撑功能数据是支撑系统应用功能的支撑数据,包括监测规则数据、事件数据、问题数据等。不同类型的数据对存储系统的性能要求不同,而且电力企业中信息化的硬件基础异构化现象严重,不同性能的硬件需要合理分配。综合上述原因,电力企业的存储池采用了二级二类分布式云存储系统总架构。

一级存储主要存放支撑业务应用所需要的业务数据,以满足各类物理机池或小型机虚拟池对存储的需求。由于主机规模较大、并发数高、数据类型复杂,因此通常采用高端集中式存储;同时,针对业务数据对处理性能和可靠性要求的不同,把一级存储分为一级高性能存储和一级中性能存储。

二级存储主要存放非业务数据,比如X86 虚拟化池虚拟映像等,一般由中端存储和分布式存储组成;同时也分为二级高性能存储和二级中性能存储。文中将二类存储对应设计为大容量的分布式存储设计和高性能的分布式存储设计,其中,大容量分布式存储主要适用于二级存储低IO 的情况,而高性能分布式存储则适用于一级存储高IO、一级存储低IO 和二级存储高IO 的情况。分布式云存储系统的总架构如图1 所示。

图1 二级二类分布式云存储系统总架构

1.2 分布式云存储系统的功能和网络部署架构设计

分布式存储系统,就是将数据分散存储在多台独立的设备上,以提高系统的可靠性[4-5],也是分布式云存储系统设计的主要目标之一。传统的网络存储系统采用集中的存储服务器,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。

分布式存储系统设计的主要目标之一是可扩展性(可存储几百PB的数据),需从多方面考虑[7-8]:整体存储容量、系统的吞吐量以及各个客户端、目录和文件的性能。分布式云存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,而且易于扩展。

分布式云存储系统设计的另一目标是提高系统性能[9-12],即可适用于各种高性能的工作负载。工作负载设计的目标是几千台主机在同一时刻对同一个文件进行几百万次并发读写,或者同时在某个目录下创建文件,这种只有在超级计算机集群进行科学运算时才出现的场景[10-11],将会在未来普遍出现。更重要的是,分布式文件系统的负载能力是动态的,即随着时间的推移,实际应用中数据和元数据组织结构不断改进,分布式文件系统的负载能力将会有很大的提高。

分布式存储的设计要保证能支持跨地域的数据中心与数据中心之间的分布式存储平台的管理一致性[6],还要根据不同物理资源的特性和实际性能设计相应的资源池,以满足不同用户和应用的需要,如高IOPS 资源池、大容量资源池等。同时还要兼容对整个分布式存储的监控、管理和调度,以确保在大规模的分布式存储使用场景下,有标准化的管理流程、自动化的任务分配和资源调度。分布式云存储系统的功能逻辑架构如图2 所示。

图2 分布式云存储系统的功能逻辑架构

在分布式云存储系统部署的过程中,首先要考虑网络的情况,如网络带宽、硬件资源和网络连接情况,以及分布式存储的性能问题。在分布式存储运行过程中,为了确保数据的有效性,需要做到多冗余的数据备份,这就要求数据在多个节点备份过程中有单独的网络,以隔离其他应用。同时,用户数据访问的网络也要独立开,以确保分布式存储的性能。在分布式存储设计和实现的过程中,要考虑多个资源池不同层级的数据请求和交互,同样也要在网络的层面进行隔离。分布式云存储系统的网络架构如图3所示。

1.3 分布式存储设计要点

分布式存储系统的架构设计基本要点有3 个主要部分:

1)客户端:提供类POSIX 文件系统接口的能力;

2)对象存储设备(OSD)集群:存储所有数据和元数据;

图3 分布式云存储系统的网络架构

3)元数据服务器(MDS)集群:管理命名空间(文件名称和目录),保证数据的安全性和一致性。

分布式存储系统通过元数据管理和数据管理两个管理类型的设计来保证高性能、高可靠性和高可用性的同时,还能保证可扩展性,即将数据和元数据分开存储、动态分布元数据管理以及可靠的自动分布式对象存储。

1)元数据管理:使用元数据集群管理元数据请求,元数据都集中存放在分布式对象存储上,元数据服务器只用于处理元数据请求已经缓存的部分元数据信息;Meta Data Cluster 集群上缓存的元数据信息使用动态子树分割管理。当写操作跨越对象边界时,客户端获取相关对象的排它锁,然后立即提交写操作,释放锁,通过申请锁和异步刷新数据,对象锁可以掩饰大量写的延迟来保证数据的一致性。

2)数据管理:数据布局的使用设计应参考CRUSH 算法的设计管理,将数据的管理从逻辑和物理上分为若干个层次结构。

在设计系统的高可用性时,应当考虑元数据服务器的负载均衡:

1)分布式存储可以将大量读访问的目录复制到多个节点上分散负载[13];

2)分布式存储可以判断当某个目录特别大或是有很重的写负载时,它的部分目录将被迁移到其他节点上,客户端访问非热点元数据时可以将请求直接定位到相应的元数据服务器上;当访问的是热点数据时,客户端将被告知元数据在其他元数据服务器上或是在多个服务器上。每个对象存储的响应会更新客户端缓存的权限,同时更新与处理条目相关的节点以及它的上级节点。

通过元数据服务的负载均衡机制,可以扩展对象存储的节点以实现对大容量的非结构数据的存储,并提高数据的访问速度。

分布式存储的设计和架构设计应考虑到对整个企业的终端用户应用的支持,企业级用户的特点是异构平台的多样性,如本地磁盘、外挂磁盘、固态盘等的使用、终端应用的多样性(如操作系统、文件访问的客户端、数据库系统等),还有对不同数据类型的操作,如结构性数据和非结构性数据。基于分布式存储设计的逻辑架构如图4 所示。

图4 分布式存储系统逻辑架构图

1.4 分布式存储资源服务等级划分

终端用户在使用分布式存储资源时,可以按照预先划分的等级和标准作为服务等级的使用条件,这样既可以对一些高级别的应用(如数据库服务)提供更好的服务有效性支持,同时还可以根据不同的数据类型预先定义的服务等级来划分。

分布式存储服务等级划分标准主要有以下几个方面:

1)数据持久性:根据分布式存储的特点可以提高数据冗余的备份次数以保证数据的持久性。可以在物理条件允许的情况下,根据自身的需要定制管理节点的个数以保证服务的有效性。数据持久性按服务周期统计,一个服务周期为一个自然月,如不满一个月,则不计算为一个服务周期。最高级别的服务有效性不低于99.99%;中级别的服务有效性可以是99.9%。

2)数据可销毁性:在用户主动删除数据或用户服务期满后需要销毁数据时,分布式存储系统可以结合上层的云服务平台自动清除对应物理服务器上的磁盘和内存数据,使得数据无法恢复。

3)数据可迁移性[14]:存储的对象是用户文件,文件类型维持原有格式不变。用户使用上层云平台服务时,可随时访问、下载其文件,并根据需要自行保存或迁出。

4)数据私密性:用户在使用分布式存储的服务时,系统可对用户的安全信息加密,从分布式存储平台访问接口上进行权限控制和隔离,保障用户数据的私密性。

5)数据可审查性:依据企业的内部要求和安全规定,在审计或取证调查时,分布式存储可提供用户所使用服务的相关信息,包括关键组件的运行日志和用户操作记录等信息。

6)节点可扩展性:在重平衡结束后,新的OSD 没有负载峰值,进而保证了分布式存储的整体扩展能力。

7)故障恢复能力:提供对整套系统的监控能力,根据分布式存储的设计要求对底层的物理硬件容量和硬件报警进行监控,进行分布式对象的节点监控和上层的MDS 数据元的服务监控,还对客户端连接进行监控。系统出现的任何非正常状态都可以被监控到,同时可以连接到知识库进行分析处理并反馈给管理员。

8)IOPS的定制性:不同的应用和用户要求存储的数据类型会有不同,不同的应用要求不同的IOPS服务。

2 分布式云存储系统的典型实现

进行存储池实现时,做出了一级存储高IO、一级存储低IO、二级存储高IO 和二级存储低IO 的基本规划。分布式存储系统总结为两大类:一类是大容量的分布式存储设计,一类是高性能的分布式存储设计。其中大容量分布式存储主要适用于二级存储低IO 的情况,而高性能分布式存储则适用于一级存储高IO、一级存储低IO 和二级存储高IO 的情况。

2.1 大容量分布存储的实现

根据目前的经验,数据存储的集群规模为700台物理机器,存储的文件数接近5 000 万,块数也接近5 000 万,容量占用85%,使用的内存从监控页面显示已经占用近30 GB 的物理内存。从发展趋势来看,当集群继续扩大到5 000 台时,文件数接近3.5亿,块数接近3.5 亿,内存要接近210 GB,这样的扩展已经给传统的非结构性文件存储带来了巨大的瓶颈。随着节点的增加会带来巨大的性能问题,无论是数据查询还是数据写入,需要大量的内存资源来支撑如此大量的数据吞吐量,分布式存储的出现可以解决传统领域的性能瓶颈。

分布式存储的解决方案可以将数据分散部署到多个节点上,使得数据的存取可以线性扩展。同时,分布式存储可以通过对元数据进行分布式管理以提高对整个系统的扩展能力。元数据管理可以有两种方式:

1)废弃文件系统概念:分布式存储系统不提供传统的文件目录数的概念,也不提供传统的文件目录树的命名空间。

2)扩展技术的提升:基于传统的文件系统,提供文件系统目录树,以提升扩展技术。

为了实现对大容量非结构数据的存储,分布式存储的设计支持废弃文件系统,并通过扩展技术的提升来提高大数据量的存储。

该存储池实现采用如下的软硬件:

1)一个存储交付单元和一个机柜;

2)3 台24 口万兆交换机;

3)12 台2U 数据服务器,每台1*6core,32 GB 内存,12*4 TB 硬盘,双万兆网卡;

4)3 台2U 控制服务器,每台2*6core,32 GB 内存,12*4 TB 硬盘,双万兆网卡;

5)每台服务器可选配2 块120 GB SSD 硬盘。

2.2 高性能分布式存储设计

分布式存储的设计充分考虑到存储容量的扩展、IO 性能和可靠性,这也是分布式存储设计的目的[15]。在设计之初希望整个系统能够给存储日益增长的企业知识系统提供存储支持,确定以下的目标:

1)系统能够动态伸缩,能够运行在大量低廉单机上,支持TB 级数据存储。

2)系统能够实现数据的高效访问,并且存储介质不会产生文件碎片而影响IO 性能。

3)对每个文件产生多个副本解决灾容问题。

4)保证系统的可靠性和负载的均衡,能够自如地处理并发访问。

为了能实现以上高IO 分布式存储的要求,系统设计必须要消除集中式网关,使客户能够直接与分布式存储的对象管理守护进程进行互动。守护进程创建对象的副本在其他系统管理的节点上,以确保数据的安全性和高可用性。分布式系统的设计还采用集群监视器、独特的算法设计和存储容量的设计以确保高可用性。

高IO 分布式存储算法设计的目的是消除集中数据的访问,并保证数据访问的高IO 和服务有效性,如应用客户端和系统的分布式对象守护进程都要使用此算法来高效地对数据容器的信息需求进行计算,而不必依赖于一个查找表。该算法与旧的方法相比,提供更好的数据管理机制,可以清晰地将工作分配到集群中的所有客户端和分布式对象守护进程,以提高IO 访问效率。该算法还可使用智能的数据复制,以确保弹性,这样可以更适合超大规模存储。高性能分布式存储支撑架构如图5 所示。

图5 高性能分布式存储支撑架构

在高性能分布式存储实现时,采用分布式文件系统和对象存储作为承载介质,在一个标准的交付单元中,可包含如下硬件配置:

1)一个交付单元一个机柜;

2)3 台24 口Infiniband 交换机;

3)12 台2U 数据服务器,每台1*6core,32 GB 内存,6*300 GB SAS 硬盘,SSD*6*120 GB,双Infiniband网卡;

4)3 台2U 控制服务器,每台2*6core,32 GB 内存,6*300 GB SAS 硬盘,SSD*6*120 GB,双Infiniband网卡;

5)对于极端性能需求的场景,可采用全闪存硬盘替代SAS 硬盘。

在图5 所示的高性能分布式存储支撑架构中,各部分的功能和配置如下:

1)监控终端:内置监控管理程序,实时显示数据库、计算节点、存储节点的性能指标和工作状态。

2)计算节点:X86 服务器,运行Oracle 11g R2,支持单实例和RAC 架构,提供数据运算服务。经过验证的OS 及版本为Linux (RHEL 5.*,6.3) CentOS(RHEL 5.*,6.3)。

3)数据存储管理(DbLink):基于Infiniband(或者其他互连协议)的低延迟、高带宽互联技术,用于将存储节点的Flash 和磁盘资源输出到计算节点,供数据库使用。

4)存储节点:X86 服务器,配置Flash 卡和SAS 磁盘,提供数据存储服务,支持的输出方式为Infiniband 40/56 Gb,FC 4/8 Gb,FCoE 10 Gb。

5)高可用性监视器设计:分布式存储的客户端读取或写入数据之前,必须联系一个分布式存储的监控组件来获得最新的集群映射副本。在一个集群中的监视器,某一个监视器延迟等故障可以导致一个或多个监视器落后于当前集群状态。因此,分布式存储系统的各监控集群状态的实例可以保证数据的容错性。集群监视器的应用不仅可以改变传统单点监视器的单点故障,还可以通过分布式的节点运算能力来提高对整个系统的数据一致性,最终保证高IO 数据的频繁访问。

6)存储容量设计:分布式文件系统可以提供PB级的扩展。新的存储无论是基于本磁盘,还是外挂存储或是固态盘,都可以快速加入到分布式存储系统管理平台。分布式存储系统会有固定的文件存储格式,当新的磁盘加入管理环境后,首先进行文件格式的统一,这样即可实现容量的扩展并根据预定义的规则存储相应的数据。

7)数据一致性设计:作为保持数据的一致性和清理的一部分,分布式存储的对象存储也可以清除配置组内的对象。也就是说,系统的对象同其他存储布置组中的对象及副本进行比较(通常每天执行)。对象存储还可以通过比较对象中的数据比特位进行更深层次的清理以发现平时清理中不会被发现的磁盘上的坏扇区。

8)数据的快速智能复制设计:为了实现高IO读写,分布式存储系统提供一套数据快速智能的复制机制。当应用通过客户端访问系统时,系统的对象存储守护进程使用新的算法判断是否存储对象副本。

9)IO 性能评估:分布式文件系统的设计充分考虑到磁盘的IO 读写性能,由于分布式文件系统采用的都是分布式读写,所以,可以多线程同时对文件进行操作以提高读写速度,同时增加了新的条带化设计以提高对磁盘的读写。

10)可靠性评估:对象存储进程在别的分布式文件系统节点上创建对象的副本来保证数据安全和高可用。同样,可以使用集群实现监视器的高可用。对于分布式文件系统的设计,所有的节点都不是单点,如果任何的节点出现问题都会由另外的节点接管所有的服务。

3 结论

文中在电力企业云计算研究探索的基础上,对电力云中的分布式云存储系统进行了研究和探索,建立了二级二类的分布式云存储系统,该系统把企业运营监测分析业务所用到的业务基础数据作为一级存储,运营监测信息的支撑数据等非业务数据作为二级存储。每一级存储数据对数据处理性能要求不同,所以每一级存储分为高IO 存储和低IO 存储,从而形成了二级二类分布式云存储系统。该分布式云存储系统不但提高了数据的高可靠性、高存取效率、高扩展性,还可以实现数据访问的一致性。

猜你喜欢

存储系统客户端集群
分布式存储系统在企业档案管理中的应用
海上小型无人机集群的反制装备需求与应对之策研究
天河超算存储系统在美创佳绩
一种无人机集群发射回收装置的控制系统设计
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
Python与Spark集群在收费数据分析中的应用
勤快又呆萌的集群机器人
华为震撼发布新一代OceanStor 18000 V3系列高端存储系统