CN115904795A - 存储系统中的数据存储方法及装置 - Google Patents

存储系统中的数据存储方法及装置 Download PDF

Info

Publication number
CN115904795A
CN115904795A CN202110962195.8A CN202110962195A CN115904795A CN 115904795 A CN115904795 A CN 115904795A CN 202110962195 A CN202110962195 A CN 202110962195A CN 115904795 A CN115904795 A CN 115904795A
Authority
CN
China
Prior art keywords
data
stripe
check
size
storage
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
CN202110962195.8A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202110962195.8A priority Critical patent/CN115904795A/zh
Priority to PCT/CN2022/103574 priority patent/WO2023020136A1/zh
Publication of CN115904795A publication Critical patent/CN115904795A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种存储系统中的数据存储方法及装置,涉及存储技术领域。该数据存储方法中,接收第一数据之后,可以将第一数据存储到相应的数据条带中进行持久化存储,当第一数据的大小小于一个数据条带时,无需对第一数据进行校验计算,如此一来,减少了在数据存储过程中计算校验数据的次数,相对减少存储系统的计算资源的消耗。

Description

存储系统中的数据存储方法及装置
技术领域
本申请涉及存储技术领域,尤其涉及一种存储系统中的数据存储方法及装置。
背景技术
为了保证存储数据的可靠性,存储系统可以采用纠删码(erasure coding,EC)校验机制存储数据。EC校验机制是将待存储的数据划分为数据分片,按照一定的校验算法计算数据分片的校验分片,数据分片和校验分片构成EC校验关系,并将数据分片和校验分片存储到一个存储EC校验关系的分条中。存储数据分片和校验分片具体包括:将数据分片存储到分条中的数据条带中,将校验分片存储到分条的校验条带中。当其中一个数据分片所在的数据条带发生数据丢失时,可以利用其余数据条带中的数据和校验条带中的数据恢复丢失的数据。
目前,其中一种EC校验机制存储数据中,存储系统接收到数据,便计算数据的校验数据,在分条中相应的数据条带中存储接收到的数据,直到一个分条中的所有数据条带凑满,将这些数据条带的校验数据存储在校验条带中。这种机制在数据凑满分条中数据条带前频繁进行计算,占用了存储系统的计算资源。
发明内容
本申请实施例提供一种存储系统中的数据存储方法及装置,用于减少数据存储过程中存储系统消耗的计算资源。
第一方面,本申请实施例提供一种存储系统中的数据存储方法,包括:
接收第一数据;当所述第一数据的大小小于一个分条中的一个数据条带的大小时,将所述第一数据存储到所述分条中第一数据对应的数据条带中,不计算所述第一数据的校验数据,并将所述第一数据记录到日志中。
在本申请实施例中,接收第一数据之后,存储第一数据,当第一数据小于一个数据条带的大小时,无需对第一数据进行校验计算,换言之,在数据存储过程中并不是存储一次数据就进行一次校验计算,以减少存储系统计算校验数据的次数,从而减少了存储系统在数据存储过程中消耗的计算资源。且,在存储第一数据时,还可以将第一数据记录在日志中,这样后续存储第一数据的过程出现异常,可以利用日志中的第一数据重新执行存储第一数据的过程,提升存储系统的可靠性。且,接收第一数据之后,将第一数据在存储系统中分条相应的数据条带进行持久化存储,可以更快地存储数据,进而提高了存储系统存储数据的效率。
在一种可能的实施方式中,接收第二数据,当所述第二数据的大小大于或等于该分条中的一个数据条带的大小时,计算第一校验数据,所述第一校验数据为该第二数据的校验数据,以及将所述第二数据存储到该分条中第二数据对应的数据条带中。
上述实施方式中如果待存储的第二数据的大小大于或等于一个数据条带的大小,那么可以计算第二数据的第一校验数据,并将第二数据存储到分条对应的数据条带中,由于第二数据的大小相对较大,因此先计算出第二数据的校验数据,后续可以根据该第二数据的校验数据以及其他数据进行校验计算,从而避免后续同时基于多个较大的数据进行校验计算的情况,相对可以减少存储系统的计算资源消耗。
在一种可能的实施方式中,如果第一数据和第二数据的大小之和小于分条中所有数据条带的大小之和,那么表示分条中的所有数据条带还未凑满,因此可以将计算出的第二数据的第一校验数据记录在日志中,后续可以利用日志中的第一校验数据计算第二数据与其他数据的校验数据。且,由于校验计算的计算粒度一般是一个数据条带的大小,也就是说,无论数据本身的大小,计算出的该数据的校验数据的大小均是一个数据条带的大小的整数倍,因此在该实施方式中,将第一校验数据记录在日志中相比将第二数据记录在日志中,可以相对节省日志占用的存储空间。
在一种可能的实施方式中,提供了一种计算第一数据和第二数据的校验数据的方式,具体来说,可以读取日志中记录的第一数据,根据日志中的第一数据和第二数据的第一校验数据,计算得到第二校验数据。
在上述实施方式中,由于日志中存储的数据总量,一般来说比存储系统的数据条带中存储的数据总量更少,因此从日志中读取第一数据相比从存储系统中读取第一数据耗费的时间更少,因此能更快地计算第二校验数据,以提高存储系统计算校验数据的效率,进而利于提高存储系统存储数据的效率。
在一种可能的实施方式中,还可以缓存第一数据,利用缓存的第一数据和第二数据的校验数据,计算第一数据和第二数据的校验数据,以获得第二校验数据。
在上述实施方式中,由于缓存的读取速度一般较快,因此利用缓存的第一数据进行校验计算,可以更快地计算出第二校验数据,有利于提高存储数据的效率。
在一种可能的实施方式中,当第一数据和第二数据凑满分条中的所有数据条带时,那么第二校验数据与所有数据条带中的数据构成EC校验关系,因此可以将第二校验数据存储到分条中的校验条带中,从而完成凑满一个分条的过程。且,计算校验数据与存储数据可以同步进行,有利于提高存储数据的效率。
第二方面,本申请实施例提供一种数据存储装置,所述装置包括通信接口和处理器。其中,通信接口和处理器可以用于实现上述第一方面中的任一的存储系统中的数据存储方法。例如,所述通信接口用于接收第一数据;所述处理器用于当所述第一数据的大小小于一个分条中的一个数据条带的大小时,将所述第一数据存储到所述分条中第一数据对应的数据条带中,不计算所述第一数据的校验数据,并将所述第一数据记录到日志中。
可选的,该数据存储装置还包括其他部件,例如,天线,输入输出模块,接口等等。这些部件可以是硬件,软件,或者软件和硬件的结合。
第三方面,本申请实施例提供一种数据存储装置,所述装置包括通信模块和处理模块,通信模块和处理模块可以用于实现上述第一方面中的任一的存储系统中的数据存储方法。例如,通信模块用于接收第一数据;处理模块用于当所述第一数据的大小小于一个分条中的一个数据条带的大小时,将所述第一数据存储到所述分条中第一数据对应的数据条带中,不计算所述第一数据的校验数据,并将所述第一数据记录到日志中。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行第一方面中任意一项所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第六方面,本申请提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现第一方面所述的方法。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
第七方面,本申请实施例提供了一种存储系统,该存储系统包括第二方面任一所述的数据存储装置,或者,该存储系统包括第三方面任一所述的数据存储装置。
上述第二方面至第七方面及其实现方式的有益效果可以参考对第一方面的方法及其实施方式的有益效果的描述。
附图说明
图1A为本申请实施例适用的一种应用场景示意图;
图1B为本申请实施例适用的另一种应用场景示意图;
图2A为本申请实施例适用的又一种应用场景示意图;
图2B为本申请实施例适用的再一种应用场景示意图;
图2C为本申请实施例适用的再一种应用场景示意图;
图3为本申请实施例适用的一种数据存储系统中的逻辑层的分布示意图;
图4为本申请实施例提供的一种存储系统中的数据存储方法的一种流程示意图;
图5为本申请实施例提供的一种存储数据的过程示意图;
图6为本申请实施例提供的数据存储装置的一种示例的结构示意图;
图7为本申请实施例提供的数据存储装置的另一种示例的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。
以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1、本申请实施例中的EC校验机制涉及数据条带和校验条带,其中数据条带用于存储数据,校验条带用于存储数据条带中的数据的校验数据,数据条带和校验条带构成一个分条;数据条带和校验条带的大小相同。当数据条带中的数据丢失时,可以使用校验条带中的校验数据以及未丢失数据的数据条带中的数据恢复发生数据丢失的数据条带中的数据。EC校验算法包括阵列纠删码算法、里德-所罗门类(reed-solomon,RS)纠删码算法或低密度奇偶校验(low density parity check code,LDPC)纠删码算法等,本申请实施例中的校验计算可以采用任意一种EC校验算法。本申请实施例中的EC校验机制包含独立硬盘冗余阵列(redundant array of independent disks,RAID)机制。例如,一个分条中包含数据条带d1、d2和d3,以及校验条带y1,d1、d2、d3和y1对应存储系统中相应的存储空间。例如d1中的数据丢失,则存储系统可以根据y1中的校验数据、d2中的数据和d3中的数据恢复出d1中的数据。
本申请中,对于名词的数目,除非特别说明,表示“单数名词或复数名词”,即"一个或多个”。“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。例如,A/B,表示:A或B。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),表示:a,b,c,a和b,a和c,b和c,或a和b和c,其中a,b,c可以是单个,也可以是多个。
除非有特定的说明,本申请实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度,例如,本申请实施例中的“第一数据”和“第二数据”用于表示两个数据,并不限定两个数据的大小或接收两个数据的顺序等。又例如,本申请实施例中的“第一存储介质”和“第二存储介质”用于表示两个存储介质,并不限定两个存储介质的优先级或重要程度等。
为了减少数据存储过程中存储系统的计算资源消耗,本申请实施例提供一种存储系统中的数据存储方法。在该数据存储方法中,当待存储的第一数据的大小小于数据条带的大小时,将第一数据存储到分条中相应的数据条带中,无需对第一数据校验计算,相较于每次都对数据进行校验计算的方式,本申请实施例中的数据存储方法可以相对减少对数据进行校验计算的次数,进而减少了数据存储过程中的计算量。并且,接收第一数据之后,将第一数据存储到分条中相应的数据条带中,从而实现数据的持久化存储,以提高存储数据的效率。将第一数据写入日志中,后续存储第一数据过程出现异常,可以基于日志中的第一数据,重新执行第一数据的写操作,提高存储系统中存储数据的可靠性。
本申请实施例中的数据存储方法可以适用于各类集中式数据存储系统,以及各类分布式数据存储系统。下面先对本申请实施例适用的集中式数据存储系统进行示例介绍。为了简化描述,下文中的集中式数据存储系统和分布式数据存储系统均可以简称为存储系统。
请参照图1A,为本申请实施例适用的一种应用场景示意图,或者视为一种盘控一体式的集中式数据存储系统的架构示意图。该存储系统120可以通过交换机110与主机100通信。例如,主机100通过交换机110将待存储的数据发送给存储系统120,存储系统120对数据执行写操作。
其中,交换机110例如为光纤交换机。作为一个示例,交换机110为一个可选的设备,例如,主机100可以通过网络与存储系统120通信。
存储系统120包括引擎121,引擎121可以视为该集中式数据存储系统的入口,所有从外部设备来的数据都要经过该入口。例如,引擎121接收数据的同时,可以接收数据的地址信息,该地址信息例如存储数据的逻辑地址,在存储数据时,引擎121可以根据地址信息,将该数据存储至一个分条中的相应的数据条带中。其中,引擎121包括一个或多个控制器,图1A以引擎121包含两个控制器(如控制器0和控制器1)为例进行说明,实际不限制引擎121包括的控制器的数量。
控制器0包括中央处理器(central processing unit,CPU)122和内存123。CPU122用于处理来自存储系统120的外部(例如,服务器、其他存储系统)或内部生成的写请求或读请求。其中,写请求用于请求将数据写入存储系统120数据。读请求用于请求从存储系统120中读取数据。控制器0可以包括一个或多个CPU122,一个CPU122具有一个或多个CPU核,本申请实施例不对CPU的数量以及CPU核的数量进行限定。内存123是指与CPU122可以直接交换数据的内存存储器。CPU122可以对内存123进行写操作或读操作。例如,内存123可以缓存数据,后续引擎121可以快速地从内存123中读取出数据,以加快后续计算校验数据的过程。内存123可以包括一种或多种存储器,本申请实施例不对内存123的数量和类型进行限定。
除此之外,控制器0还可以包括前端接口124和后端接口125。其中前端接口124用于与主机100通信,为主机100提供存储服务。后端接口125用于与硬盘126通信,以扩充存储系统120的容量。引擎121可以通过后端接口125连接更多的硬盘126。
作为一个示例,在图1A所示的存储系统120还包括多个硬盘126,硬盘126可以是磁盘或者其他类型的存储介质,例如固态硬盘或机械硬盘等,本申请对此不作限定。多个硬盘126可以部署在引擎121中的硬盘槽位中,这时,后端接口125属于可选配置。或者,硬盘126可以通过后端接口125与引擎121通信。
图1A中所示的存储系统120中的硬盘126的物理存储空间提供分条中条带的存储空间。在引擎121对数据执行写操作时,具体是将数据存储在相应的数据条带中,也就是将数据存储在硬盘126对应的物理存储空间中。同理,引擎121还可以将数据对应的校验数据存储在校验条带中,也就是将校验数据存储在硬盘126对应的物理存储空间中。
请参照图1B,为本申请实施例提供的数据存储方法适用的另一种应用场景示意图,或者可以视为一种盘控分离式的集中式数据存储系统的架构示意图。该存储系统120可以通过交换机110与主机100通信。该存储系统120包括引擎121、CPU122、内存123、前端接口124、后端接口125以及硬盘框130。引擎121包括如图1B所示的控制器0和控制器1。其中,引擎121、控制器0、控制器1、CPU122、内存123、前端接口124、后端接口125的实现方式和作用可以参照前文图1A论述的内容。
与盘控一体式的集中式数据存储系统不同的是,图1B所示的引擎121需要通过单独的后端接口125接入硬盘框130中,硬盘框130上可以设置有多个硬盘。
其中,硬盘框130包括网卡131、控制单元132和若干个硬盘126。网卡131用于硬盘框130与引擎121之间的通信。硬盘框130可以属于智能盘框,智能盘框是指硬盘框具有计算资源和存储资源,能够独立完成数据处理功能的硬盘框。控制单元132可以包括CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘126的数据,或者从硬盘126读取出来将要发送给控制单元132的数据。控制单元132的形态和数量可以是任意的,本申请对此不作限定。
其中,图1B中所示的存储系统120中的硬盘126的物理存储空间提供分条中条带的存储空间。在引擎121存储数据时,是将数据对应写入分条中的相应数据条带中。
上述图1A和图1B是集中式数据存储系统的架构示例。下面对本申请实施例适用的分布式数据存储系统进行示例介绍。分布式数据存储系统包括存算分离式的分布式数据存储系统、全融合式的分布式数据存储系统和存算一体式的分布式数据存储系统,下面分别进行示例介绍。
如图2A所示,为本申请实施例适用的又一应用场景示意图,或者可以视为一种存算分离式的分布式数据存储系统的架构示意图。该存储系统包括计算节点集群和存储节点集群。
计算节点集群包括一个或多个计算节点210,存储节点集群包括一个或多个存储节点250。各个计算节点210之间可以相互通信。图2A中是以两个计算节点210,两个存储节点250为例,实际不限制计算节点210和存储节点250的数量。任意一个计算节点210可通过网络访问存储节点集群中的任意一个存储节点250。例如,计算节点210接收待存储的数据,将待存储的数据发送给存储节点250,存储节点250可以对数据执行写操作。
其中,计算节点210泛指具有计算功能的设备,例如服务器、台式计算机或者存储阵列的控制器等。如图2A所示,计算节点210至少包括CPU211、内存212和网卡213。CPU211可以用于处理来自计算节点210外部的写请求或读请求,或者计算节点210内部生成的写请求或读请求。网卡213用于与存储节点250通信。另外,计算节点210还可以包括总线,在图2A中的总线可以用于计算节点210各组件之间的通信。图2A中仅示意出了一个CPU211,实际上CPU211的数量可以是一个或多个。内存212的作用可以参照前文图1A中内存的作用,此处不再赘述。
其中,一个存储节点250包括一个或多个控制器251、网卡252、硬盘253和内存254。例如,控制器251用于根据计算节点210发送的数据,向硬盘253中写入数据。网卡252用于与计算节点210通信。硬盘253的实现方式可以参照前文。内存254用于临时存储将要写入硬盘253的数据,或者从硬盘253读取出来将要发送给计算节点210的数据。在实际应用时,控制器251可以有多种形态,例如,控制器251包括CPU。控制器251还可以包括内存,该内存的作用可以参照前文图1A中内存的作用。或者例如,控制器251是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)、图像处理单元(graphics processing unit,GPU)或嵌入式神经网络处理器(neural-network processing units,NPU)等处理芯片。控制器251的数量可以是任意的,本申请实施例对此不作限定。
作为一个示例,存储节点250内部可以不具有控制器251,例如,控制器251的功能可以卸载到网卡252上,这种情况下,可以由网卡252来完成数据读写、地址转换以及其他计算功能。这种情况下,网卡252可以为智能网卡,网卡252可以包含CPU和内存,CPU用于执行地址转换以及读写等操作,这时,可以由网卡252接收计算节点210发送的第一数据,并将第一数据存储到相应的硬盘253中。内存的作用可以参照前文。这种情况下,存储节点250中的网卡252和硬盘253之间可以没有归属关系,即网卡252可以访问存储节点250中的任意一个硬盘253。
在图2A所示的数据存储系统架构中,图1A中所示的存储系统120中的每个存储节点中的一个硬盘253或多个硬盘253中的物理存储空间为分条中的条带提供存储空间。存储节点250在执行数据写操作时,存储节点250实质是将数据存储至相应的数据条带中,也就是将数据存储至存储节点250相应的硬盘中。
请参照图2B,为本申请实施例提供的数据存储方法适用的又一应用场景示意图,或者可以视为一种全融合式的分布式数据存储系统的架构示意图。该全融合式的分布式数据存储系统包括服务器集群,服务器集群包括一个或多个服务器260,各个服务器260之间可以相互通信。
服务器260是泛指具有计算能力和存储能力的设备,如服务器、台式计算机等。例如,服务器260可以通过进阶精简指令集机器(advanced risc machine,ARM)服务器或者X86服务器实现。在软件上,服务器260上可以包括虚拟机(virtual machine,VM)262,VM262所需的计算资源来源于服务器本地的处理器和内存,VM 262所需的存储资源既可以来源于服务器本地的硬盘,也可以来自其他服务器中的硬盘。此外,VM 262中可运行各种应用程序,用户可通过虚拟机中的应用程序触发读/写请求。
在硬件上,每个服务器260还可以包括处理器261、网卡252、硬盘253和内存254。其中网卡252和内存254的实现形式和功能可以参照前文图2A论述的内容。处理器261可以接收待存储的数据,并对数据执行写操作。
在图2B所示的数据存储系统架构中,每个服务器中的一个硬盘253或多个硬盘253中的物理存储空间为分条中的条带提供存储空间。服务器260在执行数据写操作时,服务器260实质是将数据存储至相应的数据条带中,也就是将数据存储至服务器260相应的硬盘中。
请参照图2C,为本申请实施例提供的数据存储方法适用的再一应用场景示意图,或者可以视为一种存算一体式的分布式数据存储系统的架构示意图。该存算一体式的分布式数据存储系统包括服务器集群,服务器集群包括一个或多个服务器260,各个服务器260之间可以相互通信。
在硬件上,服务器260至少包括处理器261、内存254、网卡252和硬盘253。处理器261、内存254、网卡252和硬盘253之间通过总线连接。其中,处理器261和内存254可以用于提供计算资源。
同理,在图2C所示的数据存储系统架构中,每个服务器中的一个硬盘253或多个硬盘253中的物理存储空间为分条中的条带提供存储空间。服务器260在执行数据写操作时,服务器260实质是将数据存储至相应的数据条带中,也就是将数据存储至服务器260相应的硬盘中。
需要说明的是,存算一体式的分布式数据存储系统与全融合式的分布式存储系统不同的是,存算一体式的分布式数据存储系统中的服务器可以没有虚拟机,以及没有运行相应的应用程序。存算一体式的分布式数据存储系统与存算分离式的分布式数据存储系统不同的是,存算一体式的分布式数据存储系统中的服务器相当于集成了存算分离式的分布式数据存储系统中的存储节点和计算节点的功能。
请参见图3,为本申请实施例提供的数据存储方法适用的一种数据存储系统的逻辑层的分布示意图。图3中的存储系统300例如可以为前文中图1A、图1B、图2A、图2B或图2C中任一论述的存储系统。该存储系统300包括若干个硬盘320。其中,硬盘320的类型可以参照前文。
另外,存储系统300还提供客户端310,客户端310可以理解为访问存储系统300的入口。客户端310用于向主机提供逻辑存储空间。该客户端310可以位于主机侧,例如,客户端310位于图1A或图1B所示的主机中,该客户端310可以位于存储系统中的一个存储节点,例如,客户端310位于图2A所示的存储节点中,或者客户端310还可以位于图2B或图2C所示的服务器中。
如图3所示,每个硬盘320被划分为若干个物理块(chunk)321,这些物理chunk321映射成逻辑块331从而构成一个存储池330,存储池330用于向上提供存储空间,所述存储空间实际来源于系统所包含的硬盘320。当然,并非所有硬盘320都需要提供空间给所述存储池330。存储系统中可包含一个或多个存储池330,一个存储池330包括部分或全部硬盘320。来自不同硬盘320或者不同存储节点的多个逻辑chunk组成一个逻辑块组(chunk group)340,所述逻辑块组340是所述存储池330的最小分配单位。一个逻辑块组340可以包括一个或多个分条341,如图3所示,一个分条341包括4个数据条带(如图3中0-3所示的4个数据条带)以及2个校验条带(如图3中所示的P1和Q1所示的校验条带)。例如,图1A或图1B中所有硬盘组成一个存储池,图2A中所有存储节点上的多个硬盘组成一个或多个存储池,图2B或图2C中所有服务器上的多个硬盘可以组成一个或多个存储池。
当存储服务层向所述存储池330申请存储空间时,所述存储池330可以提供一个或多个逻辑块组给存储服务层。存储服务层进一步将逻辑块组提供的存储空间虚拟化为逻辑单元(logical unit,LU)350,由客户端310提供给主机使用。其中,每个逻辑单元具有唯一的逻辑单元号(logical unit number,LUN)。由于客户端310能感知到逻辑单元号,因此可以用LUN代指逻辑单元。每个LUN具有LUN ID,用于标识所述LUN。数据位于一个LUN内的具体位置可以由起始地址和该数据的长度(length)确定。对于起始地址,可以称为逻辑块地址(logical block address,LBA)。可以理解的是,LUN ID、LBA和length这三个因素标识了一个确定的地址段。客户端310生成的写请求或读请求,通常在写请求或读请求中携带数据的LUN ID、LBA和length。
下面结合附图介绍本申请实施例提供的技术方案。
本申请实施例提供一种存储系统中的数据存储方法,该数据存储方法适用于任意采用EC校验机制存储数据的存储系统中,例如,可以适用于前文图1A、图1B、图2A、图2B、图2C或图3任一的存储系统中。该数据存储方法由存储系统执行,具体可以由存储系统中的某个设备执行,具体可以由某个设备中的某个部件执行,例如,该数据存储方法可以由图1A或图1B中的存储系统(具体如图1A或图1B中所示的存储系统中的引擎)、图2A中的存储节点(具体如图2A中的存储节点中的控制器)、图2B或图2C中的服务器(具体如图2B或图2C中的服务器中的处理器)等执行,也可以由具有数据存储系统功能的芯片系统实现。
请参见图4,为本申请实施例提供的一种存储系统中的数据存储方法的流程图。图4中是以该方法应用于图1A或图1B所示的集中式数据存储系统,该数据存储方法可以由集中式数据存储系统中的引擎执行为例进行介绍。
步骤401,引擎接收第一写请求,该第一写请求用于请求写入第一数据。
第一写请求包括第一数据,第一写请求还可以包括第一数据需要写入的地址信息,第一数据的地址信息例如图3中所示的LBA,地址信息还可以包括LUN ID和length,本申请对此不作限定。
步骤402,引擎将第一数据存储至分条对应的数据条带中。
如前文图3论述的内容,逻辑块与物理块存在一定的对应关系,在本申请实施例中,引擎在接收第一写请求之后,可以根据第一写请求中的地址信息以及对应关系,将第一数据存储至物理块中,对应地,也就相当于将第一数据存储至了逻辑块中,也就相当于将第一数据存储在了分条的数据条带中。其中,数据条带的含义可以参照前文。
如果第一数据的大小小于或等于一个数据条带的大小,那么该第一数据可以被存储至一个数据条带中,因此引擎可以将第一数据存储至该数据条带中。如果第一数据的大小大于一个条带的大小,那么表示一个数据条带无法容纳第一数据,因此引擎可以将第一数据进行拆分,获得第一数据的部分,以及第一数据的另一部分,并分别将拆分第一数据的部分存储至一个数据条带中,将第一数据的另一部分存储至另一个数据条带中。
例如,请参照图5,为本申请实施例提供的一种存储数据的过程示意图。如图5中(1)所示,该存储系统包括6个条带,具体包括4个数据条带(如图5中(1)所示的第一数据条带511、第二数据条带512、第三数据条带513、第四数据条带514),以及2个校验条带(如图5中(1)所示的第一校验条带515和第二校验条带516)。校验条带和数据条带的含义可以参照前文。其中该存储系统的分条大小为3M,每个条带的大小为512K,即存储系统的分条深度为512KB。
以图5中(1)为例,引擎在接收到第一数据D1之后,该第一数据D1的大小为1KB,由于第一数据D1的大小小于一个数据条带的大小,那么表示该一个数据条带已足够容纳第一数据D1,因此可以将第一数据D1存储到第一数据条带511中。这里是将第一数据D1被写入第一数据条带511为例,实际第一数据D1可以被写入任一的数据条带中,本申请对此不作限制。
同理,引擎接收第二数据D2之后,第二数据D2的大小为1KB,由于第一数据D1和第二数据D2的大小之和小于第一数据条带511的大小,那么表示第一数据条带511已足够容纳第二数据D2,因此可以将第二数据D2存储至第一数据条带511中。引擎接收第三数据D3之后,第三数据D3的大小为1KB,由于第一数据D1、第二数据D2和第三数据D3的大小之和小于第一数据条带511的大小,那么表示该第一数据条带511已足够容纳第三数据D3,因此可以将第三数据D3存储至第一数据条带511中。
步骤403,如果第一数据的大小小于一个数据条带的大小,引擎不计算第一数据的校验数据,将第一数据记录在日志中。
采用EC校验机制存储数据时,EC校验计算的计算粒度(又可以称为编码粒度)为一个条带的大小,也就是说,无论数据本身的大小的多少,采用EC校验计算得到的该数据的校验数据的大小均为一个条带的大小的N倍,N为正整数。如果第一数据的大小小于一个条带,那么计算得到的第一数据的校验数据的大小会大于第一数据的大小。因此在本申请实施例中,如果第一数据的大小小于一个条带的大小,无需计算第一数据的校验数据,而是将第一数据记录在日志中,这样,可以无需计算第一数据的校验数据,引擎无需针对每个写请求进行校验计算,以减少引擎计算校验数据的计算次数。且,第一数据的大小比第一数据的校验数据的大小更小,因此将第一数据记录在日志中,相比将第一数据的校验数据记录在日志中,能够减少日志占用的物理存储空间。且,引擎后续可以采用该日志中的第一数据进行计算第一数据与其他数据的校验数据。另外,如果存储第一数据的过程出现异常,引擎可以利用该日志中记录的第一数据重新存储第一数据,以保证存储系统的可靠性。
可选地,引擎还可以将第一数据的元数据一并记录在日志中,元数据是用于描述数据的数据,第一数据的元数据例如包括第一数据的大小信息或第一数据的类型信息等。
其中,日志的格式可以是任意的,本申请对此不做限定。日志可以理解为记录数据的一种形式,日志是存储在相应的存储介质中的。作为一个示例,日志可以存储在第一存储介质中,第一存储介质例如为内存,内存具体例如图1A或图1B所示的引擎中的内存;或者,第一存储介质也可以是该存储系统中的硬盘,例如图1A或图1B中所示的硬盘,具体例如为校验盘,校验盘可以理解为存储系统中为校验条带提供存储空间的硬盘。
继续沿用图5的例子,例如引擎确定第一数据D1的大小(1KB)、第二数据D2的大小(1KB)和第三数据D3的大小(1KB)均小于第一数据条带511的大小,如图5中(1)所示,则引擎可以将第一数据D1、第二数据D2和第三数据D3记录在日志520中。
步骤404,当第一数据的大小小于一个数据条带的大小时,引擎缓存第一数据。
在引擎将第一数据存储至分条中相应的数据条带之后,还未对第一数据进行校验计算,在本申请实施例中,如果第一数据的大小小于一个条带的大小,则引擎除了将第一数据写入日志之外,还可以缓存第一数据,例如,引擎可以将第一数据缓存在第二存储介质中,后续可以根据缓存的第一数据进行校验计算。
可选的,第二存储介质的读取速度大于或等于第一存储介质的读取速度。
作为一个示例,第二存储介质可以为内存,该内存例如图1A或图1B所示的引擎中的内存。或者,第二存储介质也可以为固态硬盘(solid-state disk,SSD)等,本申请实施例对此不作限定。例如,当第一存储介质为存储系统中的校验盘,第二存储介质为内存时,那么第二存储介质的读取速度大于第一存储介质的读取速度。
在本申请实施例中,在第二存储介质的读取速度大于第一存储介质的读取速度的情况下,引擎后续可以通过第二存储介质中的第一数据,对第一数据以及其他数据进行校验计算,这样可以相对提高引擎读取第一数据的速度,引擎可以更快地确定第一数据以及其他数据的校验数据,对应也就能更快地将校验数据存储至校验条带中,从而可以提高整个存储系统存储数据的效率。
另外,本申请实施例不限制第一存储介质的写入速度与第二存储介质的写入速度,例如第一存储介质的写入速度小于第二存储介质的写入速度,或者第一存储介质的写入速度大于第二存储介质的写入速度,或者第一存储介质的写入速度与第二存储介质的写入速度相等。
继续沿用图5的例子,如图5中(1)所示,引擎还可以将第一数据D1、第二数据D2和第三数据D3写入内存530中。
步骤405,当第二数据的大小大于或等于一个数据条带的大小时,主机计算第一校验数据。
其中,第一校验数据为第二数据的校验数据。一种实现中,由位于主机侧的客户端计算第二数据的校验数据,在图4中是以存储系统中位于主机侧的客户端计算第二数据的校验数据为例。在另一种实现中,引擎计算第二数据的校验数据。
本申请实施例计算第二数据的校验数据与生成第二写请求的顺序可以是任意的,本申请对此不作限定。
在主机执行步骤405的情况下,还包括步骤406,引擎接收来自的第二写请求和第一校验数据,该第二写请求用于请求写入第二数据。
例如,主机中的客户端向引擎发送第二写请求和第一校验数据。其中,第二写请求包括第二数据,还可以包括第二数据的地址信息,第二数据的地址信息可以参照前文第一数据的地址信息。
步骤406是以主机将第二写请求和第一校验数据同时发送给引擎为例,实际上还可以将第一校验数据和第二写请求分别发送给引擎,本申请对此不做限定。
作为一个示例,步骤405为可选的步骤。也就是说,可以不计算第二数据的校验数据。
如果没有执行步骤405,那么主机只需向引擎发送第二写请求,对应地,引擎可以只接收来自主机的第二写请求。
作为一个示例,主机向引擎发送第二数据之前,可以确定第一数据和第二数据的大小之和小于或等于分条中的所有数据条带的大小之和,以保证第一数据和第二数据的大小之和不会大于该分条中的所有数据条带的大小。
步骤407,引擎将第二数据存储至该分条相应的数据条带中。
引擎可以根据第二数据的地址信息,确定该第二数据对应的物理块,并将第二数据存储到相应的逻辑块中,也就相当于将第二数据存储至了相应的数据条带中。
如果第二数据的大小与第一数据的大小之和小于或等于一个数据条带的大小,那么表示之前存储第一数据的数据条带,还可以容纳该第二数据,这时可以将第二数据存储至用于存储第一数据的数据条带,换言之,第一数据和第二数据存储在同个数据条带中。
如果第二数据的大小大于一个数据条带的大小,或者如果第二数据的大小小于一个数据条带的大小且第二数据的大小与第一数据的大小之和大于一个数据条带的大小,那么表示之前存储第一数据的数据条带,无法容纳该第二数据,因此,引擎可以对第二数据进行拆分,获得第二数据的部分以及第二数据的另一部分,引擎可以将第二数据的部分存储到用于存储第一数据的数据条带中,将第二数据的另一部分存储至该分条中的其他数据条带中,换言之,第二数据中的部分和第一数据存储在同个数据条带中。
作为一个示例,当主机未执行步骤405的情况下,引擎确定第二数据的大小大于或等于一个数据条带的大小,可以计算第二数据的校验数据,即获得第一校验数据。
作为一个示例,引擎可以将第一校验数据记录在日志中。后续可以根据该第一校验数据,计算第二数据和第一数据的校验数据。
作为另一个示例,引擎在没有获得第一校验数据的情况下,引擎可以将第二数据记录在日志中。引擎后续可以根据日志中的第二数据,计算第一数据和第二数据的校验数据。进一步地,引擎还可以缓存第二数据。后续引擎可以根据缓存中的第二数据进行校验计算。
继续沿用图5的例子,如图5中的(2)所示,第四数据D4的大小为1021KB,引擎可以拆分第四数据D4,获得第四数据D4的部分和第四数据D4的另外一部分,第四数据D4的部分的大小为509KB,第四数据D4的另外一部分的大小为512KB。引擎可以将第四数据D4的部分存储至第一数据条带511中,第四数据D4的另外一部分存储至第二数据条带512中。
步骤408,引擎读取缓存的第一数据。
引擎可以读取缓存的第一数据,即从第二存储介质中读取出第一数据,后续可以根据缓存的第一数据。
作为另一个示例,如果引擎未缓存第一数据,那么引擎可以从日志中读取第一数据。
步骤409,引擎根据第一校验数据和第一数据,计算第二校验数据。
引擎计算第一数据和第二数据的校验数据,即第二校验数据,由于第二校验数据的大小可能比第一数据和第二数据的大小之和更小,因此缓存第二校验数据,相比缓存第一数据和第二数据,可以相对占用更少的存储空间。
作为另一个示例,引擎在没有获得第一校验数据时,引擎可以根据第二数据和第一数据,计算第一数据和第二数据的校验数据,获得第二校验数据。
继续沿用图5的例子,如图5中(2)所示,引擎确定第四数据D4的大小(1021KB)大于一个分条的大小(512KB),因此引擎可以从内存530中读取第一数据D1、第二数据D2和第三数据D3,从主机获得第四数据D4的第一校验数据E1,并根据第四数据D4的第一校验数据E1和第一数据D1,计算得出第一数据D1、第二数据D2、第三数据D3和第四数据D4的第二校验数据E2。
步骤410,引擎将第二校验数据记录在日志中。
作为一个示例,引擎可以缓存第二校验数据,缓存第二校验数据的具体方式可以参照前文缓存第一数据的内容,此处不再赘述。
继续沿用图5的例子,引擎可以将第一数据D1、第二数据D2、第三数据D3和第四数据D4的第二校验数据E2记录在日志520中。引擎还可以将第一数据D1、第二数据D2、第三数据D3和第四数据D4的第二校验数据E2记录在内存530中。
作为一个示例,步骤410为可选的步骤。例如,引擎如果确定第一数据和第二数据的大小之和等于分条中所有数据条带的大小之和,引擎在计算出第二校验数据之后,可以将第二校验数据存储到该分条的校验条带中。如此一来,第一数据、第二数据以及第二校验数据也就凑满了该分条。
作为一种实施例,步骤408~步骤410为可选的部分。例如,引擎可以在确定第一数据和第二数据的大小之和等于分条中的所有数据条带的大小之和的情况下,可以计算第二校验数据。
在该实施例中,引擎在可以在凑满分条中的所有数据条带时,进行最终的校验计算。例如,引擎可以根据第一数据的地址信息以及第二数据的地址信息,从而确定第一数据和第二数据是否已经凑满该分条中的所有数据条带。这样可以进一步减少引擎进行校验计算的次数,减少了引擎的计算资源的消耗。在主机计算第一校验数据的情况下,在凑满一个分条的过程中,引擎实际进行校验计算的次数更少,可以进一步减少引擎的计算资源的消耗。
步骤411,如果第一数据和第二数据的大小之和等于一个分条中的所有数据条带的大小之和,引擎将第一校验数据存储至该分条的校验条带中。
引擎确定第一数据和第二数据的大小之和等于一个分条中的所有数据条带的大小之和时,表示第一数据和第二数据已凑满分条中的所有数据分条,这种情况下,引擎可以将第一数据和第二数据的校验数据该分条的校验条带中。
继续参照图5所示的例子,引擎接收到第五数据D5,以及从主机接收第五数据D5的第三校验数据E3,第五数据D5的大小为1024KB。引擎从内存中读取第二校验数据E2,引擎根据第三校验数据E3以及第二校验数据E2,从而计算出第一数据D1、第二数据D2、第三数据D3、第四数据D4和第五数据D5的第四校验数据E4。由于第一数据D1、第二数据D2、第三数据D3、第四数据D4和第五数据D5的大小之和等于分条中所有数据条带的大小之和,引擎可以将第四校验数据E4存储在第一校验条带515和第二校验条带516中。如此一来,第一数据D1、第二数据D2、第三数据D3、第四数据D4和第五数据D5和第四校验数据E4凑满了分条。其中,第一数据D1、第二数据D2、第三数据D3、第四数据D4和第五数据D5对应存储在该分条的数据条带中,第四校验数据E4对应存储在该分条的校验条带中。
作为一个示例,如果第一数据和第二数据的大小之和小于分条中的所有数据条带的大小之和,那么表示分条中的数据条带还未凑满,因此可以按照步骤401-步骤410的逻辑,对其它写请求进行处理,直到所有数据凑满分条中的所有数据条带,再执行步骤411。
步骤412,引擎删除日志中记录的用于得到分条的数据。
引擎在确定该分条凑满之后,可以删除日志中与得到该分条相关的数据,例如,删除日志中记录的第一数据,以及第一校验数据等。
在本申请实施例中,引擎可以及时删除日志中的数据,快速回收日志占用的物理存储空间,以提高日志占用的物理存储空间的利用率。
作为一个示例,引擎还可以删除第二存储介质中与该分条相关的数据,从而快速回收内存,后续在处理其他写请求时,可以再次利用第二存储介质,以提高第二存储介质的空间利用率。
继续沿用图5所示的例子,引擎可以删除日志520中记录的第一数据D1、第二数据D2、第三数据D3、第四数据D4、第二校验数据E2。引擎还可以删除内存530中记录的第二校验数据E2。
作为一个示例,步骤412为可选的步骤。
在一种的可能实施例中,写入该分条中的数据条带中的多个数据的大小均小于一个条带的大小,但多个数据的大小之和等于该分条中的所有数据条带的大小之和,这时,引擎可以计算多个数据的校验数据,并将多个数据的校验数据存储到该分条的校验条带中。
例如,存储系统中一个分条的大小为1536KB,一个数据条带的大小为512KB,引擎依次将第一数据(大小为200KB)、第二数据(大小为312KB)、第三数据(大小为201KB)、第四数据(大小为311KB)存储至了相应的数据条带中。引擎写入第一数据、第二数据、第三数据和第四数据的过程可以参照前文步骤401-步骤404的过程。引擎确定第一数据、第二数据、第三数据和第四数据的大小之和满足该分条中的所有数据条带的大小之和,这时,引擎可以根据第一数据、第二数据、第三数据和第四数据这四个数据,计算这四个数据的校验数据,并将这四个数据的校验数据存储至校验条带中。
作为一个实施例,图4中的步骤404-步骤412为可选的步骤,图4中以虚线示意。
需要说明的是,上述是以第一数据的大小小于一个数据条带的大小为例,实际上任意一个大小小于数据条带的数据均可以按照上述处理第一数据的过程进行处理。同理,上述是以第二数据的大小大于或等于一个数据条带的大小为例,实际上任意一个大小大于或等于数据条带的数据均可以按照上述处理第二数据的过程进行处理。
需要说明的是,图4中接收第一数据和第二数据的先后顺序可以是任意的,本申请对此不作限定。
在图4所示的实施例中,引擎在处理写请求时,将数据存储至相应的数据条带中,当数据的大小小于一个数据条带时,可以不对数据进行校验计算,从而减少引擎进行校验计算的次数,以减少存储系统在数据存储过程中的计算资源消耗。另外,当数据的大小大于或等于一个数据条带时,可以计算该数据的校验数据,相当于在存储数据的过程中进行校验计算,如此,当数据凑满分条中的所有数据条带时,也能对应完成数据的校验计算,从而可以更快地获得数据的校验数据,也就可以更早地凑满分条,以提高数据存储的效率。另外,引擎计算过程中还可以借助内存等第二存储介质存储校验计算所需的数据,使得后续可以从内存中更快地读取出数据,从而提高计算校验数据的效率。
图4是以存储系统中的数据存储方法应用于图1A所示的集中式数据存储系统进行示例说明,实际上,该数据存储方法还可以应用于图1B所示的集中式数据存储系统中,当数据存储方法应用于图1B所示的集中式数据存储系统中时,图1B中所示的集中式数据存储系统中的引擎可以执行图4所示的数据存储方法,此处不再一一列举。
需要说明的是,该数据存储方法还可以应用于图2A、图2B或图2C所示的分布式数据存储系统中,当数据存储方法应用于图2A、图2B或图2C所示的分布式数据存储系统中时,图2A中的存储节点、图2B中的服务器或图2C中的服务器均可以执行上述的存储系统中的数据存储方法,执行该储系统中的数据存储方法的过程可以参照图4论述的内容,此处不再一一列举。
图6示出了一种数据存储装置600的结构示意图。其中,数据存储装置600可以应用于存储系统,或者是存储系统中的装置,能够实现本申请实施例提供的方法中存储系统的功能;数据存储装置600也可以是能够支持存储系统实现本申请实施例提供的方法中存储系统的功能的装置。数据存储装置600可以是硬件结构、软件模块、或硬件结构加软件模块。数据存储装置600可以由芯片系统实现。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
数据存储装置600可以包括通信模块601和处理模块602。
通信模块601可以用于执行图4所示的实施例中的步骤401,还可以执行步骤406,还可以用于支持本文所描述的技术的其它过程。通信模块601用于数据存储装置600和其它模块进行通信,其可以是电路、器件、接口、总线、软件模块、收发器或者其它任意可以实现通信的装置。
处理模块602可以用于执行图4所示的实施例中的步骤402-步骤403,还可以执行图4中的步骤404-步骤412,还可以用于支持本文所描述的技术的其它过程。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
如图7所示为本申请实施例提供的数据存储装置700,其中,数据存储装置700可以是图4所示的实施例中的存储系统,或者是存储系统的装置,能够实现本申请图4所示的实施例中的存储系统的功能;数据存储装置700也可以是能够支持存储系统实现本申请图4所示的实施例提供的方法中存储系统的功能的装置。其中,数据存储装置700可以为芯片系统。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
数据存储装置700包括至少一个处理器701,用于实现或用于支持数据存储装置700实现本申请图4中引擎的功能,或者实现图2A中存储节点、图2B中服务器或图2C中服务器的功能。示例性地,处理器701可以获取待存储数据的第一数据,并将第一数据存储至相应的数据条带中,具体参见方法示例中的详细描述,此处不做赘述。
数据存储装置700还可以包括通信接口702,用于通过传输介质和其它设备进行通信,从而用于数据存储装置700和其它设备进行通信。示例性地,该其它设备可以是服务器。处理器701可以利用通信接口702收发数据。
数据存储装置700还可以包括至少一个存储器703,用于存储程序指令和/或数据。存储器703和处理器701耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器701可能和存储器703协同操作。处理器701可能执行存储器703中存储的程序指令。所述至少一个存储器703中的至少一个可以包括于处理器701中。当处理器701执行存储器703中的程序指令时,可以实现图4所示的实施例中任一的存储系统中的数据存储方法。
作为一个示例,图7中的存储器703为可选的部分,在图7中以虚线框示意。例如,存储器703与处理器701耦合设置。
本申请实施例中不限定上述通信接口702、处理器701以及存储器703之间的具体连接介质。本申请实施例在图7中以通信接口702、处理器701以及存储器703之间通过总线704连接,总线在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,处理器701可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器703可以是非易失性存储器,比如硬盘(hard diskdrive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本申请实施例提供了一种存储系统,该存储系统包括图6中的数据存储装置,或者,该存储系统包括图7中的数据存储装置。该存储系统可以实现前文图4所示的实施例中的任一的存储系统中的数据存储方法。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行图4所示的实施例中任一的存储系统中的数据存储方法。
本申请实施例中还提供一种计算机程序产品,该计算机程序产品存储有计算机程序,该计算机程序包括程序指令,该程序指令当被计算机执行时,使得计算机执行图4所示的实施例中任一的存储系统中的数据存储方法。
本申请实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现前述方法中存储系统的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,简称DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,简称DVD))、或者半导体介质(例如,SSD)等。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (19)

1.一种存储系统中的数据存储方法,其特征在于,包括:
接收第一数据;
当所述第一数据的大小小于一个分条中的一个数据条带的大小时,将所述第一数据存储到所述分条中第一数据对应的数据条带中,不计算所述第一数据的校验数据,并将所述第一数据记录到日志中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收第二数据;
当所述第二数据的大小大于或等于所述分条中的一个数据条带的大小时,计算第一校验数据,所述第一校验数据为所述第二数据的校验数据;
将所述第二数据存储到所述分条中第二数据对应的数据条带中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将所述第一校验数据记录到所述日志中,其中,所述第一数据的大小和所述第二数据的大小之和小于所述分条中的所有数据条带的大小之和。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据所述日志中的第一数据和所述第一校验数据计算得到第二校验数据,所述第二校验数据为所述第一数据和所述第二数据的校验数据。
5.根据权利要求2所述的方法,其特征在于,在所述存储系统接收所述第一数据之后,将所述第一数据存储到所述分条中第一数据对应的数据条带中之前,所述方法还包括:缓存所述第一数据;
根据所述缓存的第一数据和所述第一校验数据计算得到第二校验数据,所述第二校验数据为所述第一数据和所述第二数据的校验数据。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
将所述第二校验数据存储到所述分条中的校验条带,其中,所述第一数据的大小和所述第二数据的大小之和等于所述分条中的所有数据条带的大小之和。
7.一种数据存储装置,其特征在于,所述装置包括通信接口和处理器,其中:
所述通信接口,用于接收第一数据;
所述处理器,用于当所述第一数据的大小小于一个分条中的一个数据条带的大小时,将所述第一数据存储到所述分条中第一数据对应的数据条带中,不计算所述第一数据的校验数据,并将所述第一数据记录到日志中。
8.根据权利要求7所述的装置,其特征在于,所述通信接口,还用于接收第二数据;
所述处理器,还用于当所述第二数据的大小大于或等于所述分条中的一个数据条带的大小时,计算第一校验数据,所述第一校验数据为所述第二数据的校验数据,以及将所述第二数据存储到所述分条中第二数据对应的数据条带中。
9.根据权利要求8所述的装置,其特征在于,所述处理器还用于:
将所述第一校验数据记录到所述日志中,其中,所述第一数据的大小和所述第二数据的大小之和小于所述分条中的所有数据条带的大小之和。
10.根据权利要求8所述的装置,其特征在于,所述处理器还用于:
根据所述日志中的第一数据和所述第一校验数据计算得到第二校验数据,所述第二校验数据为所述第一数据和所述第二数据的校验数据。
11.根据权利要求8所述的装置,其特征在于,所述处理器还用于:
在接收所述第一数据之后,将所述第一数据存储到所述分条中第一数据对应的数据条带中之前,缓存所述第一数据;
根据所述缓存的第一数据和所述第一校验数据计算得到第二校验数据,所述第二校验数据为所述第一数据和所述第二数据的校验数据。
12.根据权利要求10或11所述的装置,其特征在于,所述处理器还用于:
将所述第二校验数据存储到所述分条中的校验条带,其中,所述第一数据的大小和所述第二数据的大小之和等于所述分条中的所有数据条带的大小之和。
13.一种数据存储装置,其特征在于,所述装置包括通信模块和处理模块,其中:
所述通信模块,用于接收第一数据;
所述处理模块,用于当所述第一数据的大小小于一个分条中的一个数据条带的大小时,将所述第一数据存储到所述分条中第一数据对应的数据条带中,不计算所述第一数据的校验数据,并将所述第一数据记录到日志中。
14.根据权利要求13所述的装置,其特征在于,所述通信模块,还用于接收第二数据;
所述处理模块,还用于当所述第二数据的大小大于或等于所述分条中的一个数据条带的大小时,计算第一校验数据,所述第一校验数据为所述第二数据的校验数据,以及将所述第二数据存储到所述分条中第二数据对应的数据条带中。
15.根据权利要求13所述的装置,其特征在于,所述处理模块还用于:
将所述第一校验数据记录到所述日志中,其中,所述第一数据的大小和所述第二数据的大小之和小于所述分条中的所有数据条带的大小之和。
16.根据权利要求13所述的装置,其特征在于,所述处理模块还用于:
根据所述日志中的第一数据和所述第一校验数据计算得到第二校验数据,所述第二校验数据为所述第一数据和第二数据的校验数据。
17.根据权利要求13所述的装置,其特征在于,所述处理模块还用于:
在接收所述第一数据之后,将所述第一数据存储到所述分条中第一数据对应的数据条带中之前,缓存所述第一数据;
根据所述缓存的第一数据和所述第一校验数据计算得到第二校验数据,所述第二校验数据为所述第一数据和第二数据的校验数据。
18.根据权利要求16或17所述的装置,其特征在于,所述处理模块还用于:
将所述第二校验数据存储到所述分条中的校验条带,其中,所述第一数据的大小和所述第二数据的大小之和等于所述分条中的所有数据条带的大小之和。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-6中任一项所述的方法。
CN202110962195.8A 2021-08-20 2021-08-20 存储系统中的数据存储方法及装置 Pending CN115904795A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110962195.8A CN115904795A (zh) 2021-08-20 2021-08-20 存储系统中的数据存储方法及装置
PCT/CN2022/103574 WO2023020136A1 (zh) 2021-08-20 2022-07-04 存储系统中的数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110962195.8A CN115904795A (zh) 2021-08-20 2021-08-20 存储系统中的数据存储方法及装置

Publications (1)

Publication Number Publication Date
CN115904795A true CN115904795A (zh) 2023-04-04

Family

ID=85240022

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110962195.8A Pending CN115904795A (zh) 2021-08-20 2021-08-20 存储系统中的数据存储方法及装置

Country Status (2)

Country Link
CN (1) CN115904795A (zh)
WO (1) WO2023020136A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117420969B (zh) * 2023-12-19 2024-04-16 中电云计算技术有限公司 一种分布式数据存储方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7779294B2 (en) * 2005-04-15 2010-08-17 Intel Corporation Power-safe disk storage apparatus, systems, and methods
US10372368B2 (en) * 2016-10-13 2019-08-06 International Business Machines Corporation Operating a RAID array with unequal stripes
CN109947842B (zh) * 2017-07-27 2021-06-18 杭州海康威视数字技术股份有限公司 分布式存储系统中的数据存储方法、装置及系统
CN110874284B (zh) * 2018-09-03 2024-03-22 阿里巴巴集团控股有限公司 数据处理的方法和装置
CN109814805B (zh) * 2018-12-25 2020-08-25 华为技术有限公司 存储系统中分条重组的方法及分条服务器

Also Published As

Publication number Publication date
WO2023020136A1 (zh) 2023-02-23

Similar Documents

Publication Publication Date Title
US10152254B1 (en) Distributing mapped raid disk extents when proactively copying from an EOL disk
US20220137849A1 (en) Fragment Management Method and Fragment Management Apparatus
US11636089B2 (en) Deferred reclamation of invalidated entries that are associated with a transaction log in a log-structured array
US10564865B2 (en) Lockless parity management in a distributed data storage system
US10365845B1 (en) Mapped raid restripe for improved drive utilization
US11593000B2 (en) Data processing method and apparatus
US11474919B2 (en) Method for managing multiple disks, electronic device and computer program product
US11487460B2 (en) Deferred reclamation of invalidated entries associated with replication in a log-structured array
US11379326B2 (en) Data access method, apparatus and computer program product
WO2023065654A1 (zh) 一种数据写入方法以及相关设备
WO2023020136A1 (zh) 存储系统中的数据存储方法及装置
EP4170499A1 (en) Data storage method, storage system, storage device, and storage medium
US11366608B2 (en) Method, electronic device and computer readable storage medium for i/o management
US11150991B2 (en) Dynamically adjusting redundancy levels of storage stripes
CN111007988B (zh) 一种raid内部磨损均衡方法、系统、终端及存储介质
US8799580B2 (en) Storage apparatus and data processing method
US9767029B2 (en) Data decompression using a construction area
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
CN115793957A (zh) 写数据的方法、装置及计算机存储介质
CN116594551A (zh) 一种数据存储方法及装置
KR102403063B1 (ko) 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법
CN113722131A (zh) 用于促进存储设备中的快速崩溃恢复的方法和系统
CN113805789A (zh) 存储设备中的元数据处理方法及相关设备
US20230105067A1 (en) Metadata Processing Method in Storage Device, and Related Device
CN112445413A (zh) 一种数据存储的方法、装置及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication