CN107273048A - 一种数据写入方法及装置 - Google Patents
一种数据写入方法及装置 Download PDFInfo
- Publication number
- CN107273048A CN107273048A CN201710429411.6A CN201710429411A CN107273048A CN 107273048 A CN107273048 A CN 107273048A CN 201710429411 A CN201710429411 A CN 201710429411A CN 107273048 A CN107273048 A CN 107273048A
- Authority
- CN
- China
- Prior art keywords
- data
- written
- band
- stripe
- mrow
- 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
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
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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
-
- 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/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种数据写入方法及装置,该方法包获取待写入数据,根据该获取的待写入数据的数据量,从磁盘存储系统中确定与该待写入数据的数据量相匹配的条带,其中,该磁盘存储系统包含有多个不同条带深度的条带,每个条带均包含n个数据条带单元和m个校验条带单元,将该待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,并将n个数据条带单元和m个校验条带单元写入到确定的条带。根据待写入数据集的数据量,选择合适的条带深度的条带,将待写入数据按照纠删码算法写入到选择的条带中,实现在数据量较大时选择大条带深度提高吞吐量,数据量较小时选择小条带深度实现较低写入延迟和数据丢失风险的效果。
Description
技术领域
本发明实施例涉及数据存储技术领域,尤其涉及一种数据写入方法及装置。
背景技术
纠删码(erasure coding,EC)是一种数据保护方法,它将原始数据分割成数据块(strip),将多个数据块通过算法编码形成一个或多个冗余数据块,并将由连续的多个数据块和相关联冗余块组成的条带(stripe),存储在不同的存储空间,以实现部分存储空间故障后,数据可重建。纠删码技术非常好的折中了磁盘空间利用率和数据可靠性,在分布式存储系统中得到了广泛的应用。以图1为例,D0、D1、D2、D3、D4、D5为数据块,P0、P1、P2为通过算法计算而得到的冗余数据块,组成一个纠删码存储组(n+m,n=6,m=3)。如图1中所示,一行9个strip组建一个stripe,这个stripe中任意小于等于3个strip损坏,都可以通过算法还原出损坏的strip。此例子中,每个strip的大小,即为条带深度。而一个stripe包含的strip个数则为条带宽度。条带深度为每个存储空间(如磁盘)的最小数据io(in/out,输入输出)单元,而每个条带深度*条带宽度,则为整个纠删码组的最小io单元。例如写入一批数据,总是按strip切分,通过算法将连续的6个数据strip计算得到3个冗余strip,组成一个stripe,并发的写入9个磁盘或文件系统。
磁盘的io性能和io的块大小直接相关,较大的块大小,可以提高io的吞吐量,降低磁盘定位带来的性能影响。对于基于纠删码技术的存储系统而言,较大的strip大小,即较大的条带深度,可以提高每个磁盘的io的性能,特别是连续io时的性能。而整个纠删码组的最小io单位为stripe,是由n+m个strip组成(其中包含n个数据strip)。当待写入数据量不足一个stripe,一般的处理方案有两种:一、写入端cache(缓存)住不写数据,等待数据足够之后再按stripe方式写入;二、补足数据足够一个stripe,写入磁盘组,记录此stripe有效数据的量,后续追加写时讲整个stripe或部分读出,修改parity部分再写入。方案一由于客户端的cache,导致这部分数据没有落入磁盘,从而无法从磁盘中读取数据,且延时受限于后续数据写入速度而定,以及系统掉电时会带来数据丢失风险。方案二由于进行了数据补齐,数据可以即时写入磁盘中,但此stripe中有部分无效数据,追加数据时需要将原来的stripe读出,剔除填充数据,并追加有效数据,再将整个stripe写入磁盘中。这个过程存在数据一致性风险(特别是磁盘组分布在分布式存储系统中时,如部分strip完成写入,而部分strip写入失败,导致整个stripe数据是错乱的),且消耗了大量额外的磁盘io性能。
发明内容
本发明实施例提供一种数据写入方法及装置,用以实现动态调整数据条带深度,实现数据量较小时有较低数据写入延迟和数据丢失风险的效果。
本发明实施例提供的一种数据写入方法,包括:
获取待写入数据;
根据所述获取的待写入数据的数据量,从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带,其中,所述磁盘存储系统包含有多个不同条带深度的条带,每个条带均包含n个数据条带单元和m个校验条带单元;
将所述待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,并将所述n个数据条带单元和所述m个校验条带单元写入到所述确定的条带,其中,n和m为大于等于1的正整数。
优选地,所述将所述待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,包括:
若所述确定的条带的存储数据量与所述待写入数据的数据量不一致,则获取补充数据;
将所述待写入数据和所述补充数据切分为n个数据条带单元;
根据纠删码算法对所述n个数据条带单元计算出m个校验条带单元。
优选地,所述获取待写入数据,包括:
获取设定时间内应用提交的待写入数据。
优选地,所述从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带,包括:
所述磁盘存储系统中包含有多个设定条带深度的条带;
从所述多个设定条带深度的条带中选择与所述待写入数据的数据量相匹配的条带。
优选地,所述从所述多个设定条带深度的条带中选择与所述待写入数据的数据量相匹配的条带,包括:
若所述待写入数据的数据量大于所述磁盘存储系统中条带深度最大的条带的存储数据量,则根据所述待写入数据的数据量选择多个不同条带深度的条带,以使所述选择的多个不同条带深度条带的存储数据量之和与所述待写入数据的数据量匹配。
优选地,根据下述公式(1)从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带:
其中,StripeDepth为条带深度,n为条带中数据条带单元的个数,len为待写入数据的数据量,minStripeDepth为磁盘对齐阈值。
优选地,在所述将所述n个数据条带单元和所述m个校验条带单元写入到所述选择的条带之后,还包括:
记录所述存储的待写入数据的元数据。
相应地,本发明实施例还提供了一种数据写入装置,包括:
获取单元,用于获取待写入数据;
处理单元,用于根据所述获取的待写入数据的数据量,从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带,其中,所述磁盘存储系统包含有多个不同条带深度的条带,每个条带均包含n个数据条带单元和m个校验条带单元;
写入单元,用于将所述待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,并将所述n个数据条带单元和所述m个校验条带单元写入到所述确定的条带,其中,n和m为大于等于1的正整数。
优选地,所述处理单元具体用于:
若所述确定的条带的存储数据量与所述待写入数据的数据量不一致,则获取补充数据;
将所述待写入数据和所述补充数据切分为n个数据条带单元;
根据纠删码算法对所述n个数据条带单元计算出m个校验条带单元。
优选地,所述获取单元具体用于:
获取设定时间内应用提交的待写入数据。
优选地,所述处理单元具体用于:
所述磁盘存储系统中包含有多个设定条带深度的条带;
从所述多个设定条带深度的条带中选择与所述待写入数据的数据量相匹配的条带。
优选地,所述处理单元具体用于:
若所述待写入数据的数据量大于所述磁盘存储系统中条带深度最大的条带的存储数据量,则根据所述待写入数据的数据量选择多个不同条带深度的条带,以使所述选择的多个不同条带深度条带的存储数据量之和与所述待写入数据的数据量匹配。
优选地,所述处理单元具体用于:
根据下述公式(1)从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带:
其中,StripeDepth为条带深度,n为条带中数据条带单元的个数,len为待写入数据的数据量,minStripeDepth为磁盘对齐阈值。
优选地,所述写入单元具体用于:
在所述将所述n个数据条带单元和所述m个校验条带单元写入到所述选择的条带之后,记录所述存储的待写入数据的元数据。
本发明实施例表明,通过获取待写入数据,根据该获取的待写入数据的数据量,从磁盘存储系统中确定与该待写入数据的数据量相匹配的条带,其中,该磁盘存储系统包含有多个不同条带深度的条带,每个条带均包含n个数据条带单元和m个校验条带单元,将该待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,并将n个数据条带单元和m个校验条带单元写入到确定的条带。根据待写入数据集的数据量,选择合适的条带深度的条带,将待写入数据按照纠删码算法写入到选择的条带中,实现在数据量较大时选择大条带深度提高吞吐量,数据量较小时选择小条带深度实现较低写入延迟和数据丢失风险的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中一种磁盘存储结构的示意图;
图2为本发明实施例提供的一种系统架构;
图3为本发明实施例提供的一种数据写入方法的流程示意图;
图4为本发明实施例提供的一种磁盘存储结构的示意图;
图5为本发明实施例提供的一种数据写入装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图2示出了本发明实施例适用的一种系统架构,该系统结构至少由两部分组成,如图2所示,包括读写数据驱动和磁盘存储服务。典型的,磁盘存储服务以分布式分布在网络中。当然,磁盘存储服务也可以落在一个存储节点内。数据读写驱动负责将用户原始数据进行缓存、条带化、纠删码编码、分发至磁盘存储服务,以及从磁盘存储服务读取数据、纠删码解码、反条带化还原数据等过程。磁盘存储服务则提供网络或本地接口,以strip为io粒度提供读写服务。同时,负责记录strip的变更情况等元数据信息。
基于上述描述,图3示出了本发明实施例提供的一种数据写入方法的流程,该流程可以由数据写入装置执行。
如图3所示,该流程具体步骤包括:
步骤301,获取待写入数据。
步骤302,根据所述获取的待写入数据的数据量,从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带。
步骤303,将所述待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,并将所述n个数据条带单元和所述m个校验条带单元写入到所述确定的条带。
在本发明实施例中,写入数据的最小输入输出单元为条带单元,磁盘存储系统中包含有多个不同条带深度的条带,每个条带均包含n个数据条带单元和m个校验条带单元。其中,n和m为大于等于1的正整数。在同一个条带中条带单元的大小是相同的,但是各个条带的条带深度是不同的。比如,以5+3个条带单元为例,第一个条带的条带单元为32kbytes,而第二个条带的条带单元为16kbytes。
为了使得在确定条带的时候,尽量选择条带深度大的条带,在上述步骤301中,可以获取设定时间内应用提交的待写入数据,将在设定时间内应用提交的数据进行合并,放大条带深度,提高吞吐量。该设定时间可以通过定时来实现,如可以设定1分钟。
在上述步骤302中,若确定的条带的存储数据量与获取的待写入数据的数据量不一致,则获取补充数据,将待写入数据和补充数据切分为n个数据条带单元,然后根据纠删码算法对n个数据条带单元计算出m个校验条带单元。
具体的,在确定条带时,尽量选择条带深度大的条带,但如果应用提交的数据较少,不足以组成一个常规的条带时,则在设定时间之后,按当前的待写入数据的数据量进行条带化,形成一个条带单元较小的条带,将待写入数据对齐切分为n个数据条带单元,将不足长度部分条带单元用补充数据方式对齐。也就是获取补充数据,添加到n个数据条带单元中,补充不足的部分。然后计算出m个校验条带单元,并且将该n个数据条带单元和所述m个校验条带单元写入到确定的条带,也就是分发至磁盘存储服务组。而磁盘存储服务组根据提交接口,存储数据的同时记录元数据,元数据包括此条带的起始地址、长度。如此方式,则可以在获取的待写入数据的数据量不足时,以较小的条带深度,将缓存中的数据尽量写入到存储中,避免长时间缓存带来的写入延迟和丢失数据风险。各个磁盘存储服务上,条带的分布规律是保持一致的,例如如果第一个条带单元的大小为32kbytes,那么组内所有磁盘存储服务的第一个条带单元总是32kbytes的,但部分条带单元可能存在32kbytes中,部分甚至全部都不是有效数据,而是补充数据。
当待写入数据的数据量不足时,且无法被平均切分为n份相同大小数据时,就需要进行数据补齐。例如5+3为例,缓存中待写入数据的数据量为(50k+3)bytes字节,(50k+3)%5不等于0,即无法被平均切分,且又需要以一个条带写入时,可以根据下述公式(1)确定与该待写入数据数据量相匹配的条带:
其中,StripeDepth为条带深度,n为条带中数据条带单元的个数,len为待写入数据的数据量,minStripeDepth为磁盘对齐阈值。minStripeDepth一般可以综合考虑磁盘最小IO单元、系统内存管理单元、纠删码计算算法等相关参数而定,比如设置为4KBytes。
根据上述公式得到条带的条带深度,也就得到条带的存储量,从而得到需要获取的补充数据的数据量,那么n个数据条带单元逐次以上述条带深度的大小分配得到待写入数据,不足的数据条带单元相应的使用补充数据。m个校验条带单元则是对补充后的n个数据条带单元进行纠删码计算而得到。
在刷写完一个条带之后,总是将设定时间的定时计数进行重置,以实现优先保证上次刷写残留的数据总是保证超时时间内可以完成刷写如存储服务,即保证用户数据写入存储服务的最大延迟,又避免超时时间到达而刷写入不必要的非对齐数据。
优选地,为了避免各个条带的条带深度都不一样给磁盘存储服务带来管理上的复杂度,磁盘存储系统中可以包含有多个设定条带深度的条带。也就是说,可以选择几个典型的条带深度的条带,在进行写入数据时,总是选择这几种条带中最适合当前缓存的待写入数据的数据量的值。
在上述确定条带时,若获取的待写入数据的数据量大于磁盘存储系统中条带深度最大的条带的存储数据量,则根据所述待写入数据的数据量选择多个不同条带深度的条带,以使所述选择的多个不同条带深度条带的存储数据量之和与所述待写入数据的数据量匹配。
举例来说,视频摄像头总是较为稳定的以一定时间间隔(如40毫秒)产生一帧编码数据,需要进行数据存储,且应用往往将一帧数据在较短时间内提交写入请求,而帧间间隔远大于写提交一帧数据所需要的时间。而视频帧数据量会有较大波动,如I帧数据较大,可达到几百kbytes,而p帧有可能只有几十甚至几kbytes。在读写数据驱动端,选择合适的超时时间,选择不对齐条带数据缓存方案下,也能保证驱动缓存数据不超过一定时间(如50毫秒,最多本帧少量数据不对齐缓存到下一帧数据到达,补齐本帧剩余数据,满足条带化条件),即条带化数据且写入存储。保证视频数据写入的实时性较高,断电等故障时数据丢失量较小(如不大于一帧),且磁盘io大小较好的适配码流波动,帧较大时条带深度较大,io吞吐量较大,帧较小时条带深度较小,且最大延迟总是可控的。
基于上述数据写入方法,本发明实施例还提供了一种数据读取方法,具体的,读写数据驱动发起读请求时,将请求读取的偏移地址和长度,按接口方式传输至大于等于n个磁盘存储服务(视一致性要求而确定是否有必要请求大于n个磁盘存储服务),各磁盘存储服务结合其自身元数据信息,纠删码组由n+m个磁盘存储服务组成,以及各磁盘存储服务上条带单元分布规律一致,可以定位到本地合适的条带单元地址,读取一个或多个条带单元,返回读写数据驱动。读写数据驱动根据返回的条带单元的数据信息,以及必要时候的纠删码解码,还原出原始数据,返回给应用。例如n=5,m=3的情况下,应用需要读取offset=80kbytes开始的50kbytes数据。磁盘存储服务0接收到请求后,发现自身stripe元数据信息为stripe0:[0,40KBytes);stripe1:[40KBytes,96K Bytes);stripe2:[96bytes,156Kbytes)时,可以判断出读取的数据范围为stripe1的部分加上stripe2的部分。同样的,各个数据和奇偶校验存储服务都根据各自记录且相同的元数据,判断得出应该给出stripe1、stripe2的数据,且同步给出元数据信息。读写数据驱动收集到一个stripe的大于等于n个strip后,即可还原出这个stripe数据范围内的所有数据,再将应用关注的数据返回,如还原出stripe1的[40KBytes,96K Bytes)数据和stripe2:[96bytes,156Kbytes),得到[40bytes,156Kbytes),截取应用关注的[80kbytes,130kbytes)数据返回,即完成数据读流程。
如图4所示,stripe0由D0、D1、D2、D3、D4、P0、P1、P2组成,其中D0、D1、D2、D3、D4是data strip(数据条带单元),P0、P1、P2为parity strip(校验条带单元),所包含的数据段范围为[0,offset0)。Stripe1条带不足,其中D9有效数据小于stripe内的其他strip,填充了一部分无效数据,所包含的数据段范围为[offset0,offset1)。Stripe2追加写时,不对非对齐的stripe1进行读改写,而是直接在后面追加完成,所包含的数据段范围为[offset1,offset2)。纠删码中各data和parity的分布,总是符合相同的规则,即每个stripe的相同位置的data或parity strip,总是处于相同的存储服务上。上述例子等同于offset0为40kbytes、offset1为96kbytes、offset2为156kbytes。
本发明实施例表明,通过获取待写入数据,根据该获取的待写入数据的数据量,从磁盘存储系统中确定与该待写入数据的数据量相匹配的条带,其中,该磁盘存储系统包含有多个不同条带深度的条带,每个条带均包含n个数据条带单元和m个校验条带单元,将该待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,并将n个数据条带单元和m个校验条带单元写入到确定的条带。根据待写入数据集的数据量,选择合适的条带深度的条带,将待写入数据按照纠删码算法写入到选择的条带中,实现在数据量较大时选择大条带深度提高吞吐量,数据量较小时选择小条带深度实现较低写入延迟和数据丢失风险的效果。
基于相同的技术构思,图5示出了本发明实施例提供的一种数据写入装置的结构,该装置可以执行数据写入的流程。
如图5所示,该装置具体包括:
获取单元501,用于获取待写入数据;
处理单元502,用于根据所述获取的待写入数据的数据量,从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带,其中,所述磁盘存储系统包含有多个不同条带深度的条带,每个条带均包含n个数据条带单元和m个校验条带单元;
写入单元503,用于将所述待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,并将所述n个数据条带单元和所述m个校验条带单元写入到所述确定的条带,其中,n和m为大于等于1的正整数。
优选地,所述处理单元502具体用于:
若所述确定的条带的存储数据量与所述待写入数据的数据量不一致,则获取补充数据;
将所述待写入数据和所述补充数据切分为n个数据条带单元;
根据纠删码算法对所述n个数据条带单元计算出m个校验条带单元。
优选地,所述获取单元501具体用于:
获取设定时间内应用提交的待写入数据。
优选地,所述处理单元502具体用于:
所述磁盘存储系统中包含有多个设定条带深度的条带;
从所述多个设定条带深度的条带中选择与所述待写入数据的数据量相匹配的条带。
优选地,所述处理单元502具体用于:
若所述待写入数据的数据量大于所述磁盘存储系统中条带深度最大的条带的存储数据量,则根据所述待写入数据的数据量选择多个不同条带深度的条带,以使所述选择的多个不同条带深度条带的存储数据量之和与所述待写入数据的数据量匹配。
优选地,所述处理单元502具体用于:
根据下述公式(1)从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带:
其中,StripeDepth为条带深度,n为条带中数据条带单元的个数,len为待写入数据的数据量,minStripeDepth为磁盘对齐阈值。
优选地,所述写入单元503具体用于:
在所述将所述n个数据条带单元和所述m个校验条带单元写入到所述选择的条带之后,记录所述存储的待写入数据的元数据。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种数据写入方法,其特征在于,包括:
获取待写入数据;
根据所述获取的待写入数据的数据量,从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带,其中,所述磁盘存储系统包含有多个不同条带深度的条带,每个条带均包含n个数据条带单元和m个校验条带单元;
将所述待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,并将所述n个数据条带单元和所述m个校验条带单元写入到所述确定的条带,其中,n和m为大于等于1的正整数。
2.如权利要求1所述的方法,其特征在于,所述将所述待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,包括:
若所述确定的条带的存储数据量与所述待写入数据的数据量不一致,则获取补充数据;
将所述待写入数据和所述补充数据切分为n个数据条带单元;
根据纠删码算法对所述n个数据条带单元计算出m个校验条带单元。
3.如权利要求1所述的方法,其特征在于,所述获取待写入数据,包括:
获取设定时间内应用提交的待写入数据。
4.如权利要求1所述的方法,其特征在于,所述从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带,包括:
所述磁盘存储系统中包含有多个设定条带深度的条带;
从所述多个设定条带深度的条带中选择与所述待写入数据的数据量相匹配的条带。
5.如权利要求4所述的方法,其特征在于,所述从所述多个设定条带深度的条带中选择与所述待写入数据的数据量相匹配的条带,包括:
若所述待写入数据的数据量大于所述磁盘存储系统中条带深度最大的条带的存储数据量,则根据所述待写入数据的数据量选择多个不同条带深度的条带,以使所述选择的多个不同条带深度条带的存储数据量之和与所述待写入数据的数据量匹配。
6.如权利要求1至4任一项所述的方法,其特征在于,根据下述公式(1)从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带:
<mrow>
<mi>S</mi>
<mi>t</mi>
<mi>r</mi>
<mi>i</mi>
<mi>p</mi>
<mi>e</mi>
<mi>D</mi>
<mi>e</mi>
<mi>p</mi>
<mi>t</mi>
<mi>h</mi>
<mo>=</mo>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<mo>(</mo>
<mi>l</mi>
<mi>e</mi>
<mi>n</mi>
<mo>+</mo>
<mi>min</mi>
<mi> </mi>
<mi>S</mi>
<mi>t</mi>
<mi>r</mi>
<mi>i</mi>
<mi>p</mi>
<mi>e</mi>
<mi>D</mi>
<mi>e</mi>
<mi>p</mi>
<mi>t</mi>
<mi>h</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
<mrow>
<mi>min</mi>
<mi> </mi>
<mi>S</mi>
<mi>t</mi>
<mi>r</mi>
<mi>i</mi>
<mi>p</mi>
<mi>e</mi>
<mi>D</mi>
<mi>e</mi>
<mi>p</mi>
<mi>t</mi>
<mi>h</mi>
</mrow>
</mfrac>
<mo>+</mo>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
<mo>/</mo>
<mi>n</mi>
<mo>*</mo>
<mi>min</mi>
<mi> </mi>
<mi>S</mi>
<mi>t</mi>
<mi>r</mi>
<mi>i</mi>
<mi>p</mi>
<mi>e</mi>
<mi>D</mi>
<mi>e</mi>
<mi>p</mi>
<mi>t</mi>
<mi>h</mi>
<mo>...</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,StripeDepth为条带深度,n为条带中数据条带单元的个数,len为待写入数据的数据量,minStripeDepth为磁盘对齐阈值。
7.如权利要求1至4任一项所述的方法,其特征在于,在所述将所述n个数据条带单元和所述m个校验条带单元写入到所述选择的条带之后,还包括:
记录所述存储的待写入数据的元数据。
8.一种数据写入装置,其特征在于,包括:
获取单元,用于获取待写入数据;
处理单元,用于根据所述获取的待写入数据的数据量,从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带,其中,所述磁盘存储系统包含有多个不同条带深度的条带,每个条带均包含n个数据条带单元和m个校验条带单元;
写入单元,用于将所述待写入数据切分为n个数据条带单元,根据纠删码算法计算出m个校验条带单元,并将所述n个数据条带单元和所述m个校验条带单元写入到所述确定的条带,其中,n和m为大于等于1的正整数。
9.如权利要求8所述的装置,其特征在于,所述处理单元具体用于:
若所述确定的条带的存储数据量与所述待写入数据的数据量不一致,则获取补充数据;
将所述待写入数据和所述补充数据切分为n个数据条带单元;
根据纠删码算法对所述n个数据条带单元计算出m个校验条带单元。
10.如权利要求8所述的装置,其特征在于,所述处理单元具体用于:
获取设定时间内应用提交的待写入数据。
11.如权利要求8所述的装置,其特征在于,所述处理单元具体用于:
所述磁盘存储系统中包含有多个设定条带深度的条带;
从所述多个设定条带深度的条带中选择与所述待写入数据的数据量相匹配的条带。
12.如权利要求11所述的装置,其特征在于,所述处理单元具体用于:
若所述待写入数据的数据量大于所述磁盘存储系统中条带深度最大的条带的存储数据量,则根据所述待写入数据的数据量选择多个不同条带深度的条带,以使所述选择的多个不同条带深度条带的存储数据量之和与所述待写入数据的数据量匹配。
13.如权利要求8至11任一项所述的装置,其特征在于,所述处理单元具体用于:
根据下述公式(1)从磁盘存储系统中确定与所述待写入数据的数据量相匹配的条带:
<mrow>
<mi>S</mi>
<mi>t</mi>
<mi>r</mi>
<mi>i</mi>
<mi>p</mi>
<mi>e</mi>
<mi>D</mi>
<mi>e</mi>
<mi>p</mi>
<mi>t</mi>
<mi>h</mi>
<mo>=</mo>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<mo>(</mo>
<mi>l</mi>
<mi>e</mi>
<mi>n</mi>
<mo>+</mo>
<mi>min</mi>
<mi> </mi>
<mi>S</mi>
<mi>t</mi>
<mi>r</mi>
<mi>i</mi>
<mi>p</mi>
<mi>e</mi>
<mi>D</mi>
<mi>e</mi>
<mi>p</mi>
<mi>t</mi>
<mi>h</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
<mrow>
<mi>min</mi>
<mi> </mi>
<mi>S</mi>
<mi>t</mi>
<mi>r</mi>
<mi>i</mi>
<mi>p</mi>
<mi>e</mi>
<mi>D</mi>
<mi>e</mi>
<mi>p</mi>
<mi>t</mi>
<mi>h</mi>
</mrow>
</mfrac>
<mo>+</mo>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
<mo>/</mo>
<mi>n</mi>
<mo>*</mo>
<mi>min</mi>
<mi> </mi>
<mi>S</mi>
<mi>t</mi>
<mi>r</mi>
<mi>i</mi>
<mi>p</mi>
<mi>e</mi>
<mi>D</mi>
<mi>e</mi>
<mi>p</mi>
<mi>t</mi>
<mi>h</mi>
<mo>...</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,StripeDepth为条带深度,n为条带中数据条带单元的个数,len为待写入数据的数据量,minStripeDepth为磁盘对齐阈值。
14.如权利要求8至11任一项所述的装置,其特征在于,所述写入单元具体用于:
在所述将所述n个数据条带单元和所述m个校验条带单元写入到所述选择的条带之后,记录所述存储的待写入数据的元数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710429411.6A CN107273048B (zh) | 2017-06-08 | 2017-06-08 | 一种数据写入方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710429411.6A CN107273048B (zh) | 2017-06-08 | 2017-06-08 | 一种数据写入方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107273048A true CN107273048A (zh) | 2017-10-20 |
CN107273048B CN107273048B (zh) | 2020-08-04 |
Family
ID=60067424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710429411.6A Active CN107273048B (zh) | 2017-06-08 | 2017-06-08 | 一种数据写入方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107273048B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170555A (zh) * | 2017-12-21 | 2018-06-15 | 浙江大华技术股份有限公司 | 一种数据恢复方法及设备 |
WO2019080370A1 (zh) * | 2017-10-25 | 2019-05-02 | 华为技术有限公司 | 一种数据读写方法、装置和存储服务器 |
CN110244903A (zh) * | 2018-03-09 | 2019-09-17 | 杭州海康威视系统技术有限公司 | 一种数据存储方法及装置 |
CN110308875A (zh) * | 2019-06-27 | 2019-10-08 | 深信服科技股份有限公司 | 数据读写方法、装置、设备及计算机可读存储介质 |
CN110413454A (zh) * | 2018-04-28 | 2019-11-05 | 华为技术有限公司 | 基于存储阵列的数据重建方法、装置及存储介质 |
CN110737389A (zh) * | 2018-07-19 | 2020-01-31 | 杭州海康威视系统技术有限公司 | 存储数据的方法和装置 |
CN110888606A (zh) * | 2019-12-23 | 2020-03-17 | 潍柴动力股份有限公司 | 刷写系统及发动机 |
CN111444036A (zh) * | 2020-03-19 | 2020-07-24 | 华中科技大学 | 数据关联性感知的纠删码内存替换方法、设备及内存系统 |
CN111459399A (zh) * | 2019-01-22 | 2020-07-28 | 深圳市茁壮网络股份有限公司 | 一种数据写入方法、数据读取方法及装置 |
CN111752466A (zh) * | 2019-03-27 | 2020-10-09 | 深圳市茁壮网络股份有限公司 | 一种数据存储方法及装置 |
CN111930311A (zh) * | 2020-08-07 | 2020-11-13 | 星辰天合(北京)数据科技有限公司 | 存储方法和装置 |
WO2021098526A1 (zh) * | 2019-11-20 | 2021-05-27 | 华为技术有限公司 | 确定条带一致性的方法及装置 |
WO2021139571A1 (zh) * | 2020-01-08 | 2021-07-15 | 华为技术有限公司 | 存储系统中的数据存储方法、数据读取方法、装置及系统 |
CN113590041A (zh) * | 2021-07-29 | 2021-11-02 | 杭州宏杉科技股份有限公司 | 一种数据保护存储方法、装置及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339524A (zh) * | 2008-05-22 | 2009-01-07 | 清华大学 | 大规模磁盘阵列存储系统的磁盘容错方法 |
US20120278531A1 (en) * | 2011-04-29 | 2012-11-01 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
CN102819408A (zh) * | 2012-08-24 | 2012-12-12 | 记忆科技(深圳)有限公司 | 可动态调整条带深度的raid 0的实现方法及系统 |
CN103034458A (zh) * | 2012-12-25 | 2013-04-10 | 华为技术有限公司 | 固态硬盘中实现独立磁盘冗余阵列的方法及装置 |
CN104272274A (zh) * | 2013-12-31 | 2015-01-07 | 华为技术有限公司 | 一种分布式文件存储系统中的数据处理方法及设备 |
CN105095013A (zh) * | 2015-06-04 | 2015-11-25 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及系统 |
-
2017
- 2017-06-08 CN CN201710429411.6A patent/CN107273048B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339524A (zh) * | 2008-05-22 | 2009-01-07 | 清华大学 | 大规模磁盘阵列存储系统的磁盘容错方法 |
US20120278531A1 (en) * | 2011-04-29 | 2012-11-01 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
CN102819408A (zh) * | 2012-08-24 | 2012-12-12 | 记忆科技(深圳)有限公司 | 可动态调整条带深度的raid 0的实现方法及系统 |
CN103034458A (zh) * | 2012-12-25 | 2013-04-10 | 华为技术有限公司 | 固态硬盘中实现独立磁盘冗余阵列的方法及装置 |
CN104272274A (zh) * | 2013-12-31 | 2015-01-07 | 华为技术有限公司 | 一种分布式文件存储系统中的数据处理方法及设备 |
CN105095013A (zh) * | 2015-06-04 | 2015-11-25 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及系统 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019080370A1 (zh) * | 2017-10-25 | 2019-05-02 | 华为技术有限公司 | 一种数据读写方法、装置和存储服务器 |
US11397668B2 (en) | 2017-10-25 | 2022-07-26 | Huawei Technologies Co., Ltd. | Data read/write method and apparatus, and storage server |
CN108170555A (zh) * | 2017-12-21 | 2018-06-15 | 浙江大华技术股份有限公司 | 一种数据恢复方法及设备 |
CN108170555B (zh) * | 2017-12-21 | 2021-07-20 | 浙江大华技术股份有限公司 | 一种数据恢复方法及设备 |
CN110244903A (zh) * | 2018-03-09 | 2019-09-17 | 杭州海康威视系统技术有限公司 | 一种数据存储方法及装置 |
CN110413454A (zh) * | 2018-04-28 | 2019-11-05 | 华为技术有限公司 | 基于存储阵列的数据重建方法、装置及存储介质 |
CN110413454B (zh) * | 2018-04-28 | 2022-04-05 | 华为技术有限公司 | 基于存储阵列的数据重建方法、装置及存储介质 |
CN110737389A (zh) * | 2018-07-19 | 2020-01-31 | 杭州海康威视系统技术有限公司 | 存储数据的方法和装置 |
CN111459399A (zh) * | 2019-01-22 | 2020-07-28 | 深圳市茁壮网络股份有限公司 | 一种数据写入方法、数据读取方法及装置 |
CN111752466A (zh) * | 2019-03-27 | 2020-10-09 | 深圳市茁壮网络股份有限公司 | 一种数据存储方法及装置 |
CN111752466B (zh) * | 2019-03-27 | 2024-02-13 | 深圳市茁壮网络股份有限公司 | 一种数据存储方法及装置 |
CN110308875B (zh) * | 2019-06-27 | 2023-07-14 | 深信服科技股份有限公司 | 数据读写方法、装置、设备及计算机可读存储介质 |
CN110308875A (zh) * | 2019-06-27 | 2019-10-08 | 深信服科技股份有限公司 | 数据读写方法、装置、设备及计算机可读存储介质 |
WO2021098526A1 (zh) * | 2019-11-20 | 2021-05-27 | 华为技术有限公司 | 确定条带一致性的方法及装置 |
CN110888606A (zh) * | 2019-12-23 | 2020-03-17 | 潍柴动力股份有限公司 | 刷写系统及发动机 |
WO2021139571A1 (zh) * | 2020-01-08 | 2021-07-15 | 华为技术有限公司 | 存储系统中的数据存储方法、数据读取方法、装置及系统 |
CN111444036B (zh) * | 2020-03-19 | 2021-04-20 | 华中科技大学 | 数据关联性感知的纠删码内存替换方法、设备及内存系统 |
CN111444036A (zh) * | 2020-03-19 | 2020-07-24 | 华中科技大学 | 数据关联性感知的纠删码内存替换方法、设备及内存系统 |
CN111930311A (zh) * | 2020-08-07 | 2020-11-13 | 星辰天合(北京)数据科技有限公司 | 存储方法和装置 |
CN113590041A (zh) * | 2021-07-29 | 2021-11-02 | 杭州宏杉科技股份有限公司 | 一种数据保护存储方法、装置及设备 |
CN113590041B (zh) * | 2021-07-29 | 2024-05-17 | 杭州宏杉科技股份有限公司 | 一种数据保护存储方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107273048B (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273048A (zh) | 一种数据写入方法及装置 | |
CN105404469B (zh) | 一种视频数据的存储方法和系统 | |
CN102142006B (zh) | 分布式文件系统的文件处理方法及装置 | |
JP5603997B2 (ja) | ストレージ装置及びデータ制御方法 | |
CN106055431B (zh) | 基于快照在线回滚的数据备份与恢复的方法及装置 | |
US20120173790A1 (en) | Storage system cache with flash memory in a raid configuration | |
CN109542342A (zh) | 元数据管理与数据重构方法、设备及存储介质 | |
CN104809032A (zh) | 用于存储系统中服务感知的奇偶校验放置的方法和系统 | |
CN103699337B (zh) | 一种基于独立磁盘冗余阵列raid的写控制方法及系统 | |
CN102682012A (zh) | 一种文件系统内读写数据的方法及装置 | |
CN103294615A (zh) | 一种存储机顶盒用户信息的方法 | |
CN103064760B (zh) | 备份方法和备份装置 | |
US9280463B2 (en) | Semiconductor memory garbage collection | |
CN101609420A (zh) | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 | |
CN104965768A (zh) | 用于存储系统中的服务感知数据放置的方法和系统 | |
EP3079054B1 (en) | Method and apparatus for data access | |
CN106775472A (zh) | 一种控制器缓存方法、存储控制器及多控制器存储系统 | |
CN107015888A (zh) | 一种基于子模模型的数据备份方法和系统 | |
CN106844597A (zh) | 一种快速删除依赖快照目标卷的方法及其装置 | |
CN103744751B (zh) | 存储设备配置信息连续优化备份系统及其使用方法 | |
CN104978154A (zh) | 一种基于缓存操作的flash快速读写方法及系统 | |
CN116719484A (zh) | 一种磁盘阵列的写数据处理方法、装置、设备和介质 | |
CN104967807A (zh) | 一种缓存方法和装置 | |
CN104166627B (zh) | 一种基于单片机的nand‑flash写操作方法 | |
CN104898989A (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 |