CN109558236B - 访问条带的方法及其存储系统 - Google Patents
访问条带的方法及其存储系统 Download PDFInfo
- Publication number
- CN109558236B CN109558236B CN201710888216.XA CN201710888216A CN109558236B CN 109558236 B CN109558236 B CN 109558236B CN 201710888216 A CN201710888216 A CN 201710888216A CN 109558236 B CN109558236 B CN 109558236B
- Authority
- CN
- China
- Prior art keywords
- basic operation
- operation unit
- stripe
- execution
- units
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了访问条带的方法及其存储系统。所提供的访问条带的方法,包括:获取由多个基本操作单元组成的第一条带操作单元;依据所述第一条带操作单元获取第一基本操作单元,第一基本操作单元为访问条带分配资源;获取多个第二基本操作单元,每个第二基本操作单元访问为所述条带提供存储空间的存储设备之一;以及获取第三基本操作单元,第三基本操作单元指示访问条带完成,并释放所分配的资源。
Description
技术领域
本申请涉及存储系统,更具体地,涉及功能与性能可扩展的存储系统的IO处理架构。
背景技术
现有的RAID(RedundantArraysofIndependentDisks,独立磁盘冗余阵列)技术将多个物理驱动器(例如,磁盘)聚合成盘组,在盘组上划分条带,每个条带上通过冗余技术对数据提供保护。现有技术的RAID系统中,当多个驱动器中的一个或多个发生故障,会启动备用驱动器,并进行数据重构,以保持RAID系统的数据保护能力以及性能。在故障驱动器被更换后,需要再将备用驱动器中的数据复制回新驱动器。RAID系统可提供多种数据保护级别,例如,RAID5系统能纠正一块驱动器发生故障,而RAID6系统能纠正两块驱动器发生的故障。
RAID技术加长了IO路径,加大了计算开销。为了充分发挥多块SSD驱动器的性能,通常采用多核多CPU技术,尽可能让各个CPU并发处理IO请请求,以实现数据保护和高性能的目标。
发明内容
在本申请中,采用存储资源池架构,将驱动器提供的所有的存储资源进行池化处理,然后通过分配器将资源动态分配给存储对象。当驱动器盘出现故障时,针对存储对象进行重构。在存储系统的各驱动器资源使用不均衡时,发起数据迁移。
存储系统需要管理海量的存储资源,并提供扩展性,以迅速适应存储容量与计算资源的扩充。以及为应对大规模并发IO,希望分离IO的数据与对IO的处理过程,以提供具有更好的扩展性的存储系统。
根据本申请的第一方面,提供了根据本申请第一方面的第一处理IO请求的方法,包括:响应于接收IO请求,获取同IO请求对应的复合条带操作单元;其中复合条带操作单元包括一个或多个条带基本操作单元,每个条带基本操作单元包括一个或多个基本操作单元;复合条带操作单元,为所述复合条带操作单元所包括的一个或多个条带基本操作单元分配资源;复合条带操作单元按顺序执行所述一个或多个条带基本操作单元;以及指示所述IO请求处理完成。
根据本申请第一方面的第一处理IO请求的方法,提供了根据本申请第一方面的第二处理IO请求的方法,其中根据IO请求所访问的条带,为IO请求所访问的每个条带获取对应的复合条带操作单元;其中每个复合条带操作单元仅访问单一条带中被所述IO请求访问的区域。
根据本申请第一方面的第一或第二处理IO请求的方法,提供了根据本申请第一方面的第三处理IO请求的方法,其中根据IO请求的类型,获取同IO请求的类型相对应的复合条带操作单元。
根据本申请第一方面的第一至第三处理IO请求的方法之一,提供了根据本申请第一方面的第四处理IO请求的方法,还包括:响应于接收IO请求,还获取可用的IO处理单元,由获取的IO处理单元获取同IO请求对应的复合条带操作单元。
根据本申请第一方面的第四处理IO请求的方法,提供了根据本申请第一方面的第五处理IO请求的方法,其中若IO请求是写请求,为IO请求获取可用的IO处理单元;以及若IO请求是读请求,直接对IO请求进行处理。
根据本申请第一方面的第四或第五处理IO请求的方法,提供了根据本申请第一方面的第六处理IO请求的方法,其中指派给第一IO请求的IO处理单元专用于处理第一IO请求,在第一IO请求处理完成前,IO处理单元不会被指派给其他IO请求。
根据本申请第一方面的第四至第六处理IO请求的方法之一,提供了根据本申请第一方面的第七处理IO请求的方法,还包括:IO处理单元依据IO请求访问的地址范围识别提供所述地址范围的一个或多个条带,并为每个条带获取对应的复合条带操作单元。
根据本申请第一方面的第七处理IO请求的方法,提供了根据本申请第一方面的第八处理IO请求的方法,还包括:响应于IO请求要写第一条带,IO处理单元请求用于第一条带的锁,仅在请求锁成功后,才获取同写条带操作对应的复合条带操作单元。
根据本申请第一方面的第一至第八处理IO请求的方法之一,提供了根据本申请第一方面的第九处理IO请求的方法,其中,所述一个或多个条带基本操作单元包括第一条带基本操作单元与第二条带基本操作单元;第一条带基本操作单元用于处理读条带操作;所述复合条带操作单元为所述第一条带基本操作单元分配资源时,指定所访问的条带的分条并分配存储读出数据的存储空间;所述复合条带操作单元还控制先执行第一条带基本操作单元,响应于第一条带基本操作单元执行完成再执行第二条带基本操作单元。
根据本申请第一方面的第九处理IO请求的方法,提供了根据本申请第一方面的第十处理IO请求的方法,其中:第二条带基本操作单元用于重构条带;所述复合条带操作单元为所述第二条带基本操作单元分配资源时,指定存储用于重构条带的数据的存储空间,以及待写入数据的条带的分条。
根据本申请第一方面的第九处理IO请求的方法,提供了根据本申请第一方面的第十一处理IO请求的方法,其中:第二条带基本操作单元用于校验条带;所述复合条带操作单元为所述第二条带基本操作单元分配资源时,指定存储用于校验条带的数据的存储空间。
根据本申请第一方面的第一至第八处理IO请求的方法之一,提供了根据本申请第一方面的第十二处理IO请求的方法,还包括:所述复合条带操作单元依据IO请求的执行条件,选择所述一个或多个条带基本操作单元中的第一条带基本操作单元,为第一条带基本操作单元分配单元,并执行第一条带基本操作单元。
根据本申请第一方面的第一至第十二处理IO请求的方法之一,提供了根据本申请第一方面的第十三处理IO请求的方法,还包括:响应于添加对第一类型的IO请求的处理,注册由一个或多个条带基本操作单元组成的第一复合条带操作单元,其中第一复合条带操作单元记录其所包括的一个或多个条带基本操作单元的执行顺序,通过按指定的顺序执行第一复合条带操作单元所包括的一个或多个条带基本操作单元,来完成对对第一类型的IO请求的处理。
根据本申请第一方面的第十三处理IO请求的方法,提供了根据本申请第一方面的第十四处理IO请求的方法,还包括:响应于接收第一类型的IO请求,获取第一复合条带操作单元;第一复合条带操作单元,为其所包括的条带基本操作单元分配资源;第一复合条带操作单元按指定的顺序执行其所包括的条带基本操作单元;以及指示所述第一类型的IO请求处理完成。
根据本申请的第二方面,提供了根据本申请第二方面的一种计算机,包括处理器与存储器,所述存储器中存储包括指令的程序,当被载入处理器并在处理器上执行时,所述程序使所述处理器执行根据本申请第一方面的第一至第十三处理IO请求的方法之一。
根据本申请的第三方面,提供了根据本申请第三方面的一种处理IO请求的系统,包括:复合条带操作单元获取模块,用于响应于接收IO请求,获取同IO请求对应的复合条带操作单元;其中复合条带操作单元包括一个或多个条带基本操作单元,每个条带基本操作单元包括一个或多个基本操作单元;资源分配模块,用于使复合条带操作单元,为所述复合条带操作单元所包括的一个或多个条带基本操作单元分配资源;条带基本操作单元执行模块,用于使复合条带操作单元按顺序执行所述一个或多个条带基本操作单元;以及指示模块,用于指示所述IO请求处理完成。
根据本申请的第四方面,提供了根据本申请第四方面的第一访问条带的方法,包括:获取由多个基本操作单元组成的第一条带基本操作单元;依据所述第一条带基本操作单元获取第一基本操作单元,第一基本操作单元为访问条带分配资源;获取多个第二基本操作单元,每个第二基本操作单元访问为所述条带提供存储空间的存储设备之一;以及获取第三基本操作单元,第三基本操作单元指示访问条带完成,并释放所分配的资源。
根据本申请第四方面的第一访问条带的方法,提供了根据本申请第四方面的第二访问条带的方法,其中:第一基本操作单元记录了其执行完成后应当执行的多个第二基本操作单元,以及根据第一基本操作单元获取多个第二基本操作单元。
根据本申请第四方面的第一或第二访问条带的方法,提供了根据本申请第四方面的第三访问条带的方法,其中第二基本操作单元记录了其执行完成应当执行的第三基本操作单元;以及第三基本操作单元记录了其执行依赖于所述多个第二基本操作单元都执行完成。
根据本申请第四方面的第一至第三访问条带的方法之一,提供了根据本申请第四方面的第四访问条带的方法,其中所述多个第二基本操作单元的每个并行访问为所述条带提供存储空间的存储设备之一。
根据本申请第四方面的第一访问条带的方法,提供了根据本申请第四方面的第五访问条带的方法,还包括:根据第一基本操作单元获取第四基本操作单元,第四基本操作单元对要写入条带的数据进行编码以生成校验数据;其中第一基本操作单元记录了其执行完成后应当执行的第四基本操作单元,第四基本操作单元记录了其执行完成后应当执行的多个第二基本操作单元。
根据本申请第四方面的第一访问条带的方法,提供了根据本申请第四方面的第六访问条带的方法,还包括:根据第二基本操作单元获取第五基本操作单元,第五基本操作单元对从条带读出的数据进行译码以生成条带的存在故障的存储空间的数据;其中第二基本操作单元记录了其执行完成后应当执行的第五基本操作单元,第五基本操作单元记录了在所述多个第二基本操作单元都执行完成后才执行所述第五基本操作单元。
根据本申请第四方面的第一至第六访问条带的方法之一,提供了根据本申请第四方面的第七访问条带的方法,还包括:所述第一基本操作单元获取所述多个基本操作单元的依赖关系,生成所述多个基本操作单元的获取与执行顺序。
根据本申请第四方面的第一访问条带的方法,提供了根据本申请第四方面的第八访问条带的方法,还包括:获取第六基本操作单元,第六基本操作单元对要写入条带的数据进行编码以生成校验数据;其中第一基本操作单元记录了其执行完成后应当执行的多个第二基本操作单元与第四基本操作单元。
根据本申请第四方面的第八访问条带的方法,提供了根据本申请第四方面的第九访问条带的方法,还包括:获取第七基本操作单元,第七基本操作单元将所述校验数据写入为所述条带提供存储空间的存储设备之一;其中第四基本操作单元记录了其执行完成后应当执行的第七基本操作单元。
根据本申请第四方面的第九访问条带的方法,提供了根据本申请第四方面的第十访问条带的方法,其中第七基本操作单元记录了其执行完成后应当执行的第三基本操作单元。
根据本申请第四方面的第九或第十访问条带的方法,提供了根据本申请第四方面的第十一访问条带的方法,其中第三基本操作单元记录了其执行依赖于所述多个第二基本操作单元与所述第七基本操作单元都执行完成。
根据本申请第四方面的第一至第十一访问条带的方法之一,提供了根据本申请第四方面的第十二访问条带的方法,还包括:获取第二条带基本操作单元;依据所述第二条带基本操作单元获取第八基本操作单元,第八基本操作单元为访问条带分配资源;获取第九基本操作单元,第九基本操作单元访问为所述条带提供存储空间的存储设备之一;以及获取第十基本操作单元,第十基本操作单元指示访问条带完成,并释放第八基本操作单元所分配的资源。
根据本申请第四方面的第十二访问条带的方法,提供了根据本申请第四方面的第十三访问条带的方法,其中,第八基本操作单元记录了其执行完成后应当执行的第十一基本操作单元,以及根据第八基本操作单元获取第十一基本操作单元;第十一基本操作单元对来自所述条带的数据进行译码以生成用于重构所述条带的数据;以及根据所述第十一基本操作单元获取所述第九操作单元,其中所述第十一基本操作单元记录了其执行完成后应当执行的第九基本操作单元。
根据本申请的第五方面,提供了根据本申请第五方面的第一扩展条带操作的方法,包括:响应于添加第一类型的条带操作,注册由多个基本操作单元组成的第一条带基本操作单元,其中第一条带基本操作单元记录首先执行第一基本操作单元,第一基本操作单元记录其执行完成后应当执行一个或多个第二基本操作单元,第三基本操作单元记录了其执行依赖于所述一个或多个第二基本操作单元都执行完成。
根据本申请第五方面的第一扩展条带操作的方法,提供了根据本申请第五方面的第二扩展条带操作的方法,还包括:响应于以所述第一类型的条带操作访问条带,获取第一条带基本操作单元;执行所述第一条带基本操作单元获取第一基本操作单元,第一基本操作单元为访问条带分配资源;获取多个第二基本操作单元,每个第二基本操作单元访问为所述条带提供存储空间的存储设备之一;以及获取第三基本操作单元,第三基本操作单元指示访问条带完成,并释放所分配的资源。
根据本申请的第六方面,提供了根据本申请第六方面的第一计算机,包括处理器与存储器,所述存储器中存储包括指令的程序,当被载入处理器并在处理器上执行时,所述程序使所述处理器执行根据本申请第四或第五方面提供的方法之一。
根据本申请的第七方面,提供了根据本申请第七方面的第一访问条带的系统,包括:条带基本操作单元获取模块,用于获取由多个基本操作单元组成的第一条带基本操作单元;
第一基本操作单元执行模块,用于依据所述第一条带基本操作单元获取第一基本操作单元,第一基本操作单元为访问条带分配资源;第二基本操作单元执行模块,用于获取多个第二基本操作单元,每个第二基本操作单元访问为所述条带提供存储空间的存储设备之一;以及第三基本操作单元执行模块,用于获取第三基本操作单元,第三基本操作单元指示访问条带完成,并释放所分配的资源。
根据本申请的第三方面,提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行根据本申请第一方面提供的基于存储对象的数据重构方法。
根据本申请的第六方面,提供一种包括程序代码的程序,当被载入存储系统并在存储系统上执行时,所述计程序代码使所述存储系统执行根据本申请第一方面提供的基于存储对象的数据重构方法。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本申请以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1示出了根据本申请实施例的存储系统的架构;
图2示出了根据本申请实施例的存储对象的结构;
图3是根据本申请的实施例驱动器发生故障的示意图;
图4是根据本申请实施例的IO处理架构的示意图;
图5A-图5E是根据本申请实施例的”条带基本操作单元”的示意图;
图6展示了根据本申请实施例的用于处理重构请求的“复合条带操作单元”;
图7A是根据本申请实施例的处理IO请求的流程图;以及
图7B是根据本申请又一实施例的处理IO请求的流程图。
具体实施方式
下面详细描述本申请的实施例,实施例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。
图1示出了根据本申请实施例的存储系统的架构。根据本申请的存储系统包括计算机或服务器(统称为主机)以及耦合到主机的多个存储设备(例如,驱动器)。优选地,驱动器是固态驱动器(SSD)。可选地,根据本申请的实施例中也可以包括磁盘驱动器。
通过存储资源池来维护各个驱动器提供的存储资源。存储资源池中记录了各个驱动器中的数据块或数据大块(Chunk,简称大块)。作为举例,数据大块是预定大小的驱动器中逻辑空间或物理空间连续的多个数据块。数据大块的大小,作为举例,可以是数百KB(千字节)或MB(兆字节)。可选地,存储资源中记录的是各个驱动器中尚未分配给存储对象的数据块或数据大块,这些数据块或数据大块又被称为空闲数据块或空闲数据大块。存储资源池是一种虚拟化技术,将来自物理驱动器的存储资源虚拟化为数据块或数据大块以供上层访问或使用。在存储系统中,存储资源池可以有多个,而在图1的例子中,仅展示了单一的存储资源池。
在资源分配层为存储对象层创建存储对象,存储对象包括多个大块。分配器分配存储资源池中的大块来创建存储对象。根据本申请实施例中提供的存储对象,代表存储系统的部分存储空间。存储对象是带有RAID功能的存储单元,后面会结合图2详细描述存储对象结构。在存储对象层提供多个存储对象。存储对象可以被创建和销毁。一个存储对象被创建时,通过分配器从存储资源池中获取所需数量的大块,这些大块组成存储对象。一个大块在同一时刻可以仅属于一个存储对象。已经被分配给存储对象的大块不会再被分配给其他存储对象。存储对象被销毁时,构成该存储对象的大块被释放回存储资源池,并可被再次分配给其他存储对象。
存储系统包括多个虚拟存储盘。虚拟存储盘对应用程序提供访问接口,并对外提供服务。虚拟存储盘由若干个存储对象构成。可以根据需要创建多个不同属性的虚拟存储盘供应用程序使用。虚拟存储盘提供逻辑地址空间。
图2示出了根据本申请实施例的存储对象。存储对象包括多个数据块或数据大块。在图2的例子中,存储对象包括大块220、大块222、大块224以及大块226。构成存储对象的大块来自不同的驱动器。每个驱动器可以向一个存储对象提供至多一个大块。参看图2,大块220来自驱动器210,大块222来自驱动器212,大块224来自驱动器214以及大块226来自驱动器216。从而,当单一驱动器发生故障时,存储对象中的一个或少数大块无法访问。通过存储对象的其他大块,能够重建存储对象的数据,以满足数据可靠性的要求。
通过RAID技术为存储对象提供数据保护,并提供存储对象的高性能访问。参看图2,存储对象包括多个RAID条带(条带230、条带232……条带238),每个条带由来自不同大块的存储空间组成。同一条带的来自不同大块的存储空间可具有相同或不同的地址范围。条带是存储对象的最小写入单位,从而通过向多驱动器并行写入数据来提升性能。存储对象的读操作没有大小限制。在条带中实现基于RAID技术的数据保护。构成条带230的来自4个大块的每个的4段存储空间中,3段存储空间用于存储用户数据,而另1段存储空间用于存储校验数据,使得在条带230上提供诸如RAID5级别的数据保护。将构成条带的每段存储空间称为“分条”。
可选地,每个大块中还存储元数据。在图2的例子中,大块220-大块226的每个上都保存相同的元数据,从而保证了元数据的可靠性,即使属于同一存储对象的部分大块发生故障,从其他大块中依然能获取元数据。元数据用于记录大块所属的存储对象、大块所在存储对象的数据保护级别(RAID级别)、大块的擦写次数等信息。依然可选地,随着存储对象被重构,新加入存储对象的大块同存储对象的其他大块相比,具有不同的元数据,以描述更新后的大块。
图3是根据本申请实施例的IO处理模型的示意图。如图3所示,应用程序访问虚拟存储盘。根据指定的配置为存储资源池创建若干个IO处理单元,这些IO处理单元可以在多个CPU上完全并发地运行。对于来自虚拟存储盘的不同IO请求,根据IO请求的参数,将IO请求分发到特定的IO处理单元进行处理。作为举例,依据IO请求的类型(读请求或写请求)和/或IO请求访问的逻辑地址将IO请求分发到不同的IO处理单元。
IO处理单元负责处理IO请求,例如应用的读写请求和/或存储系统内部的数据重构请求。IO处理单元的主要工作包括:IO请求之间的互斥与同步,RAID编码与解码,将IO请求分发给下层固态驱动器,以及对固态驱动器处理完成的IO请求的回掉处理。IO处理单元可以是线程、进程或其他在CPU上执行的代码段。在图3的例子中,每个IO处理单元与一个CPU或CPU核绑定。CPU或CPU核专用于执行与其绑定的IO处理单元,减少了因线程切换引入的额外开销。
作为又一个例子,对于部分IO请求,不是通过IO处理单元进行处理,而是在同发出IO请求的进程/线程相同的上下文中进行处理,从而减少因上下文切换引入的开销,以降低这部分IO请求的处理延迟。
图4是根据本申请实施例的IO处理架构的示意图。IO请求被转换为访问条带的操作。依据IO请求访问的逻辑地址,获得服务IO请求的条带。作为举例,由于IO请求的大小受到限制,写请求最多访问一个条带,而读请求可访问一个或两个条带。
根据本申请的实施例,由“复合条带操作单元”处理IO请求(420、422),每个IO请求根据所访问的条带数量由一个或两个“复合条带操作单元”来处理。每个“复合条带操作单元”处理一种类型的IO请求,例如,读请求、写请求、读验证请求与重构请求。其中,读请求用于从条带读取数据,写请求用于向条带写入数据,读验证请求用于从条带读出用户数据与校验数据,并验证用户数据与其校验数据的一致性,重构请求用于重构条带(例如,从故障条带中恢复数据并写入新分配的存储空间)。每个“复合条带操作单元”仅作用于单一条带,对于访问两个条带的IO请求,生成两个“复合条带操作单元”来处理。
作为举例,“复合条带操作单元”是状态机或实现为状态机的代码段,用于控制“复合条带操作单元”所包括的一个或多个”条带基本操作单元”的执行与执行顺序。例如,“复合条带操作单元”按指定的顺序初始化”条带基本操作单元”(例如,为”条带基本操作单元”分配内存、提供所访问条带的地址与数据等),执行”条带基本操作单元”,识别”条带基本操作单元”执行完成与执行结果,按顺序执行构成“复合条带操作单元”的下一”条带基本操作单元”,以完成IO请求。
对于指定类型的IO请求,提供对应的“复合条带操作单元”,该“复合条带操作单元”具有指定的”条带基本操作单元”与其执行顺序。存储系统中同时存在对应多种类型的IO请求的“复合条带操作单元”。响应于IO请求,依据IO请求的类型,获取并实例化对应的“复合条带操作单元”,在“复合条带操作单元”的控制下依次完成一个或多个”条带基本操作单元”的处理,从而完成对IO请求的处理。“复合条带操作单元”描述了IO请求的处理路径,可选地,还包括在IO请求处理出现异常时的处理方式。
根据本申请的实施例,多种类型的“复合条带操作单元”被设置在存储系统中。对于新增类型的IO请求,例如对于新型存储设备提供的去分配(Trim)等操作,通过新增“复合条带操作单元”,新增的“复合条带操作单元”控制一个或多个”条带基本操作单元”的处理,来处理新增类型的IO请求。
新增的“复合条带操作单元”,可选地,在存储系统运行过程中,被添加到存储系统。存储系统提供“复合条带操作单元”的注册接口。为添加一种“复合条带操作单元”,描述“复合条带操作单元”,其包括的一个或多个”条带基本操作单元”,以及可选地,还包括”条带基本操作单元”的执行条件。按指定顺序(可选地,还根据执行条件)执行这些”条带基本操作单元”,将完成所添加的“复合条带操作单元”的功能。以及通过注册接口将添加的“复合条带操作单元”注册给存储系统。
参看图4,“复合条带操作单元”420包括”条带基本操作单元”432、”条带基本操作单元”434与”条带基本操作单元”436,通过顺序执行”条带基本操作单元”432、”条带基本操作单元”434与”条带基本操作单元”436来实现“复合条带操作单元”420的功能。也参看图6,展示了用于处理重构请求的“复合条带操作单元”的例子。用于处理重构请求的“复合条带操作单元”包括“条带读”“条带基本操作单元”610与“条带重构”“条带基本操作单元”620,通过顺序执行”条带基本操作单元”610与”条带基本操作单元”620来处理重构请求。用于处理重构请求的“复合条带操作单元”在执行时,首先初始化”条带基本操作单元”610与”条带基本操作单元”620,包括例如为”条带基本操作单元”610与”条带基本操作单元”620分配用于执行的内存,指定要访问的条带,指示条带中存在故障的逻辑地址段,提供承载读出数据的地址等。顺序执行”条带基本操作单元”610与”条带基本操作单元”620。通过执行”条带基本操作单元”610从指定的条带中读取数据。“复合条带操作单元”响应于”条带基本操作单元”610执行完成,而执行”条带基本操作单元”620,从读出数据中计算出存在故障的逻辑地址段的数据,将计算出的数据写入用于重构的地址空间(例如,大块)。响应于”条带基本操作单元”620执行完成,“复合条带操作单元”指示重构请求处理完成,以及回收为”条带基本操作单元”610与”条带基本操作单元”620分配的内存。
在又一个例子中,“复合条带操作单元”包括多个可选的”条带基本操作单元”,”条带基本操作单元”各自具有执行条件。例如,对应于读请求的“复合条带操作单元”,在所读取的数据位于构成条带的一个固态存储设备、两个存储设备或存在故障的固态存储设备(或故障存储区域)的不同条件下,根据条件的不同,执行对应的”条带基本操作单元”。
返回参看图4,”条带基本操作单元”处理对单一条带的操作,例如,读条带操作、写条带操作、验证条带操作等。”条带基本操作单元”包括一个或多个基本操作单元。”条带基本操作单元”调度一个或多个“基本操作单元”,以完成对单一条带的操作。一个或多个基本操作单元之间可以并行执行或存在依赖关系,”条带基本操作单元”控制一个或多个基本操作单元之间的并行执行或执行顺序。例如,一个条带的存储空间由4个存储设备提供,处理读条带操作的”条带基本操作单元”包括用于读存储设备的4个“基本操作单元”,这4个“基本操作单元”可并行执行。处理读条带操作的”条带基本操作单元”还识别4个“基本操作单元”都执行完成,才执行后续的“基本操作单元”。作为举例,”条带基本操作单元”实现为代码段,识别其所包括的“基本操作单元”的执行顺序,并调度“基本操作单元”的执行。
“基本操作单元”处理对至多一个存储设备的操作。例如,向存储设备发出读命令并获取从存储设备读出的结果。在另一个例子中,“基本操作单元”不访问任何存储设备,而是对其他“基本操作单元”从存储设备读出的数据进行验证或译码(以恢复发生故障的数据)。“基本操作单元”可向存储设备发出一个或多个读命令/写命令。“基本操作单元”有多种类型,各自对应多种操作。例如,用于初始化操作的“基本操作单元”,用于为”条带基本操作单元”的一个或多个“基本操作单元”分配内存,识别多个“基本操作单元”的依赖关系并确定调度多个“基本操作单元”的顺序等;用于处理读命令的“基本操作单元”,用于向存储设备发出读命令,并接收读命令的处理结果;用于处理写命令的“基本操作单元”,用于向存储设备发出写命令,并接收写命令的处理结果。用于编码数据的“基本操作单元”,用于对要写入条带的用户数据进行编码,以生成校验数据;用于译码数据的“基本操作单元”,用于对从条带读出的数据错误校正译码,以恢复发生故障的数据;用于结束操作的“基本操作单元”,用于释放为”条带基本操作单元”的一个或多个“基本操作单元”分配的内存。进一步地,“基本操作单元”还描述属于同一”条带基本操作单元”的“基本操作单元”的依赖关系。例如,在“基本操作单元”中记录其自身处理完成后,哪个或哪些“基本操作单元”可接下来被执行;和/或在“基本操作单元”中记录其自身开始执行前,哪个或哪些“基本操作单元”应当被执行完成。作为举例,“基本操作单元”实现为代码段。
通过多种“基本操作单元”的多种组合,根据本申请的实施例提供了多种”条带基本操作单元”。多种”条带基本操作单元”又被组合为多种“复合条带操作单元”。多种“复合条带操作单元”提供了多种功能,从而为存储系统提供功能的扩展性。
图5A-图5E是根据本申请实施例的”条带基本操作单元”的示意图。图5A展示了用于读条带操作的”条带基本操作单元”。作为举例,条带采用RAID5配置,包括3份用户数据与1份校验数据(用“P”代表)。响应于从条带的两个分条中读出数据,由图5A展示的用于读条带操作的”条带基本操作单元”来处理。图5A的用于读条带操作的”条带基本操作单元”包括4个“基本操作单元”(分别由510、512、514与516所指示)。“基本操作单元”510被首先调度,用于分配内存、指定访问的地址等初始化操作,接下来,“基本操作单元”512与514各自访问位于不同存储设备上的分条,以读取数据。“基本操作单元”512与514可以并行执行。响应于“基本操作单元”512与514都执行完成,执行“基本操作单元”516以结束操作。
图5B展示了用于读条带的故障分条的”条带基本操作单元”。作为举例,已知条带中的分条存在故障,通过图5B所展示的用于读条带的故障分条的”条带基本操作单元”获得故障分条的数据。用于读条带的故障分条的”条带基本操作单元”包括6个“基本操作单元”(分别由520、522、524、528与529所指示)。“基本操作单元”520被首先调度,用于初始化。接下来,“基本操作单元”522、524与526各自访问位于不同存储设备上的分条,以读取数据。其中,“基本操作单元”522与524读取条带上的用户数据,而“基本操作单元”526读取条带的校验数据。“基本操作单元”522、524与524可以并行执行或顺序执行。在一个例子中,用于初始化的“基本操作单元”520安排“基本操作单元”522、524、526、529与529的执行顺序或调度策略。在另一个例子中,”条带基本操作单元”识别其所包含的多个“基本操作单元”的依赖关系,并对“基本操作单元”进行调度。响应于“基本操作单元”522、524与526执行完成,执行“基本操作单元”528进行数据译码,以恢复出故障分条(或其中的部分)的数据。最后执行“基本操作单元”529,以结束用于读条带的故障分条的”条带基本操作单元”的处理。
图5C展示了用于写完整条带的“条带基本操作单元”。作为举例,条带采用RAID5配置,包括3个分条的用户数据,与1个分条的校验数据(用P指示)。用于写完整条带的“条带基本操作单元”包括7个“基本操作单元”(分别由530、532、534、535、536、537与539所指示)。“基本操作单元”530被首先调度,用于初始化。接下来,执行“基本操作单元”532以对待写入条带的用户数据进行编码,以生成用于条带的校验数据。接下来,并行执行“基本操作单元”534、535、536与537,以各自访问位于不同存储设备上的分条,以写入数据。其中,“基本操作单元”534、35、536与537向条带写入用户数据,而“基本操作单元”537向条带写入(由“基本操作单元”532生成的)校验数据。“基本操作单元”534、535、536与537可以并行执行或顺序执行。响应于“基本操作单元”534、535、536与537执行完成,最后执行“基本操作单元”539,以结束用于写完整条带的”条带基本操作单元”的处理。
图5D展示了另一个用于写完整条带的“条带基本操作单元”。用于写完整条带的“条带基本操作单元”包括7个“基本操作单元”(分别由540、542、544、545、546、547与549所指示)。“基本操作单元”540被首先调度,用于初始化。接下来,并行执行“基本操作单元”542、544、545与546。其中“基本操作单元”544、545与546用于分别向不同存储设备写入数据,而“基本操作单元”542对要写入存储设备的数据进行编码以生成校验数据。在“基本操作单元”542执行完成后,执行“基本操作单元”547以向存储设备写入校验数据。响应于“基本操作单元”544、545、546与547执行完成,最后执行“基本操作单元”549,以结束用于写完整条带的”条带基本操作单元”的处理。由于“基本操作单元”544、545与546不依赖于“基本操作单元”542,通过提前调度“基本操作单元”544、545与546,使得图5D展示的用于写完整条带的“条带基本操作单元”具有较低的处理延迟。
在又一个用于写完整条带的“条带基本操作单元”的例子中,向存储设备写入数据的过程中,作为副产物,存储系统生成了校验数据,从而省略诸如“基本操作单元”542,以及“基本操作单元”547在“基本操作单元”544、545与546都处理完成后被执行。最后执行“基本操作单元”549,以结束用于写完整条带的”条带基本操作单元”的处理。
从而,根据本申请的实施例,通过组合“基本操作单元”形成不同的”条带基本操作单元”,以满足存储系统的多样化需求。
图5E展示了用于条带重构中向分条写入数据的“条带基本操作单元”。用于条带重构中向分条写入数据的“条带基本操作单元”包括4个“基本操作单元”(分别由550、552、554与556所指示)。“基本操作单元”550被首先调度,用于初始化。接下来,执行“基本操作单元”552对数据进行编码,以生成要写入分条的数据。接下来,执行“基本操作单元”554以将数据写入条带的新数据分条。最后执行“基本操作单元”556,以结束用于条带重构中写用户数据分条的”条带基本操作单元”的处理。
图5E展示的用于条带重构中向分条写入数据的“条带基本操作单元”,可作为图6的”条带基本操作单元”620。而图6的”条带基本操作单元”610,可以是图5B展示的用于读条带的故障分条的”条带基本操作单元”中去掉“基本操作单元”528而得到的”条带基本操作单元”。
根据本申请的实施例,多种类型的”条带基本操作单元”被设置在存储系统中,或者在存储系统运行过程中,被添加到存储系统。存储系统提供”条带基本操作单元”的注册接口。为添加一种”条带基本操作单元”,描述”条带基本操作单元”及其包括的一个或多个“基本操作单元”。按指定顺序执行这些“基本操作单元”,将完成所添加的”条带基本操作单元”的功能。”条带基本操作单元”还记录被调用时首先执行的“基本操作单元”,以及在各个“基本操作单元”中记录其执行完成后应当执行的下一“基本操作单元”和/或其执行所依赖的一个或多个“基本操作单元”。以及通过注册接口将添加的”条带基本操作单元”注册给存储系统。
图7A是根据本申请实施例的处理IO请求的流程图。响应于接收IO请求,依据IO请求的类型,获取对应的“复合条带操作单元”(710)。作为举例,应用程序通过操作系统提供的API(应用编程接口)访问虚拟存储盘(也参看图1)。作为响应,在处理API调用的代码段中,识别IO请求的类型,例如,识别IO请求是读请求还是写请求。还识别IO请求所访问的条带。为访问的每个条带获取对应的“复合条带操作单元”。例如,读请求访问的逻辑地址范围由两个条带提供,为每个条带的读请求获取对应对应的“复合条带操作单元”。所获取的两个“复合条带操作单元”可具有相同的类型或不同类型。例如,若一个条带被访问的地址范围正常,而另一个条带访问的地址范围存在故障,则获取不同的“复合条带操作单元”以不同的方式从条带中读取数据。又例如,写请求访问的逻辑地址范围由1个条带提供,获取一个对应的“复合条带操作单元”。
在获取的各个“复合条带操作单元”的控制下,“复合条带操作单元”所包括的”条带基本操作单元”按执行顺序被初始化(720)。例如,为”条带基本操作单元”分配内存,指定访问的条带的地址,提供要写入的数据等。“复合条带操作单元”还按顺序指示”条带基本操作单元”访问条带(730)。”条带基本操作单元”的“基本操作单元”向提供条带的存储设备发出读命令/写命令。并接收存储设备的命令执行结果。响应于“复合条带操作单元”所包括的”条带基本操作单元”按“复合条带操作单元”所指示的顺序依次完成对条带的访问,“复合条带操作单元”的处理完成。以及响应于IO请求所对应的一个或多个“复合条带操作单元”都被处理完成,IO请求被处理完成。
可选地,处理API调用的代码段不切换上下文,从而从当前上下文获取为”条带基本操作单元”分配的内存,访问条带的地址、要写入数据的存储空间和/或存放待读出数据的存储空间。通过减少上下文切换次数,降低系统负载与IO请求处理延迟。
根据本申请的实施例,多个IO请求被并发处理。“复合条带操作单元”、“复合条带操作单元”和/或“基本操作单元”通过初始化都可被创建多个实例,为每个IO请求创建“复合条带操作单元”、“复合条带操作单元”和/或“基本操作单元”的实例以对IO请求进行处理。可选地,多个进程/线程的应用程序各自通过API访问虚拟存储盘。在各个进程/线程的上下文中,获取“复合条带操作单元”处理IO请求。在又一个例子中,处理API调用的代码段缓存IO请求,对于每个IO请求,获取对应的“复合条带操作单元”,在“复合条带操作单元”的控制下,”条带基本操作单元”的各个“基本操作单元”以异步方式向多个存储设备发出IO命令并接收存储设备提供的IO命令处理结果。可选地,多个CPU或多个CPU核的每个获取缓存的IO请求,并获取对应的“复合条带操作单元”处理IO请求。从而每个IO请求的产生与处理过程都可由单一CPU处理,多个CPU同时处理多个IO请求,随着CPU或CPU核数量的增加,处理IO请求的并行性被进一步增加,从而为存储系统提供性能的扩展性。
图7B是根据本申请又一实施例的处理IO请求的流程图。响应于接收IO请求(750),获取可用的IO处理单元(也参看图3),由指派给IO请求的IO处理单元来处理该IO请求(760)。可选地,在IO请求处理过程中,指派给该IO请求的IO处理单元专用于处理该IO请求而不会被调度给其他任务。依然可选地,指派给一IO请求(称为IO_1)的IO处理单元,在从获取IO请求到向IO请求访问的所有存储设备发出IO命令的过程中,专用于处理该IO请求而不会被打断,而在向IO请求访问的所有存储设备发出IO命令后,可短暂被调度用于处理其他任务(或其他IO请求),并在预期存储设备处理完IO命令之前,继续处理该IO请求(IO_1),从而使IO请求得到及时处理,降低IO请求的处理延迟。
作为举例,IO处理单元是线程或进程。依然作为举例,对于写请求,由于存储设备对写命令具有较低处理延迟,在步骤760,为写请求指派IO处理单元。而对于读请求,不指派IO处理单元,而在处理API调用的代码段中直接处理读请求,从而降低读请求处理延迟。
IO处理单元识别IO请求访问的条带,对IO请求访问的条带加锁(770)。在一些应用场景中,多个写请求对条带的访问存在冲突。为解决冲突,需要使存在冲突的多个IO请求被串行处理。通过加锁实现这一目的。若加锁失败,IO处理单元暂停对该IO请求的处理,直到加锁成功。响应于加锁成功,IO处理单元获取与IO请求对应的“复合条带操作单元”(770)。
可选地,在一些应用场景中,多个IO请求之间不存在访问冲突,例如,应用程序已经处理了潜在的访问冲突,或者固态存储设备提供了原子性命令(支持对IO命令的原子性处理),则无须执行步骤770。依然可选地,对于读请求,无须对其访问的条带加锁,而无须执行步骤770,而仅对写请求,执行步骤770。
在获取的各个“复合条带操作单元”的控制下,“复合条带操作单元”所包括的”条带基本操作单元”按执行顺序被初始化(780)。“复合条带操作单元”还按顺序指示”条带基本操作单元”访问条带(790)。以及响应于IO请求所对应的一个或多个“复合条带操作单元”都被处理完成,IO请求被处理完成。
本申请实施例还提供一种包含程序代码的程序,当被载入CPU并在CPU中执行时,程序使CPU执行上面提供的根据本申请实施例的方法之一。
本申请实施例还提供一种包括程序代码的程序,当被载入主机并在主机上执行时,所述程序使主机的处理器执行上面提供的根据本申请实施例的方法之一。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本申请的很多修改和其他实施方式。因此,应该理解,本申请不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (15)
1.一种访问条带的方法,包括:
获取由多个基本操作单元组成的第一条带基本操作单元;
依据所述第一条带基本操作单元获取第一基本操作单元,第一基本操作单元为访问条带分配资源;
获取多个第二基本操作单元,每个第二基本操作单元访问为所述条带提供存储空间的存储设备之一;以及
获取第三基本操作单元,第三基本操作单元指示访问条带完成,并释放所分配的资源。
2.根据权利要求1所述的方法,其中:
第一基本操作单元记录了其执行完成后应当执行的多个第二基本操作单元,以及根据第一基本操作单元获取多个第二基本操作单元。
3.根据权利要求1或2所述的方法,其中
第二基本操作单元记录了其执行完成应当执行的第三基本操作单元;以及第三基本操作单元记录了在所述多个第二基本操作单元都执行完成之后才执行所述第三基本操作单元的信息。
4.根据权利要求1或2所述的方法,其中
所述多个第二基本操作单元的每个并行访问为所述条带提供存储空间的存储设备之一。
5.根据权利要求1所述的方法,还包括:
根据第一基本操作单元获取第四基本操作单元,第四基本操作单元对要写入条带的数据进行编码以生成校验数据;其中第一基本操作单元记录了其执行完成后应当执行的第四基本操作单元,第四基本操作单元记录了其执行完成后应当执行的多个第二基本操作单元。
6.根据权利要求1所述的方法,还包括:
根据第二基本操作单元获取第五基本操作单元,第五基本操作单元对从条带读出的数据进行译码以生成条带的存在故障的存储空间的数据;其中第二基本操作单元记录了其执行完成后应当执行的第五基本操作单元,第五基本操作单元记录了在所述多个第二基本操作单元都执行完成后才执行所述第五基本操作单元。
7.根据权利要求1、2、5或6之一所述的方法,还包括:所述第一基本操作单元获取所述多个基本操作单元的依赖关系,生成所述多个基本操作单元的获取与执行顺序。
8.根据权利要求1所述的方法,还包括:
获取第六基本操作单元,第六基本操作单元对要写入条带的数据进行编码以生成校验数据;其中第一基本操作单元记录了其执行完成后应当执行的多个第二基本操作单元与第四基本操作单元。
9.根据权利要求8所述的方法,还包括:
获取第七基本操作单元,第七基本操作单元将所述校验数据写入为所述条带提供存储空间的存储设备之一;其中第四基本操作单元记录了其执行完成后应当执行的第七基本操作单元,其中第七基本操作单元记录了其执行完成后应当执行的第三基本操作单元。
10.根据权利要求9所述的方法,还包括:
第三基本操作单元记录了其执行依赖于所述多个第二基本操作单元与所述第七基本操作单元都执行完成的信息。
11.根据权利要求1-2、5-6、8-9中任一项所述的方法,还包括:获取第二条带基本操作单元;依据所述第二条带基本操作单元获取第八基本操作单元,第八基本操作单元为访问条带分配资源;获取第九基本操作单元,第九基本操作单元访问为所述条带提供存储空间的存储设备之一;以及获取第十基本操作单元,第十基本操作单元指示访问条带完成,并释放第八基本操作单元所分配的资源。
12.根据权利要求11所述的方法,还包括:
第八基本操作单元记录了其执行完成后应当执行的第十一基本操作单元,以及根据第八基本操作单元获取第十一基本操作单元;第十一基本操作单元对来自所述条带的数据进行译码以生成用于重构所述条带的数据;以及根据所述第十一基本操作单元获取第九操作单元,其中所述第十一基本操作单元记录了其执行完成后应当执行的第九基本操作单元。
13.一种扩展条带操作的方法,包括:
响应于添加第一类型的条带操作,注册由多个基本操作单元组成的第一条带基本操作单元,其中第一条带基本操作单元记录首先执行第一基本操作单元,第一基本操作单元记录其执行完成后应当执行一个或多个第二基本操作单元,第三基本操作单元记录了在所述一个或多个第二基本操作单元都执行完成之后才执行所述第三基本操作单元的信息。
14.根据权利要求13所述的扩展条带操作的方法,还包括:
响应于以所述第一类型的条带操作访问条带,获取第一条带基本操作单元;
执行所述第一条带基本操作单元获取第一基本操作单元,第一基本操作单元为访问条带分配资源;
获取多个第二基本操作单元,每个第二基本操作单元访问为所述条带提供存储空间的存储设备之一;以及
获取第三基本操作单元,第三基本操作单元指示访问条带完成,并释放所分配的资源。
15.一种计算机,包括处理器与存储器,所述存储器中存储包括指令的程序,当被载入处理器并在处理器上执行时,所述程序使所述处理器执行根据权利要求1-14之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710888216.XA CN109558236B (zh) | 2017-09-27 | 2017-09-27 | 访问条带的方法及其存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710888216.XA CN109558236B (zh) | 2017-09-27 | 2017-09-27 | 访问条带的方法及其存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109558236A CN109558236A (zh) | 2019-04-02 |
CN109558236B true CN109558236B (zh) | 2023-07-25 |
Family
ID=65863859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710888216.XA Active CN109558236B (zh) | 2017-09-27 | 2017-09-27 | 访问条带的方法及其存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558236B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458613A (zh) * | 2008-12-31 | 2009-06-17 | 成都市华为赛门铁克科技有限公司 | 一种混合分级阵列的实现方法、混合分级阵列和存储系统 |
CN102622189A (zh) * | 2011-12-31 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 存储虚拟化的装置、数据存储方法及系统 |
CN103442070A (zh) * | 2013-08-30 | 2013-12-11 | 华南理工大学 | 基于统计预测的私有云存储资源调配方法 |
WO2017025039A1 (zh) * | 2015-08-13 | 2017-02-16 | 北京忆恒创源科技有限公司 | 一种面向闪存存储的数据访问方法及其装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9052937B2 (en) * | 2013-02-27 | 2015-06-09 | Vmware, Inc. | Managing storage commands according to input-output priorities and dependencies |
-
2017
- 2017-09-27 CN CN201710888216.XA patent/CN109558236B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458613A (zh) * | 2008-12-31 | 2009-06-17 | 成都市华为赛门铁克科技有限公司 | 一种混合分级阵列的实现方法、混合分级阵列和存储系统 |
CN102622189A (zh) * | 2011-12-31 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 存储虚拟化的装置、数据存储方法及系统 |
CN103442070A (zh) * | 2013-08-30 | 2013-12-11 | 华南理工大学 | 基于统计预测的私有云存储资源调配方法 |
WO2017025039A1 (zh) * | 2015-08-13 | 2017-02-16 | 北京忆恒创源科技有限公司 | 一种面向闪存存储的数据访问方法及其装置 |
Non-Patent Citations (1)
Title |
---|
阙清贤 ; 谭怀亮 ; .基于InfiniBand的RAID存储系统设计.计算机工程与设计.2009,(11),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN109558236A (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9378093B2 (en) | Controlling data storage in an array of storage devices | |
CN111679795B (zh) | 无锁并发io处理方法及其装置 | |
US20220137849A1 (en) | Fragment Management Method and Fragment Management Apparatus | |
US7970994B2 (en) | High performance disk array rebuild | |
JP6243028B2 (ja) | アトミック記憶操作のためのシステム及び方法 | |
JP3505093B2 (ja) | ファイル管理システム | |
US20160217040A1 (en) | Raid parity stripe reconstruction | |
US9990263B1 (en) | Efficient use of spare device(s) associated with a group of devices | |
KR20150105323A (ko) | 데이터 스토리지 방법 및 시스템 | |
US10649891B2 (en) | Storage device that maintains mapping data therein | |
KR20180002259A (ko) | 계층적 플래시 변환 레이어 구조 및 그 설계 방법 | |
US8862819B2 (en) | Log structure array | |
US11797435B2 (en) | Zone based reconstruction of logical to physical address translation map | |
US11144219B2 (en) | Ensuring sufficient available storage capacity for data resynchronization/reconstruction in a hyper-converged infrastructure | |
US10152278B2 (en) | Logical to physical sector size adapter | |
CN111124262A (zh) | 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 | |
US10395751B2 (en) | Automated testing system and operating method thereof | |
WO2021080774A1 (en) | Construction of a block device | |
CN109558068B (zh) | 数据迁移方法及迁移系统 | |
CN111124251B (zh) | 用于i/o控制的方法、装置以及计算机可读介质 | |
WO2021080785A1 (en) | Construction of a block device | |
CN109558236B (zh) | 访问条带的方法及其存储系统 | |
CN109558070B (zh) | 可扩展存储系统架构 | |
CN107562639B (zh) | 擦除块读请求处理方法与装置 | |
CN111831589A (zh) | 提高io命令处理并行性的方法与装置 |
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 | ||
CB02 | Change of applicant information |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |