CN114610235A - 分布式存储集群、存储引擎、两副本存储方法及设备 - Google Patents

分布式存储集群、存储引擎、两副本存储方法及设备 Download PDF

Info

Publication number
CN114610235A
CN114610235A CN202210193755.2A CN202210193755A CN114610235A CN 114610235 A CN114610235 A CN 114610235A CN 202210193755 A CN202210193755 A CN 202210193755A CN 114610235 A CN114610235 A CN 114610235A
Authority
CN
China
Prior art keywords
storage
copy
data
raid
logical volume
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210193755.2A
Other languages
English (en)
Inventor
钟晋明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Big Data Technologies Co Ltd
Original Assignee
New H3C Big Data Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by New H3C Big Data Technologies Co Ltd filed Critical New H3C Big Data Technologies Co Ltd
Priority to CN202210193755.2A priority Critical patent/CN114610235A/zh
Publication of CN114610235A publication Critical patent/CN114610235A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种分布式存储集群、存储引擎、两副本存储方法及设备,用于解决分布式存储两副本机制下数据完整性技术问题。本发明提供的分布式存储集群部署raid0和raidx两类raid逻辑卷,采用2副本的副本存储策略,写入分布式存储集群的逻辑卷LUN的数据块Chunk的2个副本分别存储在不同的存储结点上的不同类型的raid逻辑卷中。其中,raidx指raid3、raid5、raid6或更高冗余度的磁盘冗余阵列。本发明可进一步保障分布式存储集群的数据完整性和安全性。

Description

分布式存储集群、存储引擎、两副本存储方法及设备
技术领域
本发明涉及通信及云计算技术领域,尤其涉及一种分布式存储集群、存储引擎、两副本存储方法及设备。
背景技术
传统的网络存储系统采用集中的存储服务器存放所有数据,集中式存储服务器可能会成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。
分布式存储是将数据分散存储在多台独立的设备上。采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
分布式存储通常采用多副本机制,一般有两副本,三副本,每个副本分别存储在不同的存储节点上。存储集群的可用存储空间数量为集群中每个分布式存储节点的存储空间之和/副本个数。
当分布式存储采用两副本机制时,会面临两副本的双物理磁盘失效的可能性,会导致数据完整性破坏。双盘失效是指,存储节点上用于创建逻辑卷的物理磁盘产生故障的可能性会随着上电时间及使用容量的增加而增加,当集群中出现第一块物理磁盘故障时,在更换坏盘的过程中,存储系统正在将旧数据恢复到新物理磁盘上时,此时,有一定概率会发生另一块物理磁盘故障,当数据的两个副本刚好都在这两块故障的物理磁盘上时,就会产生不可恢复的数据损坏,破坏了存储集群的数据完整性。
为了避免产生数据不可恢复的问题,可采用三副本或三副本以上的副本机制来解决两副本的双盘失效问题,因为三个以上副本存放在3个以上不同的节点的不同物理磁盘上,所以可以容忍同时坏两个盘,当坏两个盘,损坏两个副本时,仍有一个副本可用。但采用三副本,存储集群的最大可用容量就会低于两副本,前者为集群总可用存储空间/3,后者为集群总可用存储空间/2。且三副本性能低于两副本,因为分布式存储的严格一致性,三副本要求同时完成三个副本的写入,而两副本只需要同时完成两个副本的写入。
发明内容
有鉴于此,本发明提供一种分布式存储集群、存储引擎、两副本存储方法及设备,用于解决分布式存储两副本机制下数据完整性技术问题。
基于本发明实施例的一方面,本发明提供了一种分布式存储集群两副本存储方法,该方法应用于拥有多个存储节点的分布式存储集群中;
所述分布式存储集群采用2副本的副本存储策略;
所述分布式存储集群拥有两类磁盘冗余阵列raid存储池,一类是由raid0逻辑卷组成的raid0存储池,另一类是由raidx逻辑卷组成的raidx存储池;
所述分布式存储集群的同一数据块Chunk的2个副本分别存储在不同的存储结点上的不同类型的raid逻辑卷中。
进一步地,当所述分布式存储集群的存储引擎接收到数据写入请求时,所述存储引擎写入数据的步骤包括:
所述存储引擎查找待写入数据的数据块的元数据,获取该数据块对应的两个副本的存储位置;
获取所述两个副本所在逻辑卷的raid卷类型和逻辑卷的当前状态;
判断所述两个副本所在逻辑卷中raidx逻辑卷的状态是否正常;
当所述raidx逻辑卷的状态为正常时,优先向raidx逻辑卷中的副本写入所述待写入数据。
进一步地,当所述分布式存储集群的存储引擎接收到数据读取请求时,所述存储引擎读取数据的步骤包括:
所述存储引擎查找待读取数据所在数据块的元数据,获取该数据块对应的两个副本的存储位置;
获取所述两个副本所在逻辑卷的raid卷类型和逻辑卷的当前状态;
判断所述两个副本所在逻辑卷中raidx逻辑卷的状态是否正常;
当所述raidx逻辑卷的状态为正常时,优先从所述raidx逻辑卷中的副本读取所述待读取数据。
进一步地,所述raidx逻辑卷为基于raid3、raid5、raid6或更高冗余度的磁盘冗余阵列创建的逻辑卷。
基于本发明实施例的一方面,本发明还提供一种分布式存储集群:
所述分布式存储集群拥有多个存储节点;
所述分布式存储集群采用2副本的副本存储策略;
所述分布式存储集群拥有两类磁盘冗余阵列raid存储池,一类是由raid0逻辑卷组成的raid0存储池,另一类是由raidx逻辑卷组成的raidx存储池;
所述分布式存储集群的同一数据块Chunk的2个副本分别存储在不同的存储结点上的不同类型的raid逻辑卷中。
进一步地,当所述分布式存储集群的存储引擎接收到数据写入请求时,所述存储引擎查找待写入数据的数据块的元数据,获取该数据块对应的两个副本的存储位置;
所述存储引擎获取所述两个副本所在逻辑卷的raid卷类型和逻辑卷的当前状态,并判断所述两个副本所在逻辑卷中raidx逻辑卷的状态是否正常;
当所述raidx逻辑卷的状态为正常时,所述存储引擎优先向raidx逻辑卷中的副本写入所述待写入数据。
进一步地,当所述分布式存储集群的存储引擎接收到数据读取请求时,所述存储引擎查找待读取数据所在数据块的元数据,获取该数据块对应的两个副本的存储位置;
所述存储引擎获取所述两个副本所在逻辑卷的raid卷类型和逻辑卷的当前状态,并判断所述两个副本所在逻辑卷中raidx逻辑卷的状态是否正常;
当所述raidx逻辑卷的状态为正常时,优先从所述raidx逻辑卷中的副本读取所述待读取数据。
进一步地,所述raidx逻辑卷为基于raid3、raid5、raid6或更高冗余度的磁盘冗余阵列创建的逻辑卷。
基于本发明实施例的一方面,本发明还提供一种分布式存储集群的存储引擎,所述存储引擎包括:
写入模块,用于在接收到数据写入请求时,查找将要写入待写入数据的第一数据块的元数据,获取所述第一数据块对应的第一副本和第二副本的存储位置;获取所述第一副本和第二副本所在逻辑卷的raid卷类型和逻辑卷的当前状态;判断所述第一副本和第二副本所在逻辑卷中raidx逻辑卷的状态是否正常;当所述raidx逻辑卷的状态为正常时,优先向raidx逻辑卷中的副本写入所述待写入数据;
读取模块,用于在接收到数据读取请求时,查找待读取数据所在的第二数据块的元数据,获取所述第二数据块对应的第三副本和第四副本的存储位置;获取所述第三副本和第四副本所在逻辑卷的raid卷类型和逻辑卷的当前状态;判断所述第三副本和第四副本所在逻辑卷中raidx逻辑卷的状态是否正常;当所述raidx逻辑卷的状态为正常时,优先从所述raidx逻辑卷中的副本读取所述待读取数据。
本发明提供的分布式存储集群部署raid0和raidx两类raid逻辑卷,采用2副本的副本存储策略,写入分布式存储集群的逻辑卷LUN的数据块Chunk的2个副本分别存储在不同的存储结点上的不同类型的raid逻辑卷中。其中,raidx指raid3、raid5、raid6或更高冗余度的磁盘冗余阵列。本发明可进一步保障分布式存储集群的数据完整性和安全性。
附图说明
为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本发明实施例的这些附图获得其他的附图。
图1为本发明一实施例中分布式存储集群中存储配置方式以及两个数据副本在分布式存储集群中部署的示例;
图2为本发明另一实施例中分布式存储集群中存储配置方式以及两个数据副本在分布式存储集群中部署的示例;
图3为本发明一实施例提供的分布式存储集群两副本数据写入步骤流程图;
图4为本发明一实施例提供的分布式存储集群两副本数据读取步骤流程图;
图5为本发明一实施例提供的用于实现本发明提供的分布式存储集群中的存储引擎所执行方法步骤的电子设备结构示意图。
具体实施方式
在本发明实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明实施例。本发明实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本发明中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本发明目的是提供一种分布式存储集群、存储引擎及两副本存储方法和设备,用于解决分布式存储两副本机制下数据完整性技术问题。本发明的基本思想是:分布式存储集群部署raid0和raidx两类raid逻辑卷,采用2副本的副本存储策略,写入分布式存储集群的逻辑卷LUN的数据块Chunk的2个副本分别存储在不同的存储结点上的不同类型的raid逻辑卷中。其中,raidx指raid3、raid5、raid6或更高冗余度的磁盘冗余阵列。本发明可进一步保障分布式存储集群的数据完整性和安全性。
要实现本发明的发明目的,本发明技术方案至少需要进行以下分布式存储的配置和部署策略的设计:
存储配置和部署策略1:分布式存储集群采用2副本的副本分布策略。
即本发明技术方案是专门针对分布式存储2副本机制的改进。
本发明中所述副本分为两个层级,一个是分布式存储级的副本,一个是磁盘冗余阵列级的副本。分布式存储的副本机制是指分布式存储集群中为保障数据的完整性和安全性将写入分布式存储集群的数据复制成多个内容相同的副本,将这些副本分别存放在不同的存储节点中的机制。磁盘冗余阵列即RAID的副本机制指的是存入RAID的数据以冗余校验方式存入多个磁盘的机制,数据可能是分块存放在不同的磁盘中,当一块盘故障时,可通过其它未故障的磁盘中的数据和校验数据恢复出故障盘上的数据。
存储配置和部署策略2:分布式存储集群中需部署两类raid存储池,一类是raid0存储池,另一类是raidx存储池;
raid0存储池中,可将每个磁盘都配置为raid0,其中的每个卷必须对应一个物理磁盘。假如采用两块磁盘组成两个raid0卷,当损坏一个磁盘,则两个raid0卷会全部损坏。
raidx指raid3、raid5、raid6或更高冗余度的磁盘冗余阵列。例如当raidx为raid5时,在raid5存储池中,可将多块磁盘组成多个raid5卷,其中的每个卷都包括至少3个物理磁盘。
优选地,在分布式存储集群中,raid0存储池中的raid0逻辑卷的总个数与raidx存储池中的raidx逻辑卷的总个数相同。如果raid0逻辑卷总数和raidx逻辑卷总数不相同,会造成一定的存储空间的浪费和管理上的困难,因此优选地方案是raid0逻辑卷总数和raidx逻辑卷总数尽量相同即raid0逻辑卷的总存储空间与raidx逻辑卷的总存储空间尽量相同,以使存储空间得到最大的利用。
存储配置和部署策略3:存入分布式存储集群的两个数据副本分别分布在不同的存储结点上的不同raid逻辑卷上。
分布式存储的两个数据副本中的其中一个副本需部署在raid0存储池中,另外一个数据副本部署在raidx存储中。数据副本分布在不同存储节点是为了防止存储节点单节点故障导致业务的中断和数据的损失,数据副本分别存储raid0逻辑卷和raidx逻辑卷中,可以实现在获得较高存储空间利用率的同时避免双物理磁盘损坏导致数据丢失的技术效果。
图1为本发明一实施例中分布式存储集群中存储配置方式以及两个数据副本在分布式存储集群中部署的示例。该实施例中的分布式存储集群包括3个存储节点,在每个存储节点上都部署有raid0存储池和raid5存储池。每个raid0存储池中的每个raid0逻辑卷都对应一个物理磁盘。每个raid5存储池中,每个raid5逻辑卷都由3个物理磁盘组成。当待存储数据A进入分布式存储集群后,基于集群配置的两副本存储策略,数据A被复制为两个相同的副本,分别为副本A1和副本A2。基于本发明的技术方案,这两个副本会被分别存储在两个不同的存储节点上的不同类型的存储池中,一个存储在存储节点1中的raid0存储池中,一个存储在存储节点3中的raid5存储池中。Raid5通常由3块物理磁盘组成,每一份数据块会被切分存储在3块物理磁盘中,例如两块物理磁盘做数据盘,一块物理磁盘做校验盘,当3块物理磁盘中的任意一块损坏时,都可以通过其它两块物理磁盘恢复出损坏的数据。图1示例的分布式存储集群中的存储配置为每个节点2个raid0逻辑卷、2个raid5逻辑卷,总共5块磁盘,其中2块磁盘组成两个raid0逻辑卷,3块磁盘组成两个raid5逻辑卷,3个节点每个节点上2个raid0逻辑卷和2个raid5逻辑卷共6个raid0逻辑卷和6个raid5逻辑卷。
图2为本发明另一实施例中分布式存储集群中存储配置方式以及两个数据副本在分布式存储集群中部署的示例,该示例的分布式存储集群中包括3个存储节点,存储节点1部署有4个raid0逻辑卷,在存储节点2和存储节点3上分别部署有2个raid5逻辑卷,Raid0逻辑卷数量和raid5逻辑卷数量相同。
基于前述的分布式存储集群的配置和部署策略,在集群对外提供存储服务之前,需要对分布式存储集群做如下的配置和部署步骤:
步骤S1.根据预设的分布式存储集群的存储配置和部署策略,配置raid0逻辑卷和raidx逻辑卷;预设的分布式存储集群的存储配置和部署策略包括:采用2副本的副本分布策略、2个副本分别分布在raid0逻辑卷和raidx逻辑卷中、2个副本所在的raid0逻辑卷和raidx逻辑卷分别位于不同的存储节点。
在创建分布式存储集群之前,首先要根据设计需求确地所需的存储空间大小,根据两副本的存储分布策略为不同存储节点创建和配置raid0存储池和raidx存储池。
步骤S2.配置副本分布策略,使得分布式存储集群中对外提供的存储空间中的任一数据块Chunk都有两个副本,且两个副本分别分布在不同存储节点的raid0逻辑卷和raid5逻辑卷中;
步骤S3.在分布式存储集群接收到针对指定数据块Chunk的读写请求时,在该指定数据块的raidx逻辑卷中的副本正常的情况下,优先使用该指定数据块在raidx逻辑卷中的副本;在该指定数据块的raidx逻辑卷中的副本正在重建的情况下,优先使用该指定数据块在raid0逻辑卷中的副本。
在本发明一实施例中,步骤S1中根据预设的分布式存储集群的存储配置和部署策略配置raid0逻辑卷和raidx逻辑卷的步骤可进一步包括:
步骤S11:检查分布式存储集群各存储节点物理磁盘数量是否满足要求;
由于本发明实施例采用的预设的分布式存储集群的存储配置和部署策略采用2副本的副本分布策略且2个副本分别分布在不同节点的raid0逻辑卷和raidx逻辑卷中,因此从空间利用率和方便管理的角度考虑,优选地要求集群中raid0总卷数量(磁盘空间)等于或近似等于集群中的raidx总卷数量(磁盘空间);
当每个磁盘容量相同,卷数量相同,也代表容量相同;当每个磁盘容量不同时,那么要求集群中的raid0逻辑卷的总磁盘空间等于或近似等于集群中的raidx逻辑卷的总磁盘空间即可。
例如,当raidx选择raid5时,一个raid5至少需要3块物理磁盘,可以采用2块数据盘1块校验盘即2+1的构造模式,也可以选择3块数据盘1块校验盘即3+1的构造模式。Raid0可以只需要1个物理磁盘。
该步骤需要检查分布式存储集群各存储节点的物理磁盘数量是否满足集群的部署要求,例如,集群有3个节点,在每个节点都部署由2个raid0卷组成的raid0存储池和由2个raid5卷组成的raid5存储池,2个raid0卷需要2块物理磁盘,2个raid5卷需要3块物理磁盘。
步骤S12:配置并计算各存储节点raid0和raidx逻辑卷数量是否相同;
由于本发明采用2副本分布策略且2副本需要部署在不同节点的不同类型的raid卷上,因此需要配置和计算存储节点上配置的两类raid卷数量(即磁盘空间)是否相同。
例如,在本发明一实施例中,集群1有3个存储节点,每个存储节点物理磁盘数量为5块,可采用如下的部署方式:
每个节点中的2块物理磁盘配置成raid0存储池,包括2个raid0逻辑卷。
每个节点中的3块物理磁盘配置成raid5存储池,包括2个raid5逻辑卷。
根据上述配置,则整个分布式存储集群中:
raird0卷数量=2*3=6
raird5卷数量=2*3=6
在另一实施例中,集群2有3个存储节点,存储节点1和2分别有3块物理磁盘,节点3有4块物理磁盘,采用的部署方式如下:
节点1和节点2中的3块物理磁盘配置成raid5存储池,包括2个raid5逻辑卷;
节点3中的4块物理磁盘配置成raid0存储池,包括4个raid0逻辑卷;
根据上述配置,则整个分布式存储集群中:
集群中raird5逻辑卷数量为2*2=4
集群中raird0逻辑卷数量为4*1=4
当完成步骤S11和S12的检查,确定物理磁盘数量符合要求且两类逻辑卷数量相同后,即可开始实际的配置和部署操作。
步骤S13:调用raid驱动工具,创建各存储节点所需的raid0逻辑卷和raidx逻辑卷,并记录各逻辑卷的raid类型和容量。
例如,物理磁盘hdd在配置raid后的卷记为逻辑卷ldd;
ldd1 raid0 600G;ldd2 raid0 600G;
ldd3 raid5 600G;ldd4 raid5 600G;
对逻辑卷进行disk编号及raid类型记录:
disk0 ldd1 raid0;disk1 ldd2 raid0;
disk2 ldd3 raid5;disk3 ldd4 raid5。
步骤S14:创建分布式存储集群,将所创建的raid0逻辑卷和raidx逻辑卷加入所创建的分布式存储集群。
创建分布式存储集群后进行集群初始化,启动存储服务,存储服务启动后,管理员可访问存储系统,为分布式存储集群创建存储卷,如100G,2副本。
在本发明一实施例中,步骤S2用于配置副本分布策略,该副本分布策略使得分布式存储集群对外提供的存储空间中的任一数据块Chunk都有两个副本,且两个副本分别分布在不同存储节点的raid0逻辑卷和raid5逻辑卷中,采用所述副本分布策略分配逻辑卷LUN的数据块Chunk的两个副本的过程如下:
步骤S21.为副本1选择任意一个存储节点的任意一个逻辑卷。
步骤S21.在为副本1选定的存储节点之外的其它存储节点中,选择与副本1选定逻辑卷类型不同的逻辑卷作为副本2的逻辑卷。
例如,分布式存储集群包括3个存储节点,每个节点上都有2个raid0逻辑卷,2个raid5逻辑卷,当副本1被分配到节点1中的raid0逻辑卷上时,副本2则只能分配到节点2或节点3上的raid5逻辑卷中。
在完成集群逻辑卷数据块的两副本分组分布处理后,元数据服务会记录每个数据块的副本存储位置、副本所在逻辑卷的类型等元数据信息。管理员在创建完分布式存储集群并副本分布配置后,即可将为创建的逻辑卷挂载到存储集群中,在完成所有逻辑卷的挂载后就可以对外提供存储服务了。
图3为本发明一实施例提供的分布式存储集群两副本数据写入步骤流程图,基于本发明提供的分布式存储集群的配置和部署策略及副本分布策略创建集群后,为了提高数据写入效率,分布式存储集群的存储引擎在写入数据时优先向raidx逻辑卷中的副本写入数据。副本数据写入过程如下:
步骤S31.存储引擎查找待写入数据的数据块的元数据,获取该数据块对应的两个副本即副本1和副本2的存储位置;
存储引擎在接收到写入请求后,首先会确定将数据写入到哪个数据块Chunk中,在确定了待写入数据的数据块后,会去元数据服务模块查找该数据块的元数据,根据获得元数据即可获知该数据块对应的两个副本的存储位置。通过元数据服务还可获得副本所在的存储节点、所在的逻辑卷及逻辑卷的raid卷类型等信息。
步骤S32.获取两个副本所在逻辑卷的raid卷类型和逻辑卷的当前状态;
获取副本所在逻辑卷的状态的方式可以使用raid工具,通过如下示例的命令来获得:
storcli64/c0/v1 show//适用于lsi厂商raid
步骤S33.判断两个副本所在逻辑卷中raidx逻辑卷的状态是否正常,如果正常执行步骤S34,否则执行步骤S35;
步骤S34.优先向raidx逻辑卷中的副本写入所述待写入数据,然后在向raid0逻辑卷中的副本写入所述待写入数据;
步骤S35.向raid0逻辑卷中的副本写入所述待写入数据。
当raidx逻辑卷的状态为重建rebuild时,可等待raidx逻辑卷恢复正常后再写入待写入数据。若raidx逻辑卷的状态为离线offline或失败fail状态,则表示raidx逻辑卷不可用,需管理员介入处理。
图4为本发明一实施例提供的分布式存储集群两副本数据读取步骤流程图,基于本发明提供的分布式存储集群的配置和部署策略及副本分布策略创建集群后,为了提高数据读取的效率,分布式存储集群的存储引擎在读取数据时优先从raidx逻辑卷中的副本读取数据。副本数据读取过程如下:
步骤S41.存储引擎查找待读取数据所在数据块的元数据,获取该数据块对应的两个副本的存储位置;
存储引擎在接收到读取请求后,首先确定从哪个数据块Chunk中读取数据,然后去元数据服务模块查找该数据块的元数据,根据获得元数据得到该数据块对应的两个副本的存储位置。通过元数据服务还可获得副本所在的存储节点、所在的逻辑卷及逻辑卷的raid卷类型等信息。
步骤S42.获取两个副本所在逻辑卷的raid卷类型和逻辑卷的当前状态;
获取副本所在逻辑卷的状态的方式可以使用raid工具,例如通过storcli64/c0/v1 show命令来获取指定逻辑卷的当前状态。
步骤S43.判断两个副本所在逻辑卷中raidx逻辑卷的状态是否正常,如果正常执行步骤S44,否则执行步骤S45;
步骤S44.优先从raidx逻辑卷中的副本读取所述待读取数据;
步骤S45.从raid0逻辑卷中的副本读取所述待读取数据。
由于通常raidx逻辑卷的读写性能都高于raid0逻辑卷,因此,本发明优先使用raidx逻辑卷中的副本进行读写,可提高分布式存储集群的整体读写性能。
本发明主要的发明目的是解决采用两副本存储策略的分布式存储集群在同时出现两块物理磁盘损坏的情况下数据完整性、可靠性和安全性的技术问题。以下结合本发明技术方案分析说明针对两块物理磁盘同时故障的不同情况下,本发明对数据完整性和安全性的保护效果。
情况1:在两块同时故障或损坏的物理磁盘都在raid0存储池的卷中的情况下,只可能损坏同一数据块Chunk的两个副本中的一个副本,因为在raidx存储池还有另一份副本,可以保证数据完整性和安全性,在修复或更换故障或损坏的物理磁盘后,分布式存储集群可通过数据恢复功能恢复损坏的副本数据。
情况2:在两块同时故障或损坏的物理磁盘都在raidx存储池的卷中的情况下,只可能损坏同一数据块Chunk的两个副本中的一个副本,因为在raid0存储池还有另一份副本。如果损坏的两块物理磁盘在raidx存储池的不同卷,raid5本身的恢复机制即可保证副本的恢复,不需要分布式存储集群层级的数据恢复处理。如果损坏的两块物理磁盘在raidx存储池的同一逻辑卷中,例如一个raid5阵列中同时有两块物理磁盘故障或损坏,则此种情况下,单凭raid5本身是无法恢复损坏的副本数据的,需要通过分布式存储集群的数据恢复功能使用raid0存储池中的未损坏副本恢复raid5逻辑卷中损坏副本。
情况3:当两块同时故障或损坏的物理磁盘一块在raid0存储池,一块在raidx存储池中时,只要同一数据块Chunk的两个副本不同时都落在这两块物理磁盘上,对副本的保护效果同前面两种情况,若同一数据块Chunk的两个副本正好都在这两个损坏的物理磁盘上,虽然raid0存储池中的副本损坏了,但raidx存储池中的副本仍然能够基于raidx的冗余保护机制得到恢复,从而保证raidx存储池中的副本可用,分布式存储集群可通过集群的数据恢复功能用raidx存储池中的副本恢复raid0存储池中损坏的副本,从而保证集群层级的数据完整性和安全性。
通过上述分析可知,本发明通过利用分布式存储集群的副本机制和raid卡的硬件本身的恢复能力,从理论上可完全容忍集群中任意两块物理磁盘同时故障或损坏,从保证分布式存储集群的数据完整性和安全性。
从分布式存储集群角度考虑,在存储集群采用两副本存储策略即两副本机制的情况下,两副本中的一个副本存放在raid0卷上,另一个副本存放在raidx卷上,在优先使用raidx逻辑卷读写副本数据时,分布式存储集群的数据读写性能要优于普通不在用raid的两副本或两副本以上的存储机制。
分布式存储集群在数据写入时,为了保证数据一致性,通常有两种方式,一种是强一致性方式,要求两个副本写完才返回写入结果;另一种是弱一致性方式,两个副本中先写一个副本就返回写入结果,此种方式是牺牲了强一致性来提升写入性能。
本发明技术方案同样也可采用上述两种方式,在本发明优选实施例中,为了发挥raidx逻辑卷的读写性能,在进行数据读/写时,优先读取或写入raidx逻辑卷中的副本,在完成raidx逻辑卷中的副本的写入后再进行raid0逻辑卷中副本的写入。当然,也可采用强一致性模式,在完成两个副本的写入后再返回写入结果,只是写入性能稍微有一点损失,不影响本发明的发明目的的实现。例如,由于raid5是有多块物理磁盘组成的,而raid0是由一块物理盘组成,所以raid5卷中的副本的可靠性和读写性能都高于raid0副本,先写raid5副本返回,性能高于强一致性机制,高可靠性高于弱一致性。
图5为本发明一实施例提供的用于实现本发明提供的分布式存储集群中的存储引擎所执行方法步骤的电子设备结构示意图,该设备500包括:诸如中央处理单元(CPU)的处理器510、通信总线520、通信接口540以及存储介质530。其中,处理器510与存储介质530可以通过通信总线520相互通信。存储介质530内存储有计算机程序,当该计算机程序被处理器510执行时即可实现本发明提供的存储引擎所执行方法步骤中的一个或多个步骤的功能。
其中,存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例中所提及的分布式存储集群中用于创建raid0或raidx逻辑卷的物理磁盘仅是一种构成存储阵列的存储介质的示例,除磁盘外,还可以是光盘、固态硬盘等存储介质类型,本发明不所限定。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本发明描述的过程的操作,除非本发明另外指示或以其他方式明显地与上下文矛盾。本发明描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本发明所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种分布式存储集群两副本存储方法,其特征在于,该方法应用于拥有多个存储节点的分布式存储集群中;
所述分布式存储集群采用2副本的副本存储策略;
所述分布式存储集群拥有两类磁盘冗余阵列raid存储池,一类是由raid0逻辑卷组成的raid0存储池,另一类是由raidx逻辑卷组成的raidx存储池;
所述分布式存储集群的同一数据块Chunk的2个副本分别存储在不同的存储结点上的不同类型的raid逻辑卷中。
2.根据权利要求1所述的方法,其特征在于,当所述分布式存储集群的存储引擎接收到数据写入请求时,所述存储引擎写入数据的步骤包括:
所述存储引擎查找待写入数据的数据块的元数据,获取该数据块对应的两个副本的存储位置;
获取所述两个副本所在逻辑卷的raid卷类型和逻辑卷的当前状态;
判断所述两个副本所在逻辑卷中raidx逻辑卷的状态是否正常;
当所述raidx逻辑卷的状态为正常时,优先向raidx逻辑卷中的副本写入所述待写入数据。
3.根据权利要求1所述的方法,其特征在于,当所述分布式存储集群的存储引擎接收到数据读取请求时,所述存储引擎读取数据的步骤包括:
所述存储引擎查找待读取数据所在数据块的元数据,获取该数据块对应的两个副本的存储位置;
获取所述两个副本所在逻辑卷的raid卷类型和逻辑卷的当前状态;
判断所述两个副本所在逻辑卷中raidx逻辑卷的状态是否正常;
当所述raidx逻辑卷的状态为正常时,优先从所述raidx逻辑卷中的副本读取所述待读取数据。
4.根据权利要求1至3任一项所述的方法,其特征在于,
所述raidx逻辑卷为基于raid3、raid5、raid6或更高冗余度的磁盘冗余阵列创建的逻辑卷。
5.一种分布式存储集群,其特征在于,
所述分布式存储集群拥有多个存储节点;
所述分布式存储集群采用2副本的副本存储策略;
所述分布式存储集群拥有两类磁盘冗余阵列raid存储池,一类是由raid0逻辑卷组成的raid0存储池,另一类是由raidx逻辑卷组成的raidx存储池;
所述分布式存储集群的同一数据块Chunk的2个副本分别存储在不同的存储结点上的不同类型的raid逻辑卷中。
6.根据权利要求5所述的分布式存储集群,其特征在于,
当所述分布式存储集群的存储引擎接收到数据写入请求时,所述存储引擎查找待写入数据的数据块的元数据,获取该数据块对应的两个副本的存储位置;
所述存储引擎获取所述两个副本所在逻辑卷的raid卷类型和逻辑卷的当前状态,并判断所述两个副本所在逻辑卷中raidx逻辑卷的状态是否正常;
当所述raidx逻辑卷的状态为正常时,所述存储引擎优先向raidx逻辑卷中的副本写入所述待写入数据。
7.根据权利要求5所述的分布式存储集群,其特征在于,
当所述分布式存储集群的存储引擎接收到数据读取请求时,所述存储引擎查找待读取数据所在数据块的元数据,获取该数据块对应的两个副本的存储位置;
所述存储引擎获取所述两个副本所在逻辑卷的raid卷类型和逻辑卷的当前状态,并判断所述两个副本所在逻辑卷中raidx逻辑卷的状态是否正常;
当所述raidx逻辑卷的状态为正常时,优先从所述raidx逻辑卷中的副本读取所述待读取数据。
8.根据权利要求5至7任一项所述的分布式存储集群,其特征在于,
所述raidx逻辑卷为基于raid3、raid5、raid6或更高冗余度的磁盘冗余阵列创建的逻辑卷。
9.一种分布式存储集群的存储引擎,其特征在于,所述存储引擎包括:
写入模块,用于在接收到数据写入请求时,查找将要写入待写入数据的第一数据块的元数据,获取所述第一数据块对应的第一副本和第二副本的存储位置;获取所述第一副本和第二副本所在逻辑卷的raid卷类型和逻辑卷的当前状态;判断所述第一副本和第二副本所在逻辑卷中raidx逻辑卷的状态是否正常;当所述raidx逻辑卷的状态为正常时,优先向raidx逻辑卷中的副本写入所述待写入数据;
读取模块,用于在接收到数据读取请求时,查找待读取数据所在的第二数据块的元数据,获取所述第二数据块对应的第三副本和第四副本的存储位置;获取所述第三副本和第四副本所在逻辑卷的raid卷类型和逻辑卷的当前状态;判断所述第三副本和第四副本所在逻辑卷中raidx逻辑卷的状态是否正常;当所述raidx逻辑卷的状态为正常时,优先从所述raidx逻辑卷中的副本读取所述待读取数据。
10.一种电子设备,其特征在于,包括处理器、通信接口、存储介质和通信总线,其中,处理器、通信接口、存储介质通过通信总线完成相互间的通信;
存储介质,用于存放计算机程序;
处理器,用于执行存储介质上所存放的计算机程序时,实施权利要求1至3任一项所述的方法步骤。
CN202210193755.2A 2022-02-28 2022-02-28 分布式存储集群、存储引擎、两副本存储方法及设备 Pending CN114610235A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210193755.2A CN114610235A (zh) 2022-02-28 2022-02-28 分布式存储集群、存储引擎、两副本存储方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210193755.2A CN114610235A (zh) 2022-02-28 2022-02-28 分布式存储集群、存储引擎、两副本存储方法及设备

Publications (1)

Publication Number Publication Date
CN114610235A true CN114610235A (zh) 2022-06-10

Family

ID=81858319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210193755.2A Pending CN114610235A (zh) 2022-02-28 2022-02-28 分布式存储集群、存储引擎、两副本存储方法及设备

Country Status (1)

Country Link
CN (1) CN114610235A (zh)

Similar Documents

Publication Publication Date Title
US5790773A (en) Method and apparatus for generating snapshot copies for data backup in a raid subsystem
US10025666B2 (en) RAID surveyor
US8839028B1 (en) Managing data availability in storage systems
US10120769B2 (en) Raid rebuild algorithm with low I/O impact
US8127182B2 (en) Storage utilization to improve reliability using impending failure triggers
US7600152B2 (en) Configuring cache memory from a storage controller
US7185222B2 (en) Apparatus, system, and method for maintaining data in a storage array
US8060772B2 (en) Storage redundant array of independent drives
US7058762B2 (en) Method and apparatus for selecting among multiple data reconstruction techniques
US7069382B2 (en) Method of RAID 5 write hole prevention
US20080126839A1 (en) Optimized reconstruction and copyback methodology for a failed drive in the presence of a global hot spare disc
US7587630B1 (en) Method and system for rapidly recovering data from a “dead” disk in a RAID disk group
US7975171B2 (en) Automated file recovery based on subsystem error detection results
EP3244315B1 (en) Method and apparatus for performing data recovery in redundant storage system
US20100306466A1 (en) Method for improving disk availability and disk array controller
US20040103246A1 (en) Increased data availability with SMART drives
CN102024044A (zh) 分布式文件系统
US20150286531A1 (en) Raid storage processing
JP2006252126A (ja) ディスクアレイ装置及びその再構築方法
CN103534688A (zh) 数据恢复方法、存储设备和存储系统
US10324782B1 (en) Hiccup management in a storage array
US20050193273A1 (en) Method, apparatus and program storage device that provide virtual space to handle storage device failures in a storage system
US20060215456A1 (en) Disk array data protective system and method
JPH09269871A (ja) ディスクアレイ装置におけるデータ再冗長化方式
US20100138603A1 (en) System and method for preventing data corruption after power failure

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination