CN109558333B - 具有可变额外存储空间的固态存储设备命名空间 - Google Patents
具有可变额外存储空间的固态存储设备命名空间 Download PDFInfo
- Publication number
- CN109558333B CN109558333B CN201710888159.5A CN201710888159A CN109558333B CN 109558333 B CN109558333 B CN 109558333B CN 201710888159 A CN201710888159 A CN 201710888159A CN 109558333 B CN109558333 B CN 109558333B
- Authority
- CN
- China
- Prior art keywords
- namespace
- chunk
- free
- chunks
- block
- 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
- 239000007787 solid Substances 0.000 title claims abstract description 169
- 238000000034 method Methods 0.000 claims abstract description 191
- 230000004044 response Effects 0.000 claims description 43
- 230000008859 change Effects 0.000 claims description 20
- 238000012795 verification Methods 0.000 claims description 12
- 230000003247 decreasing effect Effects 0.000 claims description 7
- 239000002699 waste material Substances 0.000 description 21
- 238000010586 diagram Methods 0.000 description 18
- 238000004064 recycling Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 238000011084 recovery Methods 0.000 description 10
- 238000013507 mapping Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 102100022116 F-box only protein 2 Human genes 0.000 description 4
- 101000824158 Homo sapiens F-box only protein 2 Proteins 0.000 description 4
- 101000917550 Homo sapiens Probable fibrosin-1 Proteins 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 101150039194 dxs1 gene Proteins 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced 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/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/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/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)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了具有可变额外存储空间(OP)的固态存储设备命名空间。所公开的由固态存储设备执行的方法,其中所述固态存储设备包括多个命名空间,其中第一命名空间具有第一额外存储空间(OP),第二命名空间具有第二额外存储空间(OP),第一额外存储空间不同于第二额外存储空间;所述方法包括:根据第一命名空间的空闲大块数量确定在第一命名空间上启动垃圾回收操作;以及根据第二命名空间的空闲大块数量确定在第二命名空间上启动垃圾回收操作。
Description
技术领域
本申请涉及固态存储设备,具体地,涉及固态存储设备的命名空间的垃圾回收与额外存储空间(OP)管理。
背景技术
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享CE(,Chip Enable,芯片使能)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
FTL表包括多个FTL表条目(或称表项)。在一种情况下,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一种情况下,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一种情况下,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一种情况下,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。固态存储设备中包括多个NVM芯片。每个NVM芯片包括一个或多个管芯(DIE)或逻辑单元(LUN)。管芯或逻辑单元之间可以并行响应读写操作。在同一管芯或逻辑单元上的多个读、写或擦除操作顺序执行。
大块包括来自多个逻辑单元(LUN),也称为逻辑单元组,的每个的物理块。每个逻辑单元可以为大块提供一个物理块。例如,在图2所示出的大块的示意图中,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个分别来自16个逻辑单元(LUN)的物理块。在图2的例子中,大块0包括来自16个逻辑单元(LUN)中的每个逻辑单元的物理块0,而大块1包括来自每个逻辑单元(LUN)的物理块1。也可以以多种其他方式来构造大块。
例如,在大块中构造页条带,每个逻辑单元(LUN)内相同物理地址的物理页构成了“页条带”。图2中,物理页P0-0、物理页P0-1……与物理页P0-x构成了页条带0,其中,物理页P0-0、物理页P0-1……物理页P0-14用于存储用户数据,而物理页P0-x用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,图2中,物理页P2-0、物理页P2-1……与物理页P2-x构成了页条带2。用于存储校验数据的物理页可以位于页条带中的任意位置。
当逻辑页被重复写入数据,FTL表条目中记录逻辑页地址与最新的物理页地址的对应关系,而曾经被写入数据但不再被引用(例如,FTL表中没有记录)成为“垃圾”(数据)。将已经被写入数据,且被引用(例如,在FTL表中有记录)的数据称为有效数据,而将“垃圾”称为脏数据。将含有脏数据的物理块称为“脏物理块”(或者,将被写满了数据的物理块也称为“脏物理块”),将未被写入数据的物理块称为“空闲物理块”。
发明内容
当大块作为垃圾回收过程的基本处理单元时,大块或者被整体回收,或者不被回收。而构成大块的多个物理块,可能具有不同数量的有效数据。回收有效数据量低的物理块是有利的,以少量的数据搬移为代价,获得了可用于写入数据的空闲物理块。回收有效数据高的物理块是不利的,会导致写入数据量的增加。
希望在垃圾回收过程中,能对构成大块的物理块加以识别,仅回收其中有利于垃圾回收过程的物理块,而不回收或延迟回收大块中不利于垃圾回收过程的物理块。
命名空间的引入,增强了固态存储设备的虚拟化能力。也希望对各命名空间提供灵活而独立的管理能力,以及降低命名空间之间的干扰。
根据本申请的第一方面,提供了根据本申请第一方面的第一垃圾回收方法,包括:获取待回收大块;确定是否要完整回收所述大块;在确定不完整回收所述大块的情况下,保留所述大块的一个或多个第一物理块,回收除所述一个或多个第一物理块之外的所述大块的一个或多个第二物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二垃圾回收方法,其中,获取待回收大块包括:根据以下至少一项参数确定大块的优先级,并根据所述优先级从脏大块集合中选择待回收大块:大块的有效数据量、大块的有效数据占比、大块的擦除次数、大块被记录到脏大块集合的顺序和/或数据被记录到大块的时间。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第三垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的物理块中的有效数据量低于第一阈值或所述大块的物理块中的有效数据占比低于第二阈值的情况下,确定完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第四垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的每个物理块中的有效数据量都低于第一阈值或所述大块的每个物理块中的有效数据占比都低于第二阈值的情况下,确定完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第五垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的有效数据量高于第三阈值的物理块的数量低于第一指定值或所述大块的有效数据占比高于第四阈值的物理块数量高于第二指定值的情况下,确定完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第六垃圾回收方法,其中,若无法确定完整回收所述大块,则确定不完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第七垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的物理块中的有效数据量不低于第五阈值,所述大块的物理块中的有效数据占比不低于第六阈值的情况下,确定不完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第八垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的物理块中的有效数据占比低于第七阈值的物理块的数量占所述大块物理块总数量的比值低于第三指定值的情况下,确定不完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第九垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的物理块中有效数据量低于第八阈值的物理块的数量占所述大块物理块总数量的比值低于第四指定值的情况下,确定不完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的待回收数据量大于第九阈值的情况下,确定不完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十一垃圾回收方法,其中,在确定不完整回收所述大块的情况下,将所述第二物理块的有效数据写入空闲大块;擦除所述第二物理块;将擦除后的第二物理块添加到空闲物理块集合。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十二垃圾回收方法,所述方法还包括:将所述大块中存储校验数据的物理块擦除;将所述存储校验数据的物理块添加到空闲物理块集合。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十三垃圾回收方法,所述方法还包括:从空闲物理块集合中获取一个或多个第三物理块;根据从所述大块的所述一个或多个第一物理块读出的数据生成新校验数据,将该新校验数据写入获取的一个或多个第三物理块;更新在脏大块集合中指示所述大块的第一元素,在该第一元素中记录属于所述大块的所述一个或多个第一物理块的地址,以及所述一个或多个第三物理块的地址。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十四垃圾回收方法,所述方法还包括:在所述第一元素中还记录所述一个或多个第三物理块存储所述大块的校验数据。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十五垃圾回收方法,所述方法还包括:响应于第一大块的一个或多个第四物理块故障,从空闲物理块集合中获取m+n个空闲物理块,其中,m为所述一个或多个第四物理块中存储用户数据的物理块的数量,n为所述第一大块中存储校验数的物理块的数量;从属于所述第一大块的物理块中读取数据,根据所述第一大块的RAID配置计算所述一个或多个第四物理块的数据,将计算得到的数据写入所述m+n个空闲物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十六垃圾回收方法,所述方法还包括:更新在脏大块集合中指示所述第一大块的第二元素;在所述第二元素中记录所述第一大块的所有物理块地址、擦除次数和/或大块创建时间。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十七垃圾回收方法,所述方法还包括:从空闲物理块集合中获取空闲物理块;使用获取到的空闲物理块构建大块并生成该大块的元数据;根据构建的大块的元数据生成空闲大块集合的元素,将该元素添加到空闲大块集合。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十八垃圾回收方法,所述空闲物理块集合包括多个子集合,各个子集合分别记录源于同一LUN的空闲物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十九垃圾回收方法,所述子集合记录物理块的地址、或描述LUN的物理块是否处于空闲状态。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十垃圾回收方法,所述空闲物理块集合或所述子集合中的空闲物理块按照擦除次数排序。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十一垃圾回收方法,所述方法还包括:为向空闲大块集合中的空闲大块写入数据,从所述空闲大块集合中获取空闲大块,向获取到的空闲大块的物理块地址列表所指向的物理块写入数据,更新指示该空闲大块的元素的时间戳;响应于从所述空闲大块集合中获取空闲大块,将指示该空闲大块的元素从所述空闲大块集合中移除,响应于该元素所指示的空闲大块被写满数据,将该元素或根据该元素的内容生成的指示脏大块的元素添加到脏大块集合中。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十二垃圾回收方法,其中,在确定完整回收所述大块的情况下,将所述大块的有效数据写入空闲大块;擦除所述大块的所有物理块;将所述大块添加到空闲大块集合。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十三垃圾回收方法,所述方法还包括:响应于重建脏大块表,扫描固态存储设备的物理块;根据被扫描的第一物理块中记录的元数据,获得与第一物理块属于同一大块的所有物理块;获取被扫描的所述第一物理块以及与该第一物理块属于同一大块的其余物理块的元数据中的序号,在所述其余物理块的序号均不大于所述第一物的物理块的序号的情况下,根据所述第一物理块的元数据创建脏大块表的元素。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十四垃圾回收方法,其中,在所述其余物理块中存在序号大于第一物理块序号的物理块时,取具有最大的序号的物理块的元数据中记录的所有物理块构建大块,并更新脏大块表的元素。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十五垃圾回收方法,其中,所述大块包括多个物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十六垃圾回收方法,所述方法还包括:在存储设备初始化或被格式化时,将多个逻辑单元(LUN)的物理块组织为具有相同数量物理块、各物理块具有相同LUN内块号的多个大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十七垃圾回收方法,其中,所述大块具有不同数量的物理块和/或所述大块的各物理块具有不同的LUN内块号。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十八垃圾回收方法,其中,所述大块的每个物理块中记录有所述大块的元数据,该元数据包括:所述大块的所有物理块地址、所述大块的RAID配置以及存储所述大块校验数据的物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十九垃圾回收方法,其中,所述大块的元数据还包括以下至少一项:所述大块的擦除次数、所述大块被写入数据的时间或所述大块被创建的时间。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第三十垃圾回收方法,其中,所述脏大块集合的元素指示大块之一;脏大块集合的元素记录其所指示的大块的所有物理块地址、大块的RAID配置以及存储大块校验数据的物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第三十一垃圾回收方法,其中,所述空闲大块集合的元素指示大块之一;空闲大块集合的元素记录其所指示的大块的所有物理块地址、大块的RAID配置以及存储大块校验数据的物理块。
根据本申请的第二方面,提供了根据本申请第二方面的垃圾回收装置,包括:获取模块,用于获取待回收大块;确定模块,用于确定是否要完整回收所述大块;回收模块,用于在确定不完整回收所述大块的情况下,保留所述大块的一个或多个第一物理块,回收除所述一个或多个第一物理块之外的所述大块的一个或多个第二物理块。
根据本申请的第三方面,提供了根据本申请第三方面的固态存储设备,包括控制器与非易失存储器芯片,所述控制器执行根据本申请提供的任一种垃圾回收方法。
根据本申请的第四方面,提供了根据本申请第四方面的存储在可读介质上的程序,当被固态存储设备的控制器运行时,使得所述固态存储设备执行根据本申请提供的任意一种垃圾回收方法。
本申请实施例提供的方案,在固态存储设备垃圾回收的过程中,在确定不完整回收大块的情况下,回收大块中部分物理块,避免了仅能完整回收或不回收大块导致的大块中的部分需被回收的物理块无法被回收的问题,使得大块中的物理块得以被合理的回收,提高了资源的利用率。
根据本申请的第五方面,提供了根据本申请第五方面的第一由固态存储设备执行的方法,所述固态存储设备包括多个命名空间,其中第一命名空间具有第一额外存储空间(OP),第二命名空间具有第二额外存储空间(OP),第一额外存储空间不同于第二额外存储空间;所述方法包括:根据第一命名空间的空闲大块数量确定在第一命名空间上启动垃圾回收操作;以及根据第二命名空间的空闲大块数量确定在第二命名空间上启动垃圾回收操作。
根据本申请第五方面的第一由固态存储设备执行的方法,提供了根据本申请第五方面的第二由固态存储设备执行的方法,其中命名空间的额外存储空间(OP)关联于命名空间的物理存储空间大小与命名空间的用户存储空间大小的差。
根据本申请第五方面的第二由固态存储设备执行的方法,提供了根据本申请第五方面的第三由固态存储设备执行的方法,其中命名空间的物理存储空间大小是命名空间已使用的脏大块与命名空间的空闲大块的存储空间的和。
根据本申请第五方面的第一至第三由固态存储设备执行的方法之一,提供了根据本申请第五方面的第四由固态存储设备执行的方法,还包括:响应于改变第一命名空间的额外存储空间的请求,使第一命名空间的空闲大块数量增加。
根据本申请第五方面的第一至第三由固态存储设备执行的方法之一,提供了根据本申请第五方面的第五由固态存储设备执行的方法,还包括:响应于改变第一命名空间的额外存储空间的请求,使第一命名空间的空闲大块数量增加,以及使第二命名空间的空闲大块数量相应地减少。
根据本申请第五方面的第四或第五由固态存储设备执行的方法,提供了根据本申请第五方面的第六由固态存储设备执行的方法,响应于第一命名空间的性能指标低于阈值,生成改变第一命名空间的额外存储空间的请求。
根据本申请第五方面的第一至第六由固态存储设备执行的方法之一,提供了根据本申请第七方面的第四由固态存储设备执行的方法,还包括:为在第一命名空间上执行垃圾回收操作,从属于第一命名空间的脏大块集合获取第一大块,将第一大块的有效数据写入从空闲大块集合获取的第一空闲大块,擦除第一大块的物理块,并将第一大块添加到空闲大块集合。
根据本申请第五方面的第七由固态存储设备执行的方法,提供了根据本申请第五方面的第八由固态存储设备执行的方法,还包括:响应于从空闲大块集合获取了第一空闲大块,使第一命名空间的空闲大块数量递减;以及响应于将第一大块添加到空闲大块集合,使第一命名空间的空闲大块数量递增。
根据本申请第五方面的第七或第八由固态存储设备执行的方法,提供了根据本申请第五方面的第九由固态存储设备执行的方法,还包括:将第一空闲大块添加到第一命名空间的第一脏大块集合。
根据本申请第五方面的第一至第九由固态存储设备执行的方法之一,提供了根据本申请第五方面的第十由固态存储设备执行的方法,还包括:为在第二命名空间上执行垃圾回收操作,从属于第二命名空间的脏大块集合获取第二大块,将第二大块的有效数据写入从空闲大块集合获取的第二空闲大块,擦除第二大块的物理块,并将第二大块添加到空闲大块集合。
根据本申请第五方面的第十由固态存储设备执行的方法,提供了根据本申请第五方面的第十一由固态存储设备执行的方法,还包括:响应于从空闲大块集合获取了第二空闲大块,使第二命名空间的空闲大块数量递减;以及响应于将第二大块添加到空闲大块集合,使第二命名空间的空闲大块数量递增。
根据本申请第五方面的第十或十一由固态存储设备执行的方法,提供了根据本申请第五方面的第十二由固态存储设备执行的方法,还包括:将第二空闲大块添加到第二命名空间的第二脏大块集合。
据本申请第五方面的第一至第六由固态存储设备执行的方法之一,提供了根据本申请第五方面的第十三由固态存储设备执行的方法,还包括:为在第一命名空间上执行垃圾回收操作,从属于第一命名空间的脏大块集合获取第一大块,在确定不完整回收第一大块的情况下,保留第一大块的一个或多个第一物理块,而回收除所述一个或多个第一物理块之外的第一大块的一个或多个第二物理块。
根据本申请第五方面的第十三由固态存储设备执行的方法,提供了根据本申请第五方面的第十四由固态存储设备执行的方法,还包括:将第二物理块的有效数据写入从空闲大块集合获取的第一空闲大块;擦除第二物理块;将擦除后的第二物理块添加到空闲物理块集合。
根据本申请第五方面的第十四由固态存储设备执行的方法,提供了根据本申请第五方面的第十五由固态存储设备执行的方法,还包括:擦除第一大块中存储校验数据的物理块;将第一大块中存储校验数据的物理块添加到空闲物理块集合。
根据本申请第五方面的第十三至第十五由固态存储设备执行的方法之一,提供了根据本申请第五方面的第十六由固态存储设备执行的方法,还包括:从空闲物理块集合获取一个或多个第三物理块;根据从第一大块的一个或多个第一物理块读出的数据生成新校验数据,将新校验数据写入所述一个或多个第三物理块;记录所述一个或多个第一物理块与所述一个或多个第三物理块属于第一大块。
根据本申请第五方面的第十三至第十六由固态存储设备执行的方法之一,提供了根据本申请第五方面的第十七由固态存储设备执行的方法,其中在第一大块的物理块中的有效数据量低于第一阈值或第一大块的物理块中的有效数据占比低于第二阈值的情况下,确定完整回收第一大块。
根据本申请第五方面的第十三至第十六由固态存储设备执行的方法之一,提供了根据本申请第五方面的第十八由固态存储设备执行的方法,其中在第一大块的每个物理块中的有效数据量都低于第一阈值或第一大块的每个物理块中的有效数据占比都低于第二阈值的情况下,确定完整回收第一大块。
根据本申请第五方面的第十三至第十六由固态存储设备执行的方法之一,提供了根据本申请第五方面的第十九由固态存储设备执行的方法,其中在第一大块的有效数据量高于第三阈值的物理块的数量低于第一指定值或第一大块的有效数据占比高于第四阈值的物理块数量高于第二指定值的情况下,确定完整回收第一大块。
根据本申请第五方面的第十七至第十九由固态存储设备执行的方法之一,提供了根据本申请第五方面的第二十由固态存储设备执行的方法,其中若无法确定完整回收第一大块,则确定不完整回收第一大块。
根据本申请第五方面的第十三至第十六由固态存储设备执行的方法之一,提供了根据本申请第五方面的第二十一由固态存储设备执行的方法,其中在第一大块的物理块中的有效数据量不低于第五阈值,或者第一大块的物理块中的有效数据占比不低于第六阈值的情况下,确定不完整回收第一大块。
根据本申请第五方面的第十三至第十六由固态存储设备执行的方法之一,提供了根据本申请第五方面的第二十二由固态存储设备执行的方法,其中在第一大块的物理块中有效数据占比低于第七阈值的物理块的数量占第一大块物理块总数量的比值低于第三指定值的情况下,确定不完整回收第一大块。
根据本申请第五方面的第十三至第十六由固态存储设备执行的方法之一,提供了根据本申请第五方面的第二十三由固态存储设备执行的方法,其中在所第一大块的物理块中有效数据量低于第八阈值的物理块的数量占第一大块物理块总数量的比值低于第四指定值的情况下,确定不完整回收第一大块。
根据本申请第五方面的第十三至第十六由固态存储设备执行的方法之一,提供了根据本申请第五方面的第二十四由固态存储设备执行的方法,其中在第一大块的待回收数据量大于第九阈值的情况下,确定不完整回收第一大块。
根据本申请第五方面的第一至第二十四由固态存储设备执行的方法之一,提供了根据本申请第五方面的第二十五由固态存储设备执行的方法,其中所述固态存储设备的控制器维护空闲大块集合;所述固态存储设备的多个命名空间可从所述空闲大块集合获取空闲大块。
根据本申请第五方面的第一至第二十五由固态存储设备执行的方法之一,提供了根据本申请第五方面的第二十六由固态存储设备执行的方法,其中所述固态存储设备的控制器维护空闲物理块集合;所述固态存储设备的多个命名空间可从所述空闲物理块集合获取空闲物理块。
根据本申请第五方面的第一至第二十四由固态存储设备执行的方法之一,提供了根据本申请第五方面的第二十七由固态存储设备执行的方法,其中第一命名空间被绑定到一个或多个第一逻辑单元组;第二命名空间被绑定到一个或多个第二逻辑单元组;以及所述固态存储设备的多个命名空间的每个可从其被绑定到的一个或多个逻辑单元组获取空闲大块。
根据本申请第五方面的第二十七由固态存储设备执行的方法,提供了根据本申请第五方面的第二十八由固态存储设备执行的方法,还包括:响应于改变第一命名空间的额外存储空间的请求,使第一命名空间被绑定到的逻辑单元组数量增加。
根据本申请第五方面的第二十七由固态存储设备执行的方法,提供了根据本申请第五方面的第二十九由固态存储设备执行的方法,还包括:响应于改变第一命名空间的额外存储空间的请求,使第一命名空间被绑定到的逻辑单元组数量增加,以及使第二命名空间被绑定到的逻辑单元组数量相应地减少。
根据本申请第五方面的第一至第二十四由固态存储设备执行的方法之一,提供了根据本申请第五方面的第三十由固态存储设备执行的方法,其中第一命名空间被绑定到一个或多个大块;第二命名空间被绑定到一个或多个大块;以及所述固态存储设备的多个命名空间的每个可从其被绑定到的一个或多个大块获取空闲大块。
根据本申请第五方面的第三十由固态存储设备执行的方法,提供了根据本申请第五方面的第三十一由固态存储设备执行的方法,还包括:响应于改变第一命名空间的额外存储空间的请求,使第一命名空间被绑定到的大块数量增加。
根据本申请第五方面的第三十由固态存储设备执行的方法,提供了根据本申请第五方面的第三十二由固态存储设备执行的方法,还包括:响应于改变第一命名空间的额外存储空间的请求,使第一命名空间被绑定到的大块数量增加,以及使第二命名空间被绑定到的大块数量相应地减少。
根据本申请的第六方面,提供了根据本申请第六方面的第一固态存储设备,包括多个命名空间,其中第一命名空间具有第一额外存储空间(OP),第二命名空间具有第二额外存储空间(OP),第一额外存储空间不同于第二额外存储空间;所述固态存储设备还包括控制器,所述控制器根据第一命名空间的空闲大块数量确定在第一命名空间上启动垃圾回收操作;以及根据第二命名空间的空闲大块数量确定在第二命名空间上启动垃圾回收操作。
根据本申请第六方面的第一固态存储设备,提供了根据本申请第六方面的第二固态存储设备,还包括空闲大块集合,所述多个命名空间可从所述空闲大块集合获取空闲大块。
根据本申请第六方面的第一或第二固态存储设备,提供了根据本申请第六方面的第三固态存储设备,还包括空闲物理块集合,所述多个命名空间可从所述空闲物理块集合获取空闲物理块。
根据本申请第六方面的第一至第三固态存储设备之一,提供了根据本申请第六方面的第四固态存储设备,所述控制器响应于改变第一命名空间的额外存储空间的请求,使第一命名空间的空闲大块数量增加。
根据本申请第六方面的第一至第三固态存储设备之一,提供了根据本申请第六方面的第五固态存储设备,所述控制器响应于改变第一命名空间的额外存储空间的请求,使第一命名空间的空闲大块数量增加,以及使第二命名空间的空闲大块数量相应地减少。
根据本申请第六方面的第一至第五固态存储设备之一,提供了根据本申请第六方面的第六固态存储设备,所述控制器为在第一命名空间上执行垃圾回收操作,从属于第一命名空间的脏大块集合获取第一大块,将第一大块的有效数据写入从空闲大块集合获取的第一空闲大块,擦除第一大块的物理块,并将第一大块添加到空闲大块集合。
根据本申请第六方面的第一至第六固态存储设备之一,提供了根据本申请第六方面的第七固态存储设备,所述控制器为在第二命名空间上执行垃圾回收操作,从属于第二命名空间的脏大块集合获取第二大块,将第二大块的有效数据写入从空闲大块集合获取的第二空闲大块,擦除第二大块的物理块,并将第二大块添加到空闲大块集合。
根据本申请第六方面的第一至第七固态存储设备之一,提供了根据本申请第六方面的第八固态存储设备,所述控制器为在第一命名空间上执行垃圾回收操作,从属于第一命名空间的脏大块集合获取第一大块,在确定不完整回收第一大块的情况下,保留第一大块的一个或多个第一物理块,而回收除所述一个或多个第一物理块之外的第一大块的一个或多个第二物理块。
根据本申请第六方面的第八固态存储设备,提供了根据本申请第六方面的第九固态存储设备,所述控制器还将第二物理块的有效数据写入从空闲大块集合获取的第一空闲大块;擦除第二物理块;以及将擦除后的第二物理块添加到空闲物理块集合。
根据本申请第六方面的第九固态存储设备,提供了根据本申请第六方面的第十固态存储设备,所述控制器还擦除第一大块中存储校验数据的物理块;以及将第一大块中存储校验数据的物理块添加到空闲物理块集合。
根据本申请第六方面的第八至第十固态存储设备之一,提供了根据本申请第六方面的第十一固态存储设备,所述控制器还从空闲物理块集合获取一个或多个第三物理块;根据从第一大块的一个或多个第一物理块读出的数据生成新校验数据,将新校验数据写入所述一个或多个第三物理块;记录所述一个或多个第一物理块与所述一个或多个第三物理块属于第一大块。
根据本申请的第七方面,提供了根据本申请第七方面的第一固态存储设备,包括控制器,所述控制器通过运行程序来使得所述固态存储设备执行根据本申请第五方面的由固态存储设备执行的方法。
根据本申请的第八方面,提供了根据本申请第八方面的第一存储在可读介质上的程序,当被固态存储设备的控制器运行时,使得所述固态存储设备执行根据本申请第五方面的由固态存储设备执行的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是相关技术中固态存储设备的框图;
图2是相关技术中大块的示意图;
图3A是根据本申请实施例的大块的数据组织的示意图;
图3B是根据本申请的实施例的大块的元数据示意图;
图4A是根据本申请一示例性实施例示出的脏大块集合的示意图;
图4B是根据本申请一示例性实施例示出的空闲大块结合的示意图;
图5是垃圾回收过程的示意图;
图6是根据本申请实施例的垃圾回收方法的流程图;
图7是根据本申请一实施例的垃圾回收过程的流程图;
图8是根据本申请实施例的大块被不完整回收的示意图;
图9是根据本申请一个实施例的命名空间表;
图10是根据本申请又一实施例的命名空间表;
图11是根据本申请又一实施例的命名空间的示意图;以及
图12是根据本申请依然又一实施例的命名空间的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图3A是根据本申请实施例的大块的数据组织的示意图。如图3A所示,固态存储设备的NVM芯片提供了N+1个LUN。将LUN的物理块组织为大块310、大块320与大块330。根据图3A的实施例中,大块310、大块320与大块330各自包括不同数量的物理块。相应地,大块310、大块320与大块330各自具有不同的RAID配置,例如,大块310是N+1RAID配置,其中,N个物理块存储数据,而一个物理块存储校验信息;大块320是(N-1)+1RAID配置,其中,N-1个物理块存储数据,而一个物理块存储校验信息;大块330是N+1RAID配置,其中,N个物理块存储数据,而一个物理块存储校验信息。大块310的包括N+1个物理块,图3A中的每个LUN为大块310提供一个物理块,以及每个物理块在各自的LUN内具有相同的块号。大块320包括N个物理块,图3A中,LUN 0到LUN(N-1)的每个为大块320提供1个物理块,以及每个物理块在各自的LUN内具有相同的块号。大块330包括N+1个物理块,图3A中的每个LUN为大块310提供一个物理块,以及每个物理块在各自的LUN内具有不同的块号。
图3B是根据本申请的实施例的大块的元数据示意图。如图3B所示,物理块B0-0、物理块B0-1、物理块B0-2、物理块B0-3、……物理块B0-(N-1)与物理块B0-N是构成大块310(参见图3A)的N+1个物理块。在构成大块310的每个物理块中,还在物理块内指定的存储空间记录用于大块310的元数据(M 0)。元数据(M 0)记录了构成大块310的所有物理块的地址(包括物理块所处的LUN,以及LUN内的块号)、大块的RAID配置与存储大块的RAID校验数据的物理块。可选地,元数据(M 0)还可以记录大块310的擦除次数、大块被写入数据的时间与大块被创建的时间。
在一种实施方式中,构成大块的所有物理块记录相同的元数据。在又一种实施方式中,构成大块的所有物理块记录不同的元数据(例如,物理块所属大块的所有物理块地址、大块的RAID配置、存储大块的RAID校验数据的物理块、大块被创建的时间、物理块的擦除次数与物理块被写入数据的时间)。
在本申请的一个实施例中,固态存储设备初始化时,或者被格式化时,将LUN的物理块组织为相同规格的大块(例如,具有相同数量的物理块,各个物理块具有相同的LUN内块号)。随着大块被使用,部分大块被重构为具有不同规格的大块(例如,具有不同数量的物理块,和/或各个物理块具有不同的LUN内块号)。在本实施例中,由于大块可以具有相同或不同数量的物理块,大块中的各个物理块可具有相同或不同的块号,使得大块的组织更加灵活。
图4A展示了根据本申请实施例的脏大块集合。脏大块集合包括多个元素,每个元素记录了固态存储设备的脏大块之一。脏大块是已经被写入数据的大块。图4A的实施例中,脏大块集合元素410与脏大块集合元素412各自指示脏大块之一。元素410与元素412中,各自记录所指示的大块的所有物理块地址列表、大块的RAID配置信息(可选地,包括校验数据的存储位置)、大块被擦除的次数(和/或大块的每个物理块被擦除的次数)、大块被创建时的时间戳等。
固态存储设备工作时,脏大块集合被记录在DRAM 110或控制部件104内部的存储器中(参见图1)。响应于固态存储设备停止工作(例如,关机或断电),将脏大块集合存储到固态存储设备的NVM芯片中。
通过脏大块集合的元素(例如元素410)的物理块地址列表,可访问构成该元素所指示大块的所有物理块。在通过大块进行数据重构时,需要使用构成大块的物理块地址,从大块的有效物理块中读取数据,以恢复出故障物理块存储的数据。其中,元素的RAID配置信息用于指示大块的容错能力,并识别出现部分物理块故障的大块是否有机会进行数据恢复。元素中的大块被擦除次数用于指示大块的寿命。在进行垃圾回收(GC)时,使用元素中的大块被擦除次数选择待回收的大块。元素的时戳指示大块被创建的先后顺序,还指示大块中的数据被保存的时间,并可用于垃圾回收(GC)过程。
构成大块的多个物理块,可能具有不同数量的有效数据。回收有效数据量低的物理块是有利的,以少量的数据搬移为代价,获得了可用于写入数据的空闲物理块。回收有效数据量高的物理块是不利的,会导致垃圾回收过程中写入数据量的增加。
图4B展示了根据本申请实施例的空闲大块集合。空闲大块集合包括多个元素,每个元素记录了固态存储设备的空闲大块之一。空闲大块是尚未被写入数据的大块。图4B的实施例中,空闲大块集合元素420与空闲大块集合元素422各自指示空闲大块之一。元素420与元素422中各自记录所指示大块的所有物理块的地址列表、大块的RAID配置信息(可选地,包括校验数据的存储位置)、大块被擦除的次数(和/或大块的每个物理块被擦除的次数)以及大块被创建时的时间戳等。
根据本申请的实施例,为向空闲大块集合中的空闲大块写入数据,从空闲大块集合中获取空闲大块(例如,由元素420所指示),向获取到的空闲大块的物理块地址列表所指向的各个物理块写入数据,以及更新元素420的时戳,以记录大块被最早写入数据的时间。
响应于从空闲大块集合中获取的空闲大块(例如,由元素420所指示),将指示该空闲大块的元素420从空闲大块集合中移除。以及响应于元素420所指示的空闲大块被被写满数据,将元素420或根据元素420的内容生成的指示脏大块的元素添加到脏大块集合中。
本申请的实施例还包括空闲物理块集合。作为举例,空闲物理块集合中记录可用于构成大块但尚未用于构成大块的固态存储设备的物理块。例如,空闲物理块集合包括多个子集合,每个子集合记录源于一个LUN的空闲物理块。可选地,子集合记录物理块的地址,或用位图描述LUN的物理块是否处于空闲状态。可选地或进一步地,空闲物理块集合或子集合中的空闲物理块按擦除次数排序,使得在从空闲物理块集合或子集合中获取空闲物理块时,可指定取出擦除次数最大、最小或具有平均擦除次数的物理块。可以理解地,平均擦除次数可以指擦除次数范围,例如,距离空闲物理块的擦除次数的平均值在指定阈值内的擦除次数范围。
固态存储设备执行垃圾回收(GC)过程以回收无效数据。图5展示了垃圾回收过程的示意图。大块0与大块1被写入了数据。大块0的物理页510、512、514和516等由网格框所指示的物理页在FTL表中没有记录,其上的数据是脏数据。大块0的物理页530、532、534与536等由空白方框指示的物理页在FTL表中有记录,其上的数据是有效数据。大块1的物理页520、522、524与526等由网格框所指示的物理页上的数据是脏数据。大块1的物理页544、542、546与548等由空白框所指示的物理页上的数据是有效数据。图5中,用网格指示的物理页所容纳的数据是脏数据,而用空白方框指示的物理页所容纳的数据是有效数据。
为进行垃圾回收,扫描脏大块(例如,大块0与大块1),将其中的有效数据读出并写入空闲大块2,以及在FTL表中记录有效数据的物理页地址的变化。在所有的有效数据都搬移到大块2后,擦除被扫描的大块0与大块1,从而使大块0与大块1变为空闲大块。
固态存储设备还进行磨损均衡过程,以使固态存储设备的多个NVM芯片的多个物理块经历大体上相同的擦除次数。为实施垃圾回收,“GC模块”(例如,实现于控制部件120或其中的CPU或控制器)从脏大块集合中获取脏大块之一,从空闲大块集合中获取空闲大块之一。扫描脏大块,将其中的有效数据写入空闲大块。将获取的脏大块擦除,并在空闲大块集合中记录擦除后的大块。
图6展示了根据本申请实施例的垃圾回收方法的流程图,该方法用于固态存储设备的垃圾回收。如图6所示,该方法包括如下步骤:
步骤601:获取待回收大块;步骤602:确定是否要完整回收大块;步骤603:在确定不完整回收大块的情况下,保留大块的一个或多个物理块,回收除一个或多个第一物理块之外的大块的一个或多个物理块。
在一个示例性实施例中,步骤601中根据优先级从脏大块集合中选择待回收大块。作为举例,根据大块的有效数据量、大块的有效数据占比、大块的擦除次数、大块被记录到脏大块集合的顺序和/或数据被记录到大块的时间中至少一项参数确定脏大块集合中的待回收大块的优先级。
在步骤602中,依据垃圾回收的收益与代价确定是否要完整回收大块。垃圾回收的收益是被回收的物理块,而代价是垃圾回收过程中搬移有效数据带来的数据写入量。依据收益与代价的关系,从完整回收大块与不完整回收大块之中进行选择。例如,根据大块中有效数据量和/或有效数据占比来判断是否完整回收大块,以确保回收有效数据量高的物理块,保留有效数据量低的物理块。保留的物理块可以是有效数据量高于阈值的物理块,或者是有效数据占比高于阈值的物理块;回收的物理块则可以是有效数据量不高于阈值的物理块或有效数据占比不高于阈值物理块。在一个例子中,在大块的物理块中的有效数据量低于阈值或大块的物理块中的有效数据占比低于阈值的情况下,确定完整回收大块。在大块的物理块中的有效数据量不低于阈值,大块的物理块中的有效数据占比不低于阈值的情况下,确定不完整回收大块。在又一个例子中,在大块的每个物理块中的有效数据量都低于阈值或大块的每个物理块中的有效数据占比都低于阈值的情况下,确定完整回收大块。
在另一个例子中,在大块的有效数据量高于阈值的物理块的数量低于阈值或大块的有效数据占比高于阈值的物理块数量高于阈值的情况下,确定完整回收大块。在大块的物理块中的有效数据占比低于阈值的物理块的数量占大块物理块总数量的比值低于阈值的情况下,确定不完整回收大块。或者,在大块的物理块中有效数据量低于阈值的物理块的数量占大块物理块总数量的比值低于阈值的情况下,确定不完整回收大块。
在依然又一个例子中,在大块的待回收数据量大于阈值的情况下,确定不完整回收大块。
需要说明的是,在与设定阈值进行比较时,比较对象不同,设定阈值也不同,阈值可以根据实际需求进行设置。
进一步地,在确定不完整回收大块的情况下,将回收的物理块的有效数据写入空闲大块;擦除被回收的物理块;将擦除后的物理块添加到空闲物理块集合。
进一步地,响应于大块被不完整回收,还更新脏大块集合中指示被不完整回收的大块的元素,例如,从元素中删除被回收的一个或多个物理块的地址,以及在元素中记录更新后的存储校验数据的物理块的地址。
进一步地,由于大块的部分物理块被回收,大块原有的存储校验数据的物理块失效,擦除该物理块。可选地,还将被擦除的物理块添加到空闲物理块集合。
空闲物理块集合中的物理块被用于构建大块。根据本申请的实施例还提供了构建大块的操作(例如,由get_xblock()所指示)。通过构建大块的操作,从空闲物理块集合中获取指定数量的物理块以构建大块,生成大块的元数据。元数据中指示大块的RAID配置(包括校验数据的存储位置)、记录各物理块的地址、记录各物理块的擦除次数或记录大块的擦除次数。可选地,还根据大块的元数据,生成空闲大块集合的元素,并将元素添加到空闲大块集合中。依然可选地,根据大块的元数据,向大块写入数据,在大块被写满后,生成脏大块集合的元素,并将元素添加到脏大块集合中。依然可选地,为构建大块,从指定数量的空闲物理块的子集合的每个中获取物理块,用获取的物理块构建大块。进一步地,执行构建大块的操作时,指定所创建大块的寿命或擦除次数,作为响应,从空闲物理块集合中获取具有所指定的寿命或擦除次数(或擦除次数范围)的物理块构建大块。
根据本申请的实施例,还提供向空闲物理块集合释放大块的操作。通过释放大块的操作,将指定大块的所有物理块添加到空闲物理块集合。可选地,释放大块的操作还擦除所释放的物理块。可选地,指定的大块是来自脏大块集合或空闲大块集合的大块。
根据本申请的实施例,提供向空闲物理块集合释放物理块的操作。通过释放物理块的操作,将指定物理块添加到空闲物理块集合。可选地,释放物理块的操作还包括擦除所释放的物理块。
根据本申请的实施例,还提供重构大块的操作(例如,由rebuild_xblock()所指示)。为实施重构大块的操作,需指示待重构的大块。作为举例,待重构的大块中,部分物理块因发生故障或被执行垃圾回收操作而不再属于待重构的大块。在这种情况下,在重构大块的操作中,识别属于大块的物理块和/或不再属于大块的物理块。在一个例子中,大块X1的存储校验数据的m个(m是正整数)物理块不再属于大块X1。从空闲物理块集合中获取m个空闲物理块,从大块X1的其他物理块中读出数据,按大块X1的RAID配置生成校验数据,并写入所获取的m个空闲物理块,以及更新在脏大块集合中的指示大块X1的元素,在该元素中记录属于大块X1的所有物理块(用获取的m个物理块的地址替换不再属于大块X1的m个物理块的地址),以及更新存储校验数据的物理块的地址。可选地,还更新大块X1的擦除次数和/或大块创建时间。
在另一个例子中,大块X2的存储用户数据的n个(n是正整数)物理块不再属于大块X2。为实施重构大块的操作,从空闲物理块集合中获取n+m(m是正整数)个空闲物理块,大块X2中的m个物理块存储校验数据。由于n个物理块不再数据大块X2,也需更新大块X2的校验数据。从大块X2的除了n个不再属于大块X2的物理块中读取数据,利用RAID技术恢复n个物理块的数据,将恢复得到的数据写入获取的n个物理块。以及将大块X2的存储校验数据的物理块读取校验数据,并写入获取的m个物理块。以及更新在脏大块集合的指示大块X2的元素,在该元素中记录属于大块X2的所有物理块(用获取的n+m个物理块的地址替换不再属于大块X2的n个物理块的地址与大块X2原来的m个存储校验数据的物理块的地址),以及更新的存储校验数据的物理块的地址。可选地,还更新大块X2的擦除次数和/或大块创建时间。
根据本申请的实施例,还提供删除物理块的操作。为实施删除物理块的操作,需指示待删除的物理块,并响应于删除物理块的操作的执行,从空闲物理块集合中移除待删除的物理块。作为举例,在识别出物理块故障时,从空闲物理块集合中删除故障的物理块。
图7是根据本申请又一实施例的垃圾回收过程的流程图,以下结合该流程图对垃圾回收过程中所涉及到的操作进行描述。
步骤710:为进行垃圾回收,从脏大块集合中选择待回收的大块。脏大块集合中的大块在垃圾回收过程中具有不同的优先级。例如,根据大块的有效数据量、有效数据占比、擦除次数和/或数据被记录的时间等确定优先级。并根据优先级从脏大块集合中选择待回收的大块。
步骤720:扫描大块,确定是否要完整回收大块。作为举例,扫描大块的各个物理块的有效数据量,回收有效数据占比低于阈值的物理块。作为一个例子,若大块中的所有物理块的有效数据量或有效数据占比均低于阈值,则完整回收该大块;若大块中的部分物理块的有效数据量或有效数据占比不低于阈值,则保留这部分有效数据量大或有效数据占比较高的物理块,而不完整回收大块。作为又一个例子,由于部分回收(不完整回收)大块时,要重新生成校验数据,因而,仅在大块中有效数据量小或有效数据占比较低的物理块的数量占大块的物理块的总数的比例较低时(例如,小于10%,或者,对于N+1的RAID配置,小于1-1/(N*p),其中p是大块的有效数据占比或平均有效数据占比),才不完整回收大块;若大块中有效数据量小或有效数据占比较低的物理块的数量占大块的物理块的总数的比例较高,则即使存在若干有效数据量大或有效数据占比较高的物理块,也依然完整回收该大块。
需要指出的,大块中的记录校验数据的物理块无须被回收,也不利用记录校验数据的物理块识别是否需要完整回收大块。
步骤730:若判断要完整回收大块,扫描待回收的大块,将待回收大块的有效数据写入空闲大块,以及将待回收大块的有效数据都写入空闲大块;以及步骤735:擦除待回收大块的所有物理块,并将擦除后的大块记录在空闲大块集合中。
步骤740:若判断要不完整回收大块,获取待回收大块中待回收的一个或多个物理块。例如,获取待回收大块中,有效数据量或有效数据占低于阈值的物理块。
步骤742:将待回收物理块中的有效数据写入空闲大块;步骤744:擦除待回收的物理块,并将擦除的物理块记录在空闲物理块集合中。
由于大块中的部分物理块被擦除,破坏了大块的RAID配置,需要为大块重新生成校验数据。
步骤746:从待回收大块的剩余物理块(未在步骤644被擦除的物理块)(包括大块的用于记录校验数据的物理块)中读出数据,根据RAID配置对应的校验数据生成规则(例如,计算异或),重新生成校验数据,并将校验数据写入从空闲物理块集合获取的空闲物理块。
步骤748:以及更新待回收大块在脏大块集合中的对应元素,将获取的被写入了校验数据的物理块的地址记录在该对应元素中,从而该物理块称为待回收大块的组成部分。以及还擦除待回收大块原来的用于记录校验数据的物理块,将擦除后的物理块添加到空闲物理块集合。
更新后的脏大块集合元素指示待回收的大块包括的物理块为,待回收大块的剩余物理块,去除待回收大块的原来用于记录校验数据的物理块,添加了用于记录重新生成的校验数据的物理块。
可选地,在用于记录重新生成的校验数据的物理块中记录更新后的大块元数据(例如,该物理块所属大块的所有物理块地址、大块的RAID配置、存储大块的RAID校验数据的物理块、大块被创建的时间、物理块的擦除次数与物理块被写入数据的时间)。
图8是根据本申请实施例的大块被不完整回收的示意图。根据图8的实施例,大块包括物理块B0-0、B0-1、B0-2、……B0-(N-1)与B0-N,这些物理块的每个中记录相同的大块元数据M 0。大块的RAID配置为N+1。在垃圾回收过程中,仅物理块B0-2的有效数据量少于阈值,物理块B0-2被回收。由于物理块B0-2被回收,记录大块的校验数据的物理块B0-N失效,从大块的除被回收的物理块B0-2之外的其他所有物理块(包括物理块B0-N)读出数据,利用读出的数据根据大块的RAID配置生成校验数据,并写入新获取的空闲物理块B0-N’。以及生成大块的新校验数据M0’,将校验数据M0’写入新获取的空闲物理块B0-N’。可以理解地,大块中记录元数据M0以及更新元数据,不是必须的。
在元数据M0’中记录大块包括物理块B0-0、B0-1、……B0-(N-1)与B0-N’,大块的RAID配置为(N-1)+1。可选地,元数据M0’中保留元数据M0的大块擦除次数与大块创建时间(或被写入数据的时间)。依然可选地,元数据M0’中记录大块的每个物理块的擦除次数与被写入数据的时间。进一步地,在元数据M0’中还记录时间戳,以指示M0’被写入物理块的时间。以及在元数据M0中也记录有指示其被写入物理块时间的时间戳。可选地,采用单调递增的值替代时间戳。依然可选地,在元数据M0’中记录序号,并使得元数据M0’的序号大于物理块B0-0、B0-1……B0-(N-1)的任务一个的元数据M0中的序号。以及也更新脏大块集合中同该大块对应的元素。
在本申请的实施例中,脏大块表被记录在NVM芯片中。固态存储设备上电或启动时,读出脏大块表,依据表中的元素,获得同元素对应的大块所包括的所有物理块。在一些情况下,NVM芯片中记录的脏大块表不完整或被破坏,需要扫描NVM芯片的物理块以重构脏大块表。
在一个实施例中,为重构脏大块表,对于被扫描的一个物理块B,依据其中记录的元数据(例如M0),获得同物理块B属于相同大块的所有物理块(例如,B1、B2、……BN),元数据M0记录了序号S0。从物理块(B1、B2、……BN)的每一个的元数据中获取序号,若获取的任何序号都不大于S0,则物理块B的元数据M0有最新的有效元数据,依据M0创建脏大块表的元素。若从物理块(B1、B2、……BN)获取的任何序号大于S0,则提取物理块(B1、B2、……BN)的每一个的元数据中值最大的序号(例如,Si),用序号Si所在的元数据Mi中记录的所有物理块构建大块,并更新脏大块表的元素。
进一步地,寻找值最大的序号的过程可以是递归的。例如从元数据Mi中记录的所有物理块中再次寻找值最大的序号(例如,Sj),用序号Sj所在的元数据Mi中记录的所有物理块构建大块,并更新脏大块表的元素。
进一步地,若元数据Mi或Mj中记录的部分物理块已损坏,则从扫描的物理块中提取值次大的序号(例如,Si-1或Sj-1),用序号Si-1所在的元数据Mi-1(或序号Sj-1所在的元数据Mj-1)中记录的所有物理块构建大块,并更新脏大块表的元素。
根据本申请的实施例还提供了一种固态存储设备,该设备包括控制器与非易失存储器芯片,其中,控制器执行本申请实施例提供的任意一种垃圾回收方法。
根据本申请的实施例还提供了一种存储在可读介质上的程序,当被固态存储设备的控制器运行时,使得固态存储设备执行根据本申请实施例提供的任意一种垃圾回收方法。
NVMe协议中还定义了命名空间(namespace,NS)。大小为n的命名空间是具有从0到n-1的逻辑块地址的逻辑块集合。通过命名空间ID(Namespace ID,NSID)能够唯一标识命名空间。命名空间可以在主机/NVMe控制器之间共享。主机通过单一NVMe控制器能够访问不同命名空间。不同主机也可通过多个NVMe控制器访问相同的命名空间。逻辑块可以被寻址和访问。作为举例,逻辑块的大小为4KB。
图9是根据本申请一个实施例的命名空间表。
图9的实施例中,固态存储设备提供4个命名空间,其NSID分别为0、1、2与3。将固态存储设备的逻辑单元(LUN)组绑定到命名空间。图9中,逻辑单元组0与1被分配给NSID为0的命名空间,逻辑单元组2与3被分配给NSID为1的命名空间。逻辑单元组与命名空间的绑定关系,作为举例,在命名空间被创建时指定。可选地,命名空间创建时,选择命名空间的服务质量等级,依据命名空间的用户空间范围与所选择的服务质量等级,确定逻辑单元组数量。例如,创建命名空间0时,要求的用户存储空间大小为N,以及服务质量等级为L,根据服务质量等级确定为用户提供的额外存储空间(OP,Over-Provisioning),进而确定满足要求的用户存储空间N以及额外存储空间(OP)所需的物理存储空间T,进而再确定提供这些物理存储空间所需的逻辑单元组数量。其中,作为举例,额外存储空间(OP)=(T-N)/N。
作为举例,固态存储设备的逻辑单元组,最多被绑定到一个命名空间,而多个命名空间不会共享逻辑单元组。
可选地,固态存储设备维护未被使用的逻辑单元组集合。在创建命名空间时,从未被使用的逻辑单元组集合中为新创建的命名空间分配逻辑单元组。在命名空间被销毁时,将被销毁的命名空间的逻辑单元组归还给未被使用的逻辑单元组集合。
根据图9的实施例,固态存储设备的各个命名空间,可具有不同的额外存储空间(OP)。各个命名空间具有不同的逻辑地址范围,因而可使用相同的FTL表。可选地,为每个命名空间提供属于各自的FTL表。
为向命名空间写入数据,从绑定到命名空间的逻辑单元组中为写入数据分配空闲大块。以及可选地,为每个命名空间记录脏大块集合(参看图4A)、空闲大块集合(参看图4B)和/或空闲物理块集合。脏大块集合中仅记录属于其所对应命名空间的脏大块。空闲大块集合中仅记录属于其所对应命名空间的空闲大块。脏物理块集合中仅记录属于其所对应命名空间的脏物理块。
为进行垃圾回收,对于例如NSID为1的命名空间,将从其脏大块回收的有效数据写入绑定到命名空间NSID 1的逻辑单元组2或3中的大块。可选地,将回收的大块,归还给对应于命名空间NSID 1的空闲大块集合。
以及命名空间的每个可具有不同的用于垃圾回收的参数。例如,发起垃圾回收的控制大块阈值。例如,对于命名空间NSID 2,在属于该命名空间的空闲大块小于15个时,发起垃圾回收操作;而对于NSID 3,在属于该命名空间的空闲大块小于10个时,发起垃圾回收操作。命名空间的每个还可具有不同的垃圾回收策略。例如,对于命名空间NSID 0,垃圾回收操作优先于读操作/写操作,而对于命名空间NSID 0,读操作/写操作操作优先于垃圾回收操作。
依然可选地,在指定条件下,改变固态存储设备的命名空间与逻辑单元组的绑定关系。例如,固态存储设备工作一段时间后,由于各个命名空间的使用情况不同,命名空间NSID 1承载了过多的写入操作,而命名空间NSID 0承载的写操作较少,导致逻辑单元组2与3的预期寿命明显短于逻辑单元0与1的预期寿命。改变命名空间与逻辑单元组的绑定关系,例如,将逻辑单元组0与1绑定到命名空间NSID 1,以及将逻辑单元组2与3绑定到命名空间NSID 0。并通过垃圾回收操作,将逻辑单元组0与1的原属于命名空间NSID 0的有效数据搬移到逻辑单元组2与3,以及将逻辑单元组2与3的原属于命名空间NSID 1的有效数据搬移到逻辑单元组0与1。
改变固态存储设备的命名空间与逻辑单元组的绑定关系的指定条件,包括,例如,用户发出了指定命令,固态存储设备工作了指定时间,各命名空间的数据写入量的差异超过阈值,或者命名空间的逻辑单元组的预期寿命将尽。
图10是根据本申请又一实施例的命名空间表。同图9的实施例相比,图10的实施例提供命名空间与物理存储空间的细粒度绑定关系。
图10的实施例中,固态存储设备提供4个命名空间,其NSID分别为0、1、2与3。将固态存储设备的逻辑单元(LUN)组绑定到大块。图10中,大块0-100被分配给NSID为0的命名空间,大块101-200以及大块300-400被分配给NSID为1的命名空间。大块与命名空间的绑定关系,作为举例,在命名空间被创建时指定。可选地,命名空间创建时,选择命名空间的服务质量等级,依据命名空间的用户空间范围与所选择的服务质量等级,确定大块数量。
作为举例,固态存储设备的大块,最多被绑定到一个命名空间,而多个命名空间不会共享大块。
可选地,固态存储设备维护未被绑定到命名空间的大块集合。在创建命名空间时,从未被绑定到命名空间的大块集合中为新创建的命名空间分配大块。在命名空间被销毁时,将被销毁的命名空间的大块归还给未被绑定到命名空间的大块集合。
根据图10的实施例,固态存储设备的各个命名空间,可具有不同的额外存储空间(OP)。可选地,为每个命名空间记录脏大块集合(参看图4A)、空闲大块集合(参看图4B)和/或空闲物理块集合。脏大块集合中仅记录属于其所对应命名空间的脏大块。空闲大块集合中仅记录属于其所对应命名空间的空闲大块。脏物理块集合中仅记录属于其所对应命名空间的脏物理块。
为进行垃圾回收,对于例如NSID为1的命名空间,将从其脏大块集合回收的有效数据写入绑定到命名空间NSID 1的空闲大块。可选地,将回收的大块,归还给对应于命名空间NSID 1的空闲大块集合。
以及命名空间的每个可具有不同的用于垃圾回收的参数,与不同的垃圾回收策略。
依然可选地,在指定条件下,改变固态存储设备的命名空间与大块的绑定关系。
图11是根据本申请又一实施例的命名空间的示意图。
根据本申请图11的实施例,固态存储设备为每个命名空间提供空闲大块集合(参看图4A)、脏大块集合(参看图4B)与空闲物理块集合。作为举例,命名空间NSID 0具有空闲大块集合FXS 0、脏大块集合DXS 0与空闲物理块集合FBS 0,命名空间NSID 1具有空闲大块集合FXS1、脏大块集合DXS1与空闲物理块集合FBS1。一个大块或物理块在同一时刻,最多属于一个命名空间;多个命名空间不会共享大块或物理块。但属于一个命名空间的大块,可被解除同该命名空间的绑定关系,并绑定到另一个命名空间。属于同一命名空间的多个大块,可来自不同的逻辑单元组。
空闲物理块集合中记录可用于构成大块但尚未用于构成大块的属于某一命名空间的物理块。例如,空闲物理块集合FBS 0记录了多个空闲物理块(FB 0-0、FB 0-1等),空闲物理块集合FBS1记录了多个空闲物理块(FB 1-0、FB 1-1等)。可选地,空闲物理块集合包括多个子集合,每个子集合记录属于某一命名空间且源于一个LUN的空闲物理块。
根据本申请的实施例,提供从空闲物理块集合构建大块的操作(例如,由get_xblock()所指示)。通过构建大块的操作,从属于某一命名空间的空闲物理块集合中获取指定数量的物理块以构建属于该命名空间的大块,生成大块元数据。可选地,根据大块的元数据,生成属于该命名空间的空闲大块集合的元素,并将元素添加到属于该命名空间的空闲大块集合中。依然可选地,根据大块的元数据,向大块写入数据,在大块被写满后,生成属于该命名空间的脏大块集合的元素,并将元素添加到该脏大块集合中。依然可选地,为构建属于某一命名空间的大块,从属于该命名空间的空闲物理块集合的指定数量的子集合的每个中获取物理块,用获取的物理块构建大块。从而大块可具有不同数量的物理块。
根据本申请的实施例,提供向属于某一命名空间的空闲物理块集合释放大块的操作。通过释放大块的操作,将指定大块的所有物理块添加到属于该命名空间空闲物理块集合。
根据本申请的实施例,提供向属于某一命名空间的空闲物理块集合释放物理块的操作。通过释放物理块的操作,将指定物理块添加到属于该命名空间的空闲物理块集合。
根据本申请的实施例,还提供重构属于某一命名空间的大块的操作(例如,由rebuild_xblock()所指示)。为实施重构大块的操作,需指示待重构的大块。在重构大块的操作中,识别属于大块的物理块和/或不再属于大块的物理块,其中该大块属于例如命名空间NSID 0。在一个例子中,大块X3的存储用户数据的n个(n是正整数)物理块不再属于大块X2。为实施重构大块的操作,从属于命名空间NSID 0的空闲物理块集合中获取n+m个空闲物理块,其中m是正整数,并且大块X2中的m个物理块存储校验数据。由于n个物理块不再数据大块X2,也需要更新大块X2的校验数据。从大块X2的除外了n个不再属于大块X2的物理块中读取数据,利用RAID技术恢复n个物理块的数据,将恢复得到的数据写入从空闲物理块集合中获取的n个物理块。以及从大块X2的存储校验数据的物理块读取校验数据,并写入从属于命名空间NSID 0的空闲物理块集合中获取的m个物理块。以及更新在脏大块集合的指示大块X2的元素,在元素中记录属于大块X2的所有物理块(用获取的n+m个物理块的地址替换不再属于大块X2的n个物理块的地址与大块X2的原来的m个存储校验数据的物理块的地址)。
在命名空间内进行垃圾回收操作。为进行垃圾回收,对于例如命名空间NSID 0,将从其脏大块集合DXS 0回收的有效数据写入从空闲大块集合FXS 0获取的空闲大块。可选地,将回收的大块,归还给对应于命名空间NSID 0的空闲大块集合。例如,根据本申请图6与图7的实施例,在命名空间内进行垃圾回收操作。
以及命名空间的每个可具有不同的用于垃圾回收的参数,与不同的垃圾回收策略。
根据本申请的实施例,还提供从属于某一命名空间的空闲物理块集合删除物理块的操作。为实施删除物理块的操作,需指示待删除的物理块,并响应于删除物理块的操作的执行,从属于某命名空间空闲物理块集合中移除待删除的物理块。通过从属于某一命名空间的空间物理块集合删除物理块,减小了属于该命名空间的额外存储空间(OP)。
根据本申请的实施例,还提供向属于某一命名空间的空间物理块集合追加物理块的操作。为实施追加物理块的操作,需指示待追加的物理块。被追加的物理块应当是空闲物理块,或者未被固态存储设备的任何命名空间使用的物理块。响应于追加物理块的操作的执行,将被追加的物理块记录到属于该命名空间的空闲物理块集合中。通过向属于某一命名空间的空间物理块集合追加物理块,增大了属于该命名空间的额外存储空间(OP)。
从而,根据本申请的实施例,可以物理块为粒度在各个命名空间之间调节其额外存储空间(OP)。例如,通过将空闲物理块从空闲物理块集合FBS 0搬移到空闲物理块集合FBS1,来减少空闲物理块集合FBS 0的空闲物理块数量,而相应地增大空闲物理块集合FBS1的空闲物理块数量,进而条件各个命名空间的额外存储空间(OP)。而额外存储空间的数量,会影响垃圾回收操作的发起时机和/或频率,进而影响命名空间的性能。一般地,具有较大额外存储空间(OP)的命名空间具有较好的性能,而具有较小额外存储空间(OP)的命名空间具有相对较差的性能。
图12是根据本申请依然又一实施例的命名空间的示意图。
根据本申请图12的实施例,固态存储设备提供多个命名空间,例如NSID分别为0、1、2与3的命名空间。每个命名空间包括属于自身的脏大块集合与空闲大块计数。例如,图12中,脏大块集合DXS 0是命名空间NSID 0的脏大块集合,而脏大块集合DXS1是命名空间NSID的脏大块集合。空闲大块计数FBC 0记录了属于命名空间NSID 0的空闲大块的数量,空闲大块计数FBC 1记录了属于命名空间NSID的空闲大块的数量。
各个命名空间具有不同的逻辑地址范围,因而可使用相同的FTL表。可选地,为每个命名空间提供属于各自的FTL表。
固态存储设备还维护全局的空闲大块集合FXS,用于为固态存储设备的多个命名空间提供大块。固态存储设备的各个命名空间的空闲大块计数(例如,FBC 0、FBC 1、FBC 2与FBC 3)的和小于或等于空闲大块集合FXS中的空闲大块的数量。当命名空间需要空闲大块时,从空闲大块集合FXS获取空闲大块,并且响应于获取到空闲大块,使自身的空闲大块计数递减,从而维护自身可用的空闲大块数量。
在命名空间被创建、初始化或格式化时,根据命名空间的容量与性能需求,为命名空间指定空闲大块计数FBC(即该命名空间可使用的空闲大块总数)。可选地,确保新创建的命名空间的空闲大块计数FBC与已经存在的命名空间的空闲大块计数的和,不超过空闲大块集合FXS的空闲大块数量。当命名空间被删除时,将命名空间所使用的大块(该命名空间的脏大块集合中记录的大块)释放给空闲大块集合。
根据图12的实施例中,响应于用户的指示或指定条件的满足,更改命名空间的空闲大块计数,从而实现调整命名空间的额外存储空间(OP)的目的。例如,用户希望为命名空间NSID 0提供更好的性能和/或更长的寿命,而增加命名空间NSID 0的额外存储空间(OP)(而不增加命名空间NSID的用户可使用存储空间),作为响应,固态存储设备使空闲大块计数FBC 0增加,以指示命名空间NSID 0可使用更多的空闲大块。固态存储设备还保证空闲大块计数FBC 0增加后,固态存储设备的多个命名空间的空闲大块计数的和不超过空闲大块集合FXS的空闲大块数量。例如,通过使命名空间NSID 1的空闲大块计数FBC减少来满足固态存储设备的多个命名空间的空闲大块计数的和不超过空闲大块集合FXS的空闲大块数量的要求。或者,在固态存储设备的多个命名空间的空闲大块计数的和小于空闲大块集合FXS的空闲大块数量的情况下,可增加空闲大块计数FBC 0,而无须减小其他空闲大块计数。
在一个可选的实施例中,允许临时地固态存储设备的各个命名空间的空闲大块计数(例如,FBC 0、FBC 1、FBC 2与FBC 3)的和大于空闲大块集合FXS中的空闲大块的数量。例如,当预测命名空间NSID 1的近期无须使用空闲大块,而命名空间NSID 0对空闲大块有较大需求,在不改变脏大块计数FBC 1的情况下,调高脏大块计数FBC 0,使得的各个命名空间的空闲大块计数暂时超过空闲大块FXS中的空闲大块数量,以换取命名空间NSID 0的暂时的高性能。以及在命名空间NSID 1需要空闲大块或将需要空闲大块时,从空闲大块集合FXS获取空闲大块。若空闲大块集合FXS的空闲大块数据不足,通过在命名空间NSID 0或其他命名空间上的垃圾回收操作,来补充空闲大块集合FXS的空闲大块,以及适时地调低脏大块计数FBC 0,使得的各个命名空间的空闲大块计数不超过空闲大块FXS中的空闲大块数量。
一个大块或物理块在同一时刻,最多属于一个命名空间;多个命名空间不会共享大块或物理块。
为每个命名空间进行垃圾回收。可选地,为一个命名空间进行的垃圾回收,不影响或低影响其他命名空间的读写请求处理。由于每个命名空间由属于自身的脏大块集合以及空闲大块计数,为各个命名空间独立地确定垃圾回收操作的启动时机。例如,响应于命名空间NSID 0的空闲大块计数较大,可推迟或暂不在命名空间NSID 0上进行垃圾回收操作。而响应于命名空间NSID 1的空闲大块计数较小,可立即发起在命名空间NSID 1上的垃圾回收操作。
通过为各个命名空间提供空闲大块计数,使得各命名空间拥有各自的额外存储空间(OP),并进而影响各命名空间的性能。例如,拥有较大额外存储空间(OP)的命名空间,具有较高的寿命,较少的垃圾回收操作、较低的写入数据量、较低的写放大(WA,WriteAmplification)和/或较好的性能。从而同一固态存储设备的各个命名空间可具有不同的性能和/或服务质量,用于可通过选择所使用的命名空间来获得差异化的容量、性能和/或服务质量。并且,根据本申请的实施例,用户可在固态存储设备使用过程中,更改命名空间的空闲大块计数或额外存储空间(OP),以实现对固态存储设备的按需使用。
作为举例,对命名空间NSID 2进行垃圾回收操作。从脏大块集合DXS2中获取待回收的脏大块。将脏大块中的有效数据写入属于命名空间NSID的空闲大块,并将待回收的脏大块擦除,将被擦除的脏大块归还给空闲物理块集合FBS,以及使空闲大块计数FBC 2相应递减。
依据命名空间当前的使用情况(例如,用户写入数据带宽、用户写入数据量、),决定是否在该命名空间上启动垃圾回收。例如,在命名空间NSID 0上的用户写入数据量较低时,在命名空间NSID 0上执行垃圾回收,从脏大块集合DXS 0获取待回收的脏大块。作为另一个例子,每个命名空间具有写入数据带宽的配额,确保在指定命名空间上,用户写入的数据与垃圾回收要写入的数据的总和不超过该命名空间的配额。例如,依据命名空间的写入数据带宽配额与用户写入数据带宽的差,确定是否有可用的写入数据带宽提供给在该命名空间用于垃圾回收。
通过为各个命名空间执行垃圾回收,避免了一个命名空间中的垃圾回收操作对其他命名空间的用户体验的影响,有利于保证服务质量。
可选地,对各个命名空间上的垃圾回收操作进行调度,以平衡各命名空间的性能、性能波动、服务质量和/或可用存储空间大小。
可选地,垃圾回收过程,以大块为单位进行。
根据本申请图12的进一步的实施例,固态存储设备还维护空闲物理块集合FBS。固态存储设备的各个命名空间都可从空闲物理块集合FBS获取空闲物理块,并将物理块归还给空闲物理块集合。
固态存储设备的一个或多个命名空间,使用具有可变物理块数量的大块,例如,本申请图3A的实施例所展示的大块。在为命名空间(例如,命名空间NSID 3)进行垃圾回收时,参看本申请图7,从例如脏大块集合DXS 3选择待回收的大块,确定待回收的大块应当被不完整回收(720),获取待回收大块中待回收的一个或多个物理块(740)。将待回收物理块中的有效数据写入属于命名空间NSID 3的空闲大块(742),以及擦除待回收的物理块,并将擦除的物理块记录在空闲物理块集合FBS中(744)。由于待回收的大块被不完整回收,无须更改空闲大块计数FBC的值。以及还从空闲物理块集合FBS获取空闲物理块,用于承载待回收大块的校验数据,并更新脏大块集合DXS 3中指示待回收大块的元素,以指示该待回收大块中包括了新获取的空闲物理块,而不再包括被擦除的物理块。
可选地,从空闲物理块集合FBS中获取多个空闲物理块以构建空闲大块,将获取的多个空闲物理块从空闲物理块集合FBS删除,并将构建的空闲大块添加到空闲大块集合FXS。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (36)
1.一种由固态存储设备执行的方法,其中所述固态存储设备包括多个命名空间,其中第一命名空间具有第一额外存储空间,第二命名空间具有第二额外存储空间,第一额外存储空间不同于第二额外存储空间;
所述方法包括:
根据第一命名空间的空闲大块数量确定在第一命名空间上启动垃圾回收操作;以及
根据第二命名空间的空闲大块数量确定在第二命名空间上启动垃圾回收操作;
为在第一命名空间上执行垃圾回收操作,从属于第一命名空间的脏大块集合获取第一大块,在确定不完整回收第一大块的情况下,保留第一大块的一个或多个第一物理块,而回收除所述一个或多个第一物理块之外的第一大块的一个或多个第二物理块。
2.根据权利要求1所述的方法,还包括:
响应于改变第一命名空间的额外存储空间的请求,使第一命名空间的空闲大块数量增加。
3.根据权利要求1所述的方法,还包括:
响应于改变第一命名空间的额外存储空间的请求,使第一命名空间的空闲大块数量增加,以及使第二命名空间的空闲大块数量相应地减少。
4.根据权利要求1所述的方法,还包括:
响应于第一命名空间的性能指标低于阈值,生成改变第一命名空间的额外存储空间的请求。
5.根据权利要求1所述的方法,还包括:
为在第一命名空间上执行垃圾回收操作,从属于第一命名空间的脏大块集合获取第一大块,将第一大块的有效数据写入从空闲大块集合获取的第一空闲大块,擦除第一大块的物理块,并将第一大块添加到空闲大块集合;
响应于从空闲大块集合获取了第一空闲大块,使第一命名空间的空闲大块数量递减;以及响应于将第一大块添加到空闲大块集合,使第一命名空间的空闲大块数量递增;
还包括:将第一空闲大块添加到第一命名空间的第一脏大块集合。
6.根据权利要求1所述的方法,还包括:
为在第二命名空间上执行垃圾回收操作,从属于第二命名空间的脏大块集合获取第二大块,将第二大块的有效数据写入从空闲大块集合获取的第二空闲大块,擦除第二大块的物理块,并将第二大块添加到空闲大块集合。
7.根据权利要求6的所述方法,还包括:
响应于从空闲大块集合获取了第二空闲大块,使第二命名空间的空闲大块数量递减;以及
响应于将第二大块添加到空闲大块集合,使第二命名空间的空闲大块数量递增。
8.根据权利要求7的所述方法,还包括:将第二空闲大块添加到第二命名空间的第二脏大块集合。
9.根据权利要求1的所述方法,还包括:将第二物理块的有效数据写入从空闲大块集合获取的第一空闲大块;擦除第二物理块;将擦除后的第二物理块添加到空闲物理块集合。
10.根据权利要求1的所述方法,还包括:擦除第一大块中存储校验数据的物理块;将第一大块中存储校验数据的物理块添加到空闲物理块集合。
11.根据权利要求1的所述方法,还包括:从空闲物理块集合获取一个或多个第三物理块;根据从第一大块的一个或多个第一物理块读出的数据生成新校验数据,将新校验数据写入所述一个或多个第三物理块;记录所述一个或多个第一物理块与所述一个或多个第三物理块属于第一大块。
12.根据权利要求11的所述方法,其中在第一大块的物理块中的有效数据量低于第一阈值,或第一大块的物理块中的有效数据占比低于第二阈值的情况下,确定完整回收第一大块。
13.根据权利要求11的所述方法,其中在第一大块的每个物理块中的有效数据量都低于第一阈值,或第一大块的每个物理块中的有效数据占比都低于第二阈值的情况下,确定完整回收第一大块。
14.根据权利要求11的所述方法,其中在第一大块的有效数据量高于第三阈值的物理块的数量低于第一指定值,或第一大块的有效数据占比高于第四阈值的物理块数量高于第二指定值的情况下,确定完整回收第一大块。
15.根据权利要求11的所述方法,其中若无法确定完整回收第一大块,则确定不完整回收第一大块。
16.根据权利要求11的所述方法,其中在第一大块的物理块中的有效数据量不低于第五阈值,或者第一大块的物理块中的有效数据占比不低于第六阈值的情况下,确定不完整回收第一大块。
17.根据权利要求11的所述方法,其中在第一大块的物理块中有效数据占比低于第七阈值的物理块的数量占第一大块物理块总数量的比值低于第三指定值的情况下,确定不完整回收第一大块。
18.根据权利要求11的所述方法,其中在所第一大块的物理块中有效数据量低于第八阈值的物理块的数量占第一大块物理块总数量的比值低于第四指定值的情况下,确定不完整回收第一大块。
19.根据权利要求11的所述方法,其中在第一大块的待回收数据量大于第九阈值的情况下,确定不完整回收第一大块。
20.根据权利要求1-19之一的所述方法,其中所述固态存储设备的控制器维护空闲大块集合;所述固态存储设备的多个命名空间可从所述空闲大块集合获取空闲大块。
21.根据权利要求1-19之一的所述方法,其中所述固态存储设备的控制器维护空闲物理块集合;所述固态存储设备的多个命名空间可从所述空闲物理块集合获取空闲物理块。
22.根据权利要求1-19之一的所述方法,其中第一命名空间被绑定到一个或多个第一逻辑单元组;第二命名空间被绑定到一个或多个第二逻辑单元组;以及所述固态存储设备的多个命名空间的每个可从其被绑定到的一个或多个逻辑单元组获取空闲大块。
23.根据权利要求22的所述方法,还包括:响应于改变第一命名空间的额外存储空间的请求,使第一命名空间被绑定到的逻辑单元组数量增加。
24.根据权利要求23的所述方法,还包括:响应于改变第一命名空间的额外存储空间的请求,使第一命名空间被绑定到的逻辑单元组数量增加,以及使第二命名空间被绑定到的逻辑单元组数量相应地减少。
25.根据权利要求1-19之一的所述方法,其中第一命名空间被绑定到一个或多个大块;第二命名空间被绑定到一个或多个大块;以及所述固态存储设备的多个命名空间的每个可从其被绑定到的一个或多个大块获取空闲大块。
26.根据权利要求1-19之一的所述方法,还包括:响应于改变第一命名空间的额外存储空间的请求,使第一命名空间被绑定到的大块数量增加。
27.根据权利要求26的所述方法,还包括:响应于改变第一命名空间的额外存储空间的请求,使第一命名空间被绑定到的大块数量增加,以及使第二命名空间被绑定到的大块数量相应地减少。
28.一种由固态存储设备,包括多个命名空间,其中第一命名空间具有第一额外存储空间,第二命名空间具有第二额外存储空间,第一额外存储空间不同于第二额外存储空间;
所述固态存储设备还包括控制器,所述控制器根据第一命名空间的空闲大块数量确定在第一命名空间上启动垃圾回收操作;以及根据第二命名空间的空闲大块数量确定在第二命名空间上启动垃圾回收操作;
为在第一命名空间上执行垃圾回收操作,从属于第一命名空间的脏大块集合获取第一大块,在确定不完整回收第一大块的情况下,保留第一大块的一个或多个第一物理块,而回收除所述一个或多个第一物理块之外的第一大块的一个或多个第二物理块。
29.根据权利要求28所述的固态存储设备,还包括空闲大块集合,所述多个命名空间可从所述空闲大块集合获取空闲大块;和/或空闲物理块集合,所述多个命名空间可从所述空闲物理块集合获取空闲物理块。
30.根据权利要求28所述的固态存储设备,所述控制器响应于改变第一命名空间的额外存储空间的请求,使第一命名空间的空闲大块数量增加。
31.根据权利要求28所述的固态存储设备,所述控制器响应于改变第一命名空间的额外存储空间的请求,使第一命名空间的空闲大块数量增加,以及使第二命名空间的空闲大块数量相应地减少。
32.根据权利要求28所述的固态存储设备,所述控制器为在第一命名空间上执行垃圾回收操作,从属于第一命名空间的脏大块集合获取第一大块,将第一大块的有效数据写入从空闲大块集合获取的第一空闲大块,擦除第一大块的物理块,并将第一大块添加到空闲大块集合。
33.根据权利要求28所述的固态存储设备,所述控制器为在第二命名空间上执行垃圾回收操作,从属于第二命名空间的脏大块集合获取第二大块,将第二大块的有效数据写入从空闲大块集合获取的第二空闲大块,擦除第二大块的物理块,并将第二大块添加到空闲大块集合。
34.根据权利要求28所述的固态存储设备,所述控制器为在第一命名空间上执行垃圾回收操作,从属于第一命名空间的脏大块集合获取第一大块,在确定不完整回收第一大块的情况下,保留第一大块的一个或多个第一物理块,而回收除所述一个或多个第一物理块之外的第一大块的一个或多个第二物理块。
35.根据权利要求34所述的固态存储设备,所述控制器还将第二物理块的有效数据写入从空闲大块集合获取的第一空闲大块;擦除第二物理块;以及将擦除后的第二物理块添加到空闲物理块集合。
36.一种固态存储设备,包括控制器,所述控制器通过运行程序来使得所述固态存储设备执行根据权利要求1-27任一项所述的由固态存储设备执行的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710888159.5A CN109558333B (zh) | 2017-09-27 | 2017-09-27 | 具有可变额外存储空间的固态存储设备命名空间 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710888159.5A CN109558333B (zh) | 2017-09-27 | 2017-09-27 | 具有可变额外存储空间的固态存储设备命名空间 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109558333A CN109558333A (zh) | 2019-04-02 |
CN109558333B true CN109558333B (zh) | 2024-04-05 |
Family
ID=65863662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710888159.5A Active CN109558333B (zh) | 2017-09-27 | 2017-09-27 | 具有可变额外存储空间的固态存储设备命名空间 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558333B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766180B (zh) * | 2017-09-22 | 2020-08-14 | 成都华为技术有限公司 | 存储介质的管理方法、装置及可读存储介质 |
CN112068777B (zh) * | 2020-09-03 | 2023-08-18 | 深圳市硅格半导体有限公司 | 数据存储介质的管理方法、系统、终端设备及存储介质 |
CN112445429B (zh) * | 2020-10-30 | 2022-08-05 | 至誉科技(武汉)有限公司 | 固态硬盘物理块的管理方法及系统 |
CN113608702A (zh) * | 2021-08-18 | 2021-11-05 | 合肥大唐存储科技有限公司 | 一种实现数据处理的方法、装置、计算机存储介质及终端 |
WO2023201462A1 (en) * | 2022-04-18 | 2023-10-26 | Micron Technology, Inc. | Namespace level valid translation unit count |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007019155A1 (en) * | 2005-08-03 | 2007-02-15 | Sandisk Corporation | Reclaiming data storage capacity in flash memory systems |
CN102799535A (zh) * | 2012-06-29 | 2012-11-28 | 记忆科技(深圳)有限公司 | 固态硬盘的数据处理方法及固态硬盘 |
CN103176858A (zh) * | 2013-03-11 | 2013-06-26 | 北京忆恒创源科技有限公司 | 具有多个固态盘的存储设备 |
CN103336744A (zh) * | 2013-06-20 | 2013-10-02 | 华中科技大学 | 一种固态存储设备的垃圾回收方法及其系统 |
CN103365788A (zh) * | 2013-08-06 | 2013-10-23 | 山东大学 | 实时闪存转换层使用的自适应局部垃圾回收方法 |
CN104794070A (zh) * | 2015-04-23 | 2015-07-22 | 南京道熵信息技术有限公司 | 基于动态非覆盖raid技术的固态闪存写缓存系统及方法 |
CN106372001A (zh) * | 2015-07-23 | 2017-02-01 | 株式会社东芝 | 内存系统 |
CN106371761A (zh) * | 2015-07-23 | 2017-02-01 | 株式会社东芝 | 内存系统以及非易失性内存的控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298606A (zh) * | 2013-07-17 | 2015-01-21 | 光宝科技股份有限公司 | 固态存储装置中垃圾搜集动作的控制方法 |
-
2017
- 2017-09-27 CN CN201710888159.5A patent/CN109558333B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007019155A1 (en) * | 2005-08-03 | 2007-02-15 | Sandisk Corporation | Reclaiming data storage capacity in flash memory systems |
CN102799535A (zh) * | 2012-06-29 | 2012-11-28 | 记忆科技(深圳)有限公司 | 固态硬盘的数据处理方法及固态硬盘 |
CN103176858A (zh) * | 2013-03-11 | 2013-06-26 | 北京忆恒创源科技有限公司 | 具有多个固态盘的存储设备 |
CN103336744A (zh) * | 2013-06-20 | 2013-10-02 | 华中科技大学 | 一种固态存储设备的垃圾回收方法及其系统 |
CN103365788A (zh) * | 2013-08-06 | 2013-10-23 | 山东大学 | 实时闪存转换层使用的自适应局部垃圾回收方法 |
CN104794070A (zh) * | 2015-04-23 | 2015-07-22 | 南京道熵信息技术有限公司 | 基于动态非覆盖raid技术的固态闪存写缓存系统及方法 |
CN106372001A (zh) * | 2015-07-23 | 2017-02-01 | 株式会社东芝 | 内存系统 |
CN106371761A (zh) * | 2015-07-23 | 2017-02-01 | 株式会社东芝 | 内存系统以及非易失性内存的控制方法 |
Non-Patent Citations (2)
Title |
---|
Garbage collection policy to improve durability for flash memory;Guangxia Xu;《 IEEE Transactions on Consumer Electronics》;第58卷(第4期);全文 * |
NAND闪存面向负载均衡的空间管理;李华生;郭裕顺;;机电工程(05);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109558333A (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558333B (zh) | 具有可变额外存储空间的固态存储设备命名空间 | |
US10983907B1 (en) | Nonvolatile memory controller that supports host selected data movement based upon metadata generated by the nonvolatile memory controller | |
US10372331B2 (en) | Storage system, information processing system and method for controlling nonvolatile memory | |
US10353612B2 (en) | Storage system, information processing system and method for controlling nonvolatile memory | |
CN101278267B (zh) | 具有经调度回收操作的非易失性存储器 | |
CN109086219B (zh) | 去分配命令处理方法及其存储设备 | |
CN113490922B (zh) | 固态硬盘写放大优化方法 | |
CN107817945B (zh) | 一种混合内存结构的数据读取方法和系统 | |
CN109558334B (zh) | 垃圾数据回收方法及固态存储设备 | |
CN112860594B (zh) | 一种固态盘地址重映射方法、设备及固态盘 | |
WO2020007030A1 (zh) | 一种系统控制器和系统垃圾回收方法 | |
CN109426436B (zh) | 基于可变长大块的垃圾回收方法与装置 | |
EP3798852B1 (en) | System controller and system garbage recovery method | |
US10430288B2 (en) | Data backup method, data recovery method and storage controller | |
CN112181276B (zh) | 提升存储设备服务质量的大块构造、分配方法及其存储设备 | |
CN110554970B (zh) | 显著降低写放大的垃圾回收方法及存储设备 | |
CN107077420B9 (zh) | 覆盖擦除块映射 | |
CN110688056B (zh) | Nvm组的存储介质替换 | |
CN111338975A (zh) | 面向多流的垃圾回收方法及其存储设备 | |
CN110580228A (zh) | 去分配命令处理方法及其存储设备 | |
CN116974481A (zh) | 一种空闲物理块水位线的调整方法和存储设备 | |
US20220327050A1 (en) | Storage system and information processing system for controlling nonvolatile memory | |
CN114968833A (zh) | 提高企业级固态存储设备顺序写性能的方法与存储设备 | |
KR101791855B1 (ko) | 스토리지 장치 및 이의 공간 재수거 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |