CN114115735A - 写入数据的方法及装置 - Google Patents
写入数据的方法及装置 Download PDFInfo
- Publication number
- CN114115735A CN114115735A CN202111372750.8A CN202111372750A CN114115735A CN 114115735 A CN114115735 A CN 114115735A CN 202111372750 A CN202111372750 A CN 202111372750A CN 114115735 A CN114115735 A CN 114115735A
- Authority
- CN
- China
- Prior art keywords
- data
- written
- storage
- block
- write
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012545 processing Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 18
- 238000004590 computer program Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/062—Securing 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
- G06F3/064—Management of blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开披露了一种写入数据的方法及装置。所述方法应用于存储系统,所述存储系统支持第一写模式和第二写模式,所述第一写模式为基于多副本的追加写模式,所述第二写模式为基于纠删码的满写模式,所述方法包括:接收写IO,所述写IO包括待写入数据;根据所述待写入数据的数据量,采用所述第一写模式和/或所述第二写模式,将所述待写入数据写入所述存储系统的至少一个存储块中。
Description
技术领域
本公开涉及存储领域,具体涉及一种写入数据的方法及装置。
背景技术
为了提高数据的可靠性,存储系统可以采用数据冗余模式来存储数据。目前主要的冗余模式包括多副本模式和纠删码(erasure coding,EC)模式,多副本模式和EC模式对大输入输出(input output,IO)和小IO的存储性能不同。
但是,现有的存储系统仅支持一种冗余模式,当存储系统中需要写入大小不一致的IO时,单一冗余模式的存储系统无法同时满足大IO的高吞吐要求以及小IO的低时延要求。
发明内容
本公开实施例提供一种写入数据的方法及装置,能够同时满足大IO的高吞吐要求以及小IO的低时延要求。
第一方面,提供一种写入数据的方法,所述方法应用于存储系统,所述存储系统支持第一写模式和第二写模式,所述第一写模式为基于多副本的追加写模式,所述第二写模式为基于纠删码的满写模式,所述方法包括:接收写IO,所述写IO包括待写入数据;根据所述待写入数据的数据量,采用所述第一写模式和/或所述第二写模式,将所述待写入数据写入所述存储系统的至少一个存储块中。
第二方面,提供一种写入数据的装置,所述装置为存储系统,所述存储系统支持第一写模式和第二写模式,所述第一写模式为基于多副本的追加写模式,所述第二写模式为基于纠删码的满写模式,所述装置包括:接收单元,用于接收写IO,所述写IO包括待写入数据;写入单元,用于根据所述待写入数据的数据量,采用所述第一写模式和/或所述第二写模式,将所述待写入数据写入所述存储系统的至少一个存储块中。
第三方面,提供一种写入数据的装置,包括:存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现如第一方面所述的方法。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
第五方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
基于上述技术方案,本公开实施例中的存储系统支持多种写模式,通过根据写IO中待写入数据的数据量的大小,灵活选择写模式,如选择基于副本的追加写模式或选择基于EC的满写模式,能够同时满足小IO的低时延要求和大IO的高吞吐要求。
附图说明
图1为本公开一实施例提供的分布式存储系统的架构图。
图2是本公开一实施例提供的写入数据的方法的示意性流程图。
图3是本公开一实施例提供的写入数据的方法的示意图。
图4是本公开另一实施例提供的写入数据的方法的示意图。
图5是本公开另一实施例提供的写入数据的方法的示意图。
图6是本公开另一实施例提供的写入数据的方法的示意图。
图7是本公开一实施例提供的预分配存储块的排列方式的示意图。
图8是本公开一实施例提供的链表式存储块的结构示意图。
图9是本公开一实施例提供的数组式存储块的结构示意图。
图10是本公开一实施例提供的对日志文件IO进行统计得到的数量分布图。
图11是本公开一实施例提供的日志文件IO对磁盘的占用情况的统计图。
图12是本公开一实施例提供的写入数据的装置的示意性框图。
图13是本公开一实施例提供的写入数据的装置的示意性结构图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。
本公开实施例的方法可应用于存储系统。本公开实施例对存储系统的类型不做具体限定,例如,存储系统可以为集中式存储系统或者分布式存储系统。又例如,存储系统可以为块存储系统、文件存储系统或者对象存储系统。
计算机可以通过存储系统管理和存储数据,而在信息爆炸时代,人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机的存储容量的方式,在容量大小、容量增长速度、数据备份、数据安全等方面的表现都差强人意。在该背景下,分布式存储系统应运而生。
分布式存储系统通过网络将大量零散的计算机连接在一起,形成一个巨大的计算机集群,为用户提供存储空间。此外,集群之外的计算机只需要经过简单的配置就可以加入到分布式存储系统中,具有极强的可扩展能力。
下面结合图1,以分布式存储系统为例,对数据的存储过程进行描述。
存储系统包括计算节点和多个存储节点,多个存储节点包括存储节点1、存储节点2、……存储节点n,n为大于2的正整数。多个存储节点用于管理存储资源。存储资源可以为存储节点的本地磁盘,也可以为云盘。为方便描述,下文将存储资源简称为磁盘。
用户可以通过客户端110与计算节点进行通信,用户可以向计算节点发送写IO,计算节点接收用户的写IO。计算节点对写IO中的待写入数据进行处理,并将处理后的数据发送至存储节点,由存储节点将处理后的数据存储至磁盘上的存储区域。
存储系统通常以存储块(block)为粒度进行数据的存储,每个存储块在磁盘上都有对应的存储空间。举例说明,在接收到写IO后,存储系统可以按照存储块的存储容量对待写入数据进行拆分。如果待写入数据的数据量刚好等于当前存储块的存储容量,则可以将该待写入数据写入当前存储块中;如果待写入数据的数据量大于当前存储块的存储容量,则可以将超出部分写入当前存储块的下一存储块中。
分布式存储系统把大量的数据分散到不同的节点上存储。为了提高数据存储的安全性,分布式存储系统具有一些冗余措施,部分节点的故障并不影响整体的正常运行,而且即使出现故障的节点存储的数据已经损坏,也可以由其他的节点将损坏的数据恢复出来。
目前的冗余模式包括基于多副本的追加写模式和基于EC的满写模式。下面分别对这两种模式进行介绍。为方便描述,下文将基于多副本的追加写模式称为多副本模式,将基于EC的满写模式称为EC模式。
多副本模式是通过将数据复制成多份进行存储。以三副本为例,存储系统可以将数据复制成三份,然后将该三份数据分别存储到三个不同的节点上。当有2个及以下数量的节点发生故障时,存储系统都能够恢复出原始数据。多副本模式虽然实现简单,但是会造成存储空间的浪费。仍以三副本为例,整个存储系统能够存储的数据量只占原始存储容量的1/3,即磁盘的利用率只有1/3。另外,以三副本模式进行存储时,受网络带宽的影响,吞吐率无法超过带宽上限的1/3。
对于EC模式,以EC(M+N)为例,存储系统可以将数据划分为M个数据块,并对该M个数据块进行编码,生成N个校验块,然后将该M个数据块和N个校验块分别存储至不同的节点上,其中,M、N均为正整数。EC模式可以允许小于或等于N个数量的节点发生故障,也就是说,当发生故障的节点数量小于或等于N时,存储系统都能够利用剩下的节点上的数据恢复出原始数据。本公开实施例对EC模式不做具体限定。例如,EC模式可以为EC(4+2)模式,也可以为EC(8+3)模式等。相比于多副本模式,EC模式的磁盘利用率较高。以EC(4+2)为例,在该模式下,磁盘的利用率能达到2/3,吞吐率能达到带宽上限的2/3。
通过上述对多副本模式和EC模式的特性进行分析可知,对于EC模式,数据的吞吐率可以达到带宽上限的2/3,或者甚至更高,因此,使用EC模式可以提高吞吐率,EC模式更适合大IO的写入。对于小IO,由于EC模式需要进行复杂的编码过程,这会增加小IO的传输时延。相比之下,多副本模式的写入方式比较简单,因此,多副本模式更适合小IO的写入,能够满足小IO的低时延要求。
目前,存储系统仅支持一种写模式,也就是说,要么仅支持多副本模式,要么仅支持EC模式。但是,在不同的场景下,IO的数据大小不同,而单一的写模式不能同时满足大IO的高吞吐要求和小IO的低时延要求。如果使用EC模式,不能满足小IO的低时延要求;如果使用多副本模式,则不能满足大IO的吞吐要求。
基于此,本公开实施例提供一种写入数据的方法及装置,能够根据写IO中的待写入数据的数据量,灵活选择写模式,从而能够同时满足小IO的低时延要求和大IO的高吞吐要求。
图2是本公开实施例提供的写入数据的方法。该方法应用于存储系统,该存储系统可以为上文描述的任意一种存储系统,如分布式文件系统。该存储系统可以支持第一写模式和第二写模式,第一写模式为基于多副本的追加写模式,第二模式为基于EC的满写模式。图2所示的方法可以由图1中的计算节点来执行,该方法包括步骤S210~S220。
在步骤S210、接收写IO,该写IO中包括待写入数据。该写IO可以为用户向存储系统写入的IO。
在步骤S220、根据待写入数据的数据量,采用第一写模式和/或第二写模式,将待写入数据写入存储系统的至少一个存储块中。
如果待写入数据的数据量较小,则可以采用第一写模式将待写入数据写入存储块中;如果待写入数据的数据量较大,则可以采用第二写模式将待写入数据写入存储块。本公开实施例中的存储系统支持多种写模式,通过根据数据量的大小,灵活选择写模式,能够同时满足小IO的低时延要求和大IO的高吞吐要求。
为方便描述,下文将第一写模式称为多副本模式,将第二写模式称为EC模式。
举例说明,以一个新的存储块为例,写IO的写模式可以根据写IO中待写入数据的数据量大小来确定。如果待写入数据的数据量小于或等于存储块的存储容量,则可以使用多副本模式将待写入数据写入该存储块中。如果待写入数据的数据量大于存储块的存储容量,则可以使用EC模式将待写入数据中的部分数据写入该存储块中。对于剩余的数据,如果剩余的数据量小于或等于下一个存储块的存储容量,则可以将剩余的数据量以多副本模式写入下一个存储块中。
以图3和图4为例,假设一个存储块的存储容量为256KB,第一个写IO中的待写入数据被写入第一个存储块中。图3示出的是待写入数据的数据量小于存储块的存储容量的情况。图4示出的是待写入数据的数据量大于存储块的存储容量的情况。参见图3,如果待写入数据的数据量为64KB,由于64KB小于256KB,则可以将该64KB的数据以多副本模式写入第一个存储块中。参见图4,如果待写入数据的数据量为384KB,由于384KB大于256KB,则可以将384KB中前256KB的数据以EC模式写入第一个存储块中。经过第一个存储块的写入,第一个IO中剩余的数据量为128KB,由于128KB小于256KB,则剩余的128KB的数据以多副本模式写入第二个存储块中。
在写入非首个写IO时,会存在当前存储块未存满的情况。以图3为例,如果当前写IO为第二个写IO,则当前存储块为第一个存储块。第二个写IO在写入时,第一个存储块还有剩余存储容量。以图4为例,如果当前写IO为第二个写IO,则当前存储块为第二个存储块。第二个写IO在写入时,第二个存储块还有剩余存储容量。
如果当前写IO中的待写入数据的数据量小于或等于当前存储块的剩余存储容量,则采用多副本模式,将待写入数据写入当前存储块中。通过将待写入数据追加写入当前存储块中,可以达到节约存储空间,提高磁盘空间利用率的目的。
以图3为例,第二个写IO为128KB,第一个存储块的剩余存储容量为192KB,由于128KB小于192KB,则第二个写IO中的待写入数据可以多副本模式追加写入第一个存储块中。
如果待写入数据的数据量大于当前存储块的剩余存储容量,则根据待写入数据的数据量,确定下一存储块为第一类型的存储块,第一类型的存储块为支持第一写模式的存储块或支持第二写模式的存储块。进一步地,可以采用第一类型的存储块支持的写模式,将待写入数据中的至少部分数据写入下一存储块中。
如果待写入数据的数据量大于当前存储块的剩余存储容量,则表示当前存储块无法容纳待写入数据的全部数据量,此时,待写入数据中的部分数据需要写入下一个存储块。下一个存储块的类型与待写入数据的数据量有关,下面对确定下一个存储块的类型的方式进行描述。
为方便描述,下文将支持第一写模式的存储块称为副本块,将支持第二写模式的存储块称为EC块。
如果待写入数据的数据量小于当前存储块的剩余存储容量和下一个存储块的存储容量之和,则确定下一存储块为副本块。待写入数据可以包括第一部分和第二部分,存储系统可以将第一部分以多副本模式写入当前存储块中,将第二部分以多副本模式写入下一存储块中。可以理解的是,为了提高存储空间的利用率,第一部分的数据量可以等于当前存储块的剩余存储容量,第二部分的数据量为待写入数据中除第一部分之外的剩余数据量。
以图4为例,第二个写IO为192KB,第二个存储块的剩余存储容量为128KB,由于192KB大于128KB,则可以确定第三个存储块为副本块。第二个写IO可以包括第一部分和第二部分,第一部分的数据量为128KB,第二部分的数据量为64KB。在写入第二个IO时,第一部分的数据可以多副本模式写入第二个存储块的剩余存储空间,第二部分的数据可以多副本模式写入第三个存储块中。
如果待写入数据的数据量大于或等于当前存储块的剩余存储容量和下一个存储块的存储容量之和,则确定下一存储块为EC块。待写入数据包括第一部分和第二部分,第一部分以多副本模式写入当前存储块的剩余存储空间,第二部分以EC模式写入下一存储块。可以理解的是,为了提高存储空间的利用率,第一部分的数据量可以等于当前存储块的剩余存储容量,第二部分的数据量等于下一个存储块的存储容量。
以图5为例,第二个写IO为512KB,第二个存储块的剩余存储容量为128KB,下一个存储块的存储容量为256KB,由于526KB大于(128KB+256KB),则可以确定第三个存储块为EC块。第二个写IO中第一部分的数据量为128KB,第二部分的数据量为256KB。第一部分的128KB的数据以多副本模式写入第二个存储块的剩余存储空间,而第二部分的256KB的数据以EC模式写入第三个存储块中。
可以理解的是,当前写IO除了包括第一部分和第二部分之外,还可以包括第三部分,仍以图5为例,由于第二个存储块的剩余存储容量与第三个存储块的存储容量之和为384KB,384KB小于第二个写IO的数据量512KB,因此,还需要根据第二个写IO中待写入数据的数据量确定第四个存储块的类型。由于第二个IO中还有剩余128KB的数据量,128KB小于第四个存储块的存储容量256KB,因此,存储系统可以确定第四个存储块为副本块。进一步地,存储系统可以将第二个IO中剩余的128KB的数据以多副本模式写入第四个存储块中。
下面结合图6,对本公开实施例的方案进行详细描述。图6示出了4个IO的写入情况。第一个IO为64KB,第二个IO为128KB,第三个IO为640KB,第四个IO为32KB。存储块的大小为256KB。
在第一个IO写入时,由于64KB小于第一个存储块的存储容量,因此,存储系统可以多副本模式将第一个IO中的数据写入第一个存储块中。
在第二个IO写入时,由于128KB小于第一个存储块的剩余存储容量,因此,存储系统可以多副本模式将第二个IO中的数据追加写入第一个存储块中。
在写入第三个IO时,由于第一个存储块的剩余存储空间为64KB,则存储系统可以将第三个IO中的前64KB的数据追加写入第一个存储块的剩余存储空间。经过以上写入,第三个IO的剩余数据量为576KB,还能存满两个存储块,因此,存储系统可以确定第二个存储块和第三个存储块为EC块,并将第二个IO中的512KB的数据以EC模式写入第二个存储块和第三个存储块中。经过以上写入,第三个IO还剩余64KB的数据,由于不能存满一个存储块,因此,存储系统可以确定第四个存储块为副本块。进一步地,存储系统可以将剩余的64KB的数据以多副本模式写入第四个存储块中。
在写入第四个IO时,由于32KB小于第四个存储块的剩余存储空间,因此,存储系统可以将第四个IO中的数据以多副本模式追加写入第四个存储块中。
本公开实施例对分配存储块类型的方式不做具体限定。例如,存储块的类型可以是存储系统基于待写入数据的数据量动态分配的。又例如,下一存储块的类型可以是存储系统预先分配的。下面分别对这两种情况进行描述。
用户在写IO的过程中,存储系统可以动态地根据当前IO的大小,确定下一存储块的类型,再根据下一存储块的类型,分配新的存储块。这种方式能够按需分配,达到节约存储空间的目的。
以图5为例,第一个IO为384KB,存储系统基于该IO的大小,分配第一个存储块为EC块,分配第二个存储块为副本块。第二个IO为512KB,存储系统可以分配第三个存储块为EC块,第4个存储块为副本块。
图8是一种预分配存储块的类型的示意图。为了减少分配存储块的时间,存储系统可以预先分配多个副本块和多个EC块。
本公开实施例对多个副本块与多个EC块的排列方式不做具体限定。例如,多个副本块和多个EC块可以交错排列。交错的方式可以有多种,本公开实施例对此不作具体限定。多个副本块和多个EC块可以一个副本块、一个EC块为一组进行重复排列,这种方式也可以称为交替排列,如图7所示。多个副本块和多个EC块可以两个副本块、两个EC块为一组进行重复排列。多个副本块和多个EC块可以一个副本块、两个EC块为一组进行重复排列。多个副本块和多个EC块可以两个副本块、一个EC块为一组进行重复排列。
采用预分配的方式分配存储块的类型时,会存在存储块的类型与IO的写模式不匹配的情况。基于此,本公开实施例可以从预分配的存储块中选择与IO的写模式匹配的存储块,并将写IO中的数据写入匹配的存储块中。如前文描述,如果待写入数据的数据量大于当前存储块的剩余存储容量,存储系统需要根据待写入数据的数据量,确定下一存储块为第一类型的存储块。如果采用预分配的方式分配存储块的类型,则下一个存储块为当前存储块之后的第一个第一类型的存储块。
举例说明,继续参见图7,以第三个IO为例,根据前文的描述可知,第三个IO中的中间512KB的部分需要以EC模式写入存储块中,但是由于第三个存储块为副本块,与第三个IO的存储需求不匹配,因此,存储系统可以跳过第三个存储块,即第三个存储块不写入数据。由于第四个存储块为EC块,与存储需求相匹配,因此,存储系统可以将第三个IO的至少部分数据写入第四个存储块。经过上述写入,第三个写IO中的待写入数据被写入第一个、第二个、第四个以及第五个存储块中。
在读数据时,存储系统可以先判断当前存储块是否为空,如果当前存储块为空,则跳过该存储块块,读取下一个存储块。为了简化读操作,存储系统可以在写IO完成后,或在读IO之前,对空的存储块进行删除操作来优化。
本公开实施例对存储系统记录存储块的信息的方式不做具体限定。例如,存储系统可以采用链表的方式记录存储块的信息。又例如,存储系统可以采用数组的方式记录存储块的信息。
图8示出的是采用链表的方式记录存储块的信息的示意图。存储系统在分配新的存储块时,可以将新的存储块的标识(identity,ID)信息写入前一个存储块中,如写入前一个存储块的页脚(footer)中。采用链表方式的优点是,在写入不出错的情况下,可以一直写下去,对链表的长度没有限制。
如果采用链表方式记录存储块的信息,在数据读取的时候,需要链式读取,为了提高读取的效率,本公开实施例可以采用双向链表,或者构建跳跃表。
图9示出的是采用数组的方式记录存储块的信息的示意图。存储系统可以将存储块的信息记录在单独的元块中。例如,元块中记录各个存储块的ID信息以及顺序信息。通过元块可以直观地获取各个存储块的信息。在读取数据的时候,可以先从元块中确定需要读取的存储块,然后可直接读取该存储块上的数据,相比于链表的方式,数组方式有利于提高数据读取的效率。
上文描述的方案均是以大小固定的存储块为例进行描述的,但是本公开实施例对此不作具体限定。存储块也可以采用可变大小的存储块。例如,为了提高EC块的利用率,可以使用变长的EC块。又例如,可以根据存储的文件的类型,选择不同长度的存储块。如果文件对应的IO都比较小,则可以使用较小的存储块;如果文件对应的IO较大,则可以使用较大的存储块。
以存储系统为文件系统为例,本公开实施例对文件系统中存储的文件的类型不做具体限定。例如,文件可以为追加写文件,如日志文件。又例如,文件可以为覆盖写文件。下面以日志文件为例进行描述。
本公开实施例通过对日志文件IO的大小进行统计,得到如图10和图11所示的统计结果。图10示出的是不同大小的IO的数量分布图。图11是不同大小的IO对存储空间的占用情况的分布图。
通过对图10和图11进行整理,得到如表1所示的结果。由表1可知,日志文件IO的大小介于0-2MB之间。但是由于介于0-256KB之间的IO比较小,所以其对磁盘空间的占用并不高。因此,对磁盘空间占用较高的IO主要为介于256KB-2MB之间的IO。由表1可知,大小介于256KB-512KB之间的IO对磁盘空间的占用率为4%,大小介于512KB-1MB之间的IO对磁盘空间的占用率为31%,大小介于1MB-2MB之间的IO对磁盘空间的占用率为62%。
表1
IO大小 | IO数量 | IO总大小 |
0-64KB | 59606(40%) | 131MB(0%) |
-128KB | 2250(1%) | 209MB(0%) |
-256KB | 3819(2%) | 727MB(0%) |
-512KB | 8369(5%) | 3154MB(4%) |
-1MB | 35549(24%) | 23547MB(31%) |
-2MB | 36787(25%) | 47050MB(62%) |
采用本公开实施例的方法,分别使用256KB、128KB和64KB的存储块进行测试,得到表2所示的结果。表2示出了在使用不同大小的存储块时,使用的三副本块和EC块的比例以及总带宽/磁盘的占用情况。另外,表2还示出了在不同的EC模式下,如EC(4+2)模式和EC(8+3)模式,在数据写入时,总带宽/磁盘的比值情况。
由表2可以看出,IO越大,三副本块的占比越低,EC块的占比越高,总带宽/磁盘的比值越小,磁盘的空间利用率越高。IO越小,三副本块的占比越高,EC块的占比越低,总带宽/磁盘的比值越大,磁盘的空间利用率越低。
表2
由于日志文件IO的大小主要集中在256KB-2MB之间,因此,通过表2的结果可知,使用128KB或256KB大小的存储块,能够提高磁盘空间的利用率。
通过分析可知,对于日志文件,使用128KB大小的存储块时,EC满写占比大于75%,带宽/磁盘占用小于180%。使用256KB大小的存储块,EC满写占比大于50%,带宽/磁盘占用小于200%。
存储块越小,则使用副本块的可能性就越低,使用EC块的可能性就越高;但是EC块越多,网络开销就越大。存储块越大,则使用EC块的可能性就越低,使用副本块的可能性就越高;但是副本块越多,磁盘的空间利用率就越低。因此,在选择存储块的大小时,可以综合以上因素来考虑。
上文描述的IO大小和存储块的大小仅是一种示例,本公开实施例并不限于此。例如,对于8KB左右IO和4KB左右的存储块,也同样适用于本公开实施例的方法。
上文结合图1-图11,详细描述了本公开的方法实施例,下面结合图12和图13,详细描述本公开的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图12是本公开一实施例提供的写入数据的装置的结构示意图。该装置可以为上文描述的任意一种存储系统。所述存储系统支持第一写模式和第二写模式,所述第一写模式为基于多副本的追加写模式,所述第二写模式为基于纠删码的满写模式。该装置300可以包括接收单元310和写入单元320。
接收单元310,用于接收写IO,所述写IO包括待写入数据。
写入单元320,用于根据所述待写入数据的数据量,采用所述第一写模式和/或所述第二写模式,将所述待写入数据写入所述存储系统的至少一个存储块中。
可选地,所述写入单元320用于:如果所述待写入数据的数据量小于或等于当前存储块的剩余存储容量,采用所述第一写模式,将所述待写入数据写入所述当前存储块。
可选地,所述写入单元320用于:如果所述待写入数据的数据量大于当前存储块的剩余存储容量,则根据所述待写入数据的数据量,确定下一存储块为第一类型的存储块,所述第一类型的存储块为支持所述第一写模式的存储块或支持所述第二写模式的存储块;采用所述第一类型的存储块支持的写模式,将所述待写入数据中的至少部分数据写入所述下一存储块中。
可选地,所述待写入数据的数据量大于或等于当前存储块的剩余存储容量和下一存储块的存储容量之和,所述待写入数据包括第一部分和第二部分,所述第一部分以第一写模式写入所述当前存储块,所述第二部分以第二写模式写入所述下一存储块。
可选地,所述下一存储块的类型是所述存储系统基于所述待写入数据的数据量动态分配的。
可选地,所述存储系统预先分配了所述存储系统中的存储块的类型,所述待写入数据中的所述至少部分数据被写入所述当前存储块之后的第一个第一类型的存储块。
可选地,所述存储系统采用链表或数组的方式记录所述存储系统分配的存储块的信息。
可选地,所述存储系统为分布式文件系统。
可选地,所述写IO的大小介于256KB到2MB之间,所述存储块的大小为128KB或256KB。
图13是本公开另一实施例提供的写入数据的装置的结构示意图。图13所示的装置400可以是存储系统。装置400可以包括存储器410和处理器420。存储器410可以用于存储可执行代码。处理器420可以用于执行存储器410中存储的可执行代码,以实现前文描述的各个方法中的步骤。在一些实施例中,该装置400还可以包括网络接口430,处理器420与外部设备的数据交换可以通过该网络接口430实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (19)
1.一种写入数据的方法,所述方法应用于存储系统,所述存储系统支持第一写模式和第二写模式,所述第一写模式为基于多副本的追加写模式,所述第二写模式为基于纠删码的满写模式,
所述方法包括:
接收写输入输出IO,所述写IO包括待写入数据;
根据所述待写入数据的数据量,采用所述第一写模式和/或所述第二写模式,将所述待写入数据写入所述存储系统的至少一个存储块中。
2.根据权利要求1所述的方法,所述根据所述待写入数据的数据量,采用所述第一写模式和/或所述第二写模式,将所述待写入数据写入所述存储系统的至少一个存储块中,包括:
如果所述待写入数据的数据量小于或等于当前存储块的剩余存储容量,采用所述第一写模式,将所述待写入数据写入所述当前存储块。
3.根据权利要求1所述的方法,所述根据所述待写入数据的数据量,采用所述第一写模式和/或所述第二写模式,将所述待写入数据写入所述存储系统的至少一个存储块中,包括:
如果所述待写入数据的数据量大于当前存储块的剩余存储容量,则根据所述待写入数据的数据量,确定下一存储块为第一类型的存储块,所述第一类型的存储块为支持所述第一写模式的存储块或支持所述第二写模式的存储块;
采用所述第一类型的存储块支持的写模式,将所述待写入数据中的至少部分数据写入所述下一存储块中。
4.根据权利要求3所述的方法,所述待写入数据的数据量大于或等于当前存储块的剩余存储容量和下一存储块的存储容量之和,所述待写入数据包括第一部分和第二部分,所述第一部分以第一写模式写入所述当前存储块,所述第二部分以第二写模式写入所述下一存储块。
5.根据权利要求3所述的方法,所述下一存储块的类型是所述存储系统基于所述待写入数据的数据量动态分配的。
6.根据权利要求3所述的方法,所述存储系统预先分配了所述存储系统中的存储块的类型,所述待写入数据中的所述至少部分数据被写入所述当前存储块之后的第一个第一类型的存储块。
7.根据权利要求5或6所述的方法,所述存储系统采用链表或数组的方式记录所述存储系统分配的存储块的信息。
8.根据权利要求1所述的方法,所述存储系统为分布式文件系统。
9.根据权利要求1所述的方法,所述写IO的大小介于256KB到2MB之间,所述存储块的大小为128KB或256KB。
10.一种写入数据的装置,所述装置为存储系统,所述存储系统支持第一写模式和第二写模式,所述第一写模式为基于多副本的追加写模式,所述第二写模式为基于纠删码的满写模式,
所述装置包括:
接收单元,用于接收写输入输出IO,所述写IO包括待写入数据;
写入单元,用于根据所述待写入数据的数据量,采用所述第一写模式和/或所述第二写模式,将所述待写入数据写入所述存储系统的至少一个存储块中。
11.根据权利要求10所述的装置,所述写入单元用于:
如果所述待写入数据的数据量小于或等于当前存储块的剩余存储容量,采用所述第一写模式,将所述待写入数据写入所述当前存储块。
12.根据权利要求10所述的装置,所述写入单元用于:
如果所述待写入数据的数据量大于当前存储块的剩余存储容量,则根据所述待写入数据的数据量,确定下一存储块为第一类型的存储块,所述第一类型的存储块为支持所述第一写模式的存储块或支持所述第二写模式的存储块;
采用所述第一类型的存储块支持的写模式,将所述待写入数据中的至少部分数据写入所述下一存储块中。
13.根据权利要求12所述的装置,所述待写入数据的数据量大于或等于当前存储块的剩余存储容量和下一存储块的存储容量之和,所述待写入数据包括第一部分和第二部分,所述第一部分以第一写模式写入所述当前存储块,所述第二部分以第二写模式写入所述下一存储块。
14.根据权利要求12所述的装置,所述下一存储块的类型是所述存储系统基于所述待写入数据的数据量动态分配的。
15.根据权利要求12所述的装置,所述存储系统预先分配了所述存储系统中的存储块的类型,所述待写入数据中的所述至少部分数据被写入所述当前存储块之后的第一个第一类型的存储块。
16.根据权利要求14或15所述的装置,所述存储系统采用链表或数组的方式记录所述存储系统分配的存储块的信息。
17.根据权利要求10所述的装置,所述存储系统为分布式文件系统。
18.根据权利要求10所述的装置,所述写IO的大小介于256KB到2MB之间,所述存储块的大小为128KB或256KB。
19.一种写入数据的装置,包括:存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111372750.8A CN114115735B (zh) | 2021-11-18 | 2021-11-18 | 写入数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111372750.8A CN114115735B (zh) | 2021-11-18 | 2021-11-18 | 写入数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114115735A true CN114115735A (zh) | 2022-03-01 |
CN114115735B CN114115735B (zh) | 2024-02-09 |
Family
ID=80396871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111372750.8A Active CN114115735B (zh) | 2021-11-18 | 2021-11-18 | 写入数据的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114115735B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227731A (zh) * | 2016-07-06 | 2016-12-14 | 联想(北京)有限公司 | 一种数据处理方法、装置及分布式文件系统 |
CN106547859A (zh) * | 2016-10-21 | 2017-03-29 | 杭州朗和科技有限公司 | 一种多租户数据存储系统下的数据文件的存储方法及装置 |
CN107094186A (zh) * | 2017-06-15 | 2017-08-25 | 深圳市云舒网络技术有限公司 | 一种分布式存储系统的纠删码优化方法 |
US20180203606A1 (en) * | 2015-09-09 | 2018-07-19 | Alibaba Group Holding Limited | Method and device for writing data and acquiring data in a distributed storage system |
CN108701005A (zh) * | 2016-02-18 | 2018-10-23 | 华为技术有限公司 | 数据更新技术 |
CN110262922A (zh) * | 2019-05-15 | 2019-09-20 | 中国科学院计算技术研究所 | 基于副本数据日志的纠删码更新方法及系统 |
CN110347344A (zh) * | 2019-07-19 | 2019-10-18 | 北京计算机技术及应用研究所 | 一种基于分布式存储系统的自动配置块存储方法 |
US20200364109A1 (en) * | 2017-11-21 | 2020-11-19 | Sony Semiconductor Solutions Corporation | Memory controller, memory, memory system, information processing system, and method of control thereof |
US20200393972A1 (en) * | 2019-06-12 | 2020-12-17 | International Business Machines Corporation | Wear-aware block mode conversion in non-volatile memory |
CN112199054A (zh) * | 2020-12-07 | 2021-01-08 | 上海七牛信息技术有限公司 | 一种文件存储的方法及系统 |
US20210181977A1 (en) * | 2019-12-16 | 2021-06-17 | International Business Machines Corporation | Optimizing atomic writes to a storage device |
CN113434500A (zh) * | 2019-08-20 | 2021-09-24 | 北京奥星贝斯科技有限公司 | 表连接方法、装置、分布式数据库系统、服务器及介质 |
CN113626404A (zh) * | 2021-06-30 | 2021-11-09 | 济南浪潮数据技术有限公司 | 分布式文件系统嵌套目录配额的控制方法、装置及介质 |
WO2021223236A1 (en) * | 2020-05-08 | 2021-11-11 | Qualcomm Incorporated | Unequal erasure protection for prioritized data transmission |
-
2021
- 2021-11-18 CN CN202111372750.8A patent/CN114115735B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180203606A1 (en) * | 2015-09-09 | 2018-07-19 | Alibaba Group Holding Limited | Method and device for writing data and acquiring data in a distributed storage system |
CN108701005A (zh) * | 2016-02-18 | 2018-10-23 | 华为技术有限公司 | 数据更新技术 |
CN106227731A (zh) * | 2016-07-06 | 2016-12-14 | 联想(北京)有限公司 | 一种数据处理方法、装置及分布式文件系统 |
CN106547859A (zh) * | 2016-10-21 | 2017-03-29 | 杭州朗和科技有限公司 | 一种多租户数据存储系统下的数据文件的存储方法及装置 |
CN107094186A (zh) * | 2017-06-15 | 2017-08-25 | 深圳市云舒网络技术有限公司 | 一种分布式存储系统的纠删码优化方法 |
US20200364109A1 (en) * | 2017-11-21 | 2020-11-19 | Sony Semiconductor Solutions Corporation | Memory controller, memory, memory system, information processing system, and method of control thereof |
CN110262922A (zh) * | 2019-05-15 | 2019-09-20 | 中国科学院计算技术研究所 | 基于副本数据日志的纠删码更新方法及系统 |
US20200393972A1 (en) * | 2019-06-12 | 2020-12-17 | International Business Machines Corporation | Wear-aware block mode conversion in non-volatile memory |
CN110347344A (zh) * | 2019-07-19 | 2019-10-18 | 北京计算机技术及应用研究所 | 一种基于分布式存储系统的自动配置块存储方法 |
CN113434500A (zh) * | 2019-08-20 | 2021-09-24 | 北京奥星贝斯科技有限公司 | 表连接方法、装置、分布式数据库系统、服务器及介质 |
US20210181977A1 (en) * | 2019-12-16 | 2021-06-17 | International Business Machines Corporation | Optimizing atomic writes to a storage device |
WO2021223236A1 (en) * | 2020-05-08 | 2021-11-11 | Qualcomm Incorporated | Unequal erasure protection for prioritized data transmission |
CN112199054A (zh) * | 2020-12-07 | 2021-01-08 | 上海七牛信息技术有限公司 | 一种文件存储的方法及系统 |
CN113626404A (zh) * | 2021-06-30 | 2021-11-09 | 济南浪潮数据技术有限公司 | 分布式文件系统嵌套目录配额的控制方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114115735B (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110291509B (zh) | 在分散存储网络的区域中存储数据的方法和系统 | |
US8972779B2 (en) | Method of calculating parity in asymetric clustering file system | |
US11074129B2 (en) | Erasure coded data shards containing multiple data objects | |
US7546321B2 (en) | System and method for recovery from failure of a storage server in a distributed column chunk data store | |
CN113176858B (zh) | 数据处理方法、存储系统及存储设备 | |
US7716445B2 (en) | Method and system for storing a sparse file using fill counts | |
US9734014B2 (en) | Virtual memory mapping in a dispersed storage network | |
US9207870B2 (en) | Allocating storage units in a dispersed storage network | |
US11442627B2 (en) | Data compression utilizing low-ratio compression and delayed high-ratio compression | |
US20210019083A1 (en) | Application storage segmentation reallocation | |
US11797387B2 (en) | RAID stripe allocation based on memory device health | |
US11200159B2 (en) | System and method for facilitating efficient utilization of NAND flash memory | |
US8495010B2 (en) | Method and system for adaptive metadata replication | |
US11385823B2 (en) | Method, electronic device and computer program product for rebuilding disk array | |
CN110147203B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN109918352B (zh) | 存储器系统和存储数据的方法 | |
US11561707B2 (en) | Allocating data storage based on aggregate duplicate performance | |
CN113396566A (zh) | 分布式存储系统中基于全面i/o监测的资源分配 | |
US7865673B2 (en) | Multiple replication levels with pooled devices | |
WO2023051713A1 (en) | Systems, methods, devices, and media for data processing | |
US20190347165A1 (en) | Apparatus and method for recovering distributed file system | |
CN117075821A (zh) | 一种分布式存储方法、装置、电子设备及存储介质 | |
CN115562595B (zh) | 一种卷创建方法及装置、卷读写方法及装置、电子设备 | |
CN114115735B (zh) | 写入数据的方法及装置 | |
WO2023082629A1 (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 |