CN115309584A - 键值存储故障后的分区存储器装置恢复 - Google Patents
键值存储故障后的分区存储器装置恢复 Download PDFInfo
- Publication number
- CN115309584A CN115309584A CN202210488216.1A CN202210488216A CN115309584A CN 115309584 A CN115309584 A CN 115309584A CN 202210488216 A CN202210488216 A CN 202210488216A CN 115309584 A CN115309584 A CN 115309584A
- Authority
- CN
- China
- Prior art keywords
- partition
- key
- key values
- unfilled
- memory
- 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.)
- Withdrawn
Links
Images
Classifications
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1489—Generic software techniques for error detection or fault masking through recovery 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及键值存储故障后的分区存储器装置恢复。一种系统包含:分区存储器装置,其分配存储属于键值集的块的分区;及处理装置,其以操作方式与所述分区存储器装置耦合,并执行包含以下各项的操作:获得与所述分区相关联的分区状态信息,根据所述分区状态信息识别所述分区是未填满分区,及恢复所述未填满分区以获得经恢复分区。
Description
技术领域
本公开的实施例总体上涉及存储器子系统,且更确切地说,涉及键值存储故障后的分区存储器装置恢复。
背景技术
存储器子系统可包含一或多个存储数据的存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。大体来说,主机系统可利用存储器子系统,将数据存储在存储器装置处并从存储器装置检索数据。
发明内容
本申请的一方面涉及一种系统,其包括:分区存储器装置,其分配存储属于键值集的块的分区;以及处理装置,其以操作方式与所述分区存储器装置耦合,并执行包括以下各项的操作:获得与所述分区相关联的分区状态信息;根据所述分区状态信息,识别所述分区是未填满分区;以及恢复所述未填满分区以获得经恢复分区。
本申请的另一方面涉及一种方法,其包括:通过处理装置获得与由分区存储器装置分配的分区相关联的分区状态信息,其中所述分区存储属于键值集的块;通过所述处理装置,根据所述分区状态信息识别所述分区是未填满分区;以及通过所述处理装置恢复所述未填满分区以获得经恢复分区。
本申请的又一方面涉及一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使得所述处理装置执行包括以下各项的操作:通过处理装置获得与由分区存储器装置分配的多个分区相关联的分区状态信息,其中所述多个分区中的每一分区存储属于与键值存储树相关联的键值集的块;通过所述处理装置,根据所述分区状态信息识别所述多个分区中的未填满分区,其中所述未填满分区包括属于未提交键值集的未提交块;以及通过所述处理装置,重置所述未填满分区以获得空分区。
附图说明
将从下面给出的详细描述和本公开的各种实施例的附图更充分地理解本公开。然而,附图不应被视为将本公开限制为具体实施例,而是仅用于解释和理解。
图1示出根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2是根据本公开的一些实施例的实例键值存储(KVS)树的框图。
图3是根据本公开的一些实施例的用于管理键值存储(KVS)树的块的生命周期的实例方法的流程图。
图4是根据本公开的一些实施例的用于管理键值存储(KVS)树的键值集的生命周期的实例方法的流程图。
图5是根据本公开的一些实施例的用于在键值存储(KVS)故障后实施分区存储器装置恢复的实例方法的流程图。
图6是可在其中操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本公开的各方面涉及键值存储(KVS)故障(例如,电力故障、装置崩溃、KVS崩溃)后的分区存储器装置恢复。存储器子系统可以是存储装置、存储器模块或存储装置和存储器模块的组合。存储装置和存储器模块的实例在下文结合图1描述。一般来说,主机系统可使用存储器子系统,所述存储器子系统包含一或多个组件,例如存储数据的存储器装置。主机系统可提供要存储在存储器子系统处的数据,并且可请求要从存储器子系统检索的数据。
存储器子系统可包含高密度非易失性存储器装置,其中在没有电力供应到存储器装置时期望保留数据。非易失性存储器装置的一个实例是与非(NAND)存储器装置。非易失性存储器装置的其它实例在下文结合图1描述。非易失性存储器装置是一或多个裸片的封装。每一裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,NAND装置),每一平面由一组物理块组成。每一块由一组页组成。每一页由一组存储器单元(“单元”)组成。单元是存储信息的电子电路。取决于单元类型,单元可存储二进制信息的一或多个位,并且具有与所存储的位数目相关的各种逻辑状态。逻辑状态可表示为二进制值,例如“0”和“1”,或此类值的组合。
KVS数据结构可接受键值对和键询问的响应。KVS数据结构可包含诸如其中键与相应值相关联地存储的词典(例如,映射、散列映射等)之类的结构。更确切地说,KVS数据结构可包含树数据结构,称为KVS树。KVS树包含节点,其中父节点和子节点之间的连接基于键的预定推导而不是树的内容。键的预定推导是从键推导出的实体。在一些实施例中,预定推导是键散列。
节点可各自包含不可变键值集的时间顺序序列,其中含有呈键排序结构的键值对。键值集的键条目可存储在包含主键块及零或多个扩展键块的一组键块中。键值集的值条目可存储在一组值块中。所述一组键块和所述一组值块的成员对应于存储媒体的媒体块。键块和值块可统称为“块”。
更确切地说,每一键块可包含将其识别为键块的标头。主键块可包含用于键值集的所述一或多个扩展键块的媒体块标识的列表。主键块可包含键值集的键树的标头。标头可包含多个值,以使与键或键值集(一般来说)的交互更容易。例如,主键块或标头可包含键值集的键树中的最低键的副本。此处,最低键可由树的预设排序(例如,KVS树中的键的总排序)决定。主键块可包含键值集的键树中的最高键的副本,所述最高键由树的预设排序决定。主键块可进一步包含用于键值集的键树的媒体块标识的列表。主键块可包含键值集的布隆过滤器的布隆过滤器标头。在实例中,主键块包含用于键值集的布隆过滤器的媒体块标识的列表。
每一值块可包含将其识别为值块的标头。值块可包含一或多个值的存储区段,其间没有间隔。因此,第一值的位可在存储媒体上运行到第二值的位,如果它们之间没有防护(guard)、限制符(container)或其它分隔符的话。主键块可包含用于所述一组值块中的值块的媒体块标识的列表。因此,主键块可管理对值块的存储引用。
主键块可包含用于键值集的一组度量。在实例中,所述一组度量包含存储在键值集中的键的总数。在实例中,所述一组度量包含删除标记(tombstone)值存储在键值集中的键的数目。通常,删除标记可驻留在键条目中,并且此键值对不占用值块空间。删除标记是指示对应于所述键的值已被删除的数据标记。删除标记的目的是标记所述值的删除,同时避免从KVS树中清除所述值的可能昂贵的操作。因此,当使用时间顺序搜索遇到删除标记时,这指示对应值已删除,即使键值对的过期版本位于KVS树中的较旧位置。
存储在主键块中的所述一组度量可包含存储在键值集中的键的所有键长度的总和。例如,所述一组度量可包含存储在键值集中的键的所有值长度的总和。最后两个度量提供键值集所占用的大致(或精确)存储量。例如,所述一组度量可包含键值集的值块(例如,未引用值)中未引用数据的数量。最后一个度量提供可在维护操作中回收的空间估计值。有关KVS树的结构的其它细节在下文描述。
主机请求所指定的要读取或写入的数据在下文称为“主机数据”。主机请求可包含主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、命名空间),其为与主机数据相关联的主机系统的位置。逻辑地址信息(例如,LBA、命名空间)可以是主机数据的元数据的部分。存储器子系统控制器(例如,包含处理装置)以较小数据分块(例如,4KB)随机写入到存储器装置,然后使用大量元数据将逻辑地址空间映射到存储器装置的物理地址空间。然而,当写入具有数据局部性的较大数据群组(例如,100MB或更多)时,“数据群组”可以作为较大分块顺序地写入到一或多个块集。每次可写入到独立数据分区并相应地映射所述分区的存储器子系统可被视为在分区命名空间(ZNS)中操作,例如,其中逻辑地址的分区被命名/识别为群组。有利地,将ZNS用于逻辑到物理(LTP)地址映射可以减少跟踪LTP映射的元数据量。
KVS可使用分区存储器装置存储数据。更确切地说,KVS数据结构(例如,KVS树)可在由分区存储器装置分配的分区上存储数据。分区存储器装置的一个实例是ZNS存储器装置,包含ZNS存储器子系统。例如,ZNS存储器子系统可包含ZNS固态驱动器(SSD)。相比于其中数据放置由存储器子系统控制器控制的非ZNS存储器装置,在ZNS感知存储器子系统中,一个分区按逻辑地址的顺序次序写入一次。也就是说,应用程序无法覆写写入所述分区的逻辑地址。ZNS存储器装置的这些特征可以减少写入放大,减少媒体预留空间,减少易失性存储器(例如,DRAM)使用,并增加驱动器写入。
分区存储器装置的另一实例是叠瓦式磁记录(SMR)存储媒体。SMR是一种磁性存储数据记录技术,与普通磁记录技术相比,它可以提供更大的每驱动器存储容量。更确切地说,SMR通过以重叠方式写入磁道来消除磁道之间的间隙,就像其它磁记录技术所做的那样。也就是说,数据是按顺序写入的,以使数据与另一磁道重叠,从而形成类似叠瓦的图案。
分区存储器装置的分区可以指定与基础装置规范(例如,NVMe)相关的状态。例如,未写入的分区可与空状态相关联。数据写入到与空状态相关联的分区(称为“空分区”)可以从该分区的开头开始。当写入操作初始化时,分区的状态可以从空状态变成打开状态(隐式和/或显式)。与打开状态相关联的分区称为“开放分区”。因此,开放分区是当前正在写入的分区。然后,在所述分区被填满数据后,所述分区可与全满状态相关联,并且可称为“全满分区”。分区重置后,所述分区可以恢复为空状态。在填满之前,所述分区可能会提前关闭,从而从打开状态变为关闭状态(“关闭分区”)。当继续写入到对应分区时,可以重新打开关闭分区,这会将所述分区恢复为开放分区。因此,开放分区和关闭分区可统称为未填满区。要再次写入一个分区,必须完全擦除一个全满分区。因此,分区存储器装置可能不支持随机写入和/或覆写。
KVS故障的发生可能有多种原因。KVS故障原因的实例包含但不限于电力故障、KVS崩溃等。KVS故障后,一或多个分区可保持未填满状态(例如,一或多个开放分区、一或多个关闭分区和/或一或多个作用中分区)。但是,分区存储器装置可以支持最大数目的未填满分区。例如,对于ZNS SSD和SMR,开放分区的数目可受到最大开放资源(MOR)限制,而对于ZNS SSD,关闭分区的数目可受到最大作用中资源(MAR)限制(SMR不受限制)。如果故障之前的未填满分区在KVS重新启动时处于相同状态,那么可用装置控制器资源的数目将减少所述数目。因此,如果不执行分区恢复以识别和恢复未填满分区(例如,通过将未填满分区重置为空分区),那么在故障后可能会导致写入性能和效率的损失(例如,写入吞吐量和/或容量降低)。
本公开的各方面通过具有可在键值存储(KVS)故障(例如,断电、KVS崩溃)后执行分区恢复的存储器子系统来解决以上和其它缺陷。更确切地说,当分区存储器装置的存储器子系统在断电后进入操作状态时或当KVS重新启动时,可以进行恢复过程。
恢复过程可包含两个步骤。第一步骤可恢复未填满分区(例如,开放分区和关闭分区),以在分区恢复过程中获得经恢复分区,而不管未填满分区的内容如何。更确切地说,可以盲目重置未填满分区以获得空分区。重置会导致未填满分区中的数据丢失,每个分区都包含属于未提交键值集的未提交块。全满分区在分区恢复期间不会重置,因为它们保证只包含已提交数据。已提交数据是指保证在恢复或重新启动时可用的数据。可以根据从存储器子系统的存储器装置获得的分区状态信息来识别未填满分区。更确切地说,存储器装置应能在断电事件或其它故障后持久保存分区状态信息。存储器装置可以是非易失性存储器装置,或电源受保护的易失性存储器装置。例如,分区状态信息可包含未填满分区的列表。因此,通过基于分区状态信息区分全满分区和未填满分区,可以有效地执行分区恢复。第二步骤在分区恢复后恢复键值集。例如,如果存在属于未提交键值集的任何已提交块,那么可以释放这些已提交块,以便在恢复后尝试重新创建和提交键值集。
本公开的优点包含但不限于故障后简单、快速和稳健的分区恢复。
图1示出根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类装置的组合。
存储器子系统110可以是存储装置、存储器模块或存储装置和存储器模块的组合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算系统100可包含主机系统120,所述主机系统耦合到一或多个存储器子系统110。在一些实施例中,主机系统120耦合到不同类型的多个存储器子系统110。图1示出耦合到一个存储器子系统110的主机系统120的一个实例。如所使用的,“耦合到……”或“与……耦合”大体上是指组件之间的连接,其可为间接或直接通信连接(例如,无中间组件),无论是有线还是无线的,包含例如电学连接、光学连接、磁性连接等等。
主机系统120可包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110,例如以便将数据写入到存储器子系统110和从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、双倍数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双倍数据速率(DDR)的DIMM套接接口)等等。物理主机接口可用于在主机系统120和存储器子系统110之间传输数据。当存储器子系统110通过物理主机接口(例如,PCIe总线)与主机系统120耦合时,主机系统120可进一步使用NVM快速(NVMe)接口存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110和主机系统120之间传递控制、地址、数据和其它信号的接口。图1示出存储器子系统110作为实例。一般来说,主机系统120可经由同一通信连接、多个单独的通信连接和/或通信连接的组合来存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器单元的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的变化而执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2DNAND)和三维NAND(3D NAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(SLC),可每单元存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC),可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC、PLC或这些的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分以及MLC部分、TLC部分、QLC部分或PLC部分。存储器装置130的存储器信元可以分组为页,页可指代用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可被分组以形成块。
尽管描述了非易失性存储器组件,例如3D交叉点非易失性存储器单元阵列及NAND型快闪存储器(例如,2D NAND、3D NAND),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器,或电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或者为简单起见,称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可包含例如一或多个集成电路和/或离散组件、缓冲存储器或其组合的硬件。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行所描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或其它合适的处理器。
存储器子系统控制器115可包含配置成执行存储在本地存储器119中的指令的处理装置,所述处理装置包含一或多个处理器(例如,处理器117)。在所示出的实例中,存储器子系统控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流以及例程。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。尽管图1中的实例存储器子系统110示出为包含存储器子系统控制器115,但是在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可以依赖于外部控制(例如,由外部主机或者由与存储器子系统分离的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,并且可将命令或操作转换成指令或适当的命令以实现期望的对存储器装置130的存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、命名空间)和物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可进一步包含主机接口电路系统,用于经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收到的命令转换成存取存储器装置130的命令指令,并将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统110可包含可以从存储器子系统控制器115接收地址并将地址解码以存取存储器装置130的高速缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器)。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,执行存储器装置130上的媒体管理操作)。在一些实施例中,存储器子系统110是受管理存储器装置,其为具有裸片上的控制逻辑(例如,本地媒体控制器135)和用于相同存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)的原始存储器装置130。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子系统110包含分区存储器装置恢复(ZMR)组件113。在一些实施例中,存储器子系统控制器115包含ZMR组件113的至少一部分。在一些实施例中,ZMR组件113是主机系统110、应用程序或操作系统的部分。在其它实施例中,本地媒体控制器135包含ZMR组件113的至少一部分且配置成执行所描述的功能。
ZMR组件113可在键值存储(KVS)故障后实施分区存储器装置恢复。更确切地说,对于分配一或多个分区用于与KVS相关联的数据存储的分区存储器装置,ZMR组件113可获得与所述一或多个分区相关的分区状态信息,并鉴于分区状态信息从故障中恢复所述一或多个分区。在一些实施例中,分区状态信息包含未填满(例如,开放、关闭和/或作用中)分区的列表。分区状态信息可从存储器子系统110的存储器装置获得。存储器子系统110的存储器装置应能在断电事件或其它故障后持久保存分区状态信息。例如,存储器装置可以是非易失性存储器装置(例如,存储器装置130)或带电力保护的易失性存储器装置(例如,存储器装置140)。
如本文中将进一步详细地描述,全满分区仅包含已提交键值集,未填满分区仅包含未提交键值集。因此,如果确定给定分区未填满(例如,开放或关闭),那么给定分区可在分区恢复期间重置为空分区,因为它将仅包含未提交键值集。否则,给定分区被确定为全满分区,且因此在分区恢复期间不会被重置为空分区,因为它将仅包含已提交键值集。因此,为了恢复所述一或多个分区,ZMR组件113可在KVS故障后基于分区状态信息而重置确定为未填满的任一个分区。
在从故障中恢复所述一或多个分区后,ZMR组件113可恢复与所述一或多个分区相关联的一或多个键值集。所述一或多个键值集中的每一个可被包含在KVS树的节点内。关于ZMR组件113的操作的其它细节在下文参考图2-5描述。
图2是根据本公开的一些实施例的实例键值存储(KVS)树架构200的框图。在图2所示的说明性实例中,架构200包含具有节点210-230的KVS树205。更确切地说,节点210可以是父节点,节点220和230可各自为节点210的子节点。在一些实施例中,节点210是KVS树205的根节点。节点210-230中的每一个包含至少一个键值集(“集”)。例如,如图所示,节点210包含集212,节点220包含集222-1到222-3,且节点230包含集232-1和232-2。
如上文所提及,键值集含有呈键排序结构的键值对。给定键值集中的每个键在所述给定键值集内可以是唯一的,这意味着所述给定键值集中的给定键不同于所述给定键值集中的所有其它键。键值集不可变,这意味着键值集一旦放置在节点中就不会变化。然而,如下文将进一步详细描述,键值集可被删除,并且其内容中的一些或全部可以添加到新的键值集中,等等。键值集的不变性可扩展到键值集内所含的任何元数据。这通常是可能的,因为元数据所应用的内容是不变的,因此,元数据在所述点上通常也是静态的。
KVS树205可实现写入缓冲器(WB)树的写入吞吐量,同时通过维护节点中的键值集来改进WB树搜索。为了提供高效的键值集搜索,键值集可包含已排序键以及键度量(例如,布隆过滤器、最小和最大键)。KVS树205可通过将键与值隔开并合并较小的键值集集合来改善日志结构的合并树的临时存储问题。另外,KVS树可通过对键值集进行各种维护操作来减少写放大,并因此提高存储器装置的寿命。此外,KVS树205可以管理诸如写磨损之类的问题,因为节点中的键值集是不可变的,从而减少装置本身的垃圾收集活动。这还可以释放内部装置资源(例如,总线带宽、处理周期等),从而提高外部驱动器性能(例如,读取或写入速度)。此外,KVS树205可以启用分层。更确切地说,KVS树205的顶部(含有最少数据量)以高频更新,而KVS树205的底部(含有最多数据)以低频更新。例如,分层可以将更便宜的QLC存储器单元用于KVS树205的底部,而将更昂贵的SLC存储器单元用于KVS树205的顶部。因此,KVS树205能够提供总体上更便宜的、不会磨损太快的存储。
架构200包含对应于非分区存储器装置的非分区媒体卷240和对应于分区存储器装置的分区媒体卷250。它们各自与KVS树205相关联(例如,为其所有)。每一键值集对应于存储在位于非分区媒体卷240和分区媒体卷250上的相应块(例如,键块和/或值块)中的数据。如图所示,KVS树205已将键值集232-1的块放置在卷240和250上。例如,KVS树205将块242-1和242-2放置在非分区媒体卷240上,并将块252-1和252-2放置在分区媒体卷250上。块252-1和252-2中的每一个对应于分区媒体卷250上的相应分区块242-1、242-2、252-1和252-2可以是键块和/或值块的任何组合。尽管在卷240和250中的每一个上放置了两个块,但是根据本文中所描述的实施例,可以在卷240和250上放置任何合适数目个块。
块管理器可使用经块管理器保持日志来管理位于分区媒体卷250上的块(例如,键块或值块)(例如,块252-1和/或块252-2)的生命周期。更确切地说,经块管理器保持日志可维持有关位于分区媒体卷250上的块到经块管理器保持日志的提交的信息(例如,块提交记录)。在一些实施例中,块管理器被实施为ZMR组件(例如,图1的ZMR组件113)的部分。在其它实施例中,块管理器与ZMR组件分开实施。现将在下文参考图3描述有关由块管理器执行以管理块的寿命周期的操作的其它细节。
图3是根据本公开的一些实施例的用于管理键值存储(KVS)树的块的生命周期的实例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300由图1的ZMR组件113执行。尽管以特定顺序或次序示出,但除非另外指定,否则过程的次序可以修改。因此,所示实施例应理解为仅作为实例,所示过程可按照不同次序执行,并且一些过程可以并行执行。另外,在各种实施例中,可以省略一或多个过程。因此,并非在每个实施例中都需要全部过程。其它过程流是可能的。
在操作310处,处理逻辑将对应于存储器装置的分区的空闲块分配给键值集以获得经分配块。例如,空闲块可以是键块或值块。也就是说,空闲块是不供任何键值集使用的块,经分配块是已被分配给键值集的块。在一些实施例中,所述分区在分配之前具有空状态(“空分区”)。分区状态通过存储器装置(例如,SSD)改变和/或维持。更确切地说,作为对主机系统动作(例如,写入、重置分区、命令)的反应,存储器装置可改变分区状态。可以查看分区命名空间或SMR规范,以查看主机系统动作如何影响存储器装置上维持的分区状态。因此,可以从分配之前的先前状态(例如,未填满或已填满)重置分区。在一些实施例中,使用非持久化块转换来执行分配。非持久化块转换是指丢失的块转换(例如,在故障后)。例如,KVS树知晓其存储了有效数据的分区后,可以选择没有有效数据的分区(例如,键值集被销毁的分区),并重置所述分区以进行分配。
在操作320处,处理逻辑发起对经分配块的写入操作。在发起写入操作后,所述分区转换或更新为开放分区。例如,如果所述分区为空,那么在从所述分区的开头进行第一次写入时,存储器子系统将分区状态变成“开放”。在一些实施例中,写入操作使用非持久化块转换来发起。例如,当新的键值集创建并被填充时,可以发起写入操作。写入操作从至少一个源键值集读取数据,并将所述数据写入到至少一个目的地新键值集中。在所述新的键值集提交后,源键值集可被销毁(并且其对应的分区可在重置后重新使用)。
在操作330处,处理逻辑继续根据写入操作写入到经分配块。在一些实施例中,写入操作使用非持久化块转换执行。在写入过程中,分区的状态可以在开放状态和关闭状态之间转换。更确切地说,这可能是底层分区命名空间或SMR规范的最大开放分区要求的结果。例如,对于NVMe规范,开放分区的最大数目可受到最大开放资源(MOR)的限制。如果确定超出了最大开放分区要求,那么装置可以自动关闭一或多个分区以解决问题。当主机系统写入太多分区(例如,并行)时,可能会超过最大开放分区要求。当存储器装置关闭一个分区时,对所述分区的写入暂停。关闭的分区最终可以重新打开以进行额外的写入。更确切地说,写入暂停被解除,使得针对重新打开的分区的写入再次流动。这些动作对主机系统是透明的,其中存储器装置背着主机系统“秘密地”执行这些操作。
在操作340处,处理逻辑确定经分配块是否被完全写入。如果不是,那么过程返回到操作330以继续写入经分配块。如果经分配块被完全写入,那么处理逻辑在操作350处将所述分区转换为具有全满状态。填充经分配块后,分区可能已完全写入,也可能尚未完全写入。如果分区已完全写入,那么在操作350处,分区的状态自动变成全满。然而,如果分区尚未完全写入(块中的数据大小小于分区大小),那么主机系统可以发送分区完成命令来完成分区,并且在接收到分区完成命令后,处理逻辑可在操作350处将分区转换为全满状态。因此,在经分配块被完全写入后,未填满(例如,开放或关闭分区)变为全满分区。
在操作360处,处理逻辑将已填满块提交到经块管理器保持日志。更确切地说,对应于所述块的块提交记录可被添加到经块管理器保持日志中。在一些实施例中,提交使用持久化块转换来执行。因此,在分区处于全满状态后,块已提交到经块管理器保持日志。
在操作370处,响应于键值集被移除(例如,销毁),处理逻辑从经块管理器保持日志中取消提交块。更确切地说,可以将块提交删除记录添加到经块管理器保持日志中。此取消提交将块转换为可分配的空闲块。通过重置,所述分区也可以更新为空状态。在一些实施例中,使用持久化块转换移除已提交块。
返回参考图2,键值集管理器可使用经KVS树保持日志来管理与分区媒体卷250相关联的键值集(例如,键值集232-1)的寿命周期。更确切地说,经KVS树保持日志可维持有关在键值集完全写入后的键值集创建意图的信息(例如,键值集创建意图记录),并且可维持有关键值集到经KVS树保持日志的提交的信息(例如,键值集提交记录)。在一些实施例中,键值集管理器被实施为ZMR组件(例如,图1的ZMR组件113)的部分。在其它实施例中,块管理器与ZMR组件分开实施。现将在下文参考图4描述有关由键值集管理器执行以管理键值集的寿命周期的操作的其它细节。
图4是根据本公开的一些实施例的用于管理键值存储(KVS)树的键值集的生命周期的实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1的ZMR组件113执行。尽管以特定顺序或次序示出,但除非另外指定,否则过程的次序可以修改。因此,所示实施例应理解为仅作为实例,所示过程可按照不同次序执行,并且一些过程可以并行执行。另外,在各种实施例中,可以省略一或多个过程。因此,并非在每个实施例中都需要全部过程。其它过程流是可能的。
在操作410处,处理逻辑产生KVS树的键值集。所述键值集可初始化有构建状态。键值集的产生无需记录在任何日志中。在一些实施例中,使用非持久化KVS转换来执行键值集产生
在操作420处,处理逻辑向键值集分配具有空闲状态的空闲块以获得具有经分配状态的经分配块。更确切地说,如上文参考图3所描述,空闲块对应于分区存储器装置的分区。在一些实施例中,使用非持久化KVS转换来执行空闲块分配。
在操作430处,处理逻辑写入到经分配块,以获得具有写入完成状态的写入完成块。更确切地说,如上文参考图3所描述,可以写入块,直到其处于写入完成状态且对应分区具有全满状态为止。
在操作440处,处理逻辑确定在获得写入完成块后键值集是否被完全写入。如果键值集未被完全写入,那么过程返回到操作420,以将另一空闲块分配给键值集进行写入。
然而,如果键值集被完全写入,那么在操作450处,处理逻辑将键值集创建意图记录添加到经KVS树保持日志。键值集的状态可从构建状态变成“键值集创建意图已记录”状态。在一些实施例中,键值集创建意图记录使用持久化KVS转换添加到经KVS树保持日志中。
在操作460处,处理逻辑将键值集的每一块提交到经块管理器保持日志。更确切地说,如上文参考图3所描述,对应于块的块提交记录可添加到经块管理器保持日志中。在一些实施例中,键值集的每一块使用持久化KVS转换进行提交。
在操作470处,处理逻辑将键值集提交到经KVS树保持日志。更确切地说,对应于键值集的键值集提交记录可添加到经KVS树保持日志中。在一些实施例中,键值集使用持久化KVS转换提交到经KVS树保持日志。
在操作480处,响应于键值集被移除(例如,销毁),处理逻辑从经KVS树保持日志中移除键值集。更确切地说,键值集删除记录可添加到经KVS树保持日志中。在一些实施例中,键值集使用持久化KVS转换进行移除。
返回参考图2,鉴于上文参考图3所描述的块寿命周期管理过程和上文参考图4所描述的键值集寿命周期管理过程,分区媒体卷250的给定分区无法同时包含未提交块和已提交块。继而,如将在下文参考图5进一步详细描述,可在KVS故障后通过根据分区状态信息识别一或多个未填满分区并恢复所述一或多个未填满分区(因为未填满分区将是包含未提交块的唯一分区)来执行分区媒体卷250的分区的恢复过程。分区状态信息可由存储器装置维持在非易失性存储器或电源受保护的易失性存储器(例如,包含未填满分区的列表)中。在分区恢复后,对应键值集可被恢复。
图5是根据本公开的一些实施例的用于在键值存储(KVS)故障后实施分区存储器装置恢复的实例方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500由图1的ZMR组件113执行。尽管以特定顺序或次序示出,但除非另外指定,否则过程的次序可以修改。因此,所示实施例应理解为仅作为实例,所示过程可按照不同次序执行,并且一些过程可以并行执行。另外,在各种实施例中,可以省略一或多个过程。因此,并非在每个实施例中都需要全部过程。其它过程流是可能的。
在操作510处,处理逻辑获得与供KVS树使用且由分区存储器装置分配的分区相关联的分区状态信息。更确切地说,每一分区可存储KVS树的键值集的块。例如,块可以是键块或值块。分区状态信息可从拥有所述分区的实体(例如,存储器装置或卷管理器)获得。例如,分区状态信息可包含供KVS树使用的所述一或多个分区的状态的列表
(例如,全满、开放、关闭、空)。获得分区状态信息不需要知晓KVS。相反,分区状态
信息可以使用供KVS使用的分区装置命名空间、分区卷等等的标识来获得。在一些实
施例中,分区存储器装置包含ZNS存储器子系统(例如,ZNS SSD)。在一些实施例中,分区存储器装置包含SMR装置。
在操作520处,处理逻辑根据分区状态信息识别分区中的一或多个未填满分区,其中所述一或多个分区中的每一个存储属于未提交键值集的未提交块。所述键值集未提交,因为存在属于所述键值集的未提交块。例如,所述一或多个未填满分区可包含至少一个开放分区、至少一个关闭分区和/或至少一个作用中分区。如果未发生KVS故障,那么会发现没有分区处于未填满状态。因此,如果识别出一或多个未填满分区,那么表明发生了故障。
在操作530处,处理逻辑恢复所述一或多个未填满分区以获得一或多个经恢复分区。更确切地说,恢复所述一或多个未填满分区可包含重置所述一或多个未填满分区。所述一或多个经恢复分区可包含开放用于新数据写入的一或多个空分区。
在操作540处,处理逻辑恢复所述一或多个未提交键值集。属于所述一或多个未提交键值集的所述一或多个未提交块在恢复所述一或多个未填满分区期间丢失。然而,可存在一或多个已提交块属于所述一或多个键值集中的给定键值集,其中所述一或多个已提交块存储在恢复期间没有重置的已填满分区上。如果故障发生在属于给定键值集的一些块已提交后,但给定键值集本身在故障之前仍未提交,那么可能发生这种情况。因此,恢复所述一或多个未提交键值集可包含释放属于所述一或多个键值集的任何已提交块。“释放”是指使已提交块以前使用的逻辑地址空间可用于新块。因此,可以尝试创建一或多个新的键值集,以在恢复后提交。
图6示出计算机系统600的实例机器,在所述计算机系统内可以执行用于使所述机器执行本文中所论述的任何一或多种方法的一组指令。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,以执行操作系统来执行对应于图1的ZMR组件113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础架构或环境中的服务器或客户端机器在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(循序或以其它方式)指定待由所述机器采取的动作的一组指令的任何机器。另外,尽管示出的是单个机器,但还应认为术语“机器”包含机器的任何集合,所述机器单独地或联合地执行一组(或多组)指令以执行本文中所论述的任何一或多种方法。
实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或RDRAM等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等),以及数据存储系统618,它们经由总线630彼此通信。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更确切地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602配置成执行用于执行本文中所论述的操作和步骤的指令626。计算机系统600可进一步包含网络接口装置608以在网络620上通信。
数据存储系统618可以包含机器可读存储媒体624(也称为计算机可读媒体),其上存储有一或多组指令626或体现本文中所描述的任何一或多种方法或功能的软件。指令626还可在其由计算机系统600执行期间完全或至少部分地驻留在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含用以实施对应于ZMR组件(例如,图1的ZMR组件113)的功能性的指令。虽然机器可读存储媒体624在实例实施例中展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储所述一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的一组指令且使机器执行本公开的任何一或多种方法的任何媒体。术语“机器可读存储媒体”应相应地被理解为包含(但不限于)固态存储器、光学媒体和磁性媒体。
已依据计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法和操作在这里并且通常被认为是引起所要结果的操作的自洽序列。操作为要求对物理量进行物理操纵的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。主要出于常见使用的原因,有时将此些信号称为位、值、要素、符号、字符、项、数字等已证实是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便的标签。本公开可涉及将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于既定目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如(但不限于)任何类型的盘(包含软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示并不与任何特定计算机或其它设备在本质上相关。各种通用系统可根据本文中的教示与程序一起使用,或者可证明构造更专用的设备来执行所述方法是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。另外,不参考任何特定编程语言来描述本公开。应了解,可使用多种编程语言来实施本文中所描述的本公开的教示。
本公开可以提供为计算机程序产品或软件,其可以包含在其上存储有指令的机器可读媒体,所述指令可以用于编程计算机系统(或其它电子装置)以执行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考本公开的特定实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开做出各种修改。因此,说明书和图式应在说明性意义上而非限制性意义上看待。
Claims (20)
1.一种系统,其包括:
分区存储器装置,其分配存储属于键值集的块的分区;以及
处理装置,其以操作方式与所述分区存储器装置耦合,并执行包括以下各项的操作:
获得与所述分区相关联的分区状态信息;
根据所述分区状态信息,识别所述分区是未填满分区;以及
恢复所述未填满分区以获得经恢复分区。
2.根据权利要求1所述的系统,其中所述键值集与键值存储树相关联。
3.根据权利要求1所述的系统,其中所述分区状态信息包括由所述分区存储器装置分配的多个分区的状态列表。
4.根据权利要求1所述的系统,其中恢复所述未填满分区包括重置所述未填满分区。
5.根据权利要求1所述的系统,其中所述经恢复分区是空分区。
6.根据权利要求1所述的系统,其中所述块是未提交块,且所述键值集是未提交键值集。
7.根据权利要求6所述的系统,其中所述操作进一步包括恢复所述未提交键值集。
8.根据权利要求7所述的系统,其中恢复所述未提交键值集包括释放属于所述未提交键值集的已提交块。
9.一种方法,其包括:
通过处理装置获得与由分区存储器装置分配的分区相关联的分区状态信息,其中所述分区存储属于键值集的块;
通过所述处理装置,根据所述分区状态信息识别所述分区是未填满分区;以及
通过所述处理装置恢复所述未填满分区以获得经恢复分区。
10.根据权利要求9所述的方法,其中所述键值集与键值存储树相关联。
11.根据权利要求9所述的方法,其中所述分区状态信息包括由所述分区存储器装置分配的多个分区的状态列表。
12.根据权利要求9所述的方法,其中恢复所述未填满分区包括重置所述未填满分区。
13.根据权利要求9所述的方法,其中所述经恢复分区是空分区。
14.根据权利要求9所述的方法,其中所述块是未提交块,且所述键值集是未提交键值集。
15.根据权利要求14所述的方法,其进一步包括恢复所述未提交键值集。
16.根据权利要求15所述的方法,其中恢复所述未提交键值集包括释放属于所述未提交键值集的已提交块。
17.一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使得所述处理装置执行包括以下各项的操作:
通过处理装置获得与由分区存储器装置分配的多个分区相关联的分区状态信息,其中所述多个分区中的每一分区存储属于与键值存储树相关联的键值集的块;
通过所述处理装置,根据所述分区状态信息识别所述多个分区中的未填满分区,其中所述未填满分区包括属于未提交键值集的未提交块;以及
通过所述处理装置,重置所述未填满分区以获得空分区。
18.根据权利要求17所述的非暂时性计算机可读存储媒体,其中所述分区状态信息包括由所述分区存储器装置分配的多个分区的状态列表。
19.根据权利要求17所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括恢复所述未提交键值集。
20.根据权利要求19所述的非暂时性计算机可读存储媒体,其中恢复所述未提交键值集包括释放属于所述未提交键值集的已提交块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/314,657 | 2021-05-07 | ||
US17/314,657 US11614870B2 (en) | 2021-05-07 | 2021-05-07 | Zoned memory device recovery after a key-value store failure |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115309584A true CN115309584A (zh) | 2022-11-08 |
Family
ID=83854989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210488216.1A Withdrawn CN115309584A (zh) | 2021-05-07 | 2022-05-06 | 键值存储故障后的分区存储器装置恢复 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11614870B2 (zh) |
CN (1) | CN115309584A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210286517A1 (en) * | 2016-10-04 | 2021-09-16 | Pure Storage, Inc. | Utilizing Allocation Shares To Improve Parallelism In A Zoned Drive Storage System |
US11614870B2 (en) * | 2021-05-07 | 2023-03-28 | Micron Technology, Inc. | Zoned memory device recovery after a key-value store failure |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8499121B2 (en) * | 2011-08-31 | 2013-07-30 | Hewlett-Packard Development Company, L.P. | Methods and apparatus to access data in non-volatile memory |
US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
US10678768B2 (en) * | 2017-06-30 | 2020-06-09 | Intel Corporation | Logical band-based key-value storage structure |
US10754995B2 (en) * | 2017-10-05 | 2020-08-25 | Zadara Storage, Inc. | Consistency across key value stores with shared journals |
US11392544B2 (en) * | 2018-02-06 | 2022-07-19 | Samsung Electronics Co., Ltd. | System and method for leveraging key-value storage to efficiently store data and metadata in a distributed file system |
US10996894B2 (en) * | 2019-07-17 | 2021-05-04 | International Business Machines Corporation | Application storage segmentation reallocation |
US11656952B2 (en) * | 2019-09-20 | 2023-05-23 | Samsung Electronics Co., Ltd. | Reliable key-value store with write-ahead-log-less mechanism |
US11614870B2 (en) * | 2021-05-07 | 2023-03-28 | Micron Technology, Inc. | Zoned memory device recovery after a key-value store failure |
-
2021
- 2021-05-07 US US17/314,657 patent/US11614870B2/en active Active
-
2022
- 2022-05-06 CN CN202210488216.1A patent/CN115309584A/zh not_active Withdrawn
-
2023
- 2023-02-21 US US18/111,964 patent/US11941258B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230195330A1 (en) | 2023-06-22 |
US11614870B2 (en) | 2023-03-28 |
US11941258B2 (en) | 2024-03-26 |
US20220357859A1 (en) | 2022-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11100071B2 (en) | Key-value store tree data block spill with compaction | |
JP2023524014A (ja) | 順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること | |
US20220244869A1 (en) | File system storage allocation based on zones of a memory device | |
US10725930B2 (en) | Logical to physical memory address mapping tree | |
CN113196259B (zh) | 使用以选择性数据存储格式进行日志记录的键值存储 | |
CN114730300B (zh) | 对区命名空间存储器的增强型文件系统支持 | |
US11941258B2 (en) | Zoned memory device recovery after a key-value store failure | |
KR20210050592A (ko) | 저장 디바이스 상의 네임스페이스에서의 오류 검사 | |
CN113031856A (zh) | 存储器子系统中的断电数据保护 | |
CN114077549A (zh) | 基于数据特性寻址区域命名空间和非分区存储器 | |
US11561855B2 (en) | Error handling optimization in memory sub-system mapping | |
CN115718564A (zh) | 保持存储器装置中的应用程序数据次序 | |
US20230333988A1 (en) | Namespace level valid translation unit count | |
US11675695B2 (en) | Namespace management for memory sub-systems | |
CN115048042A (zh) | 启用针对持久性存储器的存储器存取事务 | |
CN114968087A (zh) | 顺序写入的存储器装置的有效存储分配 | |
CN115145480A (zh) | 具有经分区名字空间的存储器子系统的分区块暂存组件 | |
US11604591B2 (en) | Associating data types with stream identifiers for mapping onto sequentially-written memory devices | |
US20230401155A1 (en) | Hold-aside buffer for uncommitted write transactions in a log structured key-value database | |
US20230266897A1 (en) | Dynamic zone group configuration at a memory sub-system | |
CN115827689A (zh) | 数据库持久化 | |
CN117591005A (zh) | 存储器装置中的开放块管理 | |
CN117999547A (zh) | 用于存储器子系统中的两遍次编程的虚拟管理单元方案 | |
CN115461737A (zh) | 对数据容器使用前缀删除操作 | |
CN113918479A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20221108 |
|
WW01 | Invention patent application withdrawn after publication |