CN110413211B - 存储管理方法、电子设备以及计算机可读介质 - Google Patents
存储管理方法、电子设备以及计算机可读介质 Download PDFInfo
- Publication number
- CN110413211B CN110413211B CN201810401726.4A CN201810401726A CN110413211B CN 110413211 B CN110413211 B CN 110413211B CN 201810401726 A CN201810401726 A CN 201810401726A CN 110413211 B CN110413211 B CN 110413211B
- Authority
- CN
- China
- Prior art keywords
- block
- state
- mapping
- indicator
- memory blocks
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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
- 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
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
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)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例涉及一种存储管理方法、电子设备和计算机可读介质。存储管理方法包括:接收针对盘中的目标存储块的请求;从高速缓存获取表示包括目标存储块在内的一组存储块的状态的缓存指示符,高速缓存中的缓存指示符占用的位的数目小于一组存储块的存储块数目;以及基于缓存指示符对请求进行响应。本公开的实施例能够减少对盘的访问次数,从而提高输入输出的性能。
Description
技术领域
本公开的实施例涉及数据存储领域,并且更具体地,涉及一种存储管理方法、电子设备以及计算机可读介质。
背景技术
固态盘(SSD)是一种非易失性存储设备,其在固态闪存上存储持久性数据。固态盘是使用集成电路而不是磁存储介质或光存储介质组织的半导体存储器阵列。固态盘具有传统机械硬盘不具备的快速读写、质量轻、能耗低以及体积小等特点。但是固态盘不允许覆盖写,并且由于擦写次数受到限制,其耐用性(使用寿命)相对较短。
固态盘的垃圾回收机制通常会导致写放大倍数大于1,为了减小写放大倍数,当前在一些固态盘***中引入了取消映射(UNMAP)命令,以允许操作***通知固态盘哪些数据将不再被使用并且可以被内部擦去。之后,当再次向存储块写入数据时,可以直接擦除该存储块,从而减小了写放大倍数。另外,取消映射命令也提高了固态盘的使用寿命,因为在固态盘的后台垃圾回收中数据移动的量被减少。然而,在输入输出负载较重的情况下,这种取消映射命令会带来***性能的下降。
发明内容
本公开的实施例提供了一种存储管理方法、电子设备和计算机可读存储介质,其能够提高存储***的性能。
在本公开的第一方面,提供了一种存储管理方法。该方法包括接收针对盘中的目标存储块的请求;从高速缓存获取表示包括所述目标存储块在内的一组存储块的状态的缓存指示符,所述高速缓存中的所述缓存指示符占用的位的数目小于所述一组存储块的存储块数目;以及基于所述缓存指示符对所述请求进行响应。
根据本公开的第二方面,提供了一种电子设备。该电子设备包括处理器和存储器,所述存储器存储有指令,所述指令在被所述处理器执行时使得所述电子设备执行以下动作:接收针对盘中的目标存储块的请求;从高速缓存获取表示包括所述目标存储块在内的一组存储块的状态的缓存指示符,所述高速缓存中的所述缓存指示符占用的位的数目小于所述一组存储块的存储块数目;以及基于所述缓存指示符对所述请求进行响应。
在本公开的第三方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,所述计算机可执行指令在被执行时使得机器执行根据第一方面所述的方法。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了现有的实现取消映射机制的架构的示意图。
图2示出了可以在其中实施本公开实施例的示例性运行环境的示意图。
图3示出了根据本公开实施例的存储管理方法的流程图。
图4示出了根据本公开实施例对读请求进行响应的方法的流程图。
图5示出了根据本公开实施例对写请求进行响应的方法的流程图。
图6示出了根据本公开实施例的预填充方法的流程图。
图7示出了根据本公开实施例针对缓存指示符的状态机的示意图。
图8示出了可以用来实施本公开的实施例的示例性设备的框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
如之前所描述的,为了减小固态盘***的写放大倍数,当前在一些固态盘***中引入的取消映射命令。图1示出了现有的实现取消映射机制的架构100的示意图。
如图1所示,架构100被划分为包括逻辑空间110的逻辑层和包括固态盘120的物理层。固态盘120可以被划分为一系列固定大小的非重叠的块1201、1202、120M(M为任意自然数),这些块可以被称为存储块。在实际实现中,取决于实际应用以及存储限制,存储块可以被设置成不同的大小。这些存储块又分为用于存储用户数据的存储块(例如存储块1201、1202)以及备用存储块(例如存储块120M)。备用块120M可以在垃圾回收中使用,也可以用于存储一些元数据。虽然在图1中仅示出了一个备用块120M,但是根据实际需要,可以设置多于一个的备用块。
逻辑空间110被划分成一系列连续的逻辑块1101、1102。应用(图1中未示出)通过逻辑空间110中的逻辑块1101、1102的逻辑地址来访问固态盘120中的存储块1201、1202。例如,当应用利用逻辑块1101的逻辑地址来向固态盘120写入数据时,固态盘120会将其一个空闲的存储块(例如存储块1201)分配给应用,从而在逻辑块1101与存储块1201之间建立了一个映射关系。这种映射关系被记录在映射表中,通过查找映射表可以确定逻辑块1101被映射到的存储块1201。
为了实现取消映射机制,在备用块120M的元数据区域130中存储有表示各存储块1201、1202是否被取消与各自的逻辑块的映射的指示符。例如,如图1中所示的,元数据区域130中的第一指示符1301用来表示存储块1201是否已经被取消与逻辑块(例如逻辑块1101)的映射,第二指示符1302表示存储块1202是否已经被取消与逻辑块的映射,以此类推。例如,可以用“0”来表示一个存储块已经被映射到一个逻辑块的状态(在下文中称为映射状态),可以用“1”来表示一个存储块与一个逻辑块之间的原有映射关系被取消的状态(在下文中成为取消映射状态)。如图1所示,元数据区域130中的指示符1301为“0”,这表示存储块1201处于映射状态,指示符1302为“1”表示存储块1202处于取消映射状态。当然,也可以用“0”来表示取消映射状态,而用“1”来表示映射状态。
初始时,元数据区域130中表示各存储块1201、1202的状态的指示符1301、1302可以被设置为表示取消映射状态。当向某个存储块(例如存储块1201)写入数据时,将元数据区域130中表示存储块1201的状态的指示符修改为表示处于映射状态。当应用针对某个逻辑块(例如逻辑块1101)发出取消映射命令时,首先根据映射表找到与该逻辑块对应的存储块(例如存储块1201),然后将元数据区域130中表示存储块1201的状态的指示符1301从表示映射状态修改为表示取消映射状态,例如从“0”变为“1”。
在架构100下,当用户向固态盘120发送读请求时,首先需要检查元数据区域130中的表示与读请求相关联的存储块的状态的指示符。如果所述指示符表示该存储块处于映射状态,则从该存储块读取数据。如果所述指示符表示该存储块处于取消映射状态,则直接返回零数据。
当用户向固态盘120发送写请求时,首先也需要检查元数据区域130中的表示与写请求相关联的存储块的状态的指示符。如果指示符表示该存储块处于映射状态,则将数据写入该存储块。如果指示符表示该存储块处于取消映射状态,则利用零来填充该存储块,之后再写入用户数据,并将指示符从表示取消映射状态修改为表示映射状态。
由此可见,在架构100下,无论是对固态盘120进行读取还是写入,都需要先访问固态盘120中的元数据区域130中的指示符,之后才能执行数据读取或数据写入。由于需要额外访问固态盘120中的元数据区域130来获得存储块的状态,而固态盘每秒的读写次数是有限的,这势必会导致读写速度变慢。在输入输出负荷较重的情况下,***的性能会显著降低。
鉴于此,本公开的实施例提出了一种存储管理方案,其能够减少对固态盘之类的盘的访问次数,改善输入输出性能。在根据本公开实施例的方案中,将盘中的存储块划分成多组存储块,对于每组存储块,在高速缓存中利用比该组存储块中的存储块数目少的位来表示该组存储块的状态。在接收到针对一个目标存储块的读写请求时,从高速缓存中获取包括该目标存储块在内的一组存储块的状态,并基于所述状态来确定在对读写请求进行响应之前是否需要访问盘来获得目标存储块的实际状态。
在本公开实施例的方案中,当基于高速缓存中表示一组存储块的状态的指示符确定不需要访问目标存储块的实际状态时,可以直接对读写请求进行响应,而无需对盘中的元数据进行访问,这减少了对盘的额外访问次数。在输入输出负荷较大的情况下,或者在盘的每秒输入输出次数受限的情况下,本公开实施例的方案能够显著提高输入输出性能。并且,在本公开实施例的方案中,在高速缓存中,一组存储块的状态是利用比该组存储块的块数目少的位来表示的,这在提高读写速度的同时考虑了高速缓存的容量限制,一定程度上节省了高速缓存资源。
下面结合图2到图8来详细描述本公开的实施例。然而,需要说明的是,这些描述仅仅出于说明的目的,本公开并不局限于这些实施方式和附图中的细节。
图2示出了可以在其中实施本公开的实施例的示例性运行环境200的示意图。应当理解的是,图2所示的环境200仅仅是本公开的实施例可以实现于其中的一种示例,不旨在限制本公开的应用环境和场景。本公开的实施例同样适用于其他环境或架构。
如图2所示,环境200可以包括具有逻辑空间220的逻辑层和具有盘220(例如固态盘或其他利用集成电路技术实现的盘)的物理层。盘220可以被划分成一系列固定大小的非重叠的存储块2201至220M(M为任意自然数)。这些存储块又分为用于存储用户数据的存储块(例如存储块2201至220n、2201’至220n’)以及备用存储块(例如存储块220M)。虽然在图2中仅示出了一个备用块220M,但是本领域技术人员将理解的是,本公开实施例并不限于一个备用块,而是根据实际需要,可以设置多于一个的备用块。
虽然在图2中仅示出了一个盘220,但是这仅仅是示例性的,本公开的实施例并不限于此。例如,在本公开的其他实施例中,可以包含多于一个的盘,这些盘可以被组织成独立硬盘冗余阵列(RAID)。
与图1中的逻辑空间110类似,逻辑空间210也被划分成一系列连续的逻辑块2101、2102。应用通过逻辑空间210中的逻辑块2101、2102的逻辑地址来访问盘220中的存储块。例如,当应用利用逻辑块2101的逻辑地址来向盘220写入数据时,盘220会将其一个空闲的存储块(例如存储块2201)分配给应用,从而在逻辑块2101与存储块2201之间建立了一个映射关系。类似于图1,这种映射关系被记录在映射表中,通过查找映射表可以确定逻辑块2101被映射到的存储块2201。
在备用块220M中,存在一个元数据区域230。针对每个用于存储用户数据的存储块(例如存储块2201至220n、2201’至220n’)而言,利用元数据区域130中的一位指示符来表示该存储块是否处于取消映射状态。如图2所示,元数据区域130中的指示符2301为“0”,表示存储块2201处于映射状态,指示符230n为“1”,表示存储块220n处于取消映射状态。当然,也可以用“0”来表示取消映射状态,用“1”来表示映射状态。关于映射状态和取消映射状态的定义以及设置方式,与参考图1所描述的类似,在此不再赘述。
与架构100不同的是,在本公开的实施例中,将盘220中的用于存储用户数据的存储块分成多个组。如图2所示,存储块2201-220n被划分成第一组存储块221中,存储块2201’-220n’被划分到第二组存储块222中。在本公开的实施例中,n可以为32。但是本领域技术人员将理解的是,32只是示例性的,本公开并不限于此。根据具体应用和***的设计约束,n可以为大于1的任何整数。本领域技术人员还应该理解的是,虽然仅示出了第一组存储块221和第二组存储块222,并且第一组存储块221和第二组存储块222被示为包括相同数目的存储块,但是本公开的实施例并不限于两组存储块,并且每个组中所包含的存储块的数目也可以不同。虽然在图2中示出相继的存储块被划分到一个组中,但是这仅仅是示例性的,本公开实施例并不限于此。
环境200还利用高速缓存250来存储分别表示第一组存储块221和第二组存储块222的状态的指示符(其在下文中可以被称为缓存指示符)。针对盘220中的每组存储块221、222,在高速缓存230中利用比该组存储块221、222中的存储块数目少的位来表示该组存储块221、222的状态。一组存储块的状态可以包括该组存储块全部处于映射状态的状态(在下文中称为全映射状态)、该组存储块全部处于取消映射状态的状态(在下文中成为全取消映射状态)、该组存储块中一部分存储块处于映射状态而另一部分存储块处于取消映射状态的状态(在下文中称为混合状态)。
在图2所示的例子中,使用高速缓存中的2个位的缓存指示符来表示包括n个存储块的一组存储块的状态。在该例子中,例如可以用“00”来表示全取消映射状态,可以用“11”表示全映射状态,可以用“01”和“10”来表示混合状态。例如,如图2所示,占用2个位的缓存指示符2501为“10”,表示相应的第一组存储块221处于混合状态;占用2个位的缓存指示符2502为“11”,表示相应的第二组存储块222处于全映射状态。本领域技术人员将理解的是,用2个位来表示状态仅仅是示例性的,本公开的实施例并不限于此。根据实际需要,在高速缓存中表示一组存储块的状态的位的数目可以是小于n的任何自然数。
环境200还包括存储管理器240,用于管理对盘220的读写操作以及对缓存指示符和元数据的修改。存储管理器240在接收到来自应用的对盘220中的目标存储块的请求之后,可以访问高速缓存250中的表示目标存储块在内的一组存储块的状态的缓存指示符。存储管理器240可以基于缓存指示符来确定是否需要访问盘220中的元数据区域230。在不需要访问元数据区域230的情况下,存储管理器240可以直接对请求进行响应,而不访问元数据区域230。在需要访问元数据区域230的情况下,存储管理器240可以访问元数据区域230以获得目标存储块的状态,并基于目标状态对请求进行响应,并在需要时相应地修改元数据区域130中的表示目标存储块的状态的指示符以及高速缓存230中表示包括目标存储块在内的一组存储块的状态的指示符。
在本公开的实施例中,存储管理器240通过高速缓存230中的占用较少空间的缓存指示符来判断是否需要访问盘220中的元数据区域230,并且在不需要访问盘220中的元数据区域230的情况下,直接对读写请求进行响应。这样,减少了对盘220的额外访问,提高了读写速度。
图3示出了根据本公开实施例的存储管理方法300的流程图。方法300可以由图2中所示的存储管理器240来执行。
在框302,存储管理器240接收针对盘220中的目标存储块的请求。存储管理器240可以从用户接收读取目标存储块中的数据的读请求。存储管理器240也可以从用户接收向目标存储块写入数据的写请求。例如,用户可以请求阅读存储在目标存储块中的文档或请求编辑该文档。又例如,用户可以请求查看或打印存储在目标存储块中的图像。
在框304,存储管理器240从高速缓存250获取表示包括目标存储块在内的一组存储块的状态的缓存指示符,高速缓存中的缓存指示符占用的位的数目小于该组存储块的存储块数目。
在本公开的实施例中,一个存储块的状态可以包括该存储块被映射到逻辑块的映射状态以及该存储块与该逻辑块之间的映射被取消的取消映射状态。缓存指示符可以表示一组存储块全部处于映射状态的全映射状态、一组存储块全部处于取消映射状态的全取消映射状态以及一组存储块中的一部分存储块处于映射状态而另一部分处于取消映射状态的混合状态。
在本公开的实施例中,初始时,对于盘220中的用于存储用户数据的每组存储块,存储管理器240可以通过从盘220中的元数据区域230读取表示该组存储块中的每个存储块的状态的指示符,来初始设置针对该组存储块的缓存指示符。如果该组存储块中的全部存储块都处于映射状态,则可以将高速缓存220中针对该组存储块的缓存指示符设置为表示全映射状态。如果该组存储块中的全部存储块都处于取消映射状态,则可以将高速缓存220中针对该组存储块的缓存指示符设置为表示全取消映射状态。如果该组存储块中既存在处于映射状态的存储块又存在处于取消映射状态的存储块,则可以将高速缓存220中针对该组存储块的缓存指示符设置为表示混合状态。
在本公开的实施例中,并不是将一组存储块中的每个存储块的状态都存储在高速缓存250中,而是利用比该组存储块的存储块数目少的位来表示该组存储块的总体状态。这样,可以在利用高速缓存250减少对盘220的额外访问的同时,节省高速缓存资源。
在框306,存储管理器240基于缓存指示符来对接收到的请求进行响应。在本公开的实施例中,存储管理器240可以基于缓存指示符来确定在对请求进行响应之前是否需要访问盘220中的元数据区域230。如果不需要访问盘220中的元数据区域230,存储管理器240可以直接对接收到的请求进行响应,从而减少对盘220的额外访问。这会提高输入输出操作的性能。在盘220的每秒输入输出次数受限的情况下,这种性能改善尤为明显。
下面将在图4和图5中分别描述基于缓存指示符对读请求进行响应的方法以及对写请求进行响应的方法。图4示出了根据本公开实施例对读请求进行响应的方法400的流程图。方法400可以由图2中的存储管理器240来执行。
在框402,存储管理器240接收针对盘220中的目标存储块的读请求。例如存储管理器240可以从用户接收查看存储在目标存储块中的文档、图像等的请求。
在框404,存储管理器240从高速缓存250获取表示目标存储块在内的一组存储块的状态的缓存指示符,缓存指示符占用的位的数目小于该组存储块的存储块数目。在高速缓存250中利用比一组存储块的存储块数目少的位来表示一组存储块的状态。这样,在达到本公开的目的的同时,节省了高速缓存资源。框404中所描述的内容类似于图3中框304中所描述的内容,再次不再赘述。
在框406,存储管理器240确定缓存指示符是否表示全取消映射状态。如前面所描述的,全取消映射状态表示该组存储块全部被取消与其各自在逻辑空间中的逻辑块的映射的状态。在全取消映射状态下,由于该组存储块与逻辑块的映射关系全部被取消,所以这些存储块中的数据无效。
在框408,响应于缓存指示符表示全取消映射状态,存储管理器240返回零模式,而不访问盘220中表示目标存储块的状态的目标指示符。如上所述,在全取消映射状态下,由于该组存储块与逻辑块的映射关系全部被取消,所以这些存储块中的数据已经处于无效状态,目标存储块中的已有数据必然也是无效的。在这种情况下,存储管理器240直接返回零模式,而不对盘220进行访问。这确保了在对读请求进行正确响应的同时,不对盘220进行任何访问,从而提高了对读请求的响应速度。这在输入输出负荷较重的情况下,能带来明显的性能优势。
在框410,响应于缓存指示符不表示全取消映射状态,存储管理器240确定缓存指示符是否表示全映射状态。如前面所描述的,全映射状态是该组存储块全部被映射到相应逻辑块的状态。在全映射状态下,该组存储块中的数据都是有效的。
在框412,响应于缓存指示符表示全映射状态,存储管理器240直接从目标存储块读取读请求所请求的数据,而不访问盘中表示目标存储块的状态的目标指示符。由于通过缓存指示符得知该组存储块全部处于映射状态,进而得知目标存储块处于映射状态以及目标存储块中的数据为有效。在这种情况下,存储管理器240可以直接从目标存储块读取数据,而不需要访问盘220中的元数据区域230来获得目标存储块的状态。以这种方式,减少了对盘230中元数据区域230的额外访问,提高了对读请求的响应速度。
在框414,响应于缓存指示符不表示全取消映射状态也不表示全映射状态,即缓存指示符表示混合状态,存储管理器240从盘220(例如从盘220中的元数据区域230)获取表示目标存储块的状态的目标指示符。如上面所描述的,混合状态为该组存储块中的一部分存储块处于映射状态而另一部分存储块处于取消映射状态的状态。在缓存指示符表示混合状态的情况下,无法基于缓存指示符来确定目标存储块的状态,为此存储管理器240需要访问盘220中的元数据区域230来获得表示目标存储块的状态的目标指示符。
在框416,存储管理器240确定目标指示符是否表示目标存储块被映射到逻辑块的映射状态。在框418,响应于目标指示符表示映射状态,存储管理器240从目标存储块读取读请求所请求的数据。在目标指示符表示映射状态的情况下,目标存储块中的数据是有效的,可以将目标存储块中的数据返回给用户,以作为对读请求的响应。
在框420,响应于目标指示符不表示映射状态,即目标指示符表示取消映射状态,存储管理器240返回零模式。在取消映射状态中,目标存储块与逻辑块之间的映射关系已经被取消,在这种情况下,目标存储块中的数据不再有效,因此向用户返回零模式,以作为对读请求的响应。
在方法400中,对于读请求而言,只有在缓存指示符表示混合状态的情况下,才对盘220中的元数据区域230进行访问;而在缓存指示符表示全映射状态和全取消映射状态的情况下,直接对读请求进行响应,而不访问盘220中的目标指示符,从而能够为读请求提供快速的响应。以这种方式,由于总体上减少了对盘220的访问次数,所以在输入输出负荷较重并且盘220每秒被访问的次数受到限制的情况下,能够提供较佳的输入输出性能。
图5示出了根据本公开实施例对写请求进行响应的方法500的流程图。方法500可以由图2中的存储管理器240来执行。
在框502,存储管理器240可以接收针对盘220中的目标存储块的写请求。例如,存储管理器240可以从用户接收对存储在目标存储块中的文档进行编辑的请求。
在框504,存储管理器240可以从高速缓存250获取表示目标存储块在内的一组存储块的状态的缓存指示符,高速缓存中的缓存指示符占用的位的数目小于一组存储块的存储块数目。在高速缓存250中利用比一组存储块的存储块数目少的位来表示一组存储块的状态。这样,在达到本公开的目的的同时,节省了高速缓存资源。框504中所描述的操作类似于图3中框304中所描述的操作,在此不再赘述。
在框506,存储管理器240可以确定缓存指示符是否表示全取消映射状态。如前面所描述的,全取消映射状态表示该组存储块全部被取消与其各自在逻辑空间中的逻辑块的映射的状态。在全取消映射状态下,由于该组存储块与逻辑块的映射关系全部被取消,所以这些存储块中的数据已经无效。
在框508,响应于缓存指示符表示全取消映射状态,存储管理器240可以用零来填充目标存储块。由于在全取消映射状态下,该组存储块全部处于取消映射状态,由此在不访问盘220的元数据区域230的情况下即可获知目标存储块处于取消映射状态,从而可以减少对盘220的额外访问。在这种情况下,用零填充目标存储块,以消除目标存储块上已有数据对即将写入的数据的影响。
在框510,存储管理器240可以向目标存储块写入写请求所要写入的数据。由于用户是通过与目标存储块相对应的逻辑块来完成对目标存储块的访问的,所以写请求实际上实现了目标存储块与逻辑块之间的映射。为此,在框512中,在成功地向目标存储块进行写入之后,存储管理器240需要将盘220中表示目标存储块的状态的目标指示符从表示取消映射状态修改为表示映射状态。
由于目标指示符从表示取消映射状态被修改为表示映射状态,从而导致该组存储块从全取消映射状态变为混合状态。为此,在框514,存储管理器240可以将高速缓存250中的缓存指示符修改为表示混合状态。
在缓存指示符表示全取消映射的情况下,存储管理器240在向目标存储块写入数据之前不需要从盘220来获得目标指示符,从而减少了对盘220的额外访问次数。这提高了写请求的响应速度。
在框516,响应于缓存指示符不表示全取消映射状态,存储管理器240可以确定缓存指示符是否表示全映射状态。在全映射状态下,该组存储块全部被映射到各自的逻辑块,为此存储管理器240可以通过高速缓存中的缓存指示符获知目标存储块处于映射状态。
在框518,响应于缓存指示符表示全映射状态,存储管理器240可以直接向目标存储块写入写请求所要写入的数据,而不访问盘中的目标指示符。由于通过高速缓存250中的缓存指示符已经获知目标存储块处于映射状态,所以不需要访问盘220中的元数据区域230中的目标指示符,从而减少了对盘220的访问次数。与现有技术相比,提高了写请求的响应速度。
在框520,响应于缓存指示符既不表示全取消映射状态,也不表示全映射状态,存储管理器240可以从盘220获取表示目标存储块的状态的目标指示符,例如从元数据区域230获取目标指示符。
在框522,存储管理器240可以确定目标指示符是否表示目标存储块被映射到逻辑块的映射状态。在框524,响应于目标指示符表示映射状态,存储管理器524可以向目标存储块写入写请求所要写入的数据。
在框526,响应于目标指示符表示目标存储块被取消与相应逻辑块的映射的取消映射状态,存储管理器240可以用零填充目标存储块。在目标存储块处于取消映射状态的情况下,目标存储块中的数据是无效的。为了消除无效数据对即将写入的数据的影响,可以用零来填充目标存储块。
在框528,存储管理器240可以向目标存储块写入写请求所要写入的数据。由于用户是通过与目标存储块相对应的逻辑块来完成对目标存储块的访问的,所以写请求实际上实现了目标存储块与逻辑块之间的映射。为此,在框530中,在成功地向目标存储块进行写入之后,存储管理器240需要将盘220中表示目标存储块的状态的目标指示符从表示取消映射状态修改为表示映射状态。
由于目标指示符从表示取消映射状态被修改为表示映射状态,可能会导致该组存储块从混合状态变为全映射状态。为此,在框532,存储管理器240可以确定目标指示符从取消映射状态到映射状态的修改是否会导致全映射状态,以便确定是否需要对缓存指示符进行修改。
在框534,响应于目标指示符的修改导致该组存储块全部处于映射状态的全映射状态,存储管理器240将高速缓存中的缓存指示符修改为表示全映射状态。
在本公开的实施例中,可以将混合状态进一步细分为第一混合状态和第二混合状态。在第一混合状态中,该组存储块中低于阈值数目的存储块处于映射状态而其余存储块处于取消映射状态;在第二混合状态中,该组存储块中高于该阈值数目的存储块处于映射状态而其余存储块处于取消映射状态。该阈值可以是预先定义的。如果缓存指示符表示第二混合状态,则表明该组存储块将来很可能被读取或写入。为此,在本公开的实施例中,可以针对第二混合状态,进行特殊的处理,以便进一步提高对请求的响应速度。下面会对这种特殊处理进行详细描述。
在框536,响应于目标指示符的修改没有导致全映射状态,存储管理器240可以确定目标指示符的修改是否导致该组存储块从第一混合状态变为第二混合状态。如果在修改之前该组存储块中处于映射状态的存储块的数目低于预定阈值,而在修改之后该组存储块中处于映射状态的存储块的数目变为高于该预定阈值,则存储管理器240可以确定目标指示符的修改导致第一混合状态到第二混合状态的转变。在这种情况下,该组存储块很可能在不久的将来再次被访问。为了提高对该组存储块中的任意存储块的访问速度,在方框540,存储管理器240可以启动定时器。在方框542,响应于定时器到期,存储管理器240可以启动后台服务,以便通过对该组存储块中的某些存储块进行预填充,来提高未来的访问速度。以下会结合图6将会详细描述预填充服务的具体过程。
在方法500中,对于写请求而言,只有在缓存指示符表示混合状态的情况下,才在写入数据之前访问盘220中的目标指示符;而在缓存指示符表示全映射状态和全取消映射状态的情况下,在写入数据之前不需要访问盘220中的目标指示符,从而能够为写请求提供快速的响应。以这种方式,总体上减少了对盘220的额外访问次数,所以输入输出负荷较重并且盘220每秒被访问的次数受到限制的情况下,能够提供较佳的输入输出性能。
图6示出了根据本公开实施例的预填充方法600的流程图。方法600可以由图2中未示出的后台服务在***空闲时执行。预填充的目的是预先用零来填充将来很可能被访问的一组存储块中的处于取消映射状态的存储块,以便提高对该组存储块中的任何存储块的未来访问的响应速度。
如参考图5所描述的,如果表示一组存储块的状态的缓存指示符从第一混合状态变为第二混合状态,则表明这组存储块在将来很有可能被再次访问。在这种情况下,定时器被启动。如果定时器到期,则后台服务被触发以执行方法600。
在框602,后台服务可以从高速缓存250确定其缓存指示符表示第二混合状态的一组存储块。如之前所描述的,如果一组存储块处于第二混合状态,则表示该组存储块中存在高于预定阈值数目的存储块处于映射状态。在这种情况下,该组存储块很可能被再次访问。
在框604,后台服务可以从盘220获取表示该组存储块中的存储块的各自状态的指示符。如前面所描述的,这些指示符表示相应的存储块是处于映射状态还是处于取消映射状态。
在框606,后台服务可以基于这些指示符来确定被取消与各自的逻辑块的映射的预填充存储块。后台服务可以将处于取消映射状态的存储块作为预填充存储块。正是由于预填充存储块的存在,导致了该组存储块处于混合状态,使得通过缓存指示符无法获知该组存储块中的某个存储块的状态,从而必须访问盘220来获知该存储块的状态。这导致将来对该组存储块中的任何存储块进行访问时都需要对盘220进行额外访问。为此,后台服务在空闲时可以确定这些预填充存储块,并对其进行预填充,由此可以进一步减少对盘220的额外访问。
在框608,后台服务用零来填充预填充存储块,从而抹去预填充存储块中的已数据,以便不会影响将来写入的数据。在框610,后台服务可以将盘中表示预填充存储块的状态的指示符从表示取消映射状态修改为表示映射状态。
在框612,后台服务可以将高速缓存250中表示该组存储块的状态的缓存指示符从第二混合状态修改为全映射状态。由于该组存储块在将来很可能被再次访问,通过将与其相关联的缓存指示符修改为全映射状态,在再次访问该组存储块中任何存储块时,可以在不访问盘220的元数据区域230的情况下,对再次访问进行响应,从而提高响应速度。
在框614,后台服务可以暂停定时器,以等待下一次预填充。例如,在存储管理器240确定另一组存储块的缓存指示符从表示第一混合状态变为表示第二混合状态时,可以再次启动该定时器。
在方法600中,后台服务在空闲时对将来很可能被访问的一组存储块中的处于取消映射状态的存储块进行预填充,在预填充之后所述一组存储块将处于全映射状态。这样,当将来访问该组存储块中的任何存储块时,无需访问盘中的元数据区域,从而进一步减少了对盘的访问次数,提高了响应速度。
在本公开的实施例中,通过在高速缓存250中利用比一组存储块的存储块数目小的位数目来表示该组存储块的状态,从而减少对盘220中的元数据区域230的访问次数,以便提高对访问进行响应的速度。如之前所描述的,在对读写请求进行响应时,有时需要对高速缓存中的表示该组存储块的状态的缓存指示符进行修改。下面结合图7来描述缓存指示符的转变。
图7示出了根据本公开实施例的针对缓存指示符的状态机700。如图7所示,高速缓存250中的缓存指示符可以表示一组存储块中的存储块全部处于映射状态的全映射状态702、该组存储块中的存储块全部处于取消映射状态的全取消映射状态704、该组存储块中低于阈值数目的存储块处于映射状态而其余存储块处于取消映射的第一混合状态706、以及该组存储块中高于该阈值数目的存储块处于映射状态而其余存储块处于取消映射状态的第二混合状态708。
在一组存储块处于全取消映射状态704时,如果用户向该组存储块中的存储块成功写入数据之后,缓存指示符从表示全取消映射状态704变为表示第一混合状态706。
在该组存储块处于第一混合状态706时,如果用户继续向该组存储块中的存储块写入数据,导致高于阈值数目的存储块处于映射状态,缓存指示符从表示第一缓存状态706变为表示第二混合状态708。在该组存储块处于第一混合状态706时,如果写请求导致该组存储块中的存储块都处于映射状态,则缓存指示符从表示第一混合状态706变为表示全映射状态702。
在该组存储块处于第二混合状态708时,如果写请求导致该组存储块全部处于映射状态或者进行了预填充,则缓存指示符从表示第二混合状态708变为表示全映射状态702。
在该组存储块处于全映射状态702时,如果用户取消了该组块中所有块与各自逻辑块的映射,则缓存指示符从表示全映射状态702变为表示全取消映射状态。在该组存储块处于全映射状态702时,如果用户取消了一部分存储块与其各自的逻辑块的映射,则缓存指示符从表示全映射状态702变为表示第一混合状态706。
在缓存指示符表示全取消映射状态704和全映射状态702时,在读取数据之前或写入数据之前,不需要访问盘220中的元数据区域230,从而减少了对盘220的访问次数。而在缓存指示符从表示第一混合状态706变为表示第二混合状态708时,通过预填充服务将缓存指示符修改为全映射状态702,从而在将来访问该组存储块中的任意存储块时,可以减少对盘的访问次数。通过这种方式,可以在引入取消映射命令的存储***中,提高对读写请求的响应速度。
图8示出了可以用来实施本公开的实施例的示例设备800的示意性框图。设备800可以用于实现图2的存储管理器240。如图8所示,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元801执行上文所描述的各个方法和处理,例如方法300、方法400、方法500和/或方法600。例如,在一些实施例中,方法300、方法400、方法500和/或方法600可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由CPU 801执行时,可以执行上文描述的方法300、方法400、方法500和/或方法600的一个或多个步骤。备选地,在其他实施例中,CPU 801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法300、方法400、方法500和/或方法600。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (21)
1.一种电子装置中的存储管理方法,包括:
维护针对盘中的一组存储块的盘上指示符和缓存指示符的集合,所述盘上指示符包括每块映射指示符,每个每块映射指示符指示所述一组中的相应存储块的映射状态,所述缓存指示符指示所述一组存储块的整体映射状态,所述整体映射状态选自(1)当所述一组中的所有存储块被映射时的全映射状态,(2)当所有一组中的所有存储块未被映射时的全取消映射状态,以及(3)当所述一组中所述存储块中的一些存储块被映射而所述一组中所述存储块中的其他存储块未被映射时的混合状态;
接收针对所述一组存储块中的目标存储块的请求;
从高速缓存获取指示包括所述目标存储块的所述一组存储块的所述状态的所述缓存指示符;以及
通过(1)当所述缓存指示符指示所述全映射状态和当所述缓存指示符指示所述全取消映射状态时,然后对所述请求进行响应而不访问针对所述目标块的每块映射指示符,以及(2)当所述缓存指示符指示所述混合状态时,则首先获取针对所述目标块的所述每块映射指示符,并且然后基于所述每块映射指示符来对所述请求进行响应,来基于所述缓存指示符对所述请求进行响应。
2.根据权利要求1所述的方法,其中所述请求为读请求,并且基于所述缓存指示符对所述请求进行响应包括:
响应于所述缓存指示符指示所述一组存储块与各自的逻辑块的映射被全部被取消的所述全取消映射状态,提供零模式,而不访问所述盘中指示所述目标存储块的所述状态的所述每块映射指示符。
3.根据权利要求1所述的方法,其中所述请求为读请求,并且基于所述缓存指示符对所述请求进行响应包括:
响应于所述缓存指示符指示所述一组存储块全部被映射到各自的逻辑块的所述全映射状态,从所述目标存储块读取与所述读请求相关联的数据,而不访问所述盘中指示所述目标存储块的状态的所述每块映射指示符。
4.根据权利要求1所述的方法,其中所述请求为读请求,并且基于所述每块映射指示符对所述请求进行响应包括:
响应于所述每块映射指示符指示所述目标存储块被映射到目标逻辑块的映射状态,从所述目标存储块读取与所述请求相关联的数据;以及
响应于所述每块映射指示符指示所述目标存储块与所述目标逻辑块的映射被取消的取消映射状态,提供零模式。
5.根据权利要求1所述的方法,其中所述请求为写请求,并且基于所述缓存指示符对所述请求进行响应包括:
响应于所述缓存指示符指示所述一组存储块与各自的逻辑块的映射被全部被取消的所述全取消映射状态,
用零填充所述目标存储块;
向所述目标存储块写入要被所述请求写入的数据;
将所述盘中指示所述目标存储块的所述状态的所述每块映射指示符修改为指示所述目标存储块被映射到目标逻辑块的映射状态;
将所述缓存指示符修改为指示混合状态,在所述混合状态中所述一组存储块中的第一部分的存储块被映射到各自的逻辑块而所述一组存储块中的第二部分的存储块与各自的逻辑块的映射被取消。
6.根据权利要求1所述的方法,其中所述请求为写请求,并且所述基于所述缓存指示符对所述请求进行响应包括:
响应于所述缓存指示符指示所述一组存储块全部被映射到各自的逻辑块的所述全映射状态,
向所述目标存储块写入与所述写请求相关联的数据,而不访问所述盘中指示所述目标存储块的状态的所述每块映射指示符。
7.根据权利要求1所述的方法,其中所述请求为写请求,并且基于所述每块映射指示符对所述请求进行响应包括:
响应于所述每块映射指示符指示所述目标存储块被映射到目标逻辑块的映射状态,向所述目标存储块写入与所述写请求相关联的数据。
8.根据权利要求7所述的方法,还包括:
响应于所述每块映射指示符指示所述目标存储块被取消与所述目标逻辑块的映射的取消映射状态,
用零填充所述目标存储块;
向所述目标存储块写入要被所述请求写入的数据;
将所述每块映射指示符修改为指示所述映射状态;以及
响应于所述每块映射指示符的修改导致所述一组存储块全部被映射到各自的逻辑块的全映射状态,将所述缓存指示符修改为指示所述全映射状态。
9.根据权利要求8所述的方法,其中所述混合状态包括所述一组存储块中低于阈值数目的存储块被映射到各自的逻辑块的第一混合状态以及所述一组存储块中高于所述阈值数目的存储块被映射到各自的逻辑块的第二混合状态,所述缓存指示符指示所述第一混合状态,所述方法还包括:
响应于所述每块映射指示符的修改导致所述第二混合状态,将所述缓存指示符从指示所述第一混合状态修改为指示所述第二混合状态。
10.根据权利要求9所述的方法,还包括:
响应于将所述缓存指示符从所述第一混合状态修改为所述第二混合状态,启动定时器;
响应于所述定时器到期,触发后台服务,所述后台服务:
从所述盘获取指示所述一组存储块中的存储块的各自状态的所述每块映射指示符;
基于所述每块映射指示符确定所述一组存储块中被取消与各自的逻辑块的映射的预填充存储块;
用零填充所述预填充存储块;
将所述盘中指示所述预填充存储块的状态的每块映射指示符修改为指示所述预填充存储块被映射到各自的逻辑块的映射状态;
将所述缓存指示符修改为指示所述一组存储块全部被映射到各自的逻辑块的全映射状态。
11.一种电子设备,包括:
处理器;以及
存储器,所述存储器存储有指令,所述指令在被所述处理器执行时使得所述电子设备执行以下动作:
维护针对盘中的一组存储块的盘上指示符和缓存指示符的集合,所述盘上指示符包括每块映射指示符,每个每块映射指示符指示所述一组中的相应存储块的映射状态,所述缓存指示符指示所述一组存储块的整体映射状态,所述整体映射状态选自(1)当所述一组中的所有存储块被映射时的全映射状态,(2)当所有一组中的所有存储块未被映射时的全取消映射状态,以及(3)当所述一组中所述存储块中的一些存储块被映射而所述一组中所述存储块中的其他存储块未被映射时的混合状态;
接收针对所述一组存储块中的目标存储块的请求;
从高速缓存获取指示包括所述目标存储块的所述一组存储块的所述状态的所述缓存指示符;以及
通过(1)当所述缓存指示符指示所述全映射状态和当所述缓存指示符指示所述全取消映射状态时,然后对所述请求进行响应而不访问针对所述目标块的所述每块映射指示符,以及(2)当所述缓存指示符指示所述混合状态时,则首先获取针对所述目标块的所述每块映射指示符,并且然后基于所述每块映射指示符来对所述请求进行响应,来基于所述缓存指示符对所述请求进行响应。
12.根据权利要求11所述的电子设备,其中所述请求为读请求,并且基于所述缓存指示符对所述请求进行响应包括:
响应于所述缓存指示符指示所述一组存储块与各自的逻辑块的映射被全部取消的所述全取消映射状态,提供零模式,而不访问所述盘中指示所述目标存储块的所述状态的所述每块映射指示符。
13.根据权利要求11所述的电子设备,其中所述请求为读请求,并且基于所述缓存指示符对所述请求进行响应包括:
响应于所述缓存指示符指示所述一组存储块全部被映射到各自的逻辑块的所述全映射状态,从所述目标存储块读取所述读请求相关联的数据,而不访问所述盘中指示所述目标存储块的状态的所述每块映射指示符。
14.根据权利要求11所述的电子设备,其中所述请求为读请求,并且基于所述每块映射指示符对所述请求进行响应包括:
响应于所述每块映射指示符指示所述目标存储块被映射到目标逻辑块的映射状态,从所述目标存储块读取与所述请求相关联的数据;以及
响应于所述每块映射指示符指示所述目标存储块与所述目标逻辑块的映射被取消的取消映射状态,提供零模式。
15.根据权利要求11所述的电子设备,其中所述请求为写请求,并且基于所述缓存指示符对所述请求进行响应包括:
响应于所述缓存指示符指示所述一组存储块与各自的逻辑块的映射被全部取消的所述全取消映射状态,
用零填充所述目标存储块;
向所述目标存储块写入要被所述请求写入的数据;
将所述盘中指示所述目标存储块的所述状态的所述每块映射指示符修改为指示所述目标存储块被映射到目标逻辑块的映射状态;
将所述缓存指示符修改为指示混合状态,在所述混合状态中所述一组存储块中的第一部分的存储块被映射到各自的逻辑块而所述一组存储块中的第二部分的存储块与各自的逻辑块的映射被取消。
16.根据权利要求11所述的电子设备,其中所述请求为写请求,并且所述基于所述缓存指示符对所述请求进行响应包括:
响应于所述缓存指示符指示所述一组存储块全部被映射到各自的逻辑块的所述全映射状态,
向所述目标存储块写入与所述写请求相关联的数据,而不访问所述盘中指示所述目标存储块的状态的所述每块映射指示符。
17.根据权利要求11所述的电子设备,其中所述请求为写请求,并且基于所述每块映射指示符对所述请求进行响应包括:
响应于所述每块映射指示符指示所述目标存储块被映射到目标逻辑块的映射状态,向所述目标存储块写入与所述写请求相关联的数据。
18.根据权利要求17所述的电子设备,所述动作还包括:
响应于所述每块映射指示符指示所述目标存储块被取消与所述目标逻辑块的映射的取消映射状态,
用零填充所述目标存储块;
向所述目标存储块写入要被所述请求写入的数据;
将所述每块映射指示符修改为指示所述映射状态;以及
响应于所述每块映射指示符的修改导致所述一组存储块全部被映射到各自的逻辑块的全映射状态,将所述缓存指示符修改为指示所述全映射状态。
19.根据权利要求18所述的电子设备,其中所述混合状态包括所述一组存储块中低于阈值数目的存储块被映射到各自的逻辑块的第一混合状态以及所述一组存储块中高于所述阈值数目的存储块被映射到各自的逻辑块的第二混合状态,所述缓存指示符指示所述第一混合状态,所述动作还包括:
响应于所述每块映射指示符的修改导致所述第二混合状态,将所述缓存指示符从指示所述第一混合状态修改为指示所述第二混合状态。
20.根据权利要求19所述的电子设备,其中所述动作还包括:
响应于将所述缓存指示符从所述第一混合状态修改为所述第二混合状态,启动定时器;
响应于所述定时器到期,触发后台服务,所述后台服务:
从所述盘获取指示所述一组存储块中的存储块的各自状态的所述每块映射指示符;
基于所述指示符确定所述一组存储块中被取消与各自的逻辑块的映射的预填充存储块;
用零填充所述预填充存储块;
将所述盘中指示所述预填充存储块的状态的每块映射指示符修改为指示所述预填充存储块被映射到各自的逻辑块的映射状态;
将所述缓存指示符修改为指示所述一组存储块全部被映射到各自的逻辑块的全映射状态。
21.一种计算机可读存储介质,存储一组指令以执行存储管理,所述一组指令在由计算机化的电路执行时使得所述计算机化的电路执行方法,所述方法包括:
维护针对盘中的一组存储块的盘上指示符和缓存指示符的集合,所述盘上指示符包括每块映射指示符,每个每块映射指示符指示所述一组中的相应存储块的映射状态,所述缓存指示符指示所述一组存储块的整体映射状态,所述整体映射状态选自(1)当所述一组中的所有存储块被映射时的全映射状态,(2)当所有一组中的所有存储块未被映射时的全取消映射状态,以及(3)当所述一组中所述存储块中的一些存储块被映射而所述一组中所述存储块中的其他存储块未被映射时的混合状态;
接收针对所述一组存储块中的目标存储块的请求;
从高速缓存获取指示包括所述目标存储块的所述一组存储块的所述状态的所述缓存指示符;以及
通过(1)当所述缓存指示符指示所述全映射状态和当所述缓存指示符指示所述全取消映射状态时,然后对所述请求进行响应而不访问针对所述目标块的每块映射指示符,以及(2)当所述缓存指示符指示所述混合状态时,则首先获取针对所述目标块的所述每块映射指示符,并且然后基于所述每块映射指示符来对所述请求进行响应,来基于所述缓存指示符对所述请求进行响应。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810401726.4A CN110413211B (zh) | 2018-04-28 | 2018-04-28 | 存储管理方法、电子设备以及计算机可读介质 |
US16/196,692 US10789170B2 (en) | 2018-04-28 | 2018-11-20 | Storage management method, electronic device and computer readable medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810401726.4A CN110413211B (zh) | 2018-04-28 | 2018-04-28 | 存储管理方法、电子设备以及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110413211A CN110413211A (zh) | 2019-11-05 |
CN110413211B true CN110413211B (zh) | 2023-07-07 |
Family
ID=68292215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810401726.4A Active CN110413211B (zh) | 2018-04-28 | 2018-04-28 | 存储管理方法、电子设备以及计算机可读介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10789170B2 (zh) |
CN (1) | CN110413211B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110737395B (zh) | 2018-07-20 | 2023-09-29 | 伊姆西Ip控股有限责任公司 | I/o管理方法、电子设备和计算机可读存储介质 |
US10922242B2 (en) * | 2018-10-09 | 2021-02-16 | Western Digital Technologies, Inc. | Adaptable logical to physical tables for multiple sector pattern support |
CN111857547B (zh) | 2019-04-29 | 2024-05-24 | 伊姆西Ip控股有限责任公司 | 用于管理数据存储的方法、设备和计算机可读介质 |
US11556270B2 (en) | 2021-01-07 | 2023-01-17 | EMC IP Holding Company LLC | Leveraging garbage collection for raid transformation |
US11954346B2 (en) * | 2021-04-23 | 2024-04-09 | EMC IP Holding Company LLC | Using multi-stream storage devices in log structured storage system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504594A (zh) * | 2009-03-13 | 2009-08-12 | 杭州华三通信技术有限公司 | 一种数据存储方法和装置 |
CN104346287A (zh) * | 2013-08-09 | 2015-02-11 | Lsi公司 | 在固态介质中使用多级别映射的修整机制 |
CN104679668A (zh) * | 2013-11-26 | 2015-06-03 | 群晖科技股份有限公司 | 存储***及其控制方法 |
CN107526533A (zh) * | 2016-06-21 | 2017-12-29 | 伊姆西公司 | 存储管理方法及设备 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6735601B1 (en) * | 2000-12-29 | 2004-05-11 | Vmware, Inc. | System and method for remote file access by computer |
US7661054B2 (en) * | 2005-09-30 | 2010-02-09 | Intel Corporation | Methods and arrangements to remap degraded storage blocks |
JP5037881B2 (ja) * | 2006-04-18 | 2012-10-03 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
US20090327837A1 (en) * | 2008-06-30 | 2009-12-31 | Robert Royer | NAND error management |
US9304714B2 (en) * | 2012-04-20 | 2016-04-05 | Violin Memory Inc | LUN management with distributed RAID controllers |
US9218281B2 (en) * | 2012-05-04 | 2015-12-22 | Seagate Technology Llc | Maintaining ordering via a multi-level map of a solid-state media |
US9086820B2 (en) * | 2012-12-10 | 2015-07-21 | Infinidat Ltd. | System and methods for managing storage space allocation |
US9268625B1 (en) * | 2013-09-30 | 2016-02-23 | Emc Corporation | System and method for storage management |
US9471510B2 (en) * | 2013-12-20 | 2016-10-18 | Netapp, Inc. | System and method for cache monitoring in storage systems |
US9513822B2 (en) * | 2014-09-26 | 2016-12-06 | Hewlett Packard Enterprise Development Lp | Unmap storage space |
US9558125B2 (en) * | 2014-10-27 | 2017-01-31 | Sandisk Technologies Llc | Processing of un-map commands to enhance performance and endurance of a storage device |
US9619158B2 (en) * | 2014-12-17 | 2017-04-11 | International Business Machines Corporation | Two-level hierarchical log structured array architecture with minimized write amplification |
US10884945B2 (en) * | 2015-06-30 | 2021-01-05 | International Business Machines Corporation | Memory state indicator check operations |
US10635307B2 (en) * | 2015-06-30 | 2020-04-28 | International Business Machines Corporation | Memory state indicator |
US9715352B2 (en) * | 2015-10-01 | 2017-07-25 | International Business Machines Corporation | Synchronous input/output using a low latency storage controller connection |
US10275243B2 (en) * | 2016-07-02 | 2019-04-30 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
KR102493323B1 (ko) * | 2018-02-21 | 2023-01-31 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
-
2018
- 2018-04-28 CN CN201810401726.4A patent/CN110413211B/zh active Active
- 2018-11-20 US US16/196,692 patent/US10789170B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504594A (zh) * | 2009-03-13 | 2009-08-12 | 杭州华三通信技术有限公司 | 一种数据存储方法和装置 |
CN104346287A (zh) * | 2013-08-09 | 2015-02-11 | Lsi公司 | 在固态介质中使用多级别映射的修整机制 |
CN104679668A (zh) * | 2013-11-26 | 2015-06-03 | 群晖科技股份有限公司 | 存储***及其控制方法 |
CN107526533A (zh) * | 2016-06-21 | 2017-12-29 | 伊姆西公司 | 存储管理方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
US10789170B2 (en) | 2020-09-29 |
US20190332540A1 (en) | 2019-10-31 |
CN110413211A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413211B (zh) | 存储管理方法、电子设备以及计算机可读介质 | |
US11216185B2 (en) | Memory system and method of controlling memory system | |
US20230315342A1 (en) | Memory system and control method | |
KR20170098187A (ko) | 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법 | |
US10740251B2 (en) | Hybrid drive translation layer | |
US9639481B2 (en) | Systems and methods to manage cache data storage in working memory of computing system | |
CN109952565B (zh) | 内存访问技术 | |
US20070079070A1 (en) | Cache controller | |
US10635581B2 (en) | Hybrid drive garbage collection | |
US11341042B2 (en) | Storage apparatus configured to manage a conversion table according to a request from a host | |
CN108153682A (zh) | 一种利用闪存内部并行性进行闪存转换层地址映射的方法 | |
US20230120184A1 (en) | Systems, methods, and devices for ordered access of data in block modified memory | |
US8732404B2 (en) | Method and apparatus for managing buffer cache to perform page replacement by using reference time information regarding time at which page is referred to | |
US20150052310A1 (en) | Cache device and control method thereof | |
CN110968527B (zh) | Ftl提供的缓存 | |
US11561906B2 (en) | Rinsing cache lines from a common memory page to memory | |
KR101675694B1 (ko) | 블록 인기도에 기반한 ssd의 블록 교체방법 | |
KR20150096177A (ko) | 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 | |
US20160041916A1 (en) | Systems and Methods to Manage Cache Data Storage | |
CN110658999A (zh) | 一种信息更新方法、装置、设备及计算机可读存储介质 | |
US11977767B2 (en) | Method and apparatus for caching address mapping information in flash memory based storage device | |
EP4033346B1 (en) | Affinity-based cache operation for a persistent storage device | |
US20230019878A1 (en) | Systems, methods, and devices for page relocation for garbage collection | |
CN117311638A (zh) | 缓存管理方法、缓存管理装置、处理器 | |
CN117453608A (zh) | NVMe命令的处理方法、计算机设备、存储介质及产品 |
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 |