一种数据分布式存储方法及系统与流程

文档序号:14779442发布日期:2018-06-26 10:51阅读:247来源:国知局

本发明涉及信息技术(Information Technology,IT)基础架构中的存储技术领域,特别涉及一种数据分布式存储方法及系统。



背景技术:

1.存储集群架构分析

推动着存储系统发展的力量主要来自于两方面,一方面是对于存储系统的容量、性能和数据管理能力的越来越高的需求,另一方面是计算机基础软硬件的发展。

最早的服务器节点只使用本地存储介质保存数据,此时的本地存储容量和性能非常有限,独立于服务器的外置存储设备应运而生,很大程度上解决了容量和性能以及数据共享问题。

外置存储产品主要是以提供存储区域网络(Storage Area Network,SAN)和网络连接存储(Network Attached Storage,NAS)两种服务接口的磁阵设备,服务器通过存储网络访问存储设备。在近三十年的发展历程中,外置存储不断发展,以满足更大容量,更高性能以及更完善的数据管理需求。外置存储的架构也从单控,双控发展到多控集群。

随着存储介质的集成度越来越高,当前单个服务器节点可以轻松集成上百TB(Terabyte)的存储容量;固态硬盘(Solid State Drive,SSD)的使用使得单个服务器节点可以很容易达到每秒几十万读写操作(Input/Output Operations Per Second,IOPS)的存储性能;各类高性能互联(例如无限带宽技术(Infiniband,IB),万兆以太网(10Gigabit Ethernet,10GE),通用串行互连(PCI Express,PCIe)等)发展使得节点间的通讯带宽大大提升,时延大大减小。在这些技术发展背景下,基于服务器本地存储的分布式存储架构开始挑战外置存储市场。

从实施架构上,多控集群SAN/NAS以及分布式存储都属于存储集群系统,通过多个节点间的协作完成资源管理,对外体现为逻辑上的单个存储服务实体。集群的架构主要有以下几种类型:共享内存(share memory),共享硬盘(share disk),无共享(share nothing)。

图1是现有技术提供的share memory的集群架构示意图,share memory架构中,集群中每节点各自有独立的中央处理器(Central Processing Unit,CPU),集群各节点间共享一个全局编址的内存池(Memory Pool),所有的数据读写访问都通过这个内存池,整体数据路径较短,性能较好,但节点间耦合非常紧密,高频的内存锁操作要求节点间通讯时延必须非常低,导致集群水平扩展能力很弱。

图2是现有技术提供的share disk的集群架构第一示意图,图3是现有技术提供的share disk的集群架构第二示意图,如图2和图3所示,share disk架构中,集群中每节点各自有独立的CPU和内存,集群各节点物理上都可以访问所有的硬盘。节点和硬盘一般有两种对应方式:一种方式是如图2所示的单个硬盘只归属于集群中一个节点,该方式正常时节点只管理和访问部分硬盘,在该硬盘的归属节点故障退出服务后,由集群中其他节点来接管该硬盘;另一种方式是如图3所示的硬盘不归属于单个节点,该方式所有节点可以访问所有硬盘,即所有节点都可以同时访问,使用分布式锁来实现多个节点对硬盘的访问互斥。前者节点间耦合较低,但节点间可能存在数据转发;后者节点间耦合较高,节点间数据不用转发,但节点间控制(锁,缓存控制等)交互较多。share disk架构硬件方面扩展规模有限,极少看到超过16个以上节点的共享硬盘架构集群。

图4是现有技术提供的share nothing的集群架构示意图,如图4所示,share nothing架构中,集群中每个节点各自有独立的CPU,内存(Memory)和硬盘(Disk),集群中各个节点只能访问节点本地的硬盘资源,一个节点退出服务,这个节点下的存储资源就无法访问,数据冗余通过跨节点的多副本或者纠删码(Erase Code)方式实现;跨节点的数据访问通过节点间网络转发来实现。这种架构下集群硬件可以使用商用服务器,集群中节点间软硬件耦合较小,系统具有良好的可扩展性;另一方面,由于数据转发和数据跨节点冗余带来的跨节点的通讯量比较大,导致性能不理想。

传统的SAN/NAS集群多采用共享内存(例如HDS USP)或者共享硬盘架构(例如IBM GPFS),使用专用的硬件。分布式存储一般基于商用服务器硬件,采用无共享架构(例如Redhat Gluster等),系统扩展能力高,同时实现存储软件和硬件的分离,提升架构灵活性,降低系统总体成本。

2.share nothing架构下的网络开销分析

share nothing存储架构下,每个节点管理自己本地的硬盘资源,各节点间通过网络互联。

各节点间存在管理交互和数据转发。管理交互主要是集群节点状态信息的交互,这部分属于日常管理开销,对于通讯带宽开销较小,这里不做进一步分析。数据转发主要有两部分,一部分是由于用户访问接入点与数据实际驻留的节点不同,导致的数据在节点间的转发;另一部分是由于系统中数据冗余机制导致的数据在节点间的转发。

用户访问接入点与数据实际驻留的节点不同,导致节点转发数据,根据系统数据分布和索引机制,这种节点间的转发可能是一次或多次。这个问题已经有一些解决方案,例如,Ceph通过与用户共享存储集群中的数据分布信息,使得用户可以根据所访问数据直接索引到集群中数据驻留的对应节点,从而消除此类数据转发。

由于share nothing存储架构中,每个节点只能管理本地的存储资源,一旦某个节点退出服务,则此节点上的存储资源也跟着退出服务。为了避免单个节点退出服务导致数据丢失,这种架构下,需要采用跨节点的数据冗余机制。当前最为主要的跨节点数据冗余机制有副本(Copies)和纠删码(Erase Code)两种。

图5是现有技术提供的副本冗余方式示意图,如图5所示,副本机制是同一份数据在系统里的两个或者多个节点上保留副本。在数据写入流程中,同一份数据的多个副本写入系统中,此时成倍增加系统网络开销和空间开销。另一方面,某个节点退出服务,为了恢复冗余,系统自动在其他节点上重建这个节点上的副本。例如图5中节点Node1退出服务,Node1上的对应数据块冗余度下降,系统需要通过重建过程来恢复这些数据块的副本冗余。例如数据块Data1的重建,需要从Node2读出Data1,写入到还在正常工作的node3~nodex中的任何一个上,使得系统恢复Data1的副本冗余。这个重建过程会带来额外的网络开销。

副本机制空间开销较大,纠删码可以降低冗余空间开销,图6是现有技术提供的纠删码冗余方式示意图,如图6所示,纠删码类似磁盘阵列(Redundant Arrays of Independent Disks,RAID)技术,将数据按条带(Strip)组织,每个条带由多个固定大小的数据块组成,每个条带中,分别有固定数目的数据块存放用户数据(例如m)和效验数据(例如n)。写入数据的流程中,将同一个条带的不同数据块存放在不同Node上,条带里写一份数据,会同时写条带上对应的效验数据,从而带来额外的网络开销。当某个Node退出服务时,可以根据条带上剩余的数据块,重构出退出服务Node上的数据块,并将重构出的数据块写入系统中其他Node,从而恢复数据冗余,这个恢复过程也会带来额外的网络开销。例如图6中Node1退出服务,Strip1-D1的重建过程如下:从系统内其他正常工作节点上读取Strip1中至少n个数据块,计算出Strip1-D1的值,再将其写入到系统内仍正常工作的,且还没有存放Strip1数据块的节点上,从而恢复Strip1的冗余。

无论副本机制还是纠删码机制,在写入流程和重建流程中,都存在大量的节点间数据传递,带来网络开销,这个开销总体上与所需要写入和重建的数据量成正比。在写占比高的应用场景,由于数据冗余机制带来的网络开销,不仅对性能造成不良影响,而且也会要求集群内部通讯网络带宽与集群对外服务接口带宽相同或者更高,从而带来集群组网的复杂度和成本上升。



技术实现要素:

根据本发明实施例提供的一种数据分布式存储方法及系统,既具备share nothing架构高可扩展能力,又能够消除share nothing架构的网络瓶颈。

根据本发明实施例提供的一种数据分布式存储方法,包括:

通过把存储系统配置成多个存储分区,将所述存储系统中所有参与数据存储的节点分别配置到相应的存储分区中;

每个存储分区中的所有节点通过共享分区内的硬盘,实现数据在存储分区内的存储;

所述存储系统中的所有存储分区通过互连,确定各存储分区的存储能力,并根据所确定的存储分区的存储能力,启动存储分区间的数据迁移操作。

优选地,所述的将所述存储系统中所有参与数据存储的节点分别配置到相应的存储分区中包括:

根据每个存储分区的可靠性指标,确定每个存储分区所需的节点数量,并将相应数量的节点配置到每个存储分区。

优选地,所述的每个存储分区中的所有节点通过共享分区内的硬盘,实现数据在存储分区内的存储包括:

将每个存储分区中所有硬盘分别配置给分区中相应的节点,使分区中的相应节点各自独占若干硬盘;

将同一数据对象的冗余数据存储在同一个节点的不同硬盘中。

优选地,所述的存储系统中的所有存储分区通过互连,确定各存储分区的存储能力,并根据所确定的存储分区的存储能力,启动存储分区间的数据迁移操作包括:

通过交互所有存储分区的节点的管理信息,确定各存储分区的存储能力;

根据所确定的各存储分区的存储能力,确定各存储分区的存储能力是否充足;

若存在存储能力不足的存储分区,则将所述存储能力不足的存储分区的部分数据迁移至其它具有充足存储能力的存储分区。

优选地,在所述的确定各存储分区的存储能力之前,还包括:

通过交互每个存储分区中各个节点的管理信息,监控每个存储分区中各个节点的状态;

当监控到一个节点退出工作状态时,从所述退出工作状态的节点所在存储分区中选取其它正常工作的节点作为接管节点,并由所述接管节点接管所述退出工作状态的节点管理的所有硬盘。

优选地,从所述退出工作状态的节点所在存储分区中随机选取接管节点。

优选地,根据负载均衡算法,从所述退出工作状态的节点所在存储分区中选取负载最小的一个或多个接管节点。

优选地,从所述退出工作状态的节点所在存储分区中,选取与所述退出工作状态的节点的物理距离最小的一个或多个接管节点。

优选地,还包括:

监控每个节点管理的所有硬盘;

当监控到某一节点管理的硬盘退出工作状态时,利用所述节点管理的其它硬盘重建所述退出工作状态的硬盘的数据。

根据本发明实施例提供的存储介质,其存储用于实现上述数据分布式存储方法的程序。

根据本发明实施例提供的一种数据分布式存储系统,包括:

多个节点,用于参与数据存储;

多个存储分区,通过对所述多个节点进行分区配置而形成,其每个存储分区被配置有至少两个节点;

系统集群网络,用于将所述多个存储分区进行互联,以便确定各存储分区的存储能力,并根据所确定的存储分区的存储能力,启动存储分区间的数据迁移操作;

多个分区集群网络,其每个分区集群网络对应一个存储分区,用于使该存储分区中的所有节点共享分区中的硬盘,实现数据在存储分区中的存储。

本发明实施例提供的技术方案具有如下有益效果:

1.本发明实施例既满足数据分布式存储系统的高性能要求,又满足高扩展能力要求;

2.本发明能够大大减小数据分布式存储系统中由于数据冗余机制导致的节点间数据转发,有效隔离故障对系统的影响范围。

附图说明

图1是现有技术提供的share memory的集群架构示意图;

图2是现有技术提供的share disk的集群架构第一示意图,该方式正常时节点只管理和访问部分硬盘;

图3是现有技术提供的share disk的集群架构第二示意图,该方式所有节点可以访问所有硬盘;

图4是现有技术提供的share nothing的集群架构示意图;

图5是现有技术提供的副本冗余方式示意图;

图6是现有技术提供的纠删码冗余方式示意图;

图7是本发明实施例提供的数据分布式存储方法流程图;

图8是本发明实施例提供的数据分布式存储系统框图;

图9是本发明实施例提供的数据分布式存储系统架构图。

具体实施方式

以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图7是本发明实施例提供的数据分布式存储方法流程图,如图7所示,步骤包括:

步骤S101:通过把存储系统配置成多个存储分区,将所述存储系统中所有参与数据存储的节点分别配置到相应的存储分区中。

步骤S101包括:根据每个存储分区的可靠性指标,确定每个存储分区所需的节点数量,并将相应数量的节点配置到每个存储分区,使存储分区中的一个或以上节点退出服务后,该存储分区仍能够提供服务。

步骤S102:每个存储分区中的所有节点通过共享分区内的硬盘,实现数据在存储分区内的存储。

步骤S102包括:将每个存储分区中所有硬盘分别配置给分区中相应的节点,使分区中的相应节点各自独占若干硬盘,将同一数据对象的冗余数据存储在同一个节点的不同硬盘中。也就是说,本实施例在同一个节点上实现数据的冗余机制。

步骤S103:所述存储系统中的所有存储分区通过互连,确定各存储分区的存储能力,并根据所确定的存储分区的存储能力,启动存储分区间的数据迁移操作。

步骤S103包括:通过交互每个存储分区中各个节点的管理信息,监控每个存储分区中各个节点的状态,当监控到一个节点退出工作状态时,从所述退出工作状态的节点所在存储分区中选取其它正常工作的节点作为接管节点,并由所述接管节点接管所述退出工作状态的节点管理的所有硬盘。然后通过交互所有存储分区的节点的管理信息,确定各存储分区的存储能力,然后根据所确定的各存储分区的存储能力,确定各存储分区的存储能力是否充足,如果存在存储能力不足的存储分区,则将所述存储能力不足的存储分区的部分数据迁移至其它具有充足存储能力的存储分区。其中选取接管节点的方式可以采用以下几种:1.随机选取接管节点;2.根据负载均衡算法,选取接管节点;3.根据与所述退出工作状态的节点的物理距离,选取距离最小接管节点。

本实施例在节点退出服务时,通过优先在其所在分区内接管该节点的存储资源,大大减小了数据迁移量。

本实施例的多个分区间采用无共享架构,使得系统具有较好的横向扩展能力。

本实施例还可以监控每个节点管理的所有硬盘,如果监控到某一节点管理的硬盘退出工作状态,由于本实施例在单个节点内实现数据冗余机制,因此利用该节点管理的其它硬盘重建所述退出工作状态的硬盘的数据即可。

本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,该程序在执行时,包括步骤S101至步骤S103。其中,所述的存储介质可以为ROM/RAM、磁碟、光盘等。

图8是本发明实施例提供的数据分布式存储系统框图,如图8所示,包括:

多个节点,用于参与数据存储;

多个存储分区,通过对所述多个节点进行分区配置而形成,其每个存储分区被配置有至少两个节点;

系统集群网络,用于将所述多个存储分区进行互联,以便确定各存储分区的存储能力,并根据所确定的存储分区的存储能力,启动存储分区间的数据迁移操作;

多个分区集群网络,其每个分区集群网络对应一个存储分区,用于使该存储分区中的所有节点共享分区中的硬盘,实现数据在存储分区中的存储。

图8中,在存储系统中,具有多个存储分区,所述多个存储分区间通过系统集群网络互连。在每个存储分区中,每个节点各自具有独立的CPU、内存和硬盘,各个节点通过该存储分区对应的分区集群网络互连。

下面将存储系统和存储分区分别简称为系统和分区。

从硬盘端观察,整个存储系统内的硬件节点分为多个分区,每个分区内的节点采用共享硬盘架构;分区间采用无共享架构。从存储应用观察,系统能够以分区为单位做水平扩展,具备良好的横向扩展(scale-out)特征。

系统正常工作情况下,一个数据对象存储在一个分区中,这个数据对象的冗余机制在一个节点内实现,冗余数据分布和冗余的管理(例如效验,重构等)都在一个节点内处理,冗余机制不产生节点间的通讯。节点发生故障退出服务,由分区内的其他节点接管故障节点的存储资源,这个接管过程只需要传递控制信息,没有所存储数据的跨节点转发。分区中发生故障,如果仍有足够冗余能力,则数据对象继续存储在该分区中,不影响其他分区;当分区中发生的故障,导致该分区无法保证最低冗余时,数据对象迁移到其他分区中。

图9是本发明实施例提供的数据分布式存储系统架构图,如图9所示,整个系统由多个分区(Zone)组成。每个分区中包含多个节点(至少2个),每个节点有自己的CPU和内存,这些节点的硬件可以是开放的商用服务器硬件(COTS)或者是封闭的专有硬件。每个分区中的节点数,应根据系统的可用性指标来决定,例如系统可靠性指标要求系统在任何n个节点失效后仍然可以正常服务,则每个分区的节点数不应小于n+1。

整个系统中的所有节点,由集群网络Fabric 1互联,根据当前技术现实,Fabric1可以是GE/10GE交换网络、InfiniteBand交换网络、PCIe交换网络等。需要说明的是,Fabric 1是一种逻辑互联方式,根据应用需求,实施时可以通过双平面组网等方式提升网络可用性。

系统各节点上都运行集群管理软件,该软件通过各节点间的相互管理交互,来确定各个节点的工作状态,在节点退出服务或者恢复服务时,更新集群成员状态。该集群管理软件已有相关技术实现,例如Ceph的Monitor等,其机制不在本发明实施例描述。

每个分区内,由Fabric 2交换网络连接所有的节点和硬盘资源,根据当前技术现实,Fabric 2可以是SAS交换网络、以太网络、PCIe交换网络等。同样的,实施时,Fabric 2可通过双平面组网等方式提升网络可用性。

正常工作时,分区内通过硬件或者软件进行配置,例如通过SAS Zone技术、以太网的VLAN技术等网络配置技术,相关技术不在本申请描述,使得一个分区内的不同节点各自独占一部分硬盘资源,不同节点并不同时访问同一个硬盘。也就是正常工作状态下,系统逻辑上是无共享架构。

但与前述无共享架构不同的是,本实施例中,系统中数据存储并不采用跨节点的冗余方式,所有的数据冗余机制在单个节点内完成。因此,本实施例中不会出现前述无共享架构中由于采用多副本或者纠删码等跨节点冗余机制导致的网络开销。

本实施例中,数据冗余在单个节点管理的不同硬盘间实现,可以采用RAID技术,也可以在多个硬盘间采用多副本,纠删码等冗余方式。同时,根据应用对于冗余的要求选择不同的RAID级别,不同副本数,不同效验数目。单节点内的冗余机制使得单个节点下单个或者多个硬盘退出服务时,该节点上的用户数据不会丢失;而且在单个或者多个硬盘退出服务后,节点上启动重建流程,尝试恢复数据冗余度,保证数据安全。此处描述的节点内的冗余技术,例如RAID、多副本、纠删码等属于已有技术,不在本发明实施例中描述。

本实施例中,数据冗余机制在单个节点下生效,也就是说,数据本身和相关的冗余都放在同一个节点下管理。因此,正常情况下,单个节点下保存的用户数据只能通过该节点进行访问。在某个节点故障退出服务时,这个节点下的硬盘上的数据将无法通过该节点继续访问。系统的集群管理软件发现节点退出服务后,系统选择分区内其他正常节点接管该故障节点下的所有硬盘,使得可以通过该接管节点对该故障节点管理的所有数据进行访问。

节点故障后,系统在分区内选择接管节点,可以采取但不限于如下方式:1)随机选择;2)根据负荷均衡原则选择分区内当前负荷最轻的节点;3)选择分区内物理位置距故障节点最近的节点。

在分区内多个节点故障时,分区内其他节点接管该故障节点的硬盘后,系统判断分区内所剩节点的存储服务能力是否足够,如果分区内所剩节点提供服务能力不足,则系统启动分区间的数据迁移,在系统的不同分区间进行负荷均衡。分区间的负载均衡算法直接依赖分布式存储系统数据分布算法,例如Ceph存储系统的CRUSH算法。由于该数据分布算法并不是本发明实施例覆盖的内容,因此本发明实施例不再描述。

综上所述,本发明的实施例具有以下技术效果:

本发明实施例既具备share nothing架构高可扩展能力,又能够消除share nothing架构的网络瓶颈。

尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1