CN113176858A - 数据处理方法、存储***及存储设备 - Google Patents
数据处理方法、存储***及存储设备 Download PDFInfo
- Publication number
- CN113176858A CN113176858A CN202110495606.7A CN202110495606A CN113176858A CN 113176858 A CN113176858 A CN 113176858A CN 202110495606 A CN202110495606 A CN 202110495606A CN 113176858 A CN113176858 A CN 113176858A
- Authority
- CN
- China
- Prior art keywords
- storage
- data
- blocks
- data blocks
- stripes
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据处理方法、存储***及存储设备。其中,方法包括:获取多个数据块;在多个数据块的数量达到设定值时,确定一空闲的存放段;其中,存放段包括多个条带,一个条带是根据一个存储块的切分结果所确定,不同条带与不同的存储块具有对应关系;设定值表征填满存放段所需的数据块的数量;基于多个数据块,在多个条带的部分条带内填入相应的内容;根据多个数据块,确定校验数据;将校验数据,填入多个条带的剩余部分条带;按照条带与存储块的对应关系,对填满的存放段进行分布式存储,以将存放段内的多个条带中的内容分别存入各自对应的存储块内。采用本申请技术方案进行数据存储时,可有效降低写惩罚及解决非一致更新问题。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种数据处理方法、存储***及存储设备。
背景技术
随着网络技术及信息处理技术的发展,个人和企业数据呈***性膨胀增长趋势,这使得分布式存储***成为常用的数据存储***。不过,在分布式存储***中,节点故障为一种常态,为了保证节点故障发生时数据的高可用性,现有分布式存储***通常采用数据冗余方式来存储数据,目前主要的冗余方式包括多幅本方式和纠删码方式;其中,纠删码方式具有存储效率高、存储空间占用率低等特点,不过,目前纠删码方式却存在写惩罚、非一致更新问题。
发明内容
鉴于上述问题,本申请提供一种解决上述问题或至少部分地解决上述问题的数据处理方法、存储***及存储设备。
在本申请的一个实施例中,提供了一种数据处理方法。该方法包括:
获取多个数据块;
在所述多个数据块的数量达到设定值时,确定一个空闲的存放段;其中,所述存放段包括多个条带,一个条带是根据一个存储块的切分结果所确定,不同条带与不同的存储块具有对应关系;所述设定值表征填满所述存放段所需的数据块的数量;
基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容;
根据所述多个数据块,确定校验数据;
将所述校验数据,填入所述多个条带的剩余部分条带;
按照条带与存储块的对应关系,对填满的所述存放段进行分布式存储,以将所述存放段内的多个条带中的内容分别存入各自对应的存储块内。
在本申请的一个实施例中,提供了一种存储***。该***包括:
存储池,包括多个存储磁盘,存储磁盘具有多个存储块;
分布式存储模块,用于获取多个数据块;在所述多个数据块的数量达到设定值时,确定一个空闲的存放段;其中,所述存放段包括多个条带,一个条带是根据一个存储块的切分结果所确定,不同条带与不同的存储块具有对应关系;所述设定值表征填满所述存放段所需的数据块的数量;基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容;根据所述多个数据块,确定校验数据;将所述校验数据,填入所述多个条带的剩余部分条带;按照条带与存储块的对应关系,对填满的所述存放段进行分布式存储,以将所述存放段内的多个条带中的内容分别存入各自对应的存储块内。
在本申请的一个实施例中,提供了一种存储设备。该存储设备包括:存储器和处理器;所述存储器,用于存储一条或多条计算机指令,所述一条或多条计算机指令能被所述处理器执行时能够实现上述所述数据处理方法中的步骤。
本申请实施例提供的技术方案,是在所获取到的多个数据块的数量达到一设定值后,才确定一空闲的存放段;其中,所述存放段包括多个条带,一个条带是根据一个存储块的切分结果所确定,不同条带与不同的存储块具有对应关系;所述设定值表征填满所述存放段所需的数据块的数量;之后,基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容;且还会根据所述多个数据块来确定校验数据,并将所述校验数据,填入所述多个条带的剩余部分条带;进而按照条带与存储块的对应关系,对填满的所述存放段进行分布式存储,从而以将所述存储段内的多个条带分别存入各自对应的存储块内。本申请实施例提供的技术方案,由于是以满存放段方式,将数据块和校验数据一起存入各自对应的存储块内的,期间并不会涉及执行数据块和/或校验数据的读取操作,这利于有效降低写惩罚;而在所获取到的多个数据块的数量到达要求的设定值的情况下,才执行多个数据块填入相应条带的操作,则可避免因小数据直接写盘导致的随机写性能下降问题的发生。此外,本申请方案是采用追加写方式来更新数据的,为此还可有效解决数据非一致更新问题,具体关于本申请方法如何采用追加方式更新数据以解决数据的非一致更新问题,可参见下述相关内容。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要利用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的基于分布式纠删码的存储***原理性示意图;
图2为本申请一实施例提供的数据处理方法的流程示意图;
图3a为本申请一实施例提供的一存放段包含的多个条带对应的具体数据格式原理性示意图;
图3b为本申请一实施例提供的一存放段包含的多个条带中第一类型条带的条带头区对应的数据格式原理性示意图;
图3c为本申请一实施例提供的一存放段中包含的至少一个第一类型条带中的一个第一类型条带包括的段头区对应的数据格式原理性示意图;
图4为本申请一实施例提供的以追加方式写入数据对应的原理性示意图;
图5为本申请另一实施例提供的存储***的结构框图;
图6为本申请一实施例提供的数据处理装置的结构框图;
图7为本申请一实施例提供的存储设备的结构框图。
具体实施方式
在对本申请各实施例提供的方案进行说明之前,先对本申请中涉及的相关名词进行简要说明。
多幅本存储技术:是将一份原始数据完整的拷贝多份存储,对于分布式存储***,即是将一份原始数据完整的存储至多个存储服务器节点(可简称存储节点);例如,N副本就是将一份用户数据完整的存储至N个存储节点上,这样当某个存储节点故障,用户数据可以从其它存储节点恢复,以此保证了数据的可靠性,该技术允许存储节点故障的最大个数为N-1,存储空间利用率为1/N;
纠删码存储技术(Erasure Coding,EC):K+M纠删码存储技术(简称EC(K+M))是将原始数据分割成K个原始数据块,并将K个原始数据块编码生成M个校验块,K+M个数据块(包括原始数据块和校验块)分布存储在存储***的不同存储节点上,构成具有一致性的条带,其中,不多于M个任意数据块丢失或损坏,都可以通过剩余的其它未丢失或损坏的数据块恢复出原来的K个原始数据块,即利用该技术存储***容忍数据块出现丢失或损坏的最大个数为M,存储空间利用率为
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。而本申请中术语“或/和”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如:A或/和B,表示可以单独存在A,同时存在A和B,单独存在B这三种情况;本申请中字符“/”,一般表示前后关联对象是一种“或”关系。此外,下述的各实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着网络技术及信息处理技术的发展,个人和企业数据呈***性膨胀增长趋势,传统的集中式存储服务器已无法满足大规模数据存储需求,为此,现有技术多采用分布式存储***来存储数据。分布式存储***在进行数据存储时,是利用多台存储服务器来分担存储负荷,这可提高***的可靠性、可用性及存储效率,且还易于扩展性。不过,现有分布式存储***多是通过多副本数据存储技术来提升***可靠性、可用性及可扩展性,这种方式无疑会造成存储空间的极大浪费,增大存储成本,如以三副本为例,需要将用户数据完整的存储到三个存储节点上,整个存储***能够存储的数据量只占原始存储容量的1/3,即磁盘存储利用率为1/3,允许故障的磁盘个数为2。
相对于多副本存储技术,纠删码存储技术(简称EC技术)既具有较高的存储效率,还能够降低存储空间占用。例如,利用EC(4+2)进行数据存储,是通过将用户数据划分为4个原始数据块,并将4个原始数据块编码生成2个校验块,然后将4+2个数据块(包括原始数据块及校验块)分别存储至不同的存储节点上构成一致性条带,其***容忍数据块出现损坏的最大个数为2,存储空间利用率为2/3。基于上述所述,不难看出,在相同故障冗余情况下,EC技术可以更高的提升存储空间利用率。然而,在利用现有EC技术进行数据存储时,虽然冗余的校验块能保证数据的可靠性,但由于这些冗余的校验块会随着原始数据块的变化而变化,所以导致现有EC技术存在一个明显的局限:新数据的写入会导致额外的开销,称之为写惩罚,换句话也就是说,写惩罚是指一次数据写入需要进行多次读写。特别是当需要进行数据修改时,EC技术中存在的写惩罚问题尤为突出,如在进行一次写操作时,需同时读取出要修改的旧原始数据块和旧校验块,并结合要写入的新原始数据块一起计算出新校验块,最后用新原始数据块和新校验块覆盖要修改的旧原始数据块和旧校验块。具体地,例如,利用EC(2+1)存储数据时,1次数据写入,需执行2次读取(即需读取一次要修改的旧原始数据块和读取一次旧校验块),2次写入(即写入一次新原始数据块和写入一次新校验块),写惩罚为4;再例如,利用EC(4+2)存储数据时,由于存在两个校验块,与EC(2+1)相比,则需读取2次校验块和写入2次校验块,故而EC(4+2)对应的写惩罚为6,该写惩罚的存在无疑影响了存储***的存储性能。需说明的是:上述新校验块的计算公式,具体可以为:新校验块=旧原始数据块XOR新原始数据块XOR旧校验块;其中,XOR表示异或操作。
此外,现有EC技术还存在非一致更新问题,比如,在EC(K+M)技术中,K+M个分布在不同存储节点上的数据块(包括原始数据块和校验块)构成一个具有一致性的条带,条带中任一数据块丢失时,只要从K个原始数据块和M个校验块中任取不少于K个数据块,便可通过对应的重构算法恢复出原来的K个原始数据块。当条带中的某个或某些数据块需修改时,***通常需读出相应的一个或多个校验块,然后根据新的数据块重新计算校验块,最后再同时写入新的数据块和校验块。如果在同时写入的过程中突然发生集群故障(如***崩溃、断电),则可能会出现部分原始数据块或校验块已修改,而另一部分原始数据块或检验块尚未修改完成的现象,或者出现同一块原始数据块或校验块只修改了一部分而另一部分尚未修改完成的现象,以上现象将导致条带上的数据块和校验块不一致的问题,该不一致问题即为非一致更新问题。基于此,为了解决上述问题,本申请实施例提出了一种数据处理方法,该数据处理方法可应用于以条带(Stripe)作为管理方式的存储***(如图1示出的存储***)或存储设备,例如,以固态硬盘(Sloid State Disk,SSD)组成的存储阵列、或SSD本身,或叠瓦时磁记录(Shingled Magneting Recording,SMR)组成的存储阵列等等,此处不作具体限定。
条带(Stripe)是一种将多个磁盘(单盘,则为多个存储介质;或者一个磁盘的存储块,则为组成该存储块的多个分块单元,等等)合并为一个卷的方法,Stripe可以理解为磁盘阵列(或单盘、或磁盘的存储块)中两个或多个分区上一组位置相关的分块,该分块也可称为条带单元(Stripe Unit,SU),即Stripe由多个SU组成。Stripe是对存储空间进行条带化管理的具体结果,具体可参见本领域技术人员Stripe的理解。在本申请实施例中,一个条带是由一个存储块的多个分块单元(下文中称为数据区)组成,具体理解将在下文中进行详细描述,此处不作具体赘述。
下面介绍一种存储***,本申请实施例提供的数据处理方法可应用于该存储***。参见图1示出的本申请一实施例提供的基于分布式纠删码的存储***的结构示意图。如图1所示,该存储***包括多个存储节点,如存储节点A、存储节点B和存储节点C,所述存储节点可以为但不限于服务器、工作站等,存储节点间可通过InfiniBand或以太网等互相通信。每个存储节点下可包括多个存储磁盘(也即图中示出的磁盘),比如,图中存储节点A包括存储磁盘A1、存储磁盘A2和存储磁盘A3,所述存储磁盘包括但不限于:机械硬盘(HardDisk Drive,HDD)、固态硬盘(Solid State Drive,SSD)、存储级内存(Storage ClassMemory,SCM)、叠瓦时磁记录(Shingled Magneting Recording,SMR)等存储介质。在实际应用中,上述存储***中的存储节点数量以及每个存储节点包括的存储磁盘数量可以根据实际需求增加,本实施例对此不作限定。该存储***可以对***内的存储资源(如存储节点、存储磁盘)进行集中管理,并在接收到写入方发送的数据时,为所述数据分配相应的存储资源。具体实施时,是通过对存储***内的存储资源进行分块处理,并根据纠删码类型对分块处理后的存储资源进行组织,以此来实现对存储资源的管理与分配,具体地过程如下:
步骤1、针对存储***内的存储资源创建一存储池;
具体实施时,可从每个存储节点下包含的多个存储磁盘中各选择部分存储磁盘组成一个存储池。其中,所述存储池内包含的同一个存储节点下的存储磁盘的数量可以根据实际需求进行灵活设置,比如,所述存储池内包含的同一存储节点下的存储磁盘的数量可以为3个、5个等;或者,也可将***内的所有存储节点下包含的所有存储磁盘组建成一个存储池。
举例来说,如图1所示,存储***包括3个存储节点,即存储节点A、存储节点B和存储节点C;每个存储节点各包括3块存储磁盘,具体地,存储节点A包括存储磁盘A1、存储磁盘A2和存储磁盘A3,存储节点B包括存储磁盘B1、存储磁盘B2和存储磁盘B3,存储节点C包括存储磁盘C1、存储磁盘C2和存储磁盘C3,则可将存储节点A、存储节点B及存储节点C下的所有存储磁盘组成一个存储池100。
步骤2、将存储池内的每个存储磁盘按指定容量进行切分,以虚化成多个相同大小的存储块(Chunk,CK),所述指定容量可根据实际需求进行灵活设置,此处不作限定;
示例性地,假设存储池100中的存储磁盘A1的总容量大小为1T,指定容量为256M,则可以将存储磁盘A1虚化为1T/256M=4*1024=4096个相同大小的存储块,每个存储块都具有各自对应的标识,所述标识用于唯一识别存储块。具体实施时,所述标识可以为但不限于编号或地址,其可以是在将磁盘虚化为多个相同大小的存储块时分配的,具有唯一性。比如,若所述标识为编号,在将存储磁盘A1虚化为4096个存储块时,可对该4096个存储块进行依次编号为:a11,a12,...,a14096。据此,也可以分别将存储池内的其它存储磁盘按指定容量(如256M)虚化成多个相同大小的存储块。
步骤3、根据纠删码类型,从多个不同存储节点的不同存储磁盘中各选择一个存储块,组成一个存储块组(Chunk Group,简记为CKG);
继续参见图1,以EC(2+1)纠删码类型为例,即需要分别从3个存储节点下的存储磁盘中各选择一个存储块组成一个CKG,以便使数据能够分布式存储于不同存储节点下的不同存储磁盘,从而确保单点故障发生时数据的可恢复性。这里假设分别从存储节点A下的存储磁盘A1中选取一存储块a11,从存储节点B下的存储磁盘b1中选取一存储块b12,以及从存储节点C下的存储磁盘C1中选取一存储块c11,组成一个存储块组0(即图中示出的CKG0),以此类推,还可以继续组织形成多个CKG供上层使用,图中仅示意性的示出了所组织形成的2个CKG(即CKG0、CKG1),并不代表实际CKG的数量。这里CKG是存储***分配存储资源的最小单元。需说明的是:在从不同存储节点下的不同存储磁盘中选取存储块,以组织形成存储块组时,可以采用随机选取方式,也可以根据各存储磁盘的负载状况进行选取,此处不作具体限定,具体选取过程可参见现有技术。
步骤4、将各个CKG中的每个存储块进一步地切分成一个更细粒度的多个数据区,属于同一存储块的多个数据区组成一个条带,即一个CKG内的多个存储块分别被进一步细化切分处理后可形成与该多个存储块各自对应的条带,每个存储块进行更细粒度的切分处理后形成条带,将与该多个存储块各自对应的条带组织在一起便构成一个存放段,据此也即:所述存放段包含多个条带,而所述存放段包含的多个条带与所述存储块组中包含的多个存储块具有一一对应关系。例如,图1中示出的存放段0包含的条带1、条带2和条带3,分别与存储块组0内的存储块a11、存储块b12、存储块c11一一对应,具体地,条带1是通过对存储块a11进行切分所得到的多个数据区组成,条带2是通过对存储块b12进行切分所得到的多个数据区组成,条带3是通过对存储块c11进行切分所得到的多个数据区组成。上述存放段对外体现的是主机访问的逻辑磁盘(LUN)(或也可称为逻辑空间单元),LUN是可以直接映射给主机操作***实现读写的存储单元,在处理用户的读写请求以及进行数据迁移时,LUN向存储***申请空间、释放空间、迁移数据都是以存放段中条带的数据区为单位进行的。
这里需说明的是:一个存储块组中的多个存储块具有相同大小;相应地,一个存放段中的多个条带也具有相同长度。
图2示出了本申请一实施例提供的数据处理方法的流程示意图。该方法可应用于图1示出的基于分布式纠删码的存储***中,如图2所示,该方法包括以下步骤:
101、获取多个数据块;
102、在所述多个数据块的数量达到设定值时,确定一空闲的存放段;其中,所述存放段包括多个条带,一个条带是根据一个存储块的切分结果所确定,不同条带与不同的存储块具有对应关系;所述设定值表征填满所述存放段所需的数据块的数量;
103、基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容;
104、根据所述多个数据块,确定校验数据;
105、将所述校验数据,填入所述多个条带的剩余部分条带;
106、按照条带与存储块的对应关系,对填满的所述存放段进行分布式存储,以将所述存放段内的多个条带中的内容分别存入各自对应的存储块内。
上述101中,所述多个数据块来自同一数据,该数据的具体形式可以为但不限于符号、文字、数字、语音、图像、视频等中的一种或多种。上述所述数据可以是写入方通过对应的设备提供的交互方式(如键盘、鼠标、手触等)发送的数据,也可以是本实施例存储***从其它服务器或其它存储***中获取到的数据,此处不作具体限定;其中,上述写入方对应的设备可以是手机、平板电脑、台式计算机、笔记本电脑、智能穿戴设备等任意终端设备,本实施例对此不作具体限定。所述数据在存入本实施例存储***过程中,会首先缓存至***内的第一存储介质,所述第一存储介质按指定大小将所述数据划分成多个相同大小的数据块,以便于能够利用纠删码技术将所述数据分布存储至不同存储节点下的不同存储磁盘,从而确保单点故障发生时数据的可恢复性;具体实施时,所述数据块的大小可以根据实际情况进行确定,例如,对于一个24MB的数据来说,可以按2MB的大小分割成12个数据块。
将所述数据分割成多个相同大小的数据块后,考虑到经分割得到的数据块可能出现比较小的情况,此时若直接将该较小的数据块直接组成条带并写入存储磁盘,则易增加写入的随机性,进而降低存储磁盘的写性能。据此,为了避免小数据块直接写盘导致的随机写性能下降问题的发生,进一步地,本实施例是将所述第一存储介质内与所述数据对应的多个数据块下发至第二存储介质进行保存,以待缓存至所述第二存储介质内的多个数据块的数量达到一设定值时,将该多个数据块组成一个比较大的条带再写入对应的存储磁盘,具体如何将数据块存入对应的存储磁盘的相关过程可参见下述相关内容,此处不作具体赘述。这里需要说明的是:参见图1所示,第一存储介质可以为存储***对应的存储卷11;所述第二存储介质可以为存储***中用于缓存数据的固态硬盘12(Sloid State Disk,SSD),当然第一存储介质和第二存储介质也可以是其它形式,此处并不作限定。基于此,上述步骤101“获取多个数据块”的一种可实现方案为:接收写入方发送的数据;将接收到的数据划分为大小相同的数据块。
上述102中,所述存放段包含的多个条带分别对应于属于不同存储节点且属于不同存储磁盘的多个存储块。具体地,所述存放段包含的多个条带与所述存储块组中包含的多个存储块具有一一对应关系;一个条带是根据一个存储块的切分处理结果所确定,具体地,一个条带可理解为是通过对一个存储块进行切分所得到的多个数据区组成的。而上述存储块组则是根据纠删码类,对存储池内属于不同存储节点且属于不同存储磁盘的存储块进行组织所得到的,具体地如何得到所述存储块组以及如何根据所述存储块组来得到对应的存放段,可参见上述相关内容,这里不再作具体赘述。另外,基于步骤101中的内容可知,本实施例为避免小数据直接写盘带来的随机写性能下降问题的发生,在将接收到的数据划分为多个相同大小的数据块后,是先将所述多个数据块缓存至第二存储介质,以待缓存至所述第二存储介质内的数据块的数量达到一设定值时,再针对所述多个数据块来确定一个空闲的存放段,以用来存放所述多个数据块。据此,在确定所获取到的多个数据块的数量达到一设定值后,上述步骤102中“确定一空闲的存放段”,可具体采用如下步骤来实现:
1021、分配一个空闲的存储块组;
1022、根据所述存储块组,确定所述存放段。
具体实施时,在获取到的所述多个数据块的数量达到设定值时,可采用随机分配方式来为所述多个数据块分配一个空闲的存储块组,当然也可以采用其他方式,此处并不作限定。而之后进一步地根据所述存储块组来确定与其对应的存放段时,可参见上述相关内容。
另外,基于纠删码存储技术相关原理可知,上述存放段包含的多个条带中,需要一部分条带用来存放数据块,而另一部分则用来存放由所述数据块编码得到的校验数据,以实现当一部分条带中的内容出现故障或者无法读出时,按照相应的EC算法,可由其余条带中的内容进行数据恢复,从而保证***内数据的高可用性。基于此,也即所述存放段包含的多个条带中,具有两种类型条带,即第一类型条带和第二类型条带;其中,所述第一类型条带用于存放所述多个数据块,所述第二类型条带用于存放所述校验数据,所述校验数据是利用相应地的纠删码编码方式(如RS编码)对所述多个数据块进行编码得到。当一个存放段包含的所有第一类型条带的数据区均被填满的情况下,便认为该存放段为满存放段。据此可见,步骤102中的所述设定值表征填满所述存放段所需的数据块的数量,即指的是表征填满所述存放段包含的所有第一类型条带的数据区所要求的数据块的最大数量,具体有关第一类型条带的具体描述以及所述设定值的确定过程可参见下述相关内容,此处不作赘述。示例性地,参见图3a示出的一存放段0,该存放段0是根据图1示出的存储块组0(即CKG0)确定的,由于存储块组0是存储***按照EC(2+1)模式对***内属于不同存储节点且属于不同存储磁盘的存储块进行组织得到的,故而所述存放段0中具有2个第一类型条带,比如条带1(即D1)和条带2(即D2),1个第二类型条带,比如条带3(即P);相应地,所述设定值则为填满条带1和条带2的数据区所要求的数据块的最大数量。
在一种可实现的技术方法中,所述存放段中包含有至少一个所述第一类型条带,所述第一类型条带包括条带头区和数据区;相应地,步骤103“基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容”,可具体包括:
1031、将所述多个数据块,顺次填入至少一个所述第一类型条带的对应数据区内;
1032、基于所述第一类型条带的数据区内的数据块,确定所述第一类型条带的条带头区内填入的条带头信息。
上述1031中,在将所述多个数据块填入至少一个所述第一类型条带的对应数据区过程中,可以基于至少一个所述第一类型条带间的位置关系,先将多个数据块中的部分数据块顺次填入相对位置最靠前的一个第一类型条带的对应数据区内,待该第一类型条带的对应的数据区填满的情况下,在执行下一个第一类型条带的对应数据区的填入操作。例如,继续参见图3a,图中条带D1和条带D2为第一类型条带,假设所述多个数据块具体为:d1、d2、d3、...、dm、dm+1、...、dn-1,dn,基于条带D1和条带D2间的位置关系,这里可首先将数据块d1、d2、d3、...、dm、dm+1、...、dn-1,dn顺次填入条带D1的对应数据区1内,当将数据块dm填入条带D1的对应数据区1内后,数据区1达到填满状态,则将位于数据块dm之后的数据块dm+1、...、dn-1、dn填入条带D2的对应数据区2内。当然,也可以按照其他方式将所述多个数据块顺次填入至少一个所述第一类型条带的对应数据区内,比如至少一个所述第一类型条带间的优先级顺序,此处不作具体限定。
上述1032中,所述第一类型条带的条带头区的数据格式如图3b,相应地,填入条带头区内的条带头信息包括魔术数及校验和,其中,所述魔术数为内部自定义的一个常数值,如为0xf981ef0d;所述校验和是基于填入所述第一类型条带的数据区内的数据块进行确定的一个数值,具体地,可以是在将数据块填入第一类型条带的对应数据区时,根据设定的校验算法(如CRC校验算法)计算得到的所填入的数据块对应的校验和,例如,承接上述步骤1031中的示例,设定在条带D1的对应数据区1内填入的数据块为d1、d2、d3、...、dm,则所述条带D1的条带头信息中的校验和为利用CRC校验算法对数据块d1、d2、d3、...、dm进行计算所得到的校验和,具体如何利用CRC校验算法计算校验和同现有技术。同理也可确定条带D2的条带头信息中包括的魔术数及校验和。
进一步地,上述至少一个所述第一类型条带中的一个第一类型条带还包括段头区,例如:图3a中示出两个第一类型条带,即条带D1和条带D2,条带D1除了包括上述的条带头区和数据区外,进一步地条带D1还包括段头区。相应地,上述步骤103“基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容”,还包括:
1033、基于所述多个数据块,确定段头信息;
1034、将所述段头信息填入所述段头区内。
具体实施时,所述段头区的数据格式如图3c,相应地,填入所述段头区年内的段头信息可具体包括:魔术数、校验和、版本标识、数据块个数、各数据块的描述信息。其中,所述魔术数为内部定义的一个常数值;所述校验和为根据设定的校验算法(如CRC校验算法),对所述多个数据块进行计算所得到的校验和,例如,同样继续承接上述步骤1031中的示例,设定所述多个数据块具体为:d1、d2、d3、...、dm、dm+1、...、dn-1、dn,则填入所述段头区内的校验和为利用CRC校验算法对数据块d1、d2、d3、...、dm、dm+1、...、dn-1、dn进行计算所得到的校验和;所述各数据块的描述信息可包括但不限于数据块的长度、填入时间、偏移地址等;所述版本标识用于版本升级,例如,在需要对存放段的数据格式进行变更的情况下,可通过版本标识进行区分变更前后的存放段,这里所述变更操作具体可以为诸如更新存放段内的数据等。
基于上文内容并参见图3a至图3c,图3a中示出的存放段中各条带具有相同长度且预先知晓,这里设定条带长度为stripe_len,由于上述步骤1021中的设定值为填满存放段中的所有第一类型条带的对应数据区要求的最大数据块数量,即对于图3a示出的存放段0来说,为能够填满条带1的数据区1和条带2的数据区1所要求的数据块的最大数量,为此与所述存放段0相对应的所述设定值T可通过以下公式进行确定,具体地为:
data_len*T=(stripe_len-stripe_head_len-segment_head_len-T*data_describe_info_len)+(stripe_len-stripe_head_len); (1)
变换公式(1),即可得到所述设定值T:
其中,公式(1)和公式(2)中,stripe_head_len表示条带头区长度,segment_head_len表示段头区长度,data_describe_info_len表示数据块的描述信息长度,date_len表示数据块的长度。
上述104中“根据所述多个数据块,确定校验数据”,包括:
1041、对所述多个数据块进行编码处理;
1042、根据编码处理结果,确定校验数据。
具体实施时,可以根据EC_TYPE类型(如RS编码)的编码计算方式对所述多个数据块进行编码处理,从而根据编码处理结果来确定校验数据,具体如何根据EC_TYPE计算校验编码计算方式计算校验数据同现有技术,此处不再作赘述。
上述105中,可以采用顺次填入方式将确定出的所述校验数据填入所述第二类型条带内,具体可参见将所述数据块填入第一类型条带的相关内容。
上述106中,在将所述校验数据填入所述第二类型条带内之后,可按照条带与存储块的对应关系,对所述存放段中各条带内填入的数据内容进行分布式存储,以将所述存储段内的多个条带中的内容分别存入各自对应的存储块内,也即将所述存放段内的多个条带中的内容分别存入各自对应的存储磁盘。
针对上文内容,这里需要补充说明的是:上述所述存放段内的至少一个第一类型条带中各自条带对应的条带头信息中包括的魔术数,以及至少一个第一类型条带中的一个第一类型条带对应的段头信息中包括的魔术数,可以相同,也可以不同,本实施例对此并不作具体限定。此外,当对填满的所述存放段进行分布式存储时,所述第一类型条带的条带头信息包括的魔术数及校验和将跟随填入至所述第一类型条带的数据区内的数据块一起写入对应的存储磁盘,以便于当从存储磁盘读取数据时,可以通过魔术数及校验和来校验数据的可靠性。例如,结合图3a至图3b并参见图4所示,假设用户数据(即数据1)填入存放段0后被分布式存入至存储磁盘A1、存储磁盘B1和存储磁盘C1,若定义的魔术数为0xf981ef0d,则当从存储磁盘(即存储磁盘A1、存储磁盘B1和存储磁盘C1)中读取到存放段0数据(即数据1)后,如可以从存放段0中的条带D1中取出魔术数并与0xf981ef0d进行比较,若比较结果不一致则说明条带D1内的数据不可靠(即存储磁盘A1中保存的数据不可靠);此外,读取数据时还可以根据在将数据填入存放段0时对应的校验算法重新计算一遍校验和,之后与存储磁盘上保存的校验和进行比较,从而基于比较结果判断数据的可靠性,比如在读取数据时,可以利用数据填入时所对应的校验算法来重新计算一遍条带D1对应的校验和,并将重新计算出的校验和与存储磁盘A1上保存的校验和进行比较,若比较结果不一致的情况下,则说明存储磁盘A1中保存的数据不可靠。基于此不难看出,在进行数据读取时,利用魔术数及校验和可以快速确定出条带内的数据是否存在问题,从而便于通过剩余条带内的数据恢复出校验不通过的条带内数据,提高了数据的可靠性。这里设置魔术数可以快速提升确认数据是否存在问题的效率,利于减少校验和计算的次数,从而提高***的性能。
上述中,在从存储磁盘中读取数据时,存放段中一个条带的条带头区内的魔术数及校验和是用于校验相应的条带内的数据是否可靠。同理,存放段的段头区内的魔术数及校验和则是用于校验整个存放段内的数据是否可靠。
综上,本实施例中是以数据满存放段方式,将数据块和校验数据一起写入对应的存储磁盘,即也就是说,在每次执行将数据写入存储磁盘操作时,只需要把整个满存放段内中的多个条带中的内容(如数据块或校验块)一起分布式写入各自对应的存储磁盘即可,并不涉及执行从存储磁盘中读取数据块和校验数据的操作,这可有效降低纠删码的写惩罚,甚至对于EC(2+1)类型的纠删码来说,写性能可以比正常纠删码写入性能可以提高一倍。
进一步地,本实施例提供的所述方法,还包括:
107a、获取所述多个数据块的逻辑地址;
107b、基于所述多个数据块填入的所述存放段,确定物理地址;
107c、建立所述逻辑地址和所述物理地址间的映射关系,并将所述映射关系存入数据库。
具体实施时,逻辑地址一般是由与存储***相对应的上层操作***或应用下发并传递下来的,比如,当一上层操作***欲对与其相对应的存储***进行读写操作时,该上层操作***将会把要读写的逻辑地址告知与其相对应的存储***。基于此,上述多个数据块的逻辑地址可以是由与本实施例提供的存储***相对应的上层操作***或应用下发并传递下来的,其中,上层操作***或应用集成于写入方对应的设备上。具体地,参见图1所示,当写入方通过对应的设备针对一数据对图中示出的存储***进行写操作时,写入方对应的设备将会把欲写入的数据及对应写入的逻辑地址一起下发给存储***中的存储卷11,之后存储卷11将接收到的数据划分成多个数据块并将该多个数据块发送至SSD中进行缓存,以便存储***基于SSD中缓存的多个数据块进行后续处理,具体后续处理可参见上述相关内容。需说明的是,上述逻辑地址将会跟随多个数据块一起被存储卷11发送给SSD,即在SSD中除了缓存有多个数据块外,还将记录有多个数据块的逻辑地址。据此,上述多个数据块的逻辑地址可以是从如图1中示出的SSD中获取到的,从而基于获取到的多个数据块的逻辑地址,以及基于所述多个数据块填入的所述存放段确定出的物理地址,也就可以建立出所述逻辑地址和所述物理地址间的映射关系,保持该映射关系至数据库,便于后续依据该映射关系执行相应的数据读取操作。
上述内容主要从降低纠删码的写惩罚角度介绍了数据存入存储磁盘的过程,对于纠删码更新数据过程中存在的非一致更新问题,本实施例采用的是将更新后的数据以追加写形式存入存储磁盘的,即用户覆盖写入同一个逻辑位置的数据,会保持在存储磁盘的不同位置,这样也就是说:当对已有数据进行修改时,会为修改数据分配新的存放段,从而将修改数据存入存储磁盘的新位置,修改数据并不会占用存储修改前的数据所使用的存储磁盘的位置。为此,当在对之前存入存储磁盘的数据进行更新过程中,如果出现突然如***崩溃、断电等情况,也可以恢复出之前已成功存入存储磁盘的数据,从而保证存储磁盘的数据始终满足EC的一致性。具体实施数据更新的过程如下:
参见图4并结合图1所示,在本实施例提供的存储***中,假定用户首次向一个逻辑地址LBA1写入数据1时,存储***为数据1分配了一个空闲的存放段0(不同存放段对应不同的物理地址),并通过存放段0将数据1分布式存入至存储磁盘A1、存储磁盘B1和存储磁盘C1中,具体如何将数据1分布式存入存储磁盘A1、存储磁盘B1和存储磁盘C1过程可参见上述相关内容,此处不再作具体赘述。当用户需要更新数据1,向逻辑地址LBA1写入更新后的数据1(即数据2)时,存储***将为数据2分配一个新的存放段,比如存放段1(存放段1内的多个条带与图1中示出的存储块组1具有一一对应关系),若在通过存放段1将数据2分布式存入至对应存储磁盘过程中出现***崩溃、断电等情况,由于存放段中不同条带内的数据是分布在不同存储磁盘上的,故而在断电等情况出现时可能造成仅有部分存储磁盘写入数据成功,而另一部分存储磁盘未将数据写入成功,从而使得整个存放段1内的数据不可用。不过在这种情况下,由于存放段0中保存有一份完成的数据1,因此断电恢复后用户可以从存储***中读取到完整的之前次存入磁盘的数据1。而若采用传统覆盖写方式,即同一个逻辑地址LBA只写入同一个存放段,***崩溃或断电后存放段的数据则可能部分被新数据覆盖,进而导致无法读到一份正常的数据。综上,本实施例采用追加写方式,可使得在对同一个LBA写入两次数据时会对应两个不同的物理地址,为此若数据写入磁盘过程***宕机(如***崩溃、断电),将不会对之前次已写入成功的数据产生任何影响,从而解决了纠删码更新数据过程中存在的非一致更新问题,提高了***内数据的可靠性。
需说明的是:继续参见图4,若存储***以追加写方式成功的完成了对数据1的更新,即将更新后的数据1(即数据2)分布式成功存入存储磁盘A2、存储磁盘B3和存储磁盘C3,则此时更新前的数据(即数据1)分布式存入对应的存储磁盘中的数据变为垃圾数据,即无效数据,如存储磁盘A1、存储磁盘B1和存储磁盘C1所存储的与数据1相关的数据会被标记为垃圾数据。此外,在完成数据1的更新后,还会进一步地根据更新后的数据1(即数据2)填入存放段1的位置,对之前所建立的与数据1相关的逻辑地址与物理地址间的映射关系进行更新,并清除旧的映射关系。
本实施例提供的技术方案,在获取到多个数据块后,将确定一空闲的存储段;其中,所述存放段包括多个条带,不同条带对应不同的存储块;基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容;且还会根据所述多个数据块来确定校验数据,并将所述校验数据,填入所述多个条带的剩余部分条带;之后按照条带与存储块的对应关系,对填满的所述存放段进行分布式存储,从而以将所述存储段内的多个条带分别存入各自对应的存储块内。方案整体能够降低写惩罚以及避免因小数据直接写盘导致的随机写性能下降问题的发生,另外由于本实施例是采用追加写方式来更新数据,有效解决了纠删码更新数据过程中存在的非一致更新问题。
下面再介绍一种存储***,参见图5示出的本申请另一实施例提供的存储***的结构示意图。如图5所示,该存储***具体包括:
存储池20,包括多个存储磁盘,存储磁盘具有多个存储块;
分布式存储模块21,用于获取多个数据块;在所述多个数据块的数量达到设定值时,确定一空闲的存放段;其中,所述存放段包括多个条带,一个条带是根据一个存储块的切分结果所确定,不同条带与不同的存储块具有对应关系;所述设定值表征填满所述存放段所需的数据块的数量;基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容;根据所述多个数据块,确定校验数据;将所述校验数据,填入所述多个条带的剩余部分条带;按照条带与存储块的对应关系,对填满的所述存放段进行分布式存储,以将所述存放段内的多个条带分别存入各自对应的存储块内。
具体实施时,所述存储磁盘的具体形式可以为但不限于:机械硬盘(Hard DiskDrive,HDD)、固态硬盘(Solid State Drive,SSD)、存储级内存(Storage Class Memory,SCM)、叠瓦时磁记录(Shingled Magneting Recording,SMR)等存储介质;存储池内的所述存储磁盘具有的多个存储块是按指定容量对所述存储磁盘进行划分得到的。
进一步地,本实施例提供的所述存储***,还包括:
存储池管理模块22,用于根据纠删码类型,对属于不同存储节点且属于不同存储磁盘的存储块进行组织,得到存储块组;
所述分布式存储模块21,用于在获取到的所述多个数据块的数量达到设定值时,分配一个空闲的存储块组;根据所述存储块组,确定所述存放段。
进一步地,本实施例提供的所述存储***,还包括:
存储卷23,用于接收写入方发送的数据及所述数据对应的逻辑地址;将接收到的数据划分为大小相同的数据块;
缓存模块24,用于缓存所述存储卷划分出的数据块,以便所述分布式存储模块获取所述多个数据块;记录所述数据块对应的逻辑地址,以便地址映射模块获取所述多个数据块对应的逻辑地址;其中,所述数据块对应的逻辑地址是根据所述数据对应的逻辑地址确定的。
具体实施时,所述缓存模块可以为固态硬盘(Sloid State Disk,SSD),当然也可以为其他形式,此处不作限制。
进一步地,本实施例提供的所述存储***,还包括:
地址映射模块25,用于从所述缓存模块24中获取所述多个数据块对应的逻辑地址;以及获取所述分布式存储模块为所述多个数据块确定的物理地址;建立并保存所述逻辑地址与所述物理地址的映射关系。
这里需要说明的是,本实施例提供的存储***中除了包括以上模块(如存储池、分布式存储模块、存储池管理模块、存储卷、缓存模块、地址映射模块)之外,进一步地还可包括:数据日志模块,所述数据日志模块包含于缓存模块内(图中未示出),用于接收存储卷下发的划分出的数据块,并将所述数据块发送至缓存模块(如固态硬盘SSD)进行缓存,即存储卷在将接收到的写入方发送的数据划分为大小相同的数据块后,可以先将划分出的所述数据块下发至数据日志模块,由数据日志模块将所述数据块发送至缓存模块进行保持。这里设置数据日志模块既可以解决小数据块直接写盘带来的随机写性能下降问题,又可以防止数据还未写入到存储磁盘时***宕机(如***崩溃、掉电)导致的数据丢失,比如,在***发生掉电的情况下,当***掉电恢复后,可以将***发生掉电时未及时写入至存储磁盘的数据,恢复出来以重新写入相应的存储磁盘。
这里还需要说明的是:本实施例提供的存储***中各步骤未尽详述的内容可参见上述各实施例中的相应内容,此处不再赘述。此外,本实施例提供的所述存储***中除了上述各步骤以外,还可包括上述各实施例中其他部分或全部步骤,具体可参见上述各实施例相应内容,在此不再赘述。
综合上文中的内容可知,本申请实施例提供的数据处理方法可总结为如下过程。即:
(1)写到一个逻辑地址LBA的多个数据块经由存储卷发送至缓存模块;其中,多个数据块属于同一数据。
(2)缓存模块将多个数据块下发至空间分配单元,若空间分配单元当前没有待下盘的存放段时,空间分配单元首先分配一个空闲的存放段,并在内存中申请一块用于存放待下盘的存放段空间,并将多个数据块填充到存放段内存数据空间中;如果空间分配单元存在待下盘的存放段,直接将数据块填充到待下盘的存放段内存数据空间;若空间分配单元待下盘的存放段已被填满,将已经填满的存放段保存到对应磁盘。
(3)空间分配单元根据数据块填充的位置得到多个数据块的物理地址addr,并将物理地址addr返回给地址映射模块。
(4)地址映射模块建立物理地址addr和逻辑地址LBA间的映射关系,并保存该映射关系至数据库,同时向数据日志模块返回写入数据成功。
(5)数据日志模块接收到数据写入成功消息,则清除保存在缓存模块内的数据。
(6)若用户在同一个逻辑地址LBA继续写入新的数据块,比如当对已成功写入磁盘的数据进行更新时,继续在同一个逻辑地址LBA写入更新后的数据块,则重复步骤(1)~(5)过程。不过,在执行步骤(4)时,地址映射模块将更新物理地址addr和逻辑地址LBA间的映射关系,并将更新后的映射关系保存至数据库,同时地址映射模块还会清除旧的物理地址addr和逻辑地址LBA间的映射关系。
从以上步骤可以看出,同一个LBA写入两次会对应两个不同的物理地址,如果数据写入存储磁盘的过程中***宕机,之前已经写入成功的数据将不受影响,保证了EC的一致性,提高了数据的可靠性。
这里需说明的是:上述空间分配单元可对应于图5中示出的分布式存储模块,数据日志模块则包含于图5中示出的缓存模块内。对于上述各步骤中未尽详述的内容可参见上述各实施例中的相应内容,此处不再赘述。
这里还需说明的是:本申请实施例提供的技术方案适用于任何适应的存储***中,对此本申请实施例对具体的存储***不作限定。
图6示出了本申请一实施例提供的数据处理装置的结构框图。如图6所示,该数据处理装置,具体包括:
第一获取模块501,用于获取多个数据块;
第一确定模块502,用于在所述多个数据块的数量达到设定值时,确定一空闲的存放段;其中,所述存放段包括多个条带,一个条带是根据一个存储块的切分结果所确定,不同条带与不同的存储块具有对应关系;所述设定值表征填满所述存放段所需的数据块的数量;
第一填入模块503,用于基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容;
第二确定模块504,用于根据所述多个数据块,确定校验数据;
第二填入模块505,用于将所述校验数据,填入所述多个条带的剩余部分条带;
存入模块506,用于按照条带与存储块的对应关系,对填满的所述存放段进行分布式存储,以将所述存放段内的多个条带中的内容分别存入各自对应的存储块内。
本实施例提供的技术方案,在所获取到多个数据块的数量达到一设定值后,才确定一空闲的存放段;其中,所述存放段包括多个条带,一个条带是根据一个存储块的切分结果所确定,不同条带与不同的存储块具有对应关系;所述设定值表征填满所述存放段所需的数据块的数量;之后,基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容;且还会根据所述多个数据块来确定校验数据,并将所述校验数据,填入所述多个条带的剩余部分条带;之后按照条带与存储块的对应关系,对填满的所述存放段进行分布式存储,从而以将所述存储段内的多个条带分别存入各自对应的存储块内。本实施例提供的技术方案,能够降低写惩罚及解决数据非一致更新问题,且还可避免因小数据直接写盘导致的随机写性能下降问题的发生。
进一步地,本实施例提供的所述装置,还包括:
存储池模块,所述存储池模块中包含多个存储节点,一个存储节点包含多个存储磁盘,一个存储磁盘包含多个存储块;
组织模块,用于根据纠删码类型,对属于不同存储节点且属于不同存储磁盘的存储块进行组织,得到存储块组;
其中,上述存放段包含的多个条带与所述存储块组中包含的多个存储块一一对应;对存储块进行切分得到多个数据区,多个数据区组成一个条带。
进一步地,上述第一确定模块502,在用于确定一空闲的存放段时,具体用于:在获取到的所述多个数据块的数量达到设定值时,分配一个空闲的存储块组;根据所述存储块组,确定所述存放段。
进一步地,上述存放段包含的多个条带中,具有第一类型条带和第二类型条带;其中,所述第一类型条带用于存放所述多个数据块;所述第二类型条带用于存放所述校验数据。
再进一步地,上述存放段中包含有至少一个所述第一类型条带,所述第一类型条带包括条带头区和数据区;相应地,
上述第一填入模块503,在用于基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容时,具体用于:将所述多个数据块,顺次填入至少一个所述第一类型条带的对应数据区内;基于所述第一类型条带的数据区内的数据块,确定所述第一类型条带的条带头区内填入的条带头信息。
再进一步地,上述条带头信息包括:魔术数及校验和。
再进一步地,上述至少一个所述第一类型条带中的一个第一类型条带还包括段头区;相应地,
上述第一填入模块503,在用于基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容,还具体用于:基于所述多个数据块,确定段头信息;将所述段头信息填入所述段头区内。
再进一步地,所述段头信息包括:魔术数、校验和、版本标识、数据块个数、各数据块的描述信息。
进一步地,上述第二确定模块504,在用于根据所述多个数据块,确定校验数据时,具体用于:对所述多个数据块进行编码处理;根据编码处理结果,确定校验数据。
进一步地,本实施例提供的所述装置,还包括:
第二获取模块,用于获取所述多个数据块的逻辑地址;
第三确定模块,用于基于所述多个数据块填入的所述存放段,确定物理地址;
建立模块,用于建立所述逻辑地址和所述物理地址间的映射关系,并将所述映射关系存入数据库。
进一步地,上述第一获取模块501,在用于获取多个数据块时,具体用于:接收写入方发送的数据;将接收到的数据划分为大小相同的数据块。
这里需要说明的是:本实施例提供的数据处理装置可实现上述图2示出的数据处理方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述图2示出的数据处理方法实施例中的相应内容,此处不再赘述。
图7示出了本申请一实施例提供一个存储设备的结构示意图。如图7所示,所述存储设备包括:存储器601以及处理器602。存储器601可被配置为存储其它各种数据以支持在传感器上的操作。这些数据的示例包括用于在传感器上操作的任何应用程序或方法的指令。存储器601可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
所述存储器601,用于存储一条或多条计算机指令;
所述处理器602,与所述存储器601耦合,用于执行所述存储器601中存储的所述一条或多条计算机指令,以实现上述各方法实施例提供的数据处理方法。
进一步地,如图7所示,存储设备还包括:通信组件603、显示器604、电源组件605及音频组件606等其它组件。图7中仅示意性给出部分组件,并不意味着传感器只包括图7所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各实施例提供的数据处理方法步骤或功能。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (13)
1.一种数据处理方法,其特征在于,包括:
获取多个数据块;
在所述多个数据块的数量达到设定值时,确定一空闲的存放段;其中,所述存放段包括多个条带,一个条带是根据一个存储块的切分结果所确定,不同条带与不同的存储块具有对应关系;所述设定值表征填满所述存放段所需的数据块的数量;
基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容;
根据所述多个数据块,确定校验数据;
将所述校验数据,填入所述多个条带的剩余部分条带;
按照条带与存储块的对应关系,对填满的所述存放段进行分布式存储,以将所述存放段内的多个条带中的内容分别存入各自对应的存储块内。
2.根据权利要求1所述的方法,其特征在于,
存储池包含多个存储节点,一个存储节点包含多个存储磁盘,一个存储磁盘包含多个存储块;
根据纠删码类型,对属于不同存储节点且属于不同存储磁盘的存储块进行组织,得到存储块组;
其中,所述存放段包含的多个条带与所述存储块组中包含的多个存储块一一对应;对存储块进行切分得到多个数据区,多个数据区组成一个条带。
3.根据权利要求2所述的方法,其特征在于,确定一空闲的存放段,包括:
分配一个空闲的存储块组;
根据所述存储块组,确定所述存放段。
4.根据权利要求3所述的方法,其特征在于,所述存放段包含的多个条带中,具有第一类型条带和第二类型条带;其中,
所述第一类型条带用于存放所述多个数据块;
所述第二类型条带用于存放所述校验数据。
5.根据权利要求4所述的方法,其特征在于,所述存放段中包含有至少一个所述第一类型条带,所述第一类型条带包括条带头区和数据区;以及
基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容,包括:
将所述多个数据块,顺次填入至少一个所述第一类型条带的对应数据区内;
基于所述第一类型条带的数据区内的数据块,确定所述第一类型条带的条带头区内填入的条带头信息;其中,所述条带头信息包括:魔术数及校验和。
6.根据权利要求5所述的方法,其特征在于,至少一个所述第一类型条带中的一个第一类型条带还包括段头区;以及
基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容,还包括:
基于所述多个数据块,确定段头信息;
将所述段头信息填入所述段头区内;
其中,所述段头信息包括:魔术数、校验和、版本标识、数据块个数、各数据块的描述信息。
7.根据权利要求1至6中任一项所述的方法,其特征在于,还包括:
获取所述多个数据块的逻辑地址;
基于所述多个数据块填入的所述存放段,确定物理地址;
建立所述逻辑地址和所述物理地址间的映射关系,并将所述映射关系存入数据库。
8.根据权利要求1至6中任一项所述的方法,其特征在于,获取多个数据块,包括:
接收写入方发送的数据;
将接收到的数据划分为大小相同的数据块。
9.一种存储***,其特征在于,包括:
存储池,包括多个存储磁盘,存储磁盘具有多个存储块;
分布式存储模块,用于获取多个数据块;在所述多个数据块的数量达到设定值时,确定一空闲的存放段;其中,所述存放段包括多个条带,一个条带是根据一个存储块的切分结果所确定,不同条带与不同的存储块具有对应关系;所述设定值表征填满所述存放段所需的数据块的数量;基于所述多个数据块,在所述多个条带的部分条带内填入相应的内容;根据所述多个数据块,确定校验数据;将所述校验数据,填入所述多个条带的剩余部分条带;按照条带与存储块的对应关系,对填满的所述存放段进行分布式存储,以将所述存放段内的多个条带中的内容分别存入各自对应的存储块内。
10.根据权利要求9所述的***,其特征在于,还包括:
存储池管理模块,用于根据纠删码类型,对属于不同存储节点且属于不同存储磁盘的存储块进行组织,得到存储块组;
所述分布式存储模块,用于在获取到的所述多个数据块的数量达到设定值时,分配一个空闲的存储块组;根据所述存储块组,确定所述存放段。
11.根据权利要求9或10所述的***,其特征在于,还包括:
存储卷,用于接收写入方发送的数据及所述数据对应的逻辑地址;将接收到的数据划分为大小相同的数据块;
缓存模块,用于缓存所述存储卷划分出的数据块,以便所述分别式存储模块获取所述多个数据块;记录所述数据块对应的逻辑地址,以便地址映射模块获取所述多个数据块对应的逻辑地址;其中,所述数据块对应的逻辑地址是根据所述数据对应的逻辑地址确定的。
12.根据权利要求11所述的***,其特征在于,还包括:
地址映射模块,用于从所述缓存模块中获取所述多个数据块对应的逻辑地址;以及获取所述分布式存储模块为所述多个数据块确定的物理地址;建立并保存所述逻辑地址与所述物理地址的映射关系。
13.一种存储设备,其特征在于,包括:存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述权利要求1-8任一项所述数据处理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110495606.7A CN113176858B (zh) | 2021-05-07 | 2021-05-07 | 数据处理方法、存储***及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110495606.7A CN113176858B (zh) | 2021-05-07 | 2021-05-07 | 数据处理方法、存储***及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113176858A true CN113176858A (zh) | 2021-07-27 |
CN113176858B CN113176858B (zh) | 2022-12-13 |
Family
ID=76928450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110495606.7A Active CN113176858B (zh) | 2021-05-07 | 2021-05-07 | 数据处理方法、存储***及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113176858B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672175A (zh) * | 2021-08-09 | 2021-11-19 | 浙江大华技术股份有限公司 | 分布式对象存储方法、装置和设备及计算机存储介质 |
CN114301575A (zh) * | 2021-12-21 | 2022-04-08 | 阿里巴巴(中国)有限公司 | 数据处理方法、***、设备及介质 |
CN114995770A (zh) * | 2022-08-02 | 2022-09-02 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、设备、***及可读存储介质 |
CN115391093A (zh) * | 2022-08-18 | 2022-11-25 | 江苏安超云软件有限公司 | 一种数据处理方法及*** |
CN115599315A (zh) * | 2022-12-14 | 2023-01-13 | 阿里巴巴(中国)有限公司(Cn) | 数据处理方法、装置、***、设备及介质 |
WO2023029624A1 (zh) * | 2021-09-03 | 2023-03-09 | 华为技术有限公司 | 一种存储块的回收方法以及相关装置 |
CN117149094A (zh) * | 2023-10-30 | 2023-12-01 | 苏州元脑智能科技有限公司 | 确定数据区状态的方法、装置、磁盘阵列及存储*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020161972A1 (en) * | 2001-04-30 | 2002-10-31 | Talagala Nisha D. | Data storage array employing block checksums and dynamic striping |
JP2003296038A (ja) * | 2002-03-21 | 2003-10-17 | Network Appliance Inc | Raidシステムにおいてストライプの連続アレイに書き込む方法 |
CN102722340A (zh) * | 2012-04-27 | 2012-10-10 | 华为技术有限公司 | 数据处理方法、装置及*** |
CN105677249A (zh) * | 2016-01-04 | 2016-06-15 | 浙江宇视科技有限公司 | 数据块的划分方法、装置及*** |
CN105930500A (zh) * | 2016-05-06 | 2016-09-07 | 华为技术有限公司 | 数据库***中事务恢复的方法与数据库管理*** |
CN110399310A (zh) * | 2018-04-18 | 2019-11-01 | 杭州宏杉科技股份有限公司 | 一种存储空间的回收方法及装置 |
CN112019788A (zh) * | 2020-08-27 | 2020-12-01 | 杭州海康威视***技术有限公司 | 数据存储方法、装置、***及存储介质 |
-
2021
- 2021-05-07 CN CN202110495606.7A patent/CN113176858B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020161972A1 (en) * | 2001-04-30 | 2002-10-31 | Talagala Nisha D. | Data storage array employing block checksums and dynamic striping |
JP2003296038A (ja) * | 2002-03-21 | 2003-10-17 | Network Appliance Inc | Raidシステムにおいてストライプの連続アレイに書き込む方法 |
CN102722340A (zh) * | 2012-04-27 | 2012-10-10 | 华为技术有限公司 | 数据处理方法、装置及*** |
CN105677249A (zh) * | 2016-01-04 | 2016-06-15 | 浙江宇视科技有限公司 | 数据块的划分方法、装置及*** |
CN105930500A (zh) * | 2016-05-06 | 2016-09-07 | 华为技术有限公司 | 数据库***中事务恢复的方法与数据库管理*** |
CN110399310A (zh) * | 2018-04-18 | 2019-11-01 | 杭州宏杉科技股份有限公司 | 一种存储空间的回收方法及装置 |
CN112019788A (zh) * | 2020-08-27 | 2020-12-01 | 杭州海康威视***技术有限公司 | 数据存储方法、装置、***及存储介质 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672175A (zh) * | 2021-08-09 | 2021-11-19 | 浙江大华技术股份有限公司 | 分布式对象存储方法、装置和设备及计算机存储介质 |
WO2023029624A1 (zh) * | 2021-09-03 | 2023-03-09 | 华为技术有限公司 | 一种存储块的回收方法以及相关装置 |
WO2023116141A1 (zh) * | 2021-12-21 | 2023-06-29 | 阿里巴巴(中国)有限公司 | 数据处理方法、***、设备及介质 |
CN114301575A (zh) * | 2021-12-21 | 2022-04-08 | 阿里巴巴(中国)有限公司 | 数据处理方法、***、设备及介质 |
CN114301575B (zh) * | 2021-12-21 | 2024-03-29 | 阿里巴巴(中国)有限公司 | 数据处理方法、***、设备及介质 |
CN114995770A (zh) * | 2022-08-02 | 2022-09-02 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、设备、***及可读存储介质 |
CN114995770B (zh) * | 2022-08-02 | 2022-12-27 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、设备、***及可读存储介质 |
CN115391093A (zh) * | 2022-08-18 | 2022-11-25 | 江苏安超云软件有限公司 | 一种数据处理方法及*** |
CN115391093B (zh) * | 2022-08-18 | 2024-01-02 | 江苏安超云软件有限公司 | 一种数据处理方法及*** |
CN115599315B (zh) * | 2022-12-14 | 2023-04-07 | 阿里巴巴(中国)有限公司 | 数据处理方法、装置、***、设备及介质 |
CN115599315A (zh) * | 2022-12-14 | 2023-01-13 | 阿里巴巴(中国)有限公司(Cn) | 数据处理方法、装置、***、设备及介质 |
CN117149094A (zh) * | 2023-10-30 | 2023-12-01 | 苏州元脑智能科技有限公司 | 确定数据区状态的方法、装置、磁盘阵列及存储*** |
CN117149094B (zh) * | 2023-10-30 | 2024-02-09 | 苏州元脑智能科技有限公司 | 确定数据区状态的方法、装置、磁盘阵列及存储*** |
Also Published As
Publication number | Publication date |
---|---|
CN113176858B (zh) | 2022-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113176858B (zh) | 数据处理方法、存储***及存储设备 | |
US11487619B2 (en) | Distributed storage system | |
US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
US8972779B2 (en) | Method of calculating parity in asymetric clustering file system | |
US20230013281A1 (en) | Storage space optimization in a system with varying data redundancy schemes | |
US11074129B2 (en) | Erasure coded data shards containing multiple data objects | |
CN112889034A (zh) | 对数据块的内容驱动的分布进行擦除编码 | |
US10996894B2 (en) | Application storage segmentation reallocation | |
US11301137B2 (en) | Storage system and data arrangement method of storage system | |
US20190243553A1 (en) | Storage system, computer-readable recording medium, and control method for system | |
US20200341874A1 (en) | Handling of offline storage disk | |
CN112749039A (zh) | 用于数据写入和数据恢复的方法、设备和程序产品 | |
US20190347165A1 (en) | Apparatus and method for recovering distributed file system | |
JP6653370B2 (ja) | ストレージシステム | |
CN101566930B (zh) | 虚拟磁盘驱动***和方法 | |
US11481275B2 (en) | Managing reconstruction of a malfunctioning disk slice | |
US11507278B2 (en) | Proactive copy in a storage environment | |
CN113590378A (zh) | 存储管理的方法、设备和计算机程序产品 | |
US11544005B2 (en) | Storage system and processing method | |
US20230236932A1 (en) | Storage system | |
JP6605762B2 (ja) | 記憶ドライブの故障により消失したデータを復元する装置 | |
CN117806528A (zh) | 一种数据存储方法及装置 | |
CN115391093A (zh) | 一种数据处理方法及*** | |
CN117311600A (zh) | 包括多个固态驱动器的存储***及其管理方法 | |
CN116414294A (zh) | 生成块组的方法、装置和设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |