CN113918087B - 存储装置以及用于管理存储装置中的命名空间的方法 - Google Patents
存储装置以及用于管理存储装置中的命名空间的方法 Download PDFInfo
- Publication number
- CN113918087B CN113918087B CN202110493971.4A CN202110493971A CN113918087B CN 113918087 B CN113918087 B CN 113918087B CN 202110493971 A CN202110493971 A CN 202110493971A CN 113918087 B CN113918087 B CN 113918087B
- Authority
- CN
- China
- Prior art keywords
- namespace
- chunk
- chunks
- controller
- headspace
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000013519 translation Methods 0.000 claims abstract description 10
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 18
- 238000012005 ligant binding assay Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 230000008859 change Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000000025 interference lithography Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- 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
- 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
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0608—Saving storage space on 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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/04—Addressing variable-length words or parts of words
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
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)
- Microelectronics & Electronic Packaging (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种存储装置以及用于管理存储装置中的命名空间的方法。所述存储装置包括存储器和连接到存储器的控制器。控制器包括主机接口层和闪存转换层,闪存转换层被配置为向主机接口层报告来自预留空间池的第一预留空间组块和与预留空间池分离的第一组块。控制器被配置为在主机接口层处接收将存储器的一部分用于多个命名空间之中的第一命名空间的命令,并且第一命名空间包括未对齐组块。控制器被配置为利用第一预留空间组块作为第一命名空间的未对齐组块。将被用作未对齐组块的预留空间组块的数量比命名空间的数量少。
Description
技术领域
本公开的一个或多个实施例的方面涉及一种用于管理存储装置中的命名空间(namespace)的方法以及采用该方法的存储装置。
背景技术
近年来,计算机技术的进步已经将电子装置引入到生活的所有方面。随着以电子方式存储的信息(例如,照片、视频、音乐、文档等)的量呈指数地增大,用户对存储容量的需求已经增加。然而,当分配用户请求的命名空间时,软件和/或硬件限制可能导致容量损失。因此,正在努力适应用户的需要,同时减少容量损失。
存储技术(特别是固态存储装置(例如,固态驱动器(SSD)))的最新进展提供了优于传统机械存储装置(诸如,硬盘驱动器(HDD))的若干优点。此外,已经开发了用于访问存储在这种新一代存储装置上的数据的新协议(包括非易失性存储器快速(NVMe)协议)。
在该背景技术部分中公开的以上信息是为了增强对本公开的背景技术的理解,因此,该背景技术部分可以包含不构成现有技术的信息。
发明内容
本公开的一个或多个示例实施例涉及一种用于命名空间管理的系统和方法。
根据本公开的一个实施例,提供了一种被配置为支持多个命名空间的存储装置。存储装置包括存储器和连接到存储器的控制器。控制器包括主机接口层和闪存转换层,闪存转换层被配置为向主机接口层报告来自预留空间池的第一预留空间组块和与预留空间池分离的第一组块。控制器被配置为在主机接口层处接收命令以将存储器的一部分用于所述多个命名空间之中的第一命名空间,第一命名空间包括未对齐组块。控制器被配置为:利用第一预留空间组块作为第一命名空间的未对齐组块。将被用作未对齐组块的预留空间组块的数量比命名空间的数量少。
控制器还可以包括内部存储器,并且将被用作未对齐组块的预留空间组块的数量可以取决于控制器的内部存储器的量。
存储装置的存储器的类型可以是三级单元闪存、四级单元闪存或Z-NAND类型,并且命名空间的数量可以取决于存储器的类型。
主机接口层可以包括:可见组块池,包括第一组块;以及隐藏组块池,包括第一预留空间组块。主机接口层可以被配置为:向主机报告关于可见组块池的信息并且对主机隐藏关于隐藏组块池的信息,并且主机可以被配置为:向存储装置发送所述命令以将存储器的所述一部分用于所述多个命名空间之中的第一命名空间。
控制器还可以被配置为:基于先到先服务原则将第一预留空间组块用于第一命名空间。
控制器还可以被配置为:基于第一命名空间的私有指定、格式或组号来利用第一预留空间组块。
控制器还可以被配置为:基于与第一命名空间相关的第一命名空间的潜在容量损失高于或低于设置的阈值来利用第一预留空间组块。
控制器还可以被配置为:基于第一命名空间的大小高于或低于设置的阈值来利用第一预留空间组块。
一种系统可包括存储装置和主机,主机被配置为:向存储装置发送所述命令以将存储器的所述一部分用于所述多个命名空间之中的第一命名空间。
根据本公开的一个实施例,提供了一种管理存储装置中的命名空间的方法。所述方法包括:由存储装置支持多个命名空间;由存储装置的控制器的闪存转换层向存储装置的控制器的主机接口层报告来自预留空间池的第一预留空间组块以及与预留空间池分离的第一组块;由存储装置在主机接口层处接收命令以将存储器的一部分用于所述多个命名空间之中的第一命名空间,第一命名空间包括未对齐组块;以及由控制器利用第一预留空间组块作为第一命名空间的未对齐组块。将被用作未对齐组块的预留空间组块的数量比命名空间的数量少。
所述方法还可以包括由控制器支持将被用作未对齐组块的预留空间组块的数量。预留空间组块的数量可以取决于控制器的内部存储器的量。
所述方法还可以包括基于存储装置的存储器的类型来支持所述多个命名空间,其中,存储器的类型可以是三级单元闪存、四级单元闪存或Z-NAND类型。
所述方法还可以包括:由主机接口层向主机报告关于包括第一组块的可见组块池的信息;由主机接口层对主机隐藏关于包括第一预留空间组块的隐藏组块池的信息;以及由主机向存储装置发送所述命令以将存储器的所述一部分用于所述多个命名空间之中的第一命名空间。
所述方法还可以包括:由控制器基于先到先服务将第一预留空间组块用于第一命名空间。
所述方法还包括:由控制器基于第一命名空间的私有指定、格式或组号来利用第一预留空间组块。
所述方法还可以包括:由控制器基于与第一命名空间相关的第一命名空间的潜在容量损失高于或低于设置的阈值来利用第一预留空间组块。
所述方法还可以包括:由控制器基于第一命名空间的大小高于或低于设置的阈值来利用第一预留空间组块。
根据本公开的一个实施例,提供了一种管理存储装置中的命名空间的方法,所述存储装置包括存储器和控制器,控制器包括主机接口层和闪存转换层。所述方法包括:由闪存转换层向主机接口层报告来自预留空间池的第一预留空间组块和与预留空间池分离的第一组块;由控制器在主机接口层处接收第一命令以将存储器的第一部分用于第一命名空间,第一命名空间包括与第一潜在容量损失相关的第一未对齐组块;由控制器利用第一预留空间组块作为第一命名空间的第一未对齐组块;由控制器在主机接口层处接收第二命令以将存储器的第二部分用于第二命名空间,第二命名空间包括第二未对齐组块;以及由控制器将第一组块用作第二命名空间的第二未对齐组块。
所述方法还可以包括由控制器支持将被用作未对齐组块的预留空间组块的数量,其中,预留空间组块的数量可以取决于控制器的内部存储器的量。
所述方法还可以包括:由存储装置基于存储装置的存储器的类型来支持命名空间的数量,其中,存储器的类型可以是三级单元闪存、四级单元闪存或Z-NAND类型。
所述方法还可以包括:由主机接口层向主机报告关于包括第一组块的可见组块池的信息;由主机接口层对主机隐藏关于包括第一预留空间组块的隐藏组块池的信息;由主机向存储装置发送第一命令以将存储器的第一部分用于第一命名空间;以及由主机向存储装置发送第二命令以将存储器的第二部分用于第二命名空间。
附图说明
通过参照附图对示例实施例的以下详细描述,本公开的以上和其他方面和特征对于本领域技术人员将变得更清楚。
图1是根据本公开的一个或多个实施例的系统图。
图2A是示出根据本公开的一个或多个实施例的基于先到先服务原则(first-come,first-serve basis)的命名空间管理的示例的框图。
图2B是示出根据本公开的一个或多个实施例的基于容量损失的命名空间管理的示例的框图。
图2C是示出根据本公开的一个或多个实施例的基于命名空间的大小的命名空间管理的示例的框图。
图3A是根据本公开的一个或多个实施例的系统图。
图3B是示出根据本公开的一个或多个实施例的共享命名空间和私有命名空间的框图。
图3C是示出根据本公开的一个或多个实施例的基于命名空间的属性的命名空间管理的示例的框图。
图4A是根据本公开的一个或多个实施例的用于静态命名空间管理的方法的流程图。
图4B是根据本公开的一个或多个实施例的用于动态命名空间管理的方法的流程图。
具体实施方式
在下文中,将参照附图更详细地描述示例实施例,其中,相同的附图标记始终表示相同的元件。然而,本公开可以以各种不同的形式实现,并且不应被解释为仅限于在此示出的实施例。相反,这些实施例是作为示例提供的,使得本公开将是彻底和完整的,并且将向本领域技术人员充分传达本公开的方面和特征。因此,可以不描述本领域普通技术人员为了完全理解本公开的方面和特征而不是必需的处理、元件和技术。除非另外说明,否则在整个附图和书面描述中,相同的附图标记表示相同的元件,因此,可以不重复其描述。
通常,主机可以请求存储装置创建命名空间。“命名空间”是指被格式化为逻辑块的一定数量的非易失性存储器,其中,命名空间具有与“n”个逻辑块的组合大小相等的大小。如在此所使用的,“逻辑块”是指NVMe规范中用于对数据寻址的I/O命令(例如,读取命令和写入命令)的最小单元,并且命名空间的每个逻辑块可以具有对应的逻辑块地址LBA(例如,从0到(n-1)的LBA)。
出于各种原因,创建多个命名空间对于主机可以是有用的。例如,命名空间可以提供逻辑分离、多租户(multi-tenancy)、安全隔离等。为了创建命名空间,主机可以向存储装置的控制器发送请求,其中,主机指定命名空间的属性(例如,命名空间的格式、与命名空间相关联的组号、共享指定(designation)或私有指定、逻辑块地址的范围等)。
响应于所述请求,存储装置的控制器可以将存储器的组块(chunk)用于命名空间。“组块”(即,逻辑页号(LPN)范围)是指当将存储装置的存储器用于命名空间时存储装置硬件支持的最小可寻址单元。
因为主机所请求的逻辑块的大小可能不匹配组块的大小,所以主机可能请求与不可被一个组块的大小除尽或为一个组块的大小的倍数的总大小对应的一个或多个逻辑块。因此,为命名空间请求的逻辑块的总大小可能不与用于命名空间的一个或多个组块的大小对齐(即,可能与用于命名空间的一个或多个组块的大小不相等)。因此,未对齐组块(即,仅可以由命名空间部分寻址的组块)可能被存储装置的控制器在未对齐组块的一部分不可寻址的情况下使用。例如,由于主机未提供与组块的全部容量对应的逻辑块和相关联的LBA,因此未对齐组块的一部分可以是不可寻址的。未对齐组块的可以不可寻址的部分可导致存储装置的容量损失。
在非限制性示例中,主机可以请求创建两个命名空间,且每个命名空间具有256千字节(KB)的大小。然而,存储装置可能无法识别单独或总计(即,一个或多个组块)恰好等于256KB的存储器的组块。例如,存储装置可以具有支持1千兆字节(GB)的组块大小的硬件。第一组块可以用于两个命名空间中的第一命名空间,并且第二组块可以用于两个命名空间中的第二命名空间。第一组块的256KB作为第一命名空间的一部分可以是可寻址的(例如,通过主机可寻址的),但是第一组块的其余999.744兆字节(MB)可以是不可寻址的。类似地,第二组块的256MB作为第二命名空间的一部分可以是可寻址的,但是第二组块的其余999.744MB可以是不可寻址的。因此,每个命名空间可导致存储装置的999.744兆字节(MB)可以是不可寻址的。换句话说,对于两个命名空间中的每个,1GB与256KB之间的大小差可以是不可寻址的。因此,在这种情况下,创建两个256KB命名空间可导致存储装置的1.999488GB的容量损失。
作为另一非限制性示例,主机可以请求创建具有1.1GB的大小的命名空间。在该非限制性示例中,存储装置可以识别1GB的组块,并且可以使用两个组块来容纳具有1.1GB的大小的命名空间。例如,第一组块可以容纳命名空间的1GB,并且第二组块可以容纳命名空间的0.1GB。第二组块的其余0.9GB可以是不可寻址的。因此,命名空间可导致存储装置的可以是不可寻址的0.9GB。因此,在这种情况下,命名空间的创建可导致存储装置的0.9GB的容量损失。
根据本公开的一个或多个实施例,存储装置的控制器使用来自预留空间(over-provisioning)池(OP池)的组块作为未对齐组块,以避免容量损失并实现逻辑块大小粒度(granularity)。换句话说,来自OP池的组块可以吸收未对齐组块。OP池中的未对齐组块通常保持未映射,这不会导致OP损失。换句话说,将来自OP池的组块用于命名空间的未对齐组块可以不影响由存储装置的OP池执行的操作(诸如,以损耗均衡、垃圾回收等为例)。
此外,在本公开的一个或多个实施例中,存储装置的控制器可以支持比存储装置支持的命名空间的总数少的来自OP池的将被用作未对齐组块的组块。因此,可以使用来自OP池的组块为一些命名空间提供逻辑块大小粒度,并且可以为一些命名空间提供组块大小粒度。
在一个或多个实施例中,存储装置的控制器可以基于先到先服务原则使用来自OP池的组块来提供逻辑块大小粒度。然而,本公开不限于此。例如,在一个或多个实施例中,存储装置的控制器可以在使用来自OP池的组块作为未对齐组块时考虑多个因素(诸如,命名空间的大小、OP池中的可用组块的数量、命名空间的格式(例如,逻辑块大小和/或是否提供支持端到端保护的元数据)、共享指定与私有指定、潜在容量损失的量、支持的命名空间的数量等)。
因此,提供了一种通过根据设置的(例如,预定的)逻辑使用来自OP池的组块作为未对齐组块来减少与创建命名空间相关联的容量损失的系统和方法。
图1是根据本公开的一个或多个实施例的系统图。
参照图1,系统包括主机102和存储装置104。在一个或多个实施例中,主机102可以与存储装置104容纳在一起(例如,可以与存储装置104集成在一起),并且在其他实施例中,主机102可以与存储装置104分离。
主机102可以包括处理器(诸如,中央处理器(CPU))和主机存储器。存储装置104可以包括控制器108(例如,存储控制器或SSD控制器)和存储器。在一个或多个实施例中,存储器可以包括一个或多个闪存单元。例如,存储装置104可以是固态存储装置(SSD),并且存储器可以是连接到控制器108的NAND 106(例如,多个NAND存储器单元)。
在一个或多个实施例中,主机102可以经由外围组件互连快速(PCIe)接口(例如,PCIe总线)与存储装置104通信。然而,本公开不限于此。例如,主机102可以经由以太网总线、通过光纤的NVMe(NVMe over Fabrics)或本领域普通技术人员已知的任何其他合适的总线与存储装置104通信。
在一个或多个实施例中,存储装置104的控制器108可以包括处理器110(诸如,CPU)和内部存储器112(例如,DRAM、SRAM、闪存等)。存储在内部存储器112(例如,DRAM)和/或固件(例如,ASIC或FPGA)中的逻辑可以由处理器110使用或执行,以用于执行在此描述的一个或多个处理或处理模块(诸如,以主机接口层(HIL)114和闪存转换层(FTL)116的功能为例)。控制器108的HIL114可以被配置为与主机102通信,并且控制器108的FTL116可以被配置为将在HIL114从LBA转换的LPN提供或映射到存储装置104的NAND 106中的物理地址。
在一个或多个实施例中,HIL114从主机102接收命令和/或数据。主机102可以向HIL 114请求现有命名空间的属性、可见组块的总容量、可用于分配命名空间的容量、组块大小、支持的命名空间的总数等,以向用户提供信息。作为响应,存储装置104的控制器108的HIL 114可以发送或提供现有命名空间的属性、可见组块的总容量、可用于分配命名空间的容量、组块大小、支持的命名空间的总数等。
然而,在一个或多个实施例中,HIL 114保持来自OP池的隐藏组块的池,并且HIL114向主机102隐藏隐藏组块。换句话说,HIL 114可以具有可见组块池和隐藏组块池,使得HIL 114报告可见组块池的属性以响应于来自主机102的请求(例如,对信息的请求),并且HIL 114不响应于来自主机102的请求(例如,对信息的请求)而向主机102报告隐藏组块池的属性。
在一个或多个实施例中,主机102可以允许用户在创建或请求新命名空间时选择命名空间的大小、格式等。命名空间的大小可以等于一个或多个逻辑块,其中,一个逻辑块是NVMe规范中用于对数据寻址的I/O命令(例如,读取命令和写入命令)的最小单元。逻辑块大小可以以命名空间的格式被选择性地设置。因此,根据用户和/或主机102的需求,逻辑块大小可以针对不同的命名空间而变化。作为示例,主机102可以以命名空间的格式设置任何合适值的逻辑块大小(诸如,例如512字节或4KB)。主机102可以使用LBA来寻址与命名空间相关联的不同逻辑块。换句话说,命名空间的每个逻辑块可以对应于来自LBA范围之中的不同LBA。
主机102可以向HIL 114发送创建包括与命名空间相关联的LBA范围的命名空间的命令。HIL 114可以将LBA组织或映射到存储装置104的LPN。换句话说,HIL 114可以将来自主机102的LBA转换为存储装置104的LPN。然后,HIL 114的LPN可以用于与FTL 116通信或向FTL 116发送请求,使得FTL 116可以将LPN映射或转换为NAND 106中的对应的物理地址。
尽管描述了用于在HIL114和FTL 116处进行映射的特定方法,但是本领域普通技术人员已知的用于映射的任何合适的方法可以在被合适的调整的情况下被使用。
在一个或多个实施例中,与组块条目(CE)相关联的组块可以从主机102的角度由多个LBA引用和/或从存储装置104的控制器108的角度由多个LPN(即,LPN范围)引用。因为与由主机请求的LBA范围相关联的逻辑块的大小可能不匹配组块的大小,所以主机可能请求与不可被一个组块的大小除尽或为一个组块的大小的倍数的总大小对应的一个或多个逻辑块。换句话说,主机请求的逻辑块的总大小可能不匹配(例如,精确地或恰好地匹配)支持主机请求的所有逻辑块所使用或所需的一个或多个组块的总大小。因此,主机102可能请求与不可被一个组块的大小除尽或为一个组块的大小的倍数的总大小对应的一个或多个逻辑块。在这种情况下,存储装置104可以对使用的组块的数量进行向上舍入(round up),以为主机102请求的命名空间提供足够的容量。由于舍入差在用于命名空间之后会变得不可寻址,因此舍入差可以等于在创建命名空间时相关联的容量损失。结果,用于命名空间的一个组块(例如,向上舍入的组块)可以是未对齐组块(即,其中一部分在创建命名空间之后可能是不可寻址的,从而导致容量损失的组块)。
在一个或多个实施例中,组块大小可以取决于NAND 106的容量和由存储装置104的硬件支持的组块条目的数量。例如,组块大小可以等于NAND106的容量除以组块条目的数量。在非限制性示例中,2000个组块条目可以被支持,并且NAND 106的容量(例如,驱动容量)可以是2太字节(TB)。在这种情况下,由于2TB除以2000等于1GB,因此存储装置104可以提供1GB的组块大小。因此,在这种情况下,每个组块条目指包含1GB的组块(或LPN范围)。然而,本公开不限于此,并且可以根据由存储装置104的硬件支持的组块条目的数量和NAND106的大小(即,总驱动容量)来使用任何组块大小。例如,存储装置硬件可以支持2048个组块条目,并且存储装置104可以具有32TB的驱动容量。在这种情况下,存储装置104可以提供15.625GB的组块大小。
图2A是示出根据本公开的一个或多个实施例的基于先到先服务原则的命名空间管理的示例的框图。图2B是示出根据本公开的一个或多个实施例的基于容量损失的命名空间管理的示例的框图。图2C是示出根据本公开的一个或多个实施例的基于命名空间的大小的命名空间管理的示例的框图。
参照图1和图2A至图2C,为了方便,基于组块条目(CE)示出了主机102与存储装置104之间的交互。每个CE可以对应于从主机102的角度来看的LBA的范围和从控制器108的角度来看的LPN的范围。由于与由主机请求的LBA范围相关联的逻辑块的大小可能不匹配(例如,精确地或恰好地匹配)组块的大小,因此主机可能请求与不可被一个块的大小除尽或为一个块的大小的倍数的总大小对应的一个或多个逻辑块。因此,为命名空间请求的逻辑块的总大小可能不与用于命名空间的一个或多个组块的大小对齐(即,可能与用于命名空间的一个或多个组块的大小不相等)。因此,如图2A至图2C中所示,未对齐组块(即,仅可以由命名空间部分寻址的组块)可以在未对齐组块的一部分不可寻址的情况下由存储装置的控制器使用。在示出的实施例中,为了方便,未对齐组块被指定为(UC),并且在下面可以被称为UC。此外,为了方便,可以将对主机102隐藏或不报告给主机102的隐藏组块指定为隐藏组块(HC)。
在比较示例中,HIL可以包括可见组块池而不包括隐藏组块池。因此,HIL可以向主机提供(或通告)HIL的全部容量。在这种情况下,包括与OP池对应的组块和与OP池分离的组块的FTL可以仅将与OP池分离的组块报告给HIL,并且对HIL隐藏OP池中的组块。换句话说,HIL的所有组块对于主机是可见的,并且来自OP池的组块不被FTL报告给HIL。
然而,如图1和图2A至图2C中所示,在一个或多个实施例中,FTL116可以将与OP池202分离的组块报告给HIL 114,并且将OP池202的一个或多个组块报告给HIL 114。因此,由FTL 116报告给HIL 114但由HIL 114对主机102隐藏的来自OP池202的组块可以是HC。例如,如图2A至图2C中所示,报告给HIL 114的OP池202中的所有组块对主机102隐藏,因此可以为HC。
如图2A中所示,通过基于先到先服务原则使用来自OP池202的HC作为HC,可以基于先到先服务原则由来自OP池202的HC吸收HC。例如,如果响应于主机102创建命名空间的请求而形成UC,则HIL 114的HC之中的来自OP池202的组块可以被用作UC。如果未响应于主机102创建命名空间的请求而形成UC,则由于应用逻辑块大小粒度而不是组块大小粒度可能不会节省容量(例如,通过避免容量损失来节省容量),因此来自OP池202的组块可以不被使用。因此,OP池202的作为HC的一个或多个组块可以被节省,以用于在逻辑块大小粒度可被期望的情况下的后续命名空间创建请求。
在一个或多个实施例中,由于来自OP池202的组块是未映射区域(即,NAND 106的未映射区域),因此来自OP池202的组块可以适合用作HC。因此,使用来自OP池202的组块不会导致OP池202损失。换句话说,由OP池202执行的操作(诸如,以损耗均衡、垃圾回收等为例)可以不受来自OP池202的组块被用作HC的影响。
在示出的实施例中,主机102可以请求:从来自HIL 114处的可见组块池的报告给主机102的未使用的组块208之中,创建第一命名空间204和第二命名空间206。因为如图2A至图2C中所示,主机102针对第一命名空间204和第二命名空间206中的每个请求的逻辑块的总大小可能不可被一个组块的大小除尽或为一个组块的大小的倍数,所以第一命名空间204和第二命名空间206中的每个可以是未对的齐命名空间,其中,第一命名空间204包括UC并且第二命名空间206包括UC。根据组块大小粒度,第一命名空间204和第二命名空间206中的每个的HC的一部分可能变得不可寻址,从而导致容量损失。因此,为了避免容量损失,HIL114处的HC(例如,来自OP池202的HC)可以被用作与第一命名空间204和第二命名空间206相关联的HC,使得可以根据先到先服务原则为第一命名空间204和第二命名空间206提供逻辑块大小粒度。
在一个或多个实施例中,如图2A至图2C中所示的HC的使用可以防止或基本上防止主机识别到可用容量的改变,以指示为其UC被OP池202吸收的命名空间提供逻辑块大小粒度(即,来自OP池202的HC被用作UC)。因此,由于未用于后续命名空间请求中的使用,因此将被另外使用且部分不可寻址的导致可见容量损失的可见组块可以保持可见且可用于主机102。换句话说,主机没有接收到容量损失的指示。因此,存储装置104可以通过利用HC来向主机报告没有由于未对齐组块而导致的容量损失。
在一个或多个实施例中,如图1和图2B至图2C中所示,与来自OP池202的组块分离的HIL 114的可见组块可以根据如下面将更详细描述的设置的(例如,预定的)逻辑被用于命名空间的HC。在这种情况下,由于HC导致部分不可寻址的组块,可能存在与命名空间的创建相关联的容量损失。因此,因为用作UC的可见组块可能不可用于后续命名空间,所以为命名空间提供组块大小粒度,并且命名空间的创建可以使主机102识别到对应的容量损失。
在一个或多个实施例中,由FTL 116向HIL 114报告的将被用作HC的来自OP池202的组块可以比由存储装置104的控制器108支持的命名空间的总数小。例如,不同NAND类型(诸如,三级单元闪存(TLC)、四级单元闪存(QLC)和Z-NAND)可以支持彼此不同设置数量的命名空间。FTL 116可以使用内部存储器112(例如,DRAM)来支持将被用作HC的来自OP池202的组块的设置数量,且将被用于HC的OP池202的组块的设置数量可以取决于可用内部存储器的量。例如,增加将被用作HC的OP池的组块的数量可引起使用的内部存储器112(例如,DRAM)的量的增加。因此,在一个或多个实施例中,根据存储装置104的NAND 106类型和控制器108的可用内部存储器112的量,由控制器108支持的命名空间的总数可以比来自OP池202的将被用作由控制器108支持的HC的组块的设置数量大。
在一个或多个实施例中,本公开的系统和方法包括根据NAND类型和合适的产品变体的构建时间可定制特征(build time customizable feature)。因此,主机可以连接到具有相同或不同NAND类型(即,混合驱动类型)的多个存储装置,并且主机可以根据需要向连接的存储装置发送请求以分配一个或多个命名空间。
在非限制性示例中,存储装置104的控制器108可以支持创建例如与多达64个可见组块或CE对应的多达64个命名空间(例如,取决于NAND类型),从而提供64乘以组块大小(即,与CE对应的组块的大小)的用于命名空间创建的总容量。在此情况下,例如,存储装置104的控制器108可以支持来自OP池202的32个组块(例如,取决于内部存储器112或DRAM)用作HC。根据由主机102请求的命名空间的大小,主机102可以请求创建多于32个命名空间(例如,在33至64个命名空间之间)。如果应用先到先服务原则并且同时存在多于32个UC,则OP池202的组块可能不可被用作第33个UC,从而导致当与OP池202分离的可见组块用作第33个UC时的容量损失。
尽管提供了将被用作UC的OP池的组块和命名空间的特定数量,但是本公开不限于此,并且可以根据硬件和/或软件约束使用任何合适的数量。
虽然参照图2A提供了先到先服务原则,但是本公开不限于此。在一个或多个实施例中,当使用来自OP池202的组块用作UC时,可以考虑任何其他合适的逻辑布置。
例如,如图2B中所示,因为主机102针对第一命名空间204和第二命名空间206中的每个请求的逻辑块的总大小可能无法被如图2A至图2C中所示的一个组块的大小除尽或为如图2A至图2C中所示的一个组块的大小的倍数,所以第一命名空间204和第二命名空间206中的每个可以是未对齐的命名空间,其中,第一命名空间204包括UC并且第二命名空间206包括UC。根据组块大小粒度,第一命名空间204和第二命名空间206中的每个的UC的一部分可能变得不可寻址,从而导致容量损失。可以根据组块大小粒度形成的不可寻址存储器的量可以用作确定来自OP池202的HC是否应该被用于提供逻辑块大小粒度的因素。在这种情况下,阈值可以被使用,其中,如果多于设置的量的存储器将由于UC而变得不可寻址(即,如果容量损失超过设置的量),则使用OP池202的HC来提供逻辑块大小粒度(假设OP池202的HC可用)。因此,如图2B中所示,可形成低于阈值的不可寻址存储器的第一命名空间204的UC可以使用来自HIL 114的可见组块池的组块,从而导致较小的容量损失(即,来自HIL 114的可见组块池的组块可以被用作第一命名空间204的UC)。另一方面,如图2B中所示,可以与潜在地比第一命名空间204的UC大的量的容量损失相关联的第二命名空间206的UC可能高于阈值,因此,可以使用来自OP池202的HC(即,来自OP池202的HC可以被用作第二命名空间206的UC)来实现逻辑块大小粒度,从而避免潜在更大的量的容量损失。
作为另一实例,如图2C中所示,命名空间的大小可以被用作确定来自OP池202的HC是否应该用于提供逻辑块大小粒度的因素。在这种情况下,使用来自OP池202的HC可以取决于请求的命名空间的大小。例如,阈值可以将HC应用于其中命名空间的大小比一个组块小的未对齐组块。因此,如图2C中所示,具有比一个组块大的大小并且具有UC的第一命名空间204可形成不可寻址的存储器,从而导致容量损失。然而,具有比一个组块小的大小并且具有UC的第二命名空间206可以使用来自OP池202的HC来实现逻辑块大小粒度,从而避免容量损失。
尽管参照图2A至图2C单独描述了多个布置,但是根据一个或多个实施例的逻辑布置可以基于图2A至图2C中呈现的布置的组合。
在一个或多个实施例中,可以使用其中可以根据一个或多个阈值来实现逻辑布置的阈值或多阈值方法。例如,NAND 106的未使用容量可以被用于确定是否提供逻辑块大小粒度,并且如果是,则NAND 106的未使用容量可以被用于确定用于应用逻辑块大小粒度的一个或多个逻辑布置之中的哪个逻辑布置应该被应用。换句话说,当命名空间的未使用容量低于或高于设置的阈值时,用于提供逻辑块大小粒度的系统和方法可以被提供。在非限制性示例中,当HIL 114的可见池中少于20%的组块是未使用的块208时,可以基于先到先服务原则提供逻辑块大小粒度。
在一个或多个实施例中,可以使用动态方法(与静态方法相对)来确定将来自OP池202的组块用作UC。例如,在一个或多个实施例中,控制器108可以基于包括UC的命名空间的优先级来实时地或以设置的时间间隔(例如,在接收到命名空间请求时)动态地调整来自OP池202的HC是否被用作UC。在非限制性示例中,可以基于先到先服务原则使用来自OP池202的HC,直到所有HC都已被用作UC,其中,每个UC对应于单独的命名空间。当请求包括UC的附加命名空间时,控制器108可以确定与包括UC的每个命名空间相关的优先级。例如,控制器108可以确定使用来自OP池202的组块作为一个UC比使用来自OP池202的组块作为与不同命名空间相关联的另一UC潜在地导致少的容量损失。在这种情况下,可导致较低容量损失的命名空间的优先级低于可导致较高容量损失的命名空间的优先级。
因此,尽管已经使用了来自HIL 114处的OP池202的所有HC,但是控制器108可以改变用作较低优先级命名空间的UC并用作较高优先级命名空间的UC的HC,从而减少潜在的容量损失。如果包括UC的命名空间的优先级低于已使用来自OP池的组块的所有命名空间的优先级,则改变不会发生。在执行改变之前,控制器108可以使用与HIL 114处的OP池202分离的NAND106的组块(例如,可见组块池中的存储器的组块)来容纳先前可以已经由来自OP池202的HC吸收的较低优先级命名空间的数据。换句话说,在使用来自OP池202的HC作为较高优先级命名空间的UC之前,可以将先前由来自OP池202的HC吸收的数据复制到与OP池202分离的NAND 106的组块。因此,较低优先级命名空间可以从逻辑块大小粒度改变为组块大小粒度,并且可以基于优先级来为较高优先级命名空间提供逻辑块大小粒度而不是组块大小粒度。在一个或多个实施例中,优先级可以取决于参照图2A至图2C描述的因素和/或下面更详细描述的命名空间的属性。
尽管已经描述了基于先到先服务、命名空间的大小和/或潜在容量损失的布置,但是本公开不限于此。例如,命名空间的属性可以单独地或与参照图2A至图2C描述的布置组合地被使用(例如,见图3C)。
图3A是根据本公开的一个或多个实施例的系统图。图3B是示出根据本公开的一个或多个实施例的共享命名空间和私有命名空间的框图。
参照图3A,系统可以包括(例如,经由与第一控制器108a和第二控制器108b对应的两个单独的端口,且第一主机302的PCIe链路和第二主机304的PCIe链路分别连接到两个单独的端口)与存储装置104的第一控制器108a或第二控制器108b通信的多于一个主机(例如,第一主机302和第二主机304)。作为示例,在图3A中示出的系统中,尽管第一控制器108a和第二控制器108b分别连接到单独的主机302、304,但是NAND 106和FTL 116可以不被两个单独的端口以及第一控制器108a和第二控制器108b划分。此外,在一个或多个实施例中,处理器110、内部存储器112和HIL 114可以不被两个单独的端口以及第一控制器108a和第二控制器108b划分。
在一个或多个实施例中,第一主机302和第二主机304可以执行软件中的程序以分别生成第一虚拟机306和第二虚拟机308。第一虚拟机306和第二虚拟机308可以模拟计算环境的功能。在一个或多个实施例中,第一控制器108a和/或第二控制器108b可以提供第一虚拟功能305和第二虚拟功能307,以用作分别与第一虚拟机306和第二虚拟机308的连接来管理命名空间。因此,存储装置104可以包括与第一主机302和/或第二主机304的(例如,经由PCIe链路的)物理连接和(例如,经由虚拟化的)虚拟连接两者,以管理命名空间(例如,具有共享属性的命名空间)。
如图3A中所示,存储装置104可以包括处理器110(诸如,CPU)和内部存储器112(例如,DRAM、SRAM、闪存等)。存储在内部存储器112(例如,DRAM)和/或固件(例如,ASIC或FPGA)中的逻辑可以由处理器110使用或执行,以用于执行在此描述的一个或多个处理或处理模块(诸如,以HIL 114、FTL 116、第一虚拟功能305和第二虚拟功能307的功能为例)。处理器110和内部存储器112可以为单独或彼此组合地操作的一个或多个处理器和/或一个或多个存储器装置,且可以为第一控制器108a、第二控制器108b和/或存储装置的任何其他控制器的组件。
在一个或多个实施例中,第一主机302和第二主机304可以经由对应的物理连接发送创建具有设置的属性的第一命名空间312、第二命名空间314和第三命名空间310的请求。在一个或多个实施例中,第一虚拟机306和第二虚拟机308可以经由虚拟连接发送创建具有设置的属性的第一命名空间312、第二命名空间314和第三命名空间310的请求。
如图3B中所示,第一命名空间312和第三命名空间310可以被指定为私有命名空间,并且第二命名空间314可以被指定为通信经由虚拟连接传输的第一虚拟机306与第二虚拟机308之间的共享命名空间。然而,本公开不限于此。在一个或多个实施例中,第一命名空间312和第三命名空间310可以被指定为私有命名空间,并且第二命名空间314可以被指定为通信经由物理连接传输的第一主机302与第二主机304之间的共享命名空间。
在物理情况下,第一控制器108a可以向第一主机302报告信息,使得第一主机302可以从HIL 114接收信息并向HIL 114发送与第二命名空间314和第一命名空间312相关的命令。在一个或多个实施例中,第二控制器108b可以向第二主机304报告信息,使得第二主机304可以从HIL 114接收信息并向HIL 114发送与第二命名空间314和第三命名空间310相关的命令。
在虚拟情况下,存储装置104的第一虚拟功能305可以向第一虚拟机306报告信息,使得第一虚拟机306可以从第一虚拟功能305接收信息并且向第一虚拟功能305发送与第二命名空间314和第一命名空间312相关的命令。在一个或多个实施例中,存储装置104的第二虚拟功能307可以向第二虚拟机308报告信息,使得第二虚拟机308可以从第二虚拟功能307接收信息并且向第二虚拟功能307发送与第二命名空间314和第三命名空间310相关的命令。
图3C是示出根据本公开的一个或多个实施例的命名空间管理的示例的框图。
参照图3C,共享和私有的指定可以被用作确定来自OP池316的HC是否应该用于提供逻辑块大小粒度的因素。在这种情况下,来自OP池316的HC可以被用于包括UC的共享命名空间以吸收UC,并且来自OP池316的HC可以不被用于包括UC的私有命名空间。例如,如图3C中所示,包括UC的第一命名空间312可以是私有的,因此,来自OP池316的HC可以不被用作UC,从而导致与OP池316分离的存储器的组块的使用,这会导致容量损失。在示出的实施例中,包括UC的第二命名空间314被共享,因此,来自OP池316的HC可以被用作UC以(例如,通过提供逻辑块大小粒度)避免容量损失。
尽管共享命名空间和私有命名空间被用作用于确定是否应用逻辑块大小粒度的示例,但是本公开不限于此,因为共享命名空间和私有命名空间指定是可以被使用的命名空间的一个属性的示例。在其他实施例中,命名空间的任何合适的属性(例如,命名空间的格式(诸如,逻辑块大小和/或是否提供支持端到端保护的元数据)、与命名空间相关联的组号、私有指定、逻辑块大小等)可以单独使用或与其他属性组合使用。在一个或多个实施例中,命名空间的属性可以单独使用或与其他因素(诸如,先到先服务原则、命名空间的大小和/或潜在容量损失)组合使用。
图4A是根据本公开的一个或多个实施例的用于静态命名空间管理的方法的流程图。
参照图4A,静态命名空间管理的系统和方法可以包括:存储装置104的控制器108在主机102的请求下使用存储装置的NAND 106来分配命名空间(例如,也见图1)。如参照图2A至图2C和3C所描述,控制器108可选择性地使用来自OP池202、OP池316的组块作为UC,以提供用于命名空间的逻辑块大小粒度。
在一个或多个实施例中,该方法可以包括从主机102接收分配命名空间的请求(402)。主机102可以在向控制器108发送分配命名空间的请求时指定命名空间的属性。
在一个或多个实施例中,控制器108可以应用命名空间管理策略(404)来确定是否使用来自OP池202、OP池316的组块作为UC。例如,控制器108可以确定命名空间是否包括UC。如果命名空间不包括任何UC(405),则控制器108可以在不使用来自OP池202、OP池316的组块的情况下分配命名空间(406)。然而,如果命名空间包括UC,则控制器108可以确定是否满足用于应用逻辑块大小粒度的一个或多个条件。
例如,控制器108可以检查控制器108的HIL 114是否具有来自OP池202、OP池316的可被用作UC的组块(例如,HC)。如果没有来自OP池202、OP池316的组块可被用作UC(405),则控制器108可以在不使用来自OP池的组块的情况下分配命名空间(406),从而导致由于UC引起的容量损失。如果在HIL 114处来自OP池202、OP池316的组块是可用的,则控制器108可以考虑一个或多个附加因素来确定是否使用来自OP池202、OP池316的组块作为UC。
尽管来自OP池202、OP池316的组块的可用性被描述为应用逻辑块大小粒度的条件,但是本公开不限于此。例如,一个或多个条件可以包括来自OP池202、OP池316的组块的可用性、用于命名空间的NAND 106的容量是高于还是低于设置的阈值等。
在一个或多个实施例中,由命名空间管理策略(404)考虑以确定是否使用来自OP池202、OP池316的组块作为命名空间的UC的一个或多个附加因素可以是贯穿本公开讨论的并且例如在图4A的步骤(404)中示出的任何因素。例如,命名空间管理策略可以基于先到先服务原则操作,或者基于潜在的容量损失、命名空间的大小、命名空间格式、私有指定、命名空间组号、命名空间的任何其他属性或其任何组合来操作。
如果不满足一个或多个条件(405),则控制器108可以在不使用来自OP池202、OP池316的组块的情况下分配命名空间(406),从而导致由于UC引起的容量损失。换句话说,命名空间可以被提供有组块大小粒度。如果满足所有因素(405),则控制器可以使用来自OP池202、OP池316的组块作为UC,并且使用与OP池202、OP池316分离的一个或多个组块用于命名空间的任何其他需求(例如,附加组块)(408)。通过使用来自OP池202、OP池316的组块作为UC,可以为命名空间提供逻辑块大小粒度。
图4B是根据本公开的一个或多个实施例的用于动态命名空间管理的方法的流程图。
参照图4B,动态命名空间管理的系统和方法可以包括:存储装置104的控制器108在主机102的请求下使用存储装置的NAND 106来分配命名空间(例如,也见图1)。如参照图2A至图2C和3C所描述,控制器108可以选择性地使用来自OP池202、OP池316的组块作为UC,以提供用于命名空间的逻辑块大小粒度。
在一个或多个实施例中,该方法可以包括从主机102接收分配命名空间的请求(402)。主机102可以在向控制器108发送分配命名空间的请求时指定命名空间的属性。在一个或多个实施例中,控制器108可以应用命名空间管理策略(404)来确定是否使用来自OP池202、OP池316的组块作为UC。例如,控制器108可以确定命名空间是否包括UC。如果命名空间不包括任何HC(405),则控制器108可以在不使用来自OP池的组块的情况下分配命名空间(406)。
在一个或多个实施例中,命名空间管理策略可以考虑一个或多个附加因素来确定是否使用来自OP池202、OP池316的组块作为命名空间的UC。一个或多个附加因素可以是在整个本公开中讨论的并且例如在图4B的步骤(404)中示出的任何因素。例如,命名空间管理策略可以基于先到先服务原则操作,或者基于容量损失、命名空间的大小、命名空间格式、私有指定、命名空间组号、命名空间的任何其他属性或其任何组合来操作。
如果不满足一个或多个条件(405),则控制器108可以在不使用来自OP池202、OP池316的组块的情况下分配命名空间(406),从而导致由于UC引起的容量损失。换句话说,命名空间可以被提供有组块大小粒度。如果满足所有因素(405),并且来自OP池202、OP池316的组块可被用作UC(407),则控制器可以使用来自OP池202、OP池316的组块作为UC,并且使用与OP池202、OP池316分离的一个或多个组块用于命名空间的任何其他需求(例如,附加组块)(408)。通过使用来自OP池202、OP池316的组块作为UC,可以为命名空间提供逻辑块大小粒度。
然而,如果来自OP池202、OP池316的组块不可被用作UC(407),则控制器108可以考虑与包括UC的现有命名空间(其中,OP池202、OP池316的组块已被用作现有命名空间的UC)的优先级相比的命名空间的优先级(410)。例如,基于步骤(404)的命名空间管理策略的因素,控制器108可以确定新命名空间(例如,较高优先级)比其中OP池202、OP池316的组块已被用作UC的现有命名空间(例如,较低优先级命名空间)适合逻辑块大小粒度(410)。如果新命名空间的优先级高于现有命名空间的优先级,则控制器108可以将用于较低优先级命名空间的OP池202、OP池316的组块的数据复制到与OP池202、OP池316分离的未使用的组块(412),从而导致与较低优先级命名空间相关的容量损失。换句话说,先前由OP池202、OP池316的组块吸收的数据可以被复制到与用于较低优先级命名空间的OP池202、OP池316分离的NAND 106的组块。此外,控制器108可以使用来自OP池202、OP池316的现在可用的组块(例如,被复制的组块)作为较高优先级命名空间的UC,并且使用与OP池202、OP池316分离的一个或多个组块,以用于较高优先级命名空间的任何其他需求(414)。因此,较低优先级命名空间可以从逻辑块大小粒度改变为组块大小粒度,而尽管OP池202、OP池316的所有组块都被用作(例如,并发地或同时地使用)UC,但是较高优先级命名空间被提供有逻辑块大小粒度。因此,尽管来自控制器108的HIL114处的OP池202、OP池316的所有组块被用作(例如,并发地或同时地使用)UC,但是动态方法使得控制器108能够自适应地容纳命名空间请求。
在一个或多个实施例中,如步骤(410)、(412)、(414)中所述,控制器108可以将新命名空间的优先级与每个现有命名空间进行比较,以确定或识别哪个现有命名空间(如果有的话)可以从逻辑块大小粒度改变为组块大小粒度。换句话说,在非限制性示例中,新命名空间可以具有比多于一个现有命名空间高的优先级,并且控制器108可以选择最低优先级命名空间以从逻辑块大小粒度改变为组块大小粒度。
如果新命名空间的优先级低于所有现有命名空间(410),则控制器108可以在不使用来自OP池的组块的情况下分配命名空间(406),从而导致由于UC引起的容量损失。
因此,如在此所公开的,本公开的实施例提供了命名空间管理的系统和方法,以提供逻辑块大小粒度。此外,本公开的一个或多个实施例的系统和方法提供了用于基于在此描述的一个或多个因素对被提供有逻辑块大小粒度的命名空间进行静态调整和动态调整的逻辑。
在附图中,为了清楚,可以夸大和/或简化元件、层和区域的相对尺寸。
应当理解,尽管在此可以使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语的限制。这些术语用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开。因此,在不脱离本公开的精神和范围的情况下,下面描述的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。
将理解的是,当元件或层被称为“在”另一元件或层“上”、“连接到”或“结合到”另一元件或层时,该元件或层可以直接在所述另一元件或所述层上、连接到或结合到所述另一元件或所述层,或者可以存在一个或多个中间元件或层。另外,还将理解的是,当元件或层被称为“在”两个元件或层“之间”时,该元件或层可以是所述两个元件或所述层之间的唯一元件或层,或者也可以存在一个或多个中间元件或层。
在此使用的术语是为了描述特定实施例的目的,而不意图限制本公开。如在此所使用的,除非上下文另有明确说明,否则单数形式意图也包括复数形式。还将理解的是,术语“包括”、“包含”、“具有”和“具备”当在本说明书中使用时,说明存在所陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。如在此所使用的,术语“和/或”包括相关所列项的任何组合和所有组合。表述(诸如,“……中的至少一个(者/种)”)在一列元素之后时,修饰整列元素,而不修饰列的单个元素。
此外,当描述本公开的实施例时,“可以”的使用是指“本公开的一个或多个实施例”。如在此所使用的,术语“使用”可以被认为分别与术语“利用”同义。
如在此所用,术语“基本上”、“约”和类似术语用作近似术语而不是程度术语,并且意图考虑本领域普通技术人员将认识到的测量值或计算值的固有偏差。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解的含义相同的含义。还将理解的是,除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文和/或本说明书中的含义一致的含义,并且不应当以理想化或过于形式化的含义来解释。
尽管已经描述了一些示例实施例,但是本领域技术人员将容易理解的是,在不脱离本公开的精神和范围的情况下,在示例实施例中的各种修改是可行的。将理解的是,除非另外描述,否则每个实施例中的特征或方面的描述通常应被认为可用于其他实施例中的其他类似特征或方面。因此,将理解的是,前述内容是各种示例实施例的说明,并且将不被解释为限于在此公开的特定示例实施例,并且对所公开的示例实施例的各种修改以及其他示例实施例意图包括在如所附权利要求及其等同物中限定的本公开的精神和范围内。
Claims (18)
1.一种被配置为支持多个命名空间的存储装置,所述存储装置包括:
存储器;以及
控制器,连接到存储器并且包括:
内部存储器;
主机接口层;以及
闪存转换层,被配置为向主机接口层报告来自预留空间池的第一预留空间组块和与预留空间池分离的第一组块,
其中,控制器被配置为:在主机接口层处接收命令,以将存储器的一部分用于所述多个命名空间之中的第一命名空间,第一命名空间包括未对齐组块,
其中,控制器被配置为:利用第一预留空间组块作为第一命名空间的未对齐组块,
其中,将被用作未对齐组块的预留空间组块的数量比命名空间的数量少,并且
其中,将被用作未对齐组块的预留空间组块的数量取决于控制器的内部存储器的量。
2.如权利要求1所述的存储装置,其中,存储装置的存储器的类型是三级单元闪存、四级单元闪存或Z-NAND类型,其中,命名空间的数量取决于存储器的类型。
3.如权利要求1所述的存储装置,其中,主机接口层包括:
可见组块池,包括第一组块;以及
隐藏组块池,包括第一预留空间组块,
其中,主机接口层被配置为:向主机报告关于可见组块池的信息并且对主机隐藏关于隐藏组块池的信息,并且
其中,主机被配置为:向存储装置发送所述命令以将存储器的所述一部分用于所述多个命名空间之中的第一命名空间。
4.如权利要求1所述的存储装置,其中,控制器还被配置为:基于先到先服务原则将第一预留空间组块用于第一命名空间。
5.如权利要求1所述的存储装置,其中,控制器还被配置为:基于第一命名空间的私有指定、格式或组号来利用第一预留空间组块。
6.如权利要求1所述的存储装置,其中,控制器还被配置为:基于与第一命名空间相关的第一命名空间的潜在容量损失高于或低于设置的阈值来利用第一预留空间组块。
7.如权利要求1所述的存储装置,其中,控制器还被配置为:基于第一命名空间的大小高于或低于设置的阈值来利用第一预留空间组块。
8.一种系统,所述系统包括:
如权利要求1所述的存储装置;以及
主机,被配置为:向存储装置发送所述命令以将存储器的所述一部分用于所述多个命名空间之中的第一命名空间。
9.一种管理存储装置中的命名空间的方法,所述方法包括:
由存储装置支持多个命名空间;
由存储装置的控制器的闪存转换层向存储装置的控制器的主机接口层报告来自预留空间池的第一预留空间组块以及与预留空间池分离的第一组块;
由存储装置在主机接口层处接收命令,以将存储器的一部分用于所述多个命名空间之中的第一命名空间,第一命名空间包括未对齐组块;
由控制器利用第一预留空间组块作为第一命名空间的未对齐组块;以及
由控制器支持将被用作未对齐组块的预留空间组块的数量,预留空间组块的数量取决于控制器的内部存储器的量,
其中,将被用作未对齐组块的预留空间组块的数量比命名空间的数量少。
10.如权利要求9所述的方法,所述方法还包括:基于存储装置的存储器的类型来支持命名空间的数量,其中,存储器的类型是三级单元闪存、四级单元闪存或Z-NAND类型。
11.如权利要求9所述的方法,所述方法还包括:
由主机接口层向主机报告关于包括第一组块的可见组块池的信息;
由主机接口层对主机隐藏关于包括第一预留空间组块的隐藏组块池的信息;以及
由主机向存储装置发送所述命令以将存储器的所述一部分用于所述多个命名空间之中的第一命名空间。
12.如权利要求9所述的方法,所述方法还包括:由控制器基于先到先服务原则将第一预留空间组块用于第一命名空间。
13.如权利要求9所述的方法,所述方法还包括:由控制器基于第一命名空间的私有指定、格式或组号来利用第一预留空间组块。
14.如权利要求9所述的方法,所述方法还包括:由控制器基于与第一命名空间相关的第一命名空间的潜在容量损失高于或低于设置的阈值来利用第一预留空间组块。
15.如权利要求9所述的方法,所述方法还包括:由控制器基于第一命名空间的大小高于或低于设置的阈值来利用第一预留空间组块。
16.一种管理存储装置中的命名空间的方法,所述存储装置包括存储器和控制器,控制器包括主机接口层和闪存转换层,所述方法包括:
由闪存转换层向主机接口层报告来自预留空间池的第一预留空间组块和与预留空间池分离的第一组块;
由控制器在主机接口层处接收第一命令以将存储器的第一部分用于第一命名空间,第一命名空间包括与第一潜在容量损失相关的第一未对齐组块;
由控制器利用第一预留空间组块作为第一命名空间的第一未对齐组块;
由控制器在主机接口层处接收第二命令以将存储器的第二部分用于第二命名空间,第二命名空间包括第二未对齐组块;
由控制器将第一组块用作第二命名空间的第二未对齐组块;以及
由控制器支持将被用作第一未对齐组块的预留空间组块的数量,预留空间组块的数量取决于控制器的内部存储器的量。
17.如权利要求16所述的方法,所述方法还包括:由存储装置基于存储装置的存储器的类型来支持命名空间的数量,其中,存储器的类型是三级单元闪存、四级单元闪存或Z-NAND类型。
18.如权利要求16所述的方法,所述方法还包括:
由主机接口层向主机报告关于包括第一组块的可见组块池的信息;
由主机接口层对主机隐藏关于包括第一预留空间组块的隐藏组块池的信息;
由主机向存储装置发送第一命令以将存储器的第一部分用于第一命名空间;以及
由主机向存储装置发送第二命令以将存储器的第二部分用于第二命名空间。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063049533P | 2020-07-08 | 2020-07-08 | |
US63/049,533 | 2020-07-08 | ||
US17/013,451 | 2020-09-04 | ||
US17/013,451 US11262923B2 (en) | 2020-07-08 | 2020-09-04 | Method for managing namespaces in a storage device using an over-provisioning pool and storage device employing the same |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113918087A CN113918087A (zh) | 2022-01-11 |
CN113918087B true CN113918087B (zh) | 2024-02-06 |
Family
ID=75377642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110493971.4A Active CN113918087B (zh) | 2020-07-08 | 2021-05-07 | 存储装置以及用于管理存储装置中的命名空间的方法 |
Country Status (6)
Country | Link |
---|---|
US (3) | US11262923B2 (zh) |
EP (1) | EP3936998A1 (zh) |
JP (1) | JP2022016368A (zh) |
KR (1) | KR20220006454A (zh) |
CN (1) | CN113918087B (zh) |
TW (1) | TW202203033A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11914898B2 (en) | 2022-01-26 | 2024-02-27 | Kioxia Corporation | Systems, methods, and non-transitory computer-readable media for thin provisioning in non-volatile memory storage devices |
CN114546266B (zh) * | 2022-02-07 | 2024-07-26 | 联想开天科技有限公司 | 固态硬盘隐藏分区的配置方法、装置及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111356990A (zh) * | 2017-11-16 | 2020-06-30 | 美光科技公司 | 非易失性存储器装置中的命名空间映射结构调整 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804761B1 (en) | 2000-01-21 | 2004-10-12 | Cisco Technology, Inc. | Memory allocation system and method |
KR100981884B1 (ko) | 2008-01-08 | 2010-09-14 | 한국과학기술원 | 컴퓨터 저장장치에서의 프리페칭 데이터 관리 방법 |
US9823981B2 (en) | 2011-03-11 | 2017-11-21 | Microsoft Technology Licensing, Llc | Backup and restore strategies for data deduplication |
US20130013880A1 (en) | 2011-07-08 | 2013-01-10 | Hitachi Computer Peripherals Co., Ltd. | Storage system and its data processing method |
KR20130139084A (ko) | 2012-06-12 | 2013-12-20 | 삼성전자주식회사 | 메모리 시스템 및 메모리 청크 단위로 메모리를 관리하는 메모리 관리 방법 |
EP2843570B1 (en) | 2013-06-21 | 2018-11-28 | Huawei Technologies Co., Ltd. | File reading method, storage device and reading system |
US9971542B2 (en) | 2015-06-09 | 2018-05-15 | Ultrata, Llc | Infinite memory fabric streams and APIs |
JP6403162B2 (ja) * | 2015-07-23 | 2018-10-10 | 東芝メモリ株式会社 | メモリシステム |
US10235198B2 (en) * | 2016-02-24 | 2019-03-19 | Samsung Electronics Co., Ltd. | VM-aware FTL design for SR-IOV NVME SSD |
JP6448570B2 (ja) | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US10810117B2 (en) * | 2017-10-16 | 2020-10-20 | Vmware, Inc. | Virtualization of multiple coprocessor memory |
US10437476B2 (en) | 2017-10-23 | 2019-10-08 | Micron Technology, Inc. | Namespaces allocation in non-volatile memory devices |
US10915440B2 (en) * | 2017-11-16 | 2021-02-09 | Micron Technology, Inc. | Namespace mapping optimization in non-volatile memory devices |
US11188251B2 (en) * | 2017-12-19 | 2021-11-30 | Western Digital Technologies, Inc. | Partitioned non-volatile memory express protocol for controller memory buffer |
-
2020
- 2020-09-04 US US17/013,451 patent/US11262923B2/en active Active
-
2021
- 2021-03-18 KR KR1020210035566A patent/KR20220006454A/ko unknown
- 2021-04-01 EP EP21166528.6A patent/EP3936998A1/en active Pending
- 2021-04-15 TW TW110113592A patent/TW202203033A/zh unknown
- 2021-05-07 CN CN202110493971.4A patent/CN113918087B/zh active Active
- 2021-07-07 JP JP2021113094A patent/JP2022016368A/ja active Pending
-
2022
- 2022-02-25 US US17/681,216 patent/US11797200B2/en active Active
-
2023
- 2023-10-03 US US18/376,364 patent/US20240086092A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111356990A (zh) * | 2017-11-16 | 2020-06-30 | 美光科技公司 | 非易失性存储器装置中的命名空间映射结构调整 |
Also Published As
Publication number | Publication date |
---|---|
JP2022016368A (ja) | 2022-01-21 |
US11262923B2 (en) | 2022-03-01 |
US20220011953A1 (en) | 2022-01-13 |
US20220269427A1 (en) | 2022-08-25 |
CN113918087A (zh) | 2022-01-11 |
EP3936998A1 (en) | 2022-01-12 |
KR20220006454A (ko) | 2022-01-17 |
TW202203033A (zh) | 2022-01-16 |
US11797200B2 (en) | 2023-10-24 |
US20240086092A1 (en) | 2024-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324832B2 (en) | Address based multi-stream storage device access | |
US10592408B2 (en) | Apparatus, computer program product, system, and method for managing multiple regions of a memory device | |
US8639871B2 (en) | Partitioning a flash memory data storage device | |
CN107908571B (zh) | 一种数据写入方法、闪存装置及存储设备 | |
US20240086092A1 (en) | Method for managing namespaces in a storage device and storage device employing the same | |
KR20160022226A (ko) | 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법 | |
US10365845B1 (en) | Mapped raid restripe for improved drive utilization | |
US10795597B2 (en) | Thinly provisioned disk drives with zone provisioning and compression in relation to zone granularity | |
US11314655B2 (en) | Storage device configurable mapping granularity system where data is written without performing read-modify-write operations | |
KR101579941B1 (ko) | 가상머신 i/o 관리 방법 및 장치 | |
US20220391318A1 (en) | Storage device and operating method thereof | |
US11740816B1 (en) | Initial cache segmentation recommendation engine using customer-specific historical workload analysis | |
US10891239B2 (en) | Method and system for operating NAND flash physical space to extend memory capacity | |
WO2016103356A1 (ja) | 階層化ストレージシステム、ストレージコントローラ及びレプリケーション初期化方法 | |
US12045165B1 (en) | Direct addressing and efficient storage of variable sized metadata | |
US11561695B1 (en) | Using drive compression in uncompressed tier | |
Vishwakarma et al. | Enhancing eMMC using multi-stream technique | |
WO2018051446A1 (ja) | オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法 | |
US20150160860A1 (en) | Memory management using enlarged address space |
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 |