CN115344214A - 数据读写方法、装置、服务器和计算机可读存储介质 - Google Patents
数据读写方法、装置、服务器和计算机可读存储介质 Download PDFInfo
- Publication number
- CN115344214A CN115344214A CN202211032995.0A CN202211032995A CN115344214A CN 115344214 A CN115344214 A CN 115344214A CN 202211032995 A CN202211032995 A CN 202211032995A CN 115344214 A CN115344214 A CN 115344214A
- Authority
- CN
- China
- Prior art keywords
- data
- queue
- parts
- read
- storage node
- 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
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
- 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/1044—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 with specific ECC/EDC distribution
-
- 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
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)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提出一种数据读写方法、装置、服务器和计算机可读存储介质,涉及存储技术领域。该方法根据CPU运行状态和存储节点集群的读数据时延,将数据读请求插入到第一队列或第二队列进行处理;第一队列对应的请求处理策略是要获取到N份原始数据,无需纠删计算就可得到要读取的数据;第二队列对应的请求处理策略是获取任意N份纠删数据,该N份纠删数据可能包含校验数据,需进行纠删计算才能得到要读取的数据,由于只需拿到任意N份纠删数据就能返回数据,相比需要拿到N份原始数据的方式耗时会更短,故通过结合CPU运行状态和集群时延情况,将读请求插入到合适的队列中进行处理,能够实现自适应低时延数据读取,从而提高数据读取速度。
Description
技术领域
本发明涉及存储技术领域,具体而言,涉及一种数据读写方法、装置、服务器和计算机可读存储介质。
背景技术
纠删码(Erasure Coding,EC)是一种编码技术,它可以将N份原始数据,增加M份校验数据,并能通过N+M份中的任意N份数据,还原为原始数据。如果有任意小于等于M份的数据失效,仍然能通过剩下的数据还原出来。将纠删码技术应用于存储领域,可以有效提高数据的容错性。
当前使用纠删码技术的存储方案中,在进行数据读取时,一般是根据客户端的访问请求,获得所请求数据在存储节点集群中的具体位置,从各存储节点读取相应的数据,等到各存储节点都返回数据后向客户端返回读取结果。当存储节点集群中存在时延非常大的存储节点时,该方案会严重制约整个存储系统的数据读取速度。
发明内容
有鉴于此,本发明的目的在于提供一种数据读写方法、装置、服务器和计算机可读存储介质,以提高存储系统的数据读取速度。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明提供一种数据读写方法,应用于服务器,所述服务器与存储节点集群通信,所述存储节点集群用于存储所述服务器对待写数据进行纠删编码得到的N+M份纠删数据,所述N+M份纠删数据包括N份原始数据和M份校验数据,N和M为正整数;所述方法包括:
当接收到数据读请求时,确定所述服务器的CPU运行状态和所述存储节点集群对应的读数据时延;
根据所述CPU运行状态和所述读数据时延,将所述数据读请求插入第一队列或者第二队列,并分别处理所述第一队列和所述第二队列中的数据读请求;
当根据所述第一队列中的数据读请求,获取到待读取的第一目标数据对应的N份原始数据时,根据所述N份原始数据获得所述第一目标数据并返回给对应的客户端;当根据所述第二队列中的数据读请求,获取到待读取的第二目标数据对应的任意N份纠删数据时,根据所述N份纠删数据获得所述第二目标数据并返回给对应的客户端。
在可选的实施方式中,所述根据所述CPU运行状态和所述读数据时延,将所述数据读请求插入第一队列或者第二队列,包括:
在所述CPU运行状态为超负荷状态的情况下,将所述数据读请求插入第一队列;
在所述CPU运行状态为低负荷状态,且所述读数据时延处于预设的高时延区间的情况下,将所述数据读请求插入所述第二队列;
在所述CPU运行状态为低负荷状态且所述读数据时延未处于预设的高时延区间的情况下,或者,在所述CPU运行状态为正常负荷状态的情况下,将所述数据读请求插入第一队列和第二队列二者之一。
在可选的实施方式中,所述根据所述N份原始数据获得所述第一目标数据并返回给对应的客户端,包括:
将所述N份原始数据进行拼接,得到所述第一目标数据;
将所述第一目标数据返回给对应的客户端。
在可选的实施方式中,所述根据所述N份纠删数据获得所述第二目标数据并返回给对应的客户端,包括:
若所述N份纠删数据中不存在校验数据,则将所述N份纠删数据进行拼接,得到所述第二目标数据,并将所述第二目标数据返回给对应的客户端;
若所述N份纠删数据中存在校验数据,则对所述N份纠删数据进行纠删计算,得到所述第二目标数据,并将所述第二目标数据返回给对应的客户端。
在可选的实施方式中,所述分别处理所述第一队列和所述第二队列中的数据读请求,包括:
根据所述第一队列中的数据读请求,确定待读取的第一目标数据对应的N份原始数据和M份校验数据在所述存储节点集群的各存储节点上的第一存储位置;根据所述第一存储位置向对应的存储节点发送第一子读取请求,以便各存储节点依据接收到的第一子读取请求返回对应的原始数据或者校验数据;
根据所述第二队列中的数据读请求,确定待读取的第二目标数据对应的N份原始数据和M份校验数据在所述存储节点集群的各存储节点上的第二存储位置;根据所述第二存储位置向对应的存储节点发送第二子读取请求,以便各存储节点依据接收到的第二子读取请求返回对应的原始数据或者校验数据。
在可选的实施方式中,所述方法还包括:
当接收到对待写数据的数据写请求时,获取所述待写数据对应的N+M份纠删数据;
确定所述N+M份纠删数据在所述存储节点集群的各存储节点上的第三存储位置;
根据所述第三存储位置向对应的存储节点发送子写入请求,以便各存储节点依据接收到的子写入请求对所述N+M份纠删数据进行存储;
当所述待写数据对应的N+M份纠删数据中,有N份纠删数据写入成功时,返回写入成功消息给对应的客户端;当所述待写数据对应的N+M份纠删数据中,有超过M份纠删数据写入失败时,返回写入失败消息给对应的客户端。
在可选的实施方式中,所述N+M份纠删数据对应一个数据组,所述N+M份纠删数据存储在所述数据组对应的N+M个块上;其中,同一数据组对应的N+M个块分别放置在所述存储节点集群中的存储节点的不同磁盘上,且所述存储节点集群的每个存储节点放置的属于同一数据组的块数目不超过M。
第二方面,本发明提供一种数据读写装置,应用于服务器,所述服务器与存储节点集群通信,所述存储节点集群用于存储所述服务器对待写数据进行纠删编码得到的N+M份纠删数据,所述N+M份纠删数据包括N份原始数据和M份校验数据,N和M为正整数;所述装置包括:
确定模块,用于当接收到数据读请求时,确定所述服务器的CPU运行状态和所述存储节点集群对应的读数据时延;
请求处理模块,用于根据所述CPU运行状态和所述读数据时延,将所述数据读请求插入第一队列或者第二队列,并分别处理所述第一队列和所述第二队列中的数据读请求;
数据处理模块,用于当根据所述第一队列中的数据读请求,获取到待读取的第一目标数据对应的N份原始数据时,根据所述N份原始数据获得所述第一目标数据并返回给对应的客户端;当根据所述第二队列中的数据读请求,获取到待读取的第二目标数据对应的任意N份纠删数据时,根据所述N份纠删数据获得所述第二目标数据并返回给对应的客户端。
第三方面,本发明提供一种服务器,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如前述实施方式中任一项所述的数据读写方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如前述实施方式中任一项所述的数据读写方法的步骤。
本发明实施例提供的数据读写方法、装置、服务器和计算机可读存储介质,当接收到数据读请求时,确定服务器的CPU运行状态和存储节点集群对应的读数据时延;根据CPU运行状态和读数据时延,将数据读请求插入第一队列或者第二队列;分别处理第一队列和第二队列中的数据读请求;当根据第一队列中的数据读请求,获取到待读取的第一目标数据对应的N份原始数据时,根据N份原始数据获得第一目标数据并返回给对应的客户端;当根据第二队列中的数据读请求,获取到待读取的第二目标数据对应的任意N份纠删数据时,根据N份纠删数据获得第二目标数据并返回给对应的客户端。第一队列对应的请求处理策略是要获取到N份原始数据,不需要进行纠删计算就可以得到要读取的第一目标数据;而第二队列对应的请求处理策略是获取任意N份纠删数据,该N份纠删数据中可能包含校验数据,需要进行纠删计算才能得到要读取的第二目标数据,由于只需拿到任意N份纠删数据就可以返回数据,相比于需要拿到N份原始数据的方式耗时会更短,故通过结合CPU运行状态和存储节点集群当前的时延情况,将数据读请求插入到合适的队列中进行处理,能够实现自适应低时延数据读取,从而提高数据读取速度。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了适用于本发明实施例的一种应用场景示意图;
图2示出了3存储节点和4+2纠删比情况下的读写请求拆分示意图;
图3示出了本发明实施例提供的数据读写方法的一种流程示意图;
图4示出了tgt的内部架构示意图;
图5示出了CPU的使用率和读数据时延的二维图;
图6示出了3存储节点和2+1纠删比情况下的单次读数据流程示意图;
图7示出了本发明实施例提供的数据读写方法的另一种流程示意图;
图8示出了3存储节点和2+1纠删比情况下的单次写数据流程示意图;
图9示出了3存储节点和4+2纠删比情况下的块放置示意图;
图10示出了5存储节点和4+2纠删比情况下的块放置示意图;
图11示出了本发明实施例提供的数据读写装置的一种功能模块图;
图12示出了本发明实施例提供的服务器的一种方框示意图。
图标:10-存储系统;100-终端设备;200-服务器;300-存储节点集群;400-数据读写装置;210-存储器;220-处理器;230-通信模块;410-确定模块;420-请求处理模块;430-数据处理模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
请参照图1,为适用于本发明实施例的一种应用场景示意图。如图1所示,存储系统10包括终端设备100、服务器200和存储节点集群300,存储节点集群300包括多个存储节点(如DN1、DN2、…、DNx),终端设备100与服务器200通信连接,服务器200与存储节点集群300中的各存储节点均通信连接。该存储节点集群300用于存储服务器200对待写数据进行纠删编码得到的N+M份纠删数据,该N+M份纠删数据包括N份原始数据和M份校验数据,N和M为正整数。
在本实施例中,终端设备100上运行有客户端(client),服务器200上运行有服务进程(tgt),客户端通过ISCSI(Internet Small Computer System Interface,互联网小型计算机系统接口)协议连接到tgt处,tgt在某个端口(一般为3260)上监听,对客户端提供lun(logical unit number,逻辑单元号)的读写服务,根据实际配置,tgt可提供一个或者多个lun的读写服务。
对于到达tgt侧的请求可以描述为(lun,write/read,offset,length),表示往lun的offset处写入或者读取length长度的数据。在本实施例中,当读写请求到达tgt侧时,tgt将读写请求进行拆分,分布到各个存储节点上去,以达到容量均衡和加快读写的目的。通过对读写请求进行合理拆分,在到达一定条件时即返回,可有效地加快存储系统的读写速度,降低整体存储系统的读写时延。
下面对读写请求拆分过程进行说明,如图2所示,假设tgt以单个的lun的形式对client提供服务,当读写请求到达tgt时,tgt先计算出本次读写请求所在的大文件位置。因为大文件的大小总是规定为1G大小,那么读写请求(lun,write/read,offset,length)所在的大文件可以表示为:fileid=offset/1G;
再往下拆分obj(组)和block(块)时,就和纠删比N+M相关。其中纠删比N+M表示N份数据经过纠删编码可生成N+M份数据,其中N份数据在纠删编码的前后不会变化,称之为原始数据;M份数据是经纠删编码新生成的数据,称之为校验数据。
假设规定block的大小sizeblock为64M,那么obj的大小就为:sizeobj=sizeblock*N;
由此可得各个纠删比情况下的obj拆分情况,纠删比为4+2情况下拆分成4个obj,纠删比为2+1情况下拆分成8个obj,各个常用纠删比拆分情况如表1所示:
表1
纠删比(N+M) | object大小(M) | 拆分obj个数 |
16+1 | 1024 | 1 |
16+4 | 1024 | 1 |
16+2 | 1024 | 1 |
8+2 | 512 | 2 |
8+1 | 512 | 2 |
4+2 | 256 | 4 |
4+1 | 256 | 4 |
2+1 | 128 | 8 |
1+1 | 64 | 16 |
也即是说,每个大文件按照纠删比情况被拆分为多个数据组(obj),每个数据组对应N+M个块(block),该N+M个块分布在存储节点集群300中各个存储节点的各个磁盘上,每个块可以理解为磁盘上一定大小的存储空间,用于存储数据。如此,根据得到的大文件内的offset和length,再结合obj大小,便可计算得到obj的ID,进而从obj对应的各block读写数据。
例如,写数据时,服务器200通过tgt对待写数据进行纠删编码可得到N+M份纠删数据(包括N份原始数据和M份校验数据),并将该N+M份纠删数据存储到对应obj的N+M个block上。其中,存放原始数据的block称为数据块,存放校验数据的block称为校验块。
在本实施例中,从大文件层到obj层的读写顺序都从前往后写,假如要把整个lun从头到尾写数据,那大文件层的写顺序是先写满第1个1G大文件,再写第2个1G大文件,从前往后写;obj层的写顺序亦是如此。但是,到了block层,便不是从前往后写了,而是“并行”地写block。如此,某次读写的时延便取决于最慢的那个存储节点的时延,在某些情况下,如果某个存储节点的时延非常大,就会严重制约存储系统的读写速度。
基于此,本发明实施例提出了一种数据读写方法、装置、服务器和计算机可读存储介质,其将同一个lun下面的数据,以大文件的形式,分散到各个存储节点,在读写的时候采用自适应的低时延读写方案,能够迅速的读取和写入数据,降低数据的读写时延。其中,针对数据读请求,其根据CPU运行状态和存储节点集群的读数据时延,将数据读请求插入到第一队列或第二队列进行处理;第一队列对应的请求处理策略是要获取到N份原始数据,无需纠删计算就可得到要读取的数据;第二队列对应的请求处理策略是获取任意N份纠删数据,该N份纠删数据可能包含校验数据,需进行纠删计算才能得到要读取的数据,由于只需拿到任意N份纠删数据就能返回数据,相比需要拿到N份原始数据的方式耗时会更短,故通过结合CPU运行状态和集群时延情况,将读请求插入到合适的队列中进行处理,能够实现自适应低时延数据读取,从而提高数据读取速度。针对数据写请求,其在收到N份数据写入成功或者超过M份数据写入失败时返回上层客户端,从而避免高时延节点对写流程的影响。
下面将结合附图对本发明的各实施例进行详细说明。
请参照图3,为本发明实施例提供的数据读写方法的一种流程示意图。需要说明的是,本发明实施例的数据读写方法并不以图3以及以下的具体顺序为限制,应当理解,在其他实施例中,本发明实施例的数据读写方法中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该数据读写方法可以上述的服务器200执行,下面将对图3所示的具体流程进行详细阐述。
步骤S301,当接收到数据读请求时,确定服务器的CPU运行状态和存储节点集群对应的读数据时延。
在本实施例中,服务器在接收到客户端的数据读请求时,tgt会统计服务器当前的CPU运行状态和存储节点集群对应的读数据时延,以判断存储系统当前的工作状态。
其中,服务器的CPU运行状态可以通过获取CPU的使用率来确定;存储节点集群对应的读数据时延可以通过统计各存储节点收发消息的平均时延获得。
步骤S302,根据CPU运行状态和读数据时延,将数据读请求插入第一队列或者第二队列,并分别处理第一队列和第二队列中的数据读请求。
在本实施例中,由于服务器200在向存储节点集群写入数据时,是将对待写数据进行纠删编码得到的N+M份纠删数据,分别存储到对应obj的N+M个block上,而根据纠删计算的特性,在读数据时,只需要读出任意N份纠删数据就可以还原出想要读取的数据。如果读出的N份纠删数据刚好都是原始数据,那么不需要纠删计算就可还原出想要的数据;如果读出的N份纠删数据中包含校验数据,那么需要纠删计算才可得到想要的数据。
基于此,本实施例中设计第一队列和第二队列,并针对插入第一队列和第二队列中的数据读请求采用不同的请求处理策略。其中,第一队列对应的请求处理策略是要获取到N份原始数据,以便无需纠删计算就可得到要读取的数据;第二队列对应的请求处理策略是获取任意N份纠删数据,该N份纠删数据可能包含校验数据,需进行纠删计算才能得到要读取的数据。
如图4所示,client的数据读请求先达到tgt的统计模块,统计模块会统计CPU运行状态和存储节点集群对应的读数据时延,进而根据CPU运行状态和读数据时延,决定本次数据读请求是插入第一队列还是第二队列,tgt的消息处理模块按照相应的请求处理策略分别处理第一队列和第二队列中的数据读请求。
步骤S303,当根据第一队列中的数据读请求,获取到待读取的第一目标数据对应的N份原始数据时,根据N份原始数据获得第一目标数据并返回给对应的客户端;当根据第二队列中的数据读请求,获取到待读取的第二目标数据对应的任意N份纠删数据时,根据N份纠删数据获得第二目标数据并返回给对应的客户端。
可选地,服务器200在根据第一队列中的数据读请求,获取到待读取的第一目标数据对应的N份原始数据时,可将该N份原始数据进行拼接,得到第一目标数据,并将第一目标数据返回给对应的客户端。
可选地,服务器200在根据第二队列中的数据读请求,获取到待读取的第二目标数据对应的任意N份纠删数据时,若N份纠删数据中不存在校验数据,则将N份纠删数据进行拼接,得到第二目标数据,并将第二目标数据返回给对应的客户端;若N份纠删数据中存在校验数据,则对N份纠删数据进行纠删计算,得到第二目标数据,并将第二目标数据返回给对应的客户端。
在本实施例中,服务器200处理第一队列中的数据读请求时,由于不需要进行纠删计算,故可以节省CPU,但是必须要等到N份原始数据才能获得第一目标数据并返回客户端,故耗时可能会更长;服务器200处理第二队列中的数据读请求时,由于只需拿到任意N份纠删数据就可获得第二目标数据并返回客户端,故耗时会更短,但是N份纠删数据中可能包含校验数据,需进行纠删计算,故会消耗CPU。
如此,服务器通过结合CPU运行状况和存储节点集群的时延情况,将数据读请求插入到合适的队列中进行处理,可有效平衡CPU的消耗和数据读取时延,并在适当情况下,通过消耗CPU换取时延的减少。
可见,本发明实施例提供的数据读写方法,服务器根据CPU运行状态和读数据时延,将接收到的数据读请求插入第一队列或者第二队列进行处理;第一队列对应的请求处理策略是要获取到N份原始数据,不需要进行纠删计算就可以得到要读取的第一目标数据;而第二队列对应的请求处理策略是获取任意N份纠删数据,该N份纠删数据中可能包含校验数据,需要进行纠删计算才能得到要读取的第二目标数据,由于只需拿到任意N份纠删数据就可以返回数据,相比于需要拿到N份原始数据的方式耗时会更短,故通过结合CPU运行状态和存储节点集群当前的时延情况,将数据读请求插入到合适的队列中进行处理,能够实现自适应低时延数据读取,从而提高数据读取速度。
可选地,上述步骤S302中根据CPU运行状态和读数据时延,将数据读请求插入第一队列或者第二队列,可以包括:
在CPU运行状态为超负荷状态的情况下,将数据读请求插入第一队列;在CPU运行状态为低负荷状态,且读数据时延处于预设的高时延区间的情况下,将数据读请求插入第二队列;在CPU运行状态为低负荷状态且读数据时延未处于预设的高时延区间的情况下,或者,在CPU运行状态为正常负荷状态的情况下,将数据读请求插入第一队列和第二队列二者之一。
在本实施例中,由于处理第一队列中的数据读请求消耗CPU较少但耗时大,而处理第二队列中的数据读请求消耗CPU较多但耗时小,故当判断CPU运行状态为超负荷状态时,表明系统负荷已经达到最大,需要减少第二队列中的请求数目,将数据读请求插入第一队列中;当判断CPU运行状态为低负荷状态,且读数据时延处于预设的高时延区间,表明系统时延较高,系统负荷不是很高,可以增加第二队列中的请求数目,将数据读请求插入第二队列中,以利用纠删计算来规避高时延节点对读数据的影响;当判断CPU运行状态为低负荷状态且读数据时延未处于预设的高时延区间时,表明系统负荷和时延都不是很高,可以将数据读请求按照设定规则选择第一队列或者第二队列插入;当判断CPU运行状态为正常负荷状态时,此时无论系统时延状况如何,考虑到系统已经存在一定负荷,也是将数据读请求按照设定规则选择第一队列或者第二队列插入。其中,设定规则可以根据实际需要设置,比如随机选取第一队列或者第二队列插入,或者第一队列和第二队列中的请求数目的比例保持在设定范围内。
在一个示例中,可以将CPU的使用率和读数据时延以图5所示的二维图表示。其中,横轴代表CPU的使用率,纵轴代表读数据时延。读数据时延按照业务的需求,分为高低水位;CPU的使用率根据tgt硬件水平,也设置高低水位。高水位代表达到了时延或者CPU达到硬件规格的上限不能再增加;高低水位之间代表业务的正常状态;低水位表示系统处于最优状态。据此可将系统的工作状态划分为图5中的9个区域,其中区域③⑥⑨对应于CPU运行状态为超负荷状态的情况;区域④⑦对应于CPU运行状态为低负荷状态,且读数据时延处于预设的高时延区间的情况;区域①对应于CPU运行状态为低负荷状态且读数据时延未处于预设的高时延区间的情况,区域②⑤⑧对应于CPU运行状态为正常负荷状态的情况。为了尽可能规避时延高的存储节点对读的影响,需要系统优先工作在区域①,其次是区域②、区域④和区域⑤。
假设当前第一队列和第二队列中的请求数目的比例为α:β,α+β=1;
当系统的工作状态处于区域③⑥⑨时,表明负荷已经达到最大,那这时候需要减小β,当β为0时,便不再减小,不往第二队列插入请求;
当系统的工作状态处于①时,表明系统处于最优状态,保持当前的α、β值不变或者在较小范围内波动;
当系统的工作状态处于区域②时,说明系统通过纠删计算,规避了高时延节点,导致CPU使用率上长,但是还在可接受范围,保持当前的α、β值不变或者在较小范围内波动。
当系统的工作状态处于区域④⑦时,说明系统时延较高,需要增大β值,以利用纠删计算规避高时延节点。
当系统的工作状态处于区域⑤时,说明系统存在负荷,但是时延可接受,保持当前的α、β值不变或者在较小范围内波动。
当系统状态处于区域⑧时,说明系统存在时延较大节点,但是系统负荷也较高,也只能保持当前的α、β值不变或者在较小范围内波动。
需要说明的是,上述采用高低水位的方式来划分系统所处状态,仅为一种示例;在实际应用中,为了得到更加精细的控制,可以划分更多的水位,其原理和高低水位类似,这里不再赘述。
可选地,上述步骤S302中分别处理第一队列和第二队列中的数据读请求,包括:
根据第一队列中的数据读请求,确定待读取的第一目标数据对应的N份原始数据和M份校验数据在存储节点集群的各存储节点上的第一存储位置;根据第一存储位置向对应的存储节点发送第一子读取请求,以便各存储节点依据接收到的第一子读取请求返回对应的原始数据或者校验数据;根据第二队列中的数据读请求,确定待读取的第二目标数据对应的N份原始数据和M份校验数据在存储节点集群的各存储节点上的第二存储位置;根据第二存储位置向对应的存储节点发送第二子读取请求,以便各存储节点依据接收到的第二子读取请求返回对应的原始数据或者校验数据。
在本实施例中,服务器200处理第一队列和第二队列中的数据读请求的过程类似,如图6所示,以3存储节点和2+1纠删比为例,tgt处理每个数据读请求时,先计算出待读取的数据在各存储节点DN1、DN2、DN3上的存储位置,然后分别向各存储节点DN1、DN2、DN3发送读版本号请求,当获取到各存储节点DN1、DN2、DN3返回的有效版本号大于等于N个时,向各存储节点DN1、DN2、DN3发送子读取请求,多余的读版本响应会被丢弃,最后根据各存储节点DN1、DN2、DN3根据子读取请求返回的数据获得要读取的目标数据,并返回给客户端。
可选地,请参照图7,本发明实施例提供的数据读写方法还可以包括:
步骤S701,当接收到对待写数据的数据写请求时,获取待写数据对应的N+M份纠删数据;
步骤S702,确定N+M份纠删数据在存储节点集群的各存储节点上的第三存储位置;
步骤S703,根据第三存储位置向对应的存储节点发送子写入请求,以便各存储节点依据接收到的子写入请求对N+M份纠删数据进行存储;
步骤S704,当待写数据对应的N+M份纠删数据中,有N份纠删数据写入成功时,返回写入成功消息给对应的客户端;当待写数据对应的N+M份纠删数据中,有超过M份纠删数据写入失败时,返回写入失败消息给对应的客户端。
在本实施例中,当tgt接收到对待写数据的数据写请求时,依据纠删比N+M对待写数据进行纠删编码计算,得到对应的N+M份纠删数据,即N份原始数据和M份校验数据。然后根据数据写请求中携带的offset和length,计算出N+M份纠删数据在存储节点集群的各存储节点上的第三存储位置,并向对应的存储节点发送子写入请求,对该N+M份纠删数据进行存储。当tgt收到有N份数据写入成功或者超过M份数据写入失败时返回上层客户端,从而避免高时延节点对写流程的影响。对数据已经返回上层后达到的写响应,在后台进行数据确认或者回滚。例如,可参见图8所示的数据写流程。
在实际应用中,为了保证在掉节点或者掉磁盘的时候数据能够恢复,需要合理在节点存储集群中合理放置块(block)。由于N+M份纠删数据对应一个数据组,N+M份纠删数据存储在数据组对应的N+M个块上,则可设置同一数据组对应的N+M个块分别放置在存储节点集群中的存储节点的不同磁盘上,且存储节点集群的每个存储节点放置的属于同一数据组的块数目不超过M。
也即是说,存储节点集群中的所有存储节点上的磁盘总数目需大于等于N+M,单个存储节点上最多放置M个块,在放置块时,尽量将同一数据组下的块均衡的分布在各个存储节点的各个磁盘上,同一数据组的两个块不同时放在一个磁盘上。
在一种实现方式中,假设存储节点数目为num,对于一组obj而言,存储节点集群中共有(N+M)%num个存储节点放置的块数目是(N+M)/num+1(本实施例中称此类存储节点为A类型节点),有num-(N+M)%num个存储节点放置的块数目是(N+M)/num(本实施例中称此类存储节点为B类型节点)。考虑到读写数据时,总是优先读写前N个块,故每组obj的前N个块在放置的时候,优先选择B类型节点。
以3存储节点和4+2纠删比为例,如图9所示,A类型节点个数为(4+2)%3=0个,其上放置的块数目为(4+2)/3+1=3;B类型节点个数为3-0=3个,其上放置的块数目为(4+2)/3=2。
以5存储节点和4+2纠删比,如图10所示,A类型节点个数为(4+2)%5=1个,其上放置的块数目为(4+2)/5+1=2;B类型的节点个数为5-1=4个,其上放置的块数目为(4+2)/5=1;前N个块优先选择B类型节点。
如此,本发明实施例仅利用块的合理放置和适当的CPU计算,就可以规避至少M个存储节点的网络时延波动。另外,也不需要特别的缓存技术,不需要用存储换时间,而是利用负荷可接受范围的CPU算力来换取读写时延的降低,从而有效地加快存储系统的读写速度,降低整体存储系统的读写时延。
为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种数据读写装置的实现方式。请参阅图11,为本发明实施例提供的数据读写装置400的一种功能模块图。需要说明的是,本实施例所提供的数据读写装置400,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该数据读写装置400包括:确定模块410、请求处理模块420、数据处理模块430。
该确定模块410,用于当接收到数据读请求时,确定服务器的CPU运行状态和存储节点集群对应的读数据时延。
可以理解,该确定模块410可以执行上述步骤S301。
该请求处理模块420,用于根据CPU运行状态和读数据时延,将数据读请求插入第一队列或者第二队列,并分别处理第一队列和第二队列中的数据读请求。
可以理解,该请求处理模块420可以执行上述步骤S302。
该数据处理模块430,用于当根据第一队列中的数据读请求,获取到待读取的第一目标数据对应的N份原始数据时,根据N份原始数据获得第一目标数据并返回给对应的客户端;当根据第二队列中的数据读请求,获取到待读取的第二目标数据对应的任意N份纠删数据时,根据N份纠删数据获得第二目标数据并返回给对应的客户端。
可以理解,该数据处理模块430可以执行上述步骤S303。
可选地,N+M份纠删数据对应一个数据组,N+M份纠删数据存储在数据组对应的N+M个块上;其中,同一数据组对应的N+M个块分别放置在存储节点集群中的存储节点的不同磁盘上,且存储节点集群的每个存储节点放置的属于同一数据组的块数目不超过M。
可选地,该请求处理模块420具体用于在CPU运行状态为超负荷状态的情况下,将数据读请求插入第一队列;在CPU运行状态为低负荷状态,且读数据时延处于预设的高时延区间的情况下,将数据读请求插入第二队列;在CPU运行状态为低负荷状态且读数据时延未处于预设的高时延区间的情况下,或者,在CPU运行状态为正常负荷状态的情况下,将数据读请求插入第一队列和第二队列二者之一。
可选地,该请求处理模块420还具体用于根据第一队列中的数据读请求,确定待读取的第一目标数据对应的N份原始数据和M份校验数据在存储节点集群的各存储节点上的第一存储位置;根据第一存储位置向对应的存储节点发送第一子读取请求,以便各存储节点依据接收到的第一子读取请求返回对应的原始数据或者校验数据;根据第二队列中的数据读请求,确定待读取的第二目标数据对应的N份原始数据和M份校验数据在存储节点集群的各存储节点上的第二存储位置;根据第二存储位置向对应的存储节点发送第二子读取请求,以便各存储节点依据接收到的第二子读取请求返回对应的原始数据或者校验数据。
可选地,该数据处理模块430具体用于将N份原始数据进行拼接,得到第一目标数据;将第一目标数据返回给对应的客户端。
可选地,该数据处理模块430还具体用于若N份纠删数据中不存在校验数据,则将N份纠删数据进行拼接,得到第二目标数据,并将第二目标数据返回给对应的客户端;若N份纠删数据中存在校验数据,则对N份纠删数据进行纠删计算,得到第二目标数据,并将第二目标数据返回给对应的客户端。
可选地,该请求处理模块420还用于当接收到对待写数据的数据写请求时,获取待写数据对应的N+M份纠删数据;确定N+M份纠删数据在存储节点集群的各存储节点上的第三存储位置;根据第三存储位置向对应的存储节点发送子写入请求,以便各存储节点依据接收到的子写入请求对N+M份纠删数据进行存储;当待写数据对应的N+M份纠删数据中,有N份纠删数据写入成功时,返回写入成功消息给对应的客户端;当待写数据对应的N+M份纠删数据中,有超过M份纠删数据写入失败时,返回写入失败消息给对应的客户端。
可以理解,该请求处理模块420还可以执行上述步骤S701~S704。
可见,本发明实施例提供的数据读写装置,包括确定模块、请求处理模块和数据处理模块;确定模块用于当接收到数据读请求时,确定服务器的CPU运行状态和存储节点集群对应的读数据时延;请求处理模块用于根据CPU运行状态和读数据时延,将数据读请求插入第一队列或者第二队列,并分别处理第一队列和第二队列中的数据读请求;数据处理模块用于当根据第一队列中的数据读请求,获取到待读取的第一目标数据对应的N份原始数据时,根据N份原始数据获得第一目标数据并返回给对应的客户端;当根据第二队列中的数据读请求,获取到待读取的第二目标数据对应的任意N份纠删数据时,根据N份纠删数据获得第二目标数据并返回给对应的客户端。第一队列对应的请求处理策略是要获取到N份原始数据,不需要进行纠删计算就可以得到要读取的第一目标数据;而第二队列对应的请求处理策略是获取任意N份纠删数据,该N份纠删数据中可能包含校验数据,需要进行纠删计算才能得到要读取的第二目标数据,由于只需拿到任意N份纠删数据就可以返回数据,相比于需要拿到N份原始数据的方式耗时会更短,故通过结合CPU运行状态和存储节点集群当前的时延情况,将数据读请求插入到合适的队列中进行处理,能够实现自适应低时延数据读取,从而提高数据读取速度。
请参照图12,为本发明实施例提供的服务器200的一种方框示意图。服务器200包括存储器210、处理器220及通信模块230。存储器210、处理器220以及通信模块230各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,存储器210用于存储程序或者数据。存储器210可以是,但不限于,随机存取存储器(RandomAccessMemory,RAM),只读存储器(ReadOnlyMemory,ROM),可编程只读存储器(ProgrammableRead-OnlyMemory,PROM),可擦除只读存储器(ErasableProgrammableRead-OnlyMemory,EPROM),电可擦除只读存储器(ElectricErasableProgrammableRead-OnlyMemory,EEPROM)等。
处理器220用于读/写存储器210中存储的数据或程序,并执行相应地功能。例如,当存储器210中存储的计算机程序被处理器220执行时,可以实现上述各实施例所揭示的数据读写方法。
通信模块230用于通过网络建立服务器200与其它通信终端之间的通信连接,并用于通过网络收发数据。
应当理解的是,图12所示的结构仅为服务器200的结构示意图,服务器200还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。图12中所示的各组件可以采用硬件、软件或其组合实现。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器220执行时实现上述各实施例所揭示的数据读写方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据读写方法,其特征在于,应用于服务器,所述服务器与存储节点集群通信,所述存储节点集群用于存储所述服务器对待写数据进行纠删编码得到的N+M份纠删数据,所述N+M份纠删数据包括N份原始数据和M份校验数据,N和M为正整数;所述方法包括:
当接收到数据读请求时,确定所述服务器的CPU运行状态和所述存储节点集群对应的读数据时延;
根据所述CPU运行状态和所述读数据时延,将所述数据读请求插入第一队列或者第二队列,并分别处理所述第一队列和所述第二队列中的数据读请求;
当根据所述第一队列中的数据读请求,获取到待读取的第一目标数据对应的N份原始数据时,根据所述N份原始数据获得所述第一目标数据并返回给对应的客户端;当根据所述第二队列中的数据读请求,获取到待读取的第二目标数据对应的任意N份纠删数据时,根据所述N份纠删数据获得所述第二目标数据并返回给对应的客户端。
2.根据权利要求1所述的方法,其特征在于,所述根据所述CPU运行状态和所述读数据时延,将所述数据读请求插入第一队列或者第二队列,包括:
在所述CPU运行状态为超负荷状态的情况下,将所述数据读请求插入第一队列;
在所述CPU运行状态为低负荷状态,且所述读数据时延处于预设的高时延区间的情况下,将所述数据读请求插入所述第二队列;
在所述CPU运行状态为低负荷状态且所述读数据时延未处于预设的高时延区间的情况下,或者,在所述CPU运行状态为正常负荷状态的情况下,将所述数据读请求插入第一队列和第二队列二者之一。
3.根据权利要求1所述的方法,其特征在于,所述根据所述N份原始数据获得所述第一目标数据并返回给对应的客户端,包括:
将所述N份原始数据进行拼接,得到所述第一目标数据;
将所述第一目标数据返回给对应的客户端。
4.根据权利要求1所述的方法,其特征在于,所述根据所述N份纠删数据获得所述第二目标数据并返回给对应的客户端,包括:
若所述N份纠删数据中不存在校验数据,则将所述N份纠删数据进行拼接,得到所述第二目标数据,并将所述第二目标数据返回给对应的客户端;
若所述N份纠删数据中存在校验数据,则对所述N份纠删数据进行纠删计算,得到所述第二目标数据,并将所述第二目标数据返回给对应的客户端。
5.根据权利要求1所述的方法,其特征在于,所述分别处理所述第一队列和所述第二队列中的数据读请求,包括:
根据所述第一队列中的数据读请求,确定待读取的第一目标数据对应的N份原始数据和M份校验数据在所述存储节点集群的各存储节点上的第一存储位置;根据所述第一存储位置向对应的存储节点发送第一子读取请求,以便各存储节点依据接收到的第一子读取请求返回对应的原始数据或者校验数据;
根据所述第二队列中的数据读请求,确定待读取的第二目标数据对应的N份原始数据和M份校验数据在所述存储节点集群的各存储节点上的第二存储位置;根据所述第二存储位置向对应的存储节点发送第二子读取请求,以便各存储节点依据接收到的第二子读取请求返回对应的原始数据或者校验数据。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到对待写数据的数据写请求时,获取所述待写数据对应的N+M份纠删数据;
确定所述N+M份纠删数据在所述存储节点集群的各存储节点上的第三存储位置;
根据所述第三存储位置向对应的存储节点发送子写入请求,以便各存储节点依据接收到的子写入请求对所述N+M份纠删数据进行存储;
当所述待写数据对应的N+M份纠删数据中,有N份纠删数据写入成功时,返回写入成功消息给对应的客户端;当所述待写数据对应的N+M份纠删数据中,有超过M份纠删数据写入失败时,返回写入失败消息给对应的客户端。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述N+M份纠删数据对应一个数据组,所述N+M份纠删数据存储在所述数据组对应的N+M个块上;其中,同一数据组对应的N+M个块分别放置在所述存储节点集群中的存储节点的不同磁盘上,且所述存储节点集群的每个存储节点放置的属于同一数据组的块数目不超过M。
8.一种数据读写装置,其特征在于,应用于服务器,所述服务器与存储节点集群通信,所述存储节点集群用于存储所述服务器对待写数据进行纠删编码得到的N+M份纠删数据,所述N+M份纠删数据包括N份原始数据和M份校验数据,N和M为正整数;所述装置包括:
确定模块,用于当接收到数据读请求时,确定所述服务器的CPU运行状态和所述存储节点集群对应的读数据时延;
请求处理模块,用于根据所述CPU运行状态和所述读数据时延,将所述数据读请求插入第一队列或者第二队列,并分别处理所述第一队列和所述第二队列中的数据读请求;
数据处理模块,用于当根据所述第一队列中的数据读请求,获取到待读取的第一目标数据对应的N份原始数据时,根据所述N份原始数据获得所述第一目标数据并返回给对应的客户端;当根据所述第二队列中的数据读请求,获取到待读取的第二目标数据对应的任意N份纠删数据时,根据所述N份纠删数据获得所述第二目标数据并返回给对应的客户端。
9.一种服务器,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-7中任一项所述的数据读写方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的数据读写方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211032995.0A CN115344214A (zh) | 2022-08-26 | 2022-08-26 | 数据读写方法、装置、服务器和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211032995.0A CN115344214A (zh) | 2022-08-26 | 2022-08-26 | 数据读写方法、装置、服务器和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115344214A true CN115344214A (zh) | 2022-11-15 |
Family
ID=83953834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211032995.0A Pending CN115344214A (zh) | 2022-08-26 | 2022-08-26 | 数据读写方法、装置、服务器和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115344214A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116954523A (zh) * | 2023-09-20 | 2023-10-27 | 苏州元脑智能科技有限公司 | 一种存储系统、数据存储方法、数据读取方法和存储介质 |
-
2022
- 2022-08-26 CN CN202211032995.0A patent/CN115344214A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116954523A (zh) * | 2023-09-20 | 2023-10-27 | 苏州元脑智能科技有限公司 | 一种存储系统、数据存储方法、数据读取方法和存储介质 |
CN116954523B (zh) * | 2023-09-20 | 2024-01-26 | 苏州元脑智能科技有限公司 | 一种存储系统、数据存储方法、数据读取方法和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108780386B (zh) | 一种数据存储的方法、装置和系统 | |
CN110515724B (zh) | 资源配置方法、装置、监视器及机器可读存储介质 | |
CN110750382A (zh) | 用于提高数据修复性能的最小存储再生码编码方法及系统 | |
US20100306466A1 (en) | Method for improving disk availability and disk array controller | |
CN110737393A (zh) | 数据读取方法、设备和计算机程序产品 | |
CN107463342B (zh) | 一种cdn边缘节点文件的存储方法及装置 | |
CN106293492B (zh) | 一种存储管理方法及分布式文件系统 | |
CN103514216B (zh) | 基于数据库系统的流水号生成方法 | |
US11385823B2 (en) | Method, electronic device and computer program product for rebuilding disk array | |
US20100161897A1 (en) | Metadata server and disk volume selecting method thereof | |
CN101827121A (zh) | 在raid中创建文件的方法、服务端和系统 | |
CN111090394A (zh) | 一种基于卷级别raid的磁阵管理方法及装置 | |
CN115344214A (zh) | 数据读写方法、装置、服务器和计算机可读存储介质 | |
CN111666047A (zh) | 一种分布式系统中存储卷的生成方法和相关装置 | |
US20170308332A1 (en) | Method for writing data into storage system and storage system | |
CN110955545B (zh) | 一种数据完整性校验方法、系统及相关设备 | |
CN117520278A (zh) | 一种分布式文件系统多客户端高精度目录配额控制方法 | |
CN117591009A (zh) | 一种数据管理方法、存储装置及服务器 | |
CN113918083A (zh) | 分条管理方法、存储系统、分条管理装置及存储介质 | |
CN112104729A (zh) | 一种存储系统及其缓存方法 | |
US20170277610A1 (en) | System and method of data allocation providing increased reliability of storage | |
US7958259B2 (en) | Storage controller and method for determining client appropriateness | |
CN107045426B (zh) | 一种多副本读取方法和系统 | |
CN115470041A (zh) | 一种数据灾备管理方法及装置 | |
CN108932176B (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 |