CN110688323B - 一种系统控制器和系统垃圾回收方法 - Google Patents

一种系统控制器和系统垃圾回收方法 Download PDF

Info

Publication number
CN110688323B
CN110688323B CN201810954801.XA CN201810954801A CN110688323B CN 110688323 B CN110688323 B CN 110688323B CN 201810954801 A CN201810954801 A CN 201810954801A CN 110688323 B CN110688323 B CN 110688323B
Authority
CN
China
Prior art keywords
solid state
logical
state disk
data
address
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
Application number
CN201810954801.XA
Other languages
English (en)
Other versions
CN110688323A (zh
Inventor
蒲贵友
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to JP2021500208A priority Critical patent/JP7146054B2/ja
Priority to PCT/CN2019/072095 priority patent/WO2020007030A1/zh
Priority to EP19831058.3A priority patent/EP3798852B1/en
Publication of CN110688323A publication Critical patent/CN110688323A/zh
Priority to US17/119,691 priority patent/US11321229B2/en
Application granted granted Critical
Publication of CN110688323B publication Critical patent/CN110688323B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

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)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本实施例提供的闪存阵列包括控制器和固态硬盘组,所述固态硬盘组包括多个固态硬盘,所述多个固态硬盘包括逻辑块组,所述逻辑块组包括多个分条。所述控制器用于统计所述多个分条中每个分条所包含的无效数据的数据量,从所述多个分条中选择至少一个目标分条,所述目标分条是所述多个分条中包含的无效数据最多的分条。然后,控制器指示固态硬盘组搬移所述目标分条中的有效数据,并指示所述固态硬盘组解除所述目标分条的逻辑地址与所述目标分条的实际地址之间的对应关系。可以减小写放大,从而提升固态硬盘的使用寿命。

Description

一种系统控制器和系统垃圾回收方法
技术领域
本申请涉及存储领域,并且更具体地,涉及一种系统控制器和系统垃圾回收方法。
背景技术
闪存阵列是指包含固态硬盘和系统控制器的存储系统。其中,系统控制器以逻辑块组(英文:chunk group,简称:CKG)为单位为固态硬盘分配逻辑地址,当系统中可用空间不足时系统控制器会进行系统垃圾回收。在系统垃圾回收操作中,系统控制器指令固态硬盘将逻辑块组中所有的有效数据搬移到新的逻辑块组,然后释放旧逻辑块组的逻辑地址,这就会导致固态硬盘内部出现的写放大的次数多。
发明内容
本申请提出了一种系统控制器和系统垃圾回收方法,可以减少固态硬盘内部的写放大的次数。
第一方面提供了一种系统控制器。该系统控制器包括处理器和接口,接口用于和固态硬盘组进行通信。所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条。在实际应用中,所述逻辑块组包括多个逻辑块,每个逻辑块来自不同的固态硬盘。所述处理器用于统计所述多个分条中每个分条所包含的无效数据的数据量,从所述多个分条中选择至少一个目标分条,所述目标分条是所述多个分条中包含的无效数据最多的分条或者包含的无效数据的数量超过设定数量阈值的分条。然后,控制器向所述固态硬盘组发送指示信息,以指示固态硬盘组回收所述目标分条。回收之后,所述目标分条的逻辑地址与实际地址之间的对应关系被解除,然而所述目标分条的逻辑地址不会被释放,直到该目标分条所在的逻辑块组的逻辑地址被释放。这里所说的指示固态硬盘组回收所述目标分条具体包括:向所述固态硬盘组所包括的每个固态硬盘发送读数据指令、写数据指令以及去映射命令。其中读数据指令用于读取所述目标分条中的有效数据,写数据指令用于指令固态硬盘将这些有效数据写入新分配的逻辑地址。去映射命令用于通知固态硬盘组解除有效数据的旧逻辑地址与实际地址之间的映射关系。
第一方面中的逻辑块组可以是一个,也可以是多个。当逻辑块组是一个时,所述目标分条是所述逻辑块组所包含的分条中,无效数据的数据量超过设定数量阈值的分条。另外,所述逻辑块组还可以是固态硬盘组中的多个逻辑块组中包含无效数据最多的逻辑块组,这种情况下,所述目标分条就是整个固态硬盘组中包含无效数据最多的分条。当逻辑块组是多个时,所述目标分条是所述多个逻辑块组所包含的分条中,无效数据的数据量超过设定数量阈值的分条。由于选择的范围更大,此时的目标分条也是包含无效数据更多的分条。
在第一方面提供的系统控制器中,系统垃圾回收的粒度是以分条为单位执行的,相对于以逻辑块组为粒度的系统垃圾回收来说,分条的粒度更小,可以更精确地找到无效数据密集的区域,在释放同样大小的可用空间的情况下,以分条为粒度的系统垃圾回收的可以减小写放大,从而提升固态硬盘的使用寿命。
在第一方面的第一种实现中,所述多个固态硬盘中的每个固态硬盘提供给所述系统控制器的逻辑地址的数量大于所述固态硬盘的实际地址的数量。由于该固态硬盘逻辑地址的数量大于实际地址的数量,系统控制器拥有更多可分配的逻辑地址,在一定程度上可以避免可分配的逻辑地址不足的问题。
在第一方面的第二种实现中,所述处理器还用于在所述指示所述固态硬盘组回收所述目标分条之前,确定所述固态硬盘组中的可用空间不足。固态硬盘组中的可用空间不足是系统垃圾回收的触发条件。
在第一方面的第三种实现中,所述处理器还用于当所述逻辑块组所包含的所有分条中均完成回收时,释放所述处理器分配给所述逻辑块组的逻辑地址,所述目标分条的逻辑地址是所述逻辑块组的逻辑地址的子集。当所述逻辑块组只有一个分条或者部分分条被回收时,这些分条的逻辑地址并没有被释放,需等到所述逻辑块组所包含的全部分条回收完毕时,其逻辑地址才能够被释放。释放后的逻辑地址可以分配给其他逻辑块组,避免了系统控制器可分配的逻辑地址不足的问题。
在第一方面的第四种实现中,所述处理器还用于确定所述目标分条中的数据所述的IO请求,当所述IO请求包含的部分数据存储在所述其他分条时,将所述部分数据中的有效数据也搬移至新分配的逻辑地址中,并且所述新分配的逻辑地址与目标分条中的有效数据所搬移至的新的逻辑地址连续。这是为了保证属于同一个IO请求的数据尽量存放在一起,方便查找。
结合第一方面的第四种实现,在第一方面的第五种实现中,所述其他分条是所述目标分条的相邻分条,所谓相邻分条是指逻辑地址与目标分条的逻辑地址连续的分条。
第二方面提供了一种系统控制器,该系统控制器包括处理器和接口,接口用于和固态硬盘组进行通信。所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条。在实际应用中,所述逻辑块组包括多个逻辑块,每个逻辑块来自不同的固态硬盘。所述处理器用于判断所述固态硬盘组所提供的逻辑地址的使用情况是否满足第一设定条件。当所述固态硬盘组所提供的逻辑地址的使用情况满足第一设定条件时,以分条为单位指示所述固态硬盘组进行垃圾回收,并保持所述目标分条的逻辑地址不释放,直到所述逻辑块组的逻辑地址被释放。所述处理器还用于当所述固态硬盘组所提供的逻辑地址的使用情况不满足所述第一设定条件时,以逻辑块组为单位指示所述固态硬盘组进行垃圾回收,其中,已回收的逻辑块组所包括的所有分条的逻辑地址均被释放。
第二方面中的第一设定条件可以是所述固态硬盘组所提供的逻辑地址中的可分配的逻辑地址的数量低于设定的第一地址阈值,也可以是所述固态硬盘组所提供的逻辑地址中的已使用的逻辑地址的数量高于设定的第二地址阈值,还可以是所述固态硬盘组所提供的逻辑地址中已使用的逻辑地址占总的逻辑地址的比例是否高于设定的第三地址阈值,还可以是所述固态硬盘组所提供的逻辑地址中可用的逻辑地址占总的逻辑地址的比例是否低于设定的第四地址阈值。
在第二方面提供的系统控制器中,以不同的触发条件确定以哪种粒度进行系统垃圾回收。当可用空间不足时,以分条为粒度执行系统垃圾回收,以减小写放大。随着可分配的逻辑地址的数量的减少,当可分配的逻辑地址的数量低于设定地址阈值时,以逻辑块组为单位指示所述固态硬盘组进行垃圾回收,可以增加系统控制器可分配的逻辑地址。因此,按照这种实现方式,既可以减少写放大,又可以避免可分配的逻辑地址不足的问题。
在第二方面的第一种实现中,所述多个固态硬盘中的每个固态硬盘提供给所述系统控制器的逻辑地址大于所述固态硬盘的实际地址。
在第二方面的第二种实现中,所述处理器还用于在所述判断所述固态硬盘组所提供的逻辑地址的使用情况是否满足第一设定条件之前,确定所述固态硬盘组的可用空间满足第二设定条件。所述第二设定条件可以是所述固态硬盘组的可用空间低于设定的空间阈值,也可以所述固态硬盘组的已使用空间高于设定的空间阈值,还可以是分条中无效数据的数据量达到设定的阈值。
第三方面提供了一种系统垃圾回收方法,该应用于第一方面以及第一方面任意一种实现提供的系统控制器中。
第四方面提供了另一种系统垃圾回收方法,该应用于第二方面以及第二方面任意一种实现提供的系统控制器中。
第五方面提供了一种系统垃圾回收装置,该装置包含的模块用于实现第三方面提供的系统垃圾回收方法。
第六方面提供了另一种系统垃圾回收装置,该装置包含的模块用于实现第四方面提供的系统垃圾回收方法。
第七方面提供了一种闪存阵列,包括如第一方面任意一种实现所提供的系统控制器以及固态硬盘组,所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条。
第八方面提供了一种闪存阵列,包括如第二方面任意一种实现所提供的系统控制器以及固态硬盘组,所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条。
第九方面提供了一种系统垃圾回收的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行第一方面所描述的方法。
第十方面提供了一种系统垃圾回收的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行第二方面所描述的方法。
附图说明
图1是本发明实施例提供的应用场景图;
图2是本发明实施例提供的控制器的结构图;
图3是本发明实施例提供的逻辑块组的示意图;
图4是本发明实施例提供的分条的示意图;
图5是本发明实施例提供的一种系统垃圾回收方法的流程示意图;
图6是本发明实施例提供的另一种系统垃圾回收方法的流程示意图;
图7是本发明实施例提供的一种系统垃圾回收装置的结构示意图。
具体实施方式
本发明实施例提出了一种系统垃圾回收的方法以及存储系统,可以减小写放大,从而提升固态硬盘的使用寿命。
图1描绘了本发明实施例提供的闪存阵列的组成图,图1所示的闪存阵列包括至少一个控制器(如图1所示的控制器11)和多个固态硬盘22。控制器11通过存储区域网络(英文:storage area network,SAN)与主机(图中未示出)连接。控制器11可以是一种计算设备,如服务器、台式计算机等等。在控制器11上安装有操作系统以及应用程序。控制器11可以接收来自主机的输入输出(I/O)请求。控制器11还可以存储I/O请求中携带的数据(如果有的话),并且将该数据写入固态硬盘22中。固态硬盘(英文:Solid State Disk,SSD)是以闪存(英文:flash memory)芯片为介质的存储器,又名固态驱动器(Solid State Drive,SSD)。
图1仅是示例性说明,在实际应用中存储系统可包含两个或两个以上控制器,每个控制器的物理结构和功能与控制器11类似,并且本实施例并不限定控制器之间,以及任意一个控制器与固态硬盘22之间的连接方式。只要各个控制器之间,以及各个控制器和固态硬盘22之间能够相互通信。另外,在本实施例中,控制器11在向固态硬盘发指令时往往是向多个固态硬盘发送,为了方便描述,将包含多个固态硬盘22的集合称为固态硬盘组。
图2是控制器11的结构示例图,如图2所示,控制器11包括接口卡110、处理器112和接口卡113。
接口卡110用于和主机通信,控制器11可以通过接口卡110接收主机的操作指令。处理器112可能是一个中央处理器(英文:central processing unit,CPU)。在本发明实施例中,处理器112可以用于接收来自主机的I/O请求、处理所述I/O请求。所述I/O请求可以是写数据请求或者读数据请求,处理器112还可以将写数据请求中的数据发送给固态硬盘22。此外,处理器112还可以用于执行系统垃圾回收操作。接口卡113,用于和固态硬盘22通信,控制器11可以通过接口卡113将写数据请求(包括数据以及所述数据的生命周期级别)发送给固态硬盘22存储。
可选地,控制器11还可以包括存储器111。存储器111用于临时存储从主机接收的数据或从固态硬盘22读取的数据。控制器11接收主机发送的多个写数据请求时,可以将所述多个写数据请求中的数据暂时保存在存储器111中。当存储器111的容量达到一定阈值时,将存储器111存储的数据以及为所述数据分配的逻辑地址发送给固态硬盘22。固态硬盘22存储所述数据。存储器111包括易失性存储器,闪存芯片或其组合。易失性存储器例如为随机访问存储器(英文:random-access memory,RAM)。闪存芯片例如软盘、硬盘、固态硬盘(solid state disk,SSD)、光盘等各种可以存储程序代码的机器可读介质。存储器111具有保电功能,保电功能是指系统发生掉电又重新上电时,存储器111中存储的数据也不会丢失。
当数据写入存储系统之后,控制器11需要记录该数据的有效性。数据的有效性是以所述数据是否被修改来确定的。如果所述数据是第一次写入,可以将所述数据记录为有效(称为有效数据)。如果所述数据被修改,则将所述修改前的数据记录为无效(称为无效数据)。具体的,可以用位图记录数据的有效性。例如,位图的每个“位”对应大小为1KB的数据的逻辑地址,当“位”为1时,代表所述逻辑地址中存储的数据有效,当“位”为0时,代表所述逻辑地址中存储的数据无效。所述位图可以保存在存储器111中,也可以保存在固态硬盘中。
需要说明的是,控制器11属于系统控制器,系统控制器是独立的设备,不同于固态硬盘中的控制芯片。本实施例将固态硬盘的控制芯片称为闪存控制器。
固态硬盘22包括闪存控制器和多个闪存芯片。其中,闪存控制器用于执行控制器11发送的写数据请求或者读数据请求等操作。
闪存控制器中包含闪存翻译层(英文:flash translation layer,FTL)。闪存翻译层用于保存有数据的逻辑地址与实际地址之间的对应关系。因此,闪存翻译层用于将系统控制器发送的写数据请求或者读数据请求中的逻辑地址转化为固态硬盘中数据的实际地址。数据的逻辑地址是由系统控制器分配的,固态硬盘提供给系统控制器的逻辑地址区间的子集。数据的逻辑地址包括起始逻辑地址和长度,起始逻辑地址指示所述数据位于的所述段的位置,长度代表所述数据的大小。数据的实际地址可以是固态硬盘中该数据的物理地址,也可以是在所述物理地址的基础上经过虚拟化,只对闪存控制器可见的地址。该经过虚拟化的实际地址对系统控制器不可见。
固态硬盘通常包括一个或多个闪存芯片。每个闪存芯片包括若干个擦除块。固态硬盘在读取或写入时是以一个页(英文:page)为基础的,但擦除操作只能以一个擦除块为基础,擦除操作是指将这个块的所有位都设置为“1”。在擦除之前,闪存控制器需要先将这个擦除块中的有效数据复制到另一个块的空白页中去。
每个擦除块包含多个页(英文:page)。固态硬盘在执行写数据请求时,是以页为单位来写数据的。举例来说,控制器11向闪存控制器发送一个写数据请求。所述写数据请求包括数据的逻辑地址。闪存控制器在接收所述写数据请求之后,按照接收的时间顺序将所述数据连续写入一个或多个擦除块中。连续写入一个或多个擦除块是指,闪存控制器查找一个空白的擦除块,将数据写入所述空白的擦除块,直至将所述空白的擦除块填满,当所述数据的大小超过擦除块的容量时,闪存控制器再查找下一个空白的擦除块,继续写入。闪存翻译层建立并保存所述逻辑地址与写入所述数据的页的实际地址之间的对应关系。当控制器11向闪存控制器发送读数据请求,要求读取所述数据时,所述读数据请求中包括所述逻辑地址。闪存控制器根据所述逻辑地址、以及所述逻辑地址与实际地址之间的对应关系读取所述数据,并将该数据发送给控制器11。
在闪存阵列中,单个固态硬盘都有可能发生故障,从而导致数据丢失。本实施例采用廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks,RAID)技术保障数据的可能性。下面介绍一下在对固态硬盘中的数据进行冗余保护的机制。
首先,控制器11以逻辑块(英文:chunk,简称:CK)的形式对固态硬盘进行空间管理。逻辑块是一个空间概念,其大小以4MB为例,但不限定为4MB。来自不同固态硬盘的逻辑块可以构成一个逻辑块集合,控制器11再根据设定的RAID类型将这个逻辑块集合中的逻辑块划分为数据组和校验组。数据组中包括至少两个逻辑块,用于存储数据,校验组中包括至少一个逻辑块,用于存储所述数据的校验数据。本实施例中,将包含数据组和校验组的逻辑块集合称为逻辑块组。当控制器11在存储器111中凑满一定大小的数据时,可以根据所述设定的RAI D类型切分为多个数据单元,并计算获得校验单元,将所述数据单元以及校验单元发送给固态硬盘,以保存在所述逻辑块组中。数据组中的每个逻辑块用于存储数据单元,校验组中的每个逻辑块用于存储校验单元。存储之后,这些数据单元和对应的校验单元就构成一个分条。逻辑块组包括多个分条。
分条所包含的数据单元和校验单元都可以称作分条单元。本实施例中,以分条单元的大小为8KB为例,但不限定为8KB。如图3所示,假设从5个固态硬盘中各取出一个逻辑块构成逻辑块集合,然后控制器11根据RAID类型(以RAID6为例)对该逻辑块集合中的逻辑块进行分组,例如逻辑块1、逻辑块2和逻辑块3为数据块组,逻辑块4和逻辑块5为校验块组。当存储器111中存储的数据达到24KB(8KB*3)时,将所述数据划分为3个数据单元,每个数据单元为8KB,然后计算获得2个校验单元,每个校验单元也为8KB。控制器11将这些数据单元和校验单元发送给固态硬盘,存储在所述逻辑块组中(如图3中阴影部分所示)。可以理解的是,按照RAID6的冗余保护机制,任意两个数据单元或者校验单元失效时,可以根据剩下的数据单元或者校验单元重构出失效的单元。
在本实施例中,当存储器111中凑满等于一个分条大小的数据时,控制器11会向固态硬盘组发送写数据请求,使得固态硬盘组所包括的固态硬盘22将数据写入逻辑块组的分条中。此时,控制器11需判断是否存在一个已经分配的逻辑块组,如果有并且该逻辑块组仍然有足够的空间容纳该数据,那么控制器11可以指令固态硬盘组将该数据写入已经分配的逻辑块组中。具体的,控制器11从所述已经分配的逻辑块组的逻辑地址区间中获取一段未使用的逻辑地址,将所述逻辑地址携带在所述写数据请求中发送给固态硬盘22。固态硬盘22保存所述数据之后再在闪存翻译层中创建所述逻辑地址与保存该数据的实际地址之间的映射关系。
在上述例子中,如果控制器11确定系统中并不存在已经分配的逻辑块组,或者已分配的逻辑块组均已写满数据,那么控制器11就需要创建一个新的逻辑块组。其创建过程可以是,控制器11根据自己对每个固态硬盘所拥有的可用空间的记录,确定系统剩余空间足以创建一个新的逻辑块组。接下来,控制器11分别从不同的固态硬盘22中获取一个逻辑块,将根据设定的RAID类型将这些逻辑块构建成一个新的逻辑块组(可参考前面关于逻辑块组的描述)。然后,控制器11为每个逻辑块分配一段逻辑地址,这些逻辑地址集合就是所述新的逻辑块组的逻辑地址。
为了保证闪存阵列中始终有足够的可用空间用于创建逻辑块组,控制器11可以实时地或者定期地对每个固态硬盘22的可用空间进行监控,从而获知整个系统的可用空间。当系统的可用空间低于设定的空间阈值时,可以启动系统垃圾回收。例如,一个固态硬盘22的容量是128G,图1所示的闪存阵列所包含的所有固态硬盘(假设该闪存阵列包含10个固态硬盘)的总容量是1280G,所述空间阈值可以设置为640G。也就是说,当该闪存阵列存储的数据达到所述总容量的一半时,剩余的可用空间也达到了所述空间阈值,此时控制器11可以执行系统垃圾回收。可以理解的是,640G只是空间阈值的一个示例,所述空间阈值也可以设置为其他数值。另外,当系统的已使用空间达到设定的空间阈值时,也可以触发系统垃圾回收。另外,在本发明另一个实施例中,当一个或多个分条所包含的无效数据的数据量达到设定阈值时,也可以启动系统垃圾回收。系统垃圾回收有别于固态硬盘内部的垃圾回收。固态硬盘内部的垃圾回收是由固态硬盘自己完成的。
控制器11可以以逻辑块组为单位执行系统垃圾回收。举例来说,控制器11根据位图获取一个逻辑块组中有效数据的逻辑地址,将所述有效数据的逻辑地址发送给固态硬盘组,使得各个固态硬盘22可以根据所述有效数据的逻辑地址读取数据并发送给控制器11。控制器11为所述有效数据分配新的逻辑地址,该新的逻辑地址属于新的逻辑块组,并将该分配的新的逻辑地址发送给固态硬盘组,各个固态硬盘22将所述有效数据写入新的块之后,再保存实际地址与所述新的逻辑地址之间的映射关系。然后,控制器11再给固态硬盘组发送去映射(英文:unmap)命令或者trim命令,所述去映射命令包括所述待回收的逻辑块组的逻辑地址区间,各个固态硬盘22接收所述去映射命令之后,删除闪存翻译层中保存的所述逻辑地址区间的逻辑地址与实际地址之间的对应关系。固态硬盘22还可以将所述搬移前的有效数据的实际地址对应的块标记为不包含有效数据的块。随后,控制器11可以释放所述待回收的逻辑块组的逻辑地址区间以及所述逻辑块组占用的实际物理空间(也可以理解为实际地址)。
以逻辑块组为单位执行系统垃圾回收,必须将逻辑块组里面所有的有效数据全部搬移到新的逻辑块组后,才能释放出空白的逻辑块组。如果以比逻辑块组更细的粒度进行系统垃圾回收,则可以达到进行较少次数的数据搬移但释放出同样大小的可用空间的目的。
在本实施例中,控制器11以分条为粒度进行系统垃圾回收。控制器11可以根据位图统计出一个逻辑块组中各个分条所包含的无效数据的数据量,从大到小依次排序。当系统垃圾回收的触发条件满足时,选择包含无效数据最多的分条进行回收。具体的,控制器11根据位图获取一个分条中有效数据的逻辑地址,将所述有效数据的逻辑地址发送给固态硬盘组使得各个固态硬盘22从旧的逻辑地址中读取所述有效数据,并且控制器11从未使用的逻辑地址中为所述有效数据分配新的逻辑地址,该新的逻辑地址属于新的逻辑块组,并将所述新的逻辑地址发送给固态硬盘组,使得固态硬盘22将所述有效数据写入新的块,再保存实际地址与所述新的逻辑地址之间的映射关系。然后,控制器11再给固态硬盘组发送去映射(英文:unmap)命令,所述去映射命令包括所述待回收的分条的逻辑地址区间,各个固态硬盘22接收所述去映射命令之后,删除闪存翻译层中保存的所述逻辑地址区间的逻辑地址与所述有效数据的实际地址之间的对应关系。固态硬盘22还可以将所述搬移前的有效数据的实际地址对应的块标记为不包含有效数据的块。与以逻辑块组为粒度的系统垃圾回收的不同之处还在于,以分条为单位的回收中,去映射命令仅包含该分条的逻辑地址区间,而以逻辑块组为单位的回收中,去映射命令包含整个逻辑块组的逻辑地址区间。这种情况下,需要搬移的有效数据的范围就不一样,前者是分条的逻辑地址区间对应的实际地址区间的有效数据,而后者则需要搬移整个逻辑块组的逻辑地址区间对应的实际地址区间的有效数据。这样便可达到进行较少次数的数据搬移但释放出同样大小的可用空间的目的。
需要说明的是,虽然一个逻辑块组中的某一个分条被回收了,该分条所占用的实际物理空间是空白的,但该分条所占用的逻辑地址仍然不能被释放,因为逻辑块组是逻辑地址分配/释放的基本单位。所以,需要等到逻辑块组所包含的所有分条都回收完毕后,逻辑地址才能被释放。
对于传统的固态硬盘来说,它暴露给系统控制器的逻辑地址是等于其实际地址的。系统垃圾回收的目的是释放更多逻辑地址供控制器使用,然而,从上面的描述来看,如果在传统的固态硬盘中采用以分条为粒度的系统垃圾回收方式,即使一个逻辑块组里面的部分分条被回收了,它们的逻辑地址仍然不能释放出来供控制器11使用。虽然固态硬盘上的物理空间通过系统垃圾回收已经释放出来可以写入新的数据了,但是对于控制器11来说可分配的逻辑地址仍然不足,仍然需要等到整个逻辑块组的数据都完成垃圾回收操作之后,才有足够的逻辑地址可用。
为了更好地保障以分条为粒度进行垃圾回收,具体的,为了保障有足够的逻辑地址。在前述实施例的基础上,本申请提供了另一实施例,该实施例引入了使用虚拟块(vblock)技术的固态硬盘(简称为虚拟块固态硬盘)。也就是说,在本发明实施例所提供的闪存阵列中的固态硬盘是虚拟块固态硬盘。虚拟块固态硬盘的特点是,它暴露给系统控制器的逻辑地址大于其实际地址。以一个容量为128G的固态硬盘为例,按照传统的方式这个固态硬盘提供的逻辑地址区间为0-131072KB,但是采用了虚拟块技术以后,同样容量的固态硬盘所提供的逻辑地址区间大于原来的逻辑地址区间,例如其逻辑地址区间可以是0-262144KB,对控制器11来说就增加了131073KB-262144KB这段区间。需要说明的是,这里的虚拟块固态硬盘的逻辑地址是传统固态硬盘的逻辑地址的两倍只是一个示例,本实施例并不限定为两倍,只要虚拟块固态硬盘的逻辑地址大于传统固态硬盘的逻辑地址即可。可以理解的是,整个固态硬盘组中可以有一些固态硬盘采用所述虚拟块技术提供更大的逻辑地址范围,而另外一些仍然采用传统的固态硬盘。也可以是所有的固态硬盘都采用了所述的虚拟块技术,本申请对比不做任何限定。
结合前面描述的以分条为粒度的系统垃圾回收,控制器11在对一个逻辑块组中的至少一个分条执行系统垃圾回收之后,可以从虚拟块固态硬盘提供给控制器11的逻辑地址中获取未使用的逻辑地址作为有效数据的新的逻辑地址。由于虚拟块固态硬盘本身所提供的逻辑地址是大于其实际地址的,因此相对于具有相同容量的传统固态硬盘来说,虚拟块固态硬盘包含了一部分额外的逻辑地址。利用这部分额外的逻辑地址,就可以在一定程度上解决前面描述的执行以分条为单位的系统垃圾回收后仍然没有足够的可分配的逻辑地址的问题。使用提供更大地址范围的固态硬盘,可以更好的保障以分条为粒度进行数据回收,或者使得以分条为粒度进行数据回收的适用条件更为宽泛,从而更多次的使用分条回收,因此可以更进一步的减小了以逻辑块组为单位进行垃圾回收所造成的写放大。
虽然利用虚拟块固态硬盘所提供的额外的逻辑地址,可以在一定程度上解决可分配的逻辑地址不足的问题,但是无论什么硬盘其逻辑地址总是有限的。随着创建的逻辑块组越来越多,硬盘提供给控制器11的可用的逻辑地址会越来越少。当可用的逻辑地址低于设定的地址阈值时,可以启动以逻辑块组为单位的系统垃圾回收。可以理解的是,还可以采取其它条件,例如,所述控制器11可分配的逻辑地址的数量占总的逻辑地址的数量的百分比超过设定的地址阈值(此时,地址阈值是个分数),或者已使用的逻辑地址的数量高于设定的地址阈值等等,本申请对比不做限定。通过在一定条件下启动整个逻辑块组的垃圾回收,可以使得垃圾回收的处理更加优化,这是因为只有整个逻辑块组被回收了,其分配的逻辑地址采用被释放掉再用于分配给其他逻辑块组。对于以逻辑块组为单位的系统垃圾回收,前面已经详细描述过,这里不再赘述。基于此,本申请提供了另一实施例,在该实施例中,既可以进行以分条为粒度的垃圾回收,也可以进行以逻辑块组为粒度的垃圾回收,具体以哪种方式进行垃圾回收可以根据所采用的地址阈值进行决定。在以可用的逻辑地址进行判断的情况下,则当固态硬盘的可用逻辑地址于设置的地址阈值时,以逻辑块组为粒度进行数据回收,当固态硬盘的可用逻辑地址高于设置的地址阈值时,以分条为粒度进行数据回收,具体回收方式参考上述实施例的具体描述,这里不再赘述。在以已使用的逻辑地址进行判断的情况下,具体的地址阈值可以根据整个固态硬盘组的提供的逻辑地址情况进行设置或确定。例如,当采用了虚拟块技术提供更大逻辑地址范围的固态硬盘的场景下,所述的地址阈值可能会被设置为大于提供更小逻辑地址范围的固态硬盘。
本申请提供了另一种实施例中可以以两个或两个以上的分条作为数据回收粒度,在该实施例中,可以将系统垃圾回收的粒度设置为至少N个分条,其中N为大于或等于2的整数。也就是说,按照这种实现方式,每次回收的时候都以至少两个分条为单位进行回收,但不限定为以两个分条为单位,也可以以两个以上分条为单位。回收方式可以参考前面描述以单个分条为粒度的回收。值得一提的是,在一次系统垃圾回收中如何选择所述至少N个分条。以N等于2为例,可以选择在一个逻辑块组内部逻辑地址连续的两个分条。由于每个逻辑块对应一段连续的逻辑地址区间,并且每个逻辑块包括多个分条的其中一个分条单元,因此该逻辑块中的每个分条单元对应一段逻辑地址。根据每个分条单元对应的逻辑地址可以选择出至少两个逻辑地址连续的分条单元,然后进一步确定分条单元对应的分条。相应的,在统计无效数据的数据量时,也是以逻辑地址连续的两个分条为单元统计其包含的无效数据的数据量,从而优先对在统计对包含无效数据最多的两个分条进行系统垃圾回收。
下面用一个具体的例子比较以分条为单位的系统垃圾回收和以逻辑块组为单位进行系统垃圾回收之间的差别。请参见图4,图4所示逻辑块组包括8个分条,每个分条包括三个数据单元(D1、D2和D3)以及两个校验单元(P和Q)。假设一个逻辑块组包含大约50%的无效数据,图4中白色部分代表有效数据,灰色部分代表无效数据。如果对所述逻辑块组进行系统垃圾回收,可以释放4MB*5=20MB的空间(假设每个逻辑块的大小为4MB)。然而,如果以分条为粒度进行系统垃圾回收,如图4所示,分条2、分条6包含了大部分整个逻辑块组所拥有的无效数据,如果对分条2和分条6进行系统垃圾回收,那么至少可以释放掉10MB空间。进一步地,如果闪存阵列还包含另一个与图4所示的逻辑块组情况类似的逻辑块组,仅需要对这两个逻辑块组中包含无效数据最多的4个分条进行系统垃圾回收进行获得20MB可用空间。因此,在获得同样大小可用空间的情况下,以分条为粒度的系统垃圾回收所需要搬移的有效数据较少,相应的所造成的写放大小于以逻辑块组为粒度的系统垃圾回收。可以理解的是,为了进一步减小写放大,在本发明实施例中,当闪存阵列拥有多个逻辑块组时,可以首先选择包含无效数据最多的逻辑块组,再从该逻辑块组中选择包含无效数据最多的分条。也可以是直接在整个固态硬盘组中的所有逻辑块组中确定无效数据最多的分条,然后针对该分条进行数据回收。
在实际应用中,主机发送给控制器11的数据会经过压缩处理之后再存储在分条中,这就可能导致存储在分条中的数据不能对齐。所谓对齐是指属于同一个IO请求的数据存储在同一个分条中,不能对齐的含义是属于同一个IO请求的数据分布在至少两个分条中。如果分条中的数据不能对齐,就会影响查找数据的效率。考虑到这种情况,本实施例在执行系统垃圾回收时会尽量保证回收后的数据在分条中对齐。
为了尽量保证数据对齐,本申请提供了另一种实施例,在该实施例中,在选择出包含无效数据最多的一个分条之后,判断该分条所包含的数据是否与其他分条所包含的数据属于同一个IO请求。如果该分条所包含的数据与所述其他分条所包含的数据属于同一个IO请求,那么将所述其他分条所包含的属于该IO请求的有效数据搬移至新的逻辑地址,并且所述新的逻辑地址与目标分条中的有效数据所搬移至的新的逻辑地址连续。这是为了保证属于同一个IO请求的数据尽量存放在一起。示例性的,所述其他分条可以是所述分条的相邻分条,所谓相邻分条是指逻辑地址与所述分条的逻辑地址连续的分条。判断其他分条所包含的数据是否与该分条相邻的分条所包含的数据属于同一个IO请求也可以理解为,判断该分条中的数据所属的IO请求是否还包含一部分分布在其他分条中的数据。在实际应用中,每个逻辑块中都会包含小部分空间用于保存数据的描述信息,所述描述信息用于描述该逻辑块中保存的数据,具体而言,这些描述信息可以包括但不限于数据所属的IO请求的标识(例如所述IO请求的地址信息)、所述数据位于该逻辑块中的起始地址以及大小。根据这些描述信息,控制器11可以判断出属于同一个IO请求的数据有没有分布在两个分条。以分条单元的大小为8KB为例,如果某个逻辑块中的描述信息包括某个IO请求的数据的起始地址为7KB,大小为2KB,那么可以判定该数据的地址超出了该分条的边界,因此所述IO请求包含的数据分布在两个分条中。
对于那些已经被去映射命令或者trim命令释放掉的实际地址中存储的数据,如果被读数据请求要求读取,则返回特殊标记的数据(例如全零)以响应该读数据请求。在某些场景中,控制器11需要对分条中的数据进行重构处理。所谓数据重构是指,当分条中的一个或多个(数量视RAID类型而定)分条单元发生故障时,可以根据剩余的正常的分条单元以及RAID算法重新计算获得发生故障的分条单元。在数据重构的场景下,控制器11会进行数据校验。如果校验不成功,则读取出各分条单元的数据,若确定分条单元中的数据是执行系统垃圾回收后释放的数据,则默认校验通过,不做处理。若确定分条单元中的数据并非执行系统垃圾回收后释放的数据,则按照现有的流程执行数据重构。
下面结合图5描述本发明实施例提供的系统垃圾回收方法,该方法可以应用在图1所示的闪存阵列中,并可以由图2所示的实施例中的控制器11执行。如图5所示,该方法包含如下步骤:
501:控制器11统计逻辑块组中每个分条所包含的无效数据的数据量。所述逻辑块组可以是所述闪存阵列中的任意一个逻辑块组,也可以是包含无效数据最多的逻辑块组,还可以是固态硬盘组所提供的多个逻辑块组。可以理解的是,当所述逻辑块组是所述闪存阵列中包含无效数据最多的逻辑块组时,系统垃圾回收的效率更高。另外,控制器11可以通过其保存的位图来统计无效数据的数据量。具体可参考上面实施例中关于控制器11利用位图记录数据的有效性中的描述,这里不再赘述。
502:将无效数据的数据量超过设定数量阈值的分条作为系统垃圾回收的目标分条。通过这种方式可以从所述逻辑块组包含的分条中选择一个或多个目标分条以执行系统垃圾回收,回收完成之后再选择下一个无效数据的数据量超过设定数量阈值的分条。另一种实现方式是,控制器11选择包含无效数据最多的分条作为系统垃圾回收的对象,回收完成之后再选择下一个无效数据最多的分条。具体可参考上面实施例中关于控制器11以分条为粒度进行系统垃圾回收的描述,这里不再赘述。
503:控制器11指示固态硬盘组回收所述目标分条。示例性的,控制器11将所述目标分条所述包含的有效数据的旧逻辑地址发送给所述固态硬盘组,所述固态硬盘组从所述旧逻辑地址中读取所述有效数据,并发送给控制器11。控制器11再向固态硬盘组发送写数据请求,该写数据请求中包括控制器11为所述有效数据分配的新逻辑地址。固态硬盘组在收到所述写数据请求之后,将所述有效数据搬移至所述新逻辑地址中。另外,系统垃圾回收的触发条件可以是确定固态硬盘组中的可用空间不足,该步骤可以发生在503之前。具体可参考上面实施例中关于系统垃圾回收的触发条件。所述可用空间是指所述闪存阵列的总的存储空间减去已被占用的空间。然后,控制器11向所述固态硬盘组发送去映射命令。所述去映射命令用于通知所述固态硬盘组删除所述目标分条的旧逻辑地址与实际地址之间的对应关系,另外,固态硬盘组还可以将所述实际地址标记为不包含有效数据的地址,在固态硬盘22进行内部的垃圾回收时则可以不搬移所述地址中的有效数据。具体可以参考上面实施例中关于控制器11以分条为粒度进行系统垃圾回收的具体描述,这里不再复述。
在503执行完毕之后,所述目标分条的逻辑地址和实际地址之间的对应关系就被解除了,固态硬盘22会定期执行内部的垃圾回收,擦除不包含有效数据的块。此时,所述目标分条所占用的实际地址可以被回收以接收新的数据。然而,需要说明的是,虽然所述目标分条的实际地址被回收了,但是它的逻辑地址并没有被释放,直到所述目标分条所在逻辑块组的逻辑地址被释放。释放后的逻辑地址可以分配给所述固态硬盘组中的其他逻辑块组。
当所述目标分条被回收之后,控制器11可以选择下一个目标分条作为回收对象。所述下一个目标分条可以是所述逻辑块组包含无效数据最多的分条,也可以是无效数据的数据超过所述设定数量阈值的分条。具体的,可以重复502至504的操作,这里不再赘述。
可选的,图5所示的系统垃圾回收可应用在vblock技术领域,也就是说该方法所应用的闪存阵列所包含的固态硬盘22提供给控制器11的逻辑地址的数量大于所述固态硬盘的实际地址的数量。
本发明实施例还提供另一种系统垃圾回收方法,该方法可应用在图1所示的闪存阵列中,以及由图2所示的实施例中的控制器11执行。如图6所示,该方法可以包含如下步骤。
601:控制器11判断固态硬盘组所提供的逻辑地址的使用情况是否满足第一设定条件。这里的第一设定条件可以是判断固态硬盘组所提供的逻辑地址中的可分配的逻辑地址的数量是否高于第一地址阈值,也可以判断固态硬盘组所提供的逻辑地址中的已使用的逻辑地址的数量是否高于第二地址阈值,还可以是判断可分配的逻辑地址的数量占总的逻辑地址的数量的百分比超过设定的地址阈值。具体的可参考上面实施例中关于以逻辑块组为单位执行系统垃圾回收的描述,这里不再赘述。
602:当所述固态硬盘组所提供的可分配的逻辑地址的数量高于设定地址阈值时,以分条为单位指示所述固态硬盘组进行垃圾回收。具体的,可参考图5所示的501至503的描述,以及上面实施例中关于控制器11以分条为粒度进行垃圾回收的描述,这里不再赘述。并且,由前面的描述可知,以分条为单位的系统垃圾回收所造成的写放大小于以逻辑块组为单位的系统垃圾回收。另外,当所述固态硬盘组所提供的可分配的逻辑地址的数量低于所述设定地址阈值时,则以逻辑块组为单位指示所述固态硬盘组进行垃圾回收。具体的,可参考上面实施例中关于以逻辑块组为粒度进行系统垃圾回收的描述,这里不再赘述。分条被回收后,其逻辑地址并不能立即被回收,需等到所述分条所在的逻辑块组所包含的所有分条都被回收后,其逻辑地址才能被释放。所以随着用户数据的增多,控制器11可分配的逻辑地址会逐渐减少,当可分配的逻辑地址的数量低于设定地址阈值时,则以逻辑块组为单位进行垃圾回收,以增加可分配的逻辑地址的数量。
可选的,在601之前,控制器11还可以判断所述固态硬盘组的可用空间是否满足第二设定条件。这里的第二设定条件即系统垃圾回收的触发条件,当所述第二设定条件被满足时,控制器11执行601至602。具体的,这里的第二设定条件可参考上面实施例中关于系统垃圾回收的触发条件的描述。
可选的,图6所示的系统垃圾回收可应用在vblock技术领域,也就是说该方法所应用的闪存阵列所包含的固态硬盘22提供给控制器11的逻辑地址的数量大于所述固态硬盘的实际地址的数量。具体的,可参考上面实施例中关于采用虚拟块技术的描述,这里不再赘述。
本发明实施例还提供了一种系统垃圾回收装置,该装置位于图1所示的闪存阵列的控制器11中,所述闪存阵列包括所述控制器11和固态硬盘组,所述固态硬盘组包括多个固态硬盘22,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条(可参见图3)。示例性的,如图7所示,该装置包括:统计模块701,选择模块702,指示模块703。
其中,统计模块701,用于统计所述多个分条中每个分条所包含的无效数据的数据量,具体的,可参见图5所示的501的描述,以及上面实施例中关于控制器11利用位图记录数据的有效性中的描述。选择模块702,用于从所述多个分条中选择至少一个目标分条,所述目标分条是所述多个分条中包含的无效数据超过设定数量阈值的分条,可参见图5所示的502的描述,以及上面实施例中关于控制器11以分条为粒度进行系统垃圾回收的描述。指示模块703,用于指示所述固态硬盘组回收所述目标分条,以解除所述目标分条的逻辑地址与所述目标分条的实际地址之间的对应关系;以及保持所述目标分条的逻辑地址不释放,直到所述逻辑块组的逻辑地址被释放,可参见图5所示的503的描述,以及上面实施例中关于控制器11以分条为粒度进行系统垃圾回收的描述。
可选的,指示模块703还用于在所述指示所述固态硬盘组回收所述目标分条之前,确定所述固态硬盘组中的可用空间不足,具体的,可参考上面实施例中关于系统垃圾回收的触发条件的描述。
可选的,该装置还可以包括释放模块704,所述释放模块704,用于当所述逻辑块组所包含的所有分条中均完成回收时,释放所述控制器分配给所述逻辑块组的逻辑地址,所述目标分条的逻辑地址是所述逻辑块组的逻辑地址的子集。
可选的,指示模块703具体用于指示所述固态硬盘组回收所述目标分条包括:指示所述固态硬盘组将目标分条中的有效数据搬移至新分配的第一逻辑地址中。
可选的,指示模块703还用于确定所述目标分条中的数据所属的IO请求;当所述IO请求包含的部分数据存储在其他分条时,指示所述固态硬盘组将所述部分数据中的有效数据搬移至新分配的第二逻辑地址中,所述第二逻辑地址与所述第一逻辑地址连续。具体的,可参考上面实施例中关于保证数据对齐的描述,这里不再赘述。
图7所示的各个模块均可以由图2所示处理器112单独执行,也可以由处理器112调用存储器111中的程序执行。
另外,图7所示的系统垃圾回收装置还具有另一种实现方式。在这种实现方式中,统计模块701用于判断固态硬盘组所提供的逻辑地址的使用情况是否满足第一设定条件。具体的,可参考图6所示601以及上面实施例中关于以逻辑块组为单位执行系统垃圾回收的描述,这里不再赘述。指示模块703用于当所述固态硬盘组所提供的可分配的逻辑地址的数量高于设定地址阈值时,以分条为单位指示所述固态硬盘组进行垃圾回收;以及当所述固态硬盘组所提供的可分配的逻辑地址的数量低于所述设定地址阈值时,以逻辑块组为单位指示所述固态硬盘组进行垃圾回收。具体的,可参考图6所示的602的描述,以及上面实施例中关于控制器11以分条为粒度进行垃圾回收的描述,以及上面实施例中关于以逻辑块组为粒度进行系统垃圾回收的描述。
具体的,当以分条为粒度进行垃圾回收时,统计模块701,还用于统计所述多个分条中每个分条所包含的无效数据的数据量,具体的,可参见图5所示的501的描述,以及上面实施例中关于控制器11利用位图记录数据的有效性中的描述。选择模块702,用于从所述多个分条中选择至少一个目标分条,所述目标分条是所述多个分条中包含的无效数据超过设定数量阈值的分条,可参见图5所示的502的描述,以及上面实施例中关于控制器11以分条为粒度进行系统垃圾回收的描述。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、光盘。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,本领域普通技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (43)

1.一种系统控制器,其特征在于,包括:
处理器和接口;
所述接口用于和固态硬盘组通信,所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条;
所述处理器用于:
统计所述多个分条中每个分条所包含的无效数据的数据量;
从所述多个分条中选择目标分条,所述目标分条是所述多个分条中包含的无效数据超过设定数量阈值的分条;
指示所述固态硬盘组搬移所述目标分条中的有效数据,并指示所述固态硬盘组解除所述目标分条的逻辑地址与所述目标分条的实际地址之间的对应关系;
保持所述目标分条的逻辑地址不释放,直到所述逻辑块组的逻辑地址被释放。
2.根据权利要求1所述的系统控制器,其特征在于,所述多个固态硬盘中的每个固态硬盘提供给所述系统控制器的逻辑地址的数量大于所述固态硬盘的实际地址的数量。
3.根据权利要求1所述的系统控制器,其特征在于,所述逻辑块组包括多个逻辑块,每个逻辑块来自不同的固态硬盘。
4.根据权利要求1所述的系统控制器,其特征在于,所述处理器还用于在所述指示所述固态硬盘组回收所述目标分条之前,确定所述固态硬盘组中的可用空间不足。
5.根据权利要求1所述的系统控制器,其特征在于,所述处理器还用于当所述逻辑块组所包含的所有分条中均完成回收时,释放所述处理器分配给所述逻辑块组的逻辑地址,所述目标分条的逻辑地址是所述逻辑块组的逻辑地址的子集。
6.根据权利要求5所述的系统控制器,其特征在于,所述处理器还用于将所述释放的逻辑地址分配给所述固态硬盘组中的其他逻辑块组。
7.根据权利要求1所述的系统控制器,其特征在于,所述系统控制器指示所述固态硬盘组搬移所述目标分条中的有效数据具体包括:
指示所述固态硬盘组读取所述目标分条中的有效数据;
向所述固态硬盘组发送写数据指令,所述写数据指令包括第一逻辑地址以及所述有效数据。
8.根据权利要求7所述的系统控制器,其特征在于,所述处理器还用于:
确定所述目标分条中的数据所属的IO请求;
当所述IO请求包含的部分数据存储在其他分条时,指示所述固态硬盘组将所述部分数据中的有效数据搬移至新分配的第二逻辑地址中,所述第二逻辑地址与所述第一逻辑地址连续。
9.根据权利要求8所述的系统控制器,其特征在于,所述其他分条是所述目标分条的相邻分条,所述相邻分条包含的分条单元的逻辑地址与所述目标分条包含的分条单元的逻辑地址连续。
10.一种系统控制器,其特征在于,包括:
处理器和接口;
所述接口用于和固态硬盘组通信,所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条;
所述处理器用于判断所述固态硬盘组所提供的逻辑地址的使用情况是否满足第一设定条件,当所述固态硬盘组所提供的逻辑地址的使用情况满足第一设定条件时,以分条为单位指示所述固态硬盘组进行垃圾回收,并保持分条的逻辑地址不释放,直到所述逻辑块组的逻辑地址被释放;
所述处理器还用于当所述固态硬盘组所提供的逻辑地址的使用情况不满足所述第一设定条件时,以逻辑块组为单位指示所述固态硬盘组进行垃圾回收,其中,已回收的逻辑块组所包括的所有分条的逻辑地址均被释放。
11.根据权利要求10所述的系统控制器,其特征在于,所述处理器还用于在所述判断所述固态硬盘组所提供的逻辑地址的使用情况是否满足第一设定条件之前,确定所述固态硬盘组的可用空间满足第二设定条件。
12.根据权利要求11所述的系统控制器,其特征在于,所述第二设定条件包括所述固态硬盘组的可用空间低于设定的空间阈值。
13.根据权利要求11所述的系统控制器,其特征在于,所述第二设定条件包括:至少一个分条中包含的无效数据的数据量达到设定的阈值。
14.根据权利要求10所述的系统控制器,其特征在于,所述第一设定条件包括所述固态硬盘组所提供的逻辑地址中的可分配的逻辑地址的数量低于设定的第一地址阈值。
15.根据权利要求10所述的系统控制器,其特征在于,所述第一设定条件包括所述固态硬盘组所提供的逻辑地址中的已使用的逻辑地址的数量高于设定的第二地址阈值。
16.根据权利要求10所述的系统控制器,其特征在于,所述多个固态硬盘中的每个固态硬盘提供给所述系统控制器的逻辑地址的数量大于所述固态硬盘的实际地址的数量。
17.根据权利要求10所述的系统控制器,其特征在于,所述逻辑块组包括多个逻辑块,每个逻辑块来自不同的固态硬盘。
18.一种系统垃圾回收方法,其特征在于,所述方法应用于闪存阵列中,所述闪存阵列包括控制器和固态硬盘组,所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条;所述方法由所述控制器执行,包括:
统计所述多个分条中每个分条所包含的无效数据的数据量;
从所述多个分条中选择至少一个目标分条,所述目标分条是所述多个分条中包含的无效数据超过设定数量阈值的分条;
指示所述固态硬盘组搬移所述目标分条中的有效数据,并指示所述固态硬盘组解除所述目标分条的逻辑地址与所述目标分条的实际地址之间的对应关系;
保持所述目标分条的逻辑地址不释放,直到所述逻辑块组的逻辑地址被释放。
19.根据权利要求18所述的方法,其特征在于,所述多个固态硬盘中的每个固态硬盘提供给所述控制器的逻辑地址的数量大于所述固态硬盘的实际地址的数量。
20.根据权利要求18所述的方法,其特征在于,所述逻辑块组包括多个逻辑块,每个逻辑块来自不同的固态硬盘。
21.根据权利要求18所述的方法,其特征在于,所述方法还包括在所述指示所述固态硬盘组回收所述目标分条之前,确定所述固态硬盘组中的可用空间不足。
22.根据权利要求18所述的方法,其特征在于,所述方法还包括当所述逻辑块组所包含的所有分条中均完成回收时,释放所述控制器分配给所述逻辑块组的逻辑地址,所述目标分条的逻辑地址是所述逻辑块组的逻辑地址的子集。
23.根据权利要求18所述的方法,其特征在于,所述指示所述固态硬盘组搬移所述目标分条中的有效数据包括:指示所述固态硬盘组读取所述目标分条中的有效数据;向所述固态硬盘组发送写数据指令,所述写数据指令包括第一逻辑地址以及所述有效数据。
24.根据权利要求23所述的方法,其特征在于,所述方法还包括:
确定所述目标分条中的数据所属的IO请求;
当所述IO请求包含的部分数据存储在其他分条时,指示所述固态硬盘组将所述部分数据中的有效数据搬移至新分配的第二逻辑地址中,所述第二逻辑地址与所述第一逻辑地址连续。
25.根据权利要求24所述的方法,其特征在于,所述其他分条是所述目标分条的相邻分条,所述相邻分条包含的分条单元的逻辑地址与所述目标分条包含的分条单元的逻辑地址连续。
26.一种系统垃圾回收方法,其特征在于,所述方法应用于闪存阵列中,所述闪存阵列包括控制器和固态硬盘,所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条;所述方法由所述控制器执行,包括:
判断所述固态硬盘组所提供的逻辑地址的使用情况是否满足第一设定条件;
当所述固态硬盘组所提供的逻辑地址的使用情况满足第一设定条件时,以分条为单位指示所述固态硬盘组进行垃圾回收,并保持分条的逻辑地址不释放,直到所述逻辑块组的逻辑地址被释放;
当所述固态硬盘组所提供的逻辑地址的使用情况不满足第一设定条件时,以逻辑块组为单位指示所述固态硬盘组进行垃圾回收,其中,已回收的逻辑块组所包括的所有分条的逻辑地址均被释放。
27.根据权利要求26所述的方法,其特征在于,在所述判断所述固态硬盘组所提供的逻辑地址的使用情况是否满足第一设定条件之前,还包括:
确定所述固态硬盘组的可用空间满足第二设定条件。
28.根据权利要求27所述的方法,其特征在于,所述第二设定条件包括所述固态硬盘组的可用空间低于设定的空间阈值。
29.根据权利要求27所述的方法,其特征在于,所述第二设定条件包括:至少一个分条中包含的无效数据的数据量达到设定的阈值。
30.根据权利要求26所述的方法,其特征在于,所述第一设定条件包括所述固态硬盘组所提供的逻辑地址中的可分配的逻辑地址的数量低于设定的第一地址阈值。
31.根据权利要求26所述的方法,其特征在于,所述第一设定条件包括所述固态硬盘组所提供的逻辑地址中的已使用的逻辑地址的数量高于设定的第二地址阈值。
32.根据权利要求26所述的方法,其特征在于,所述逻辑块组包括多个逻辑块,每个逻辑块来自不同的固态硬盘。
33.根据权利要求26所述的方法,其特征在于,所述多个固态硬盘中的每个固态硬盘提供给系统控制器的逻辑地址的数量大于所述固态硬盘的实际地址的数量。
34.一种系统垃圾回收装置,其特征在于,所述装置位于闪存阵列的控制器中,所述闪存阵列包括所述控制器和固态硬盘组,所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条;所述装置包括:
统计模块,用于统计所述多个分条中每个分条所包含的无效数据的数据量;
选择模块,用于从所述多个分条中选择至少一个目标分条,所述目标分条是所述多个分条中包含的无效数据超过设定数量阈值的分条;
指示模块,用于指示所述固态硬盘组搬移所述目标分条中的有效数据,并指示所述固态硬盘组解除所述目标分条的逻辑地址与所述目标分条的实际地址之间的对应关系;以及保持所述目标分条的逻辑地址不释放,直到所述逻辑块组的逻辑地址被释放。
35.根据权利要求34所述的装置,其特征在于,所述多个固态硬盘中的每个固态硬盘提供给所述控制器的逻辑地址大于所述固态硬盘的实际地址。
36.根据权利要求34所述的装置,其特征在于,所述逻辑块组包括多个逻辑块,每个逻辑块来自不同的固态硬盘。
37.根据权利要求34所述的装置,其特征在于,所述指示模块还用于在所述指示所述固态硬盘组回收所述目标分条之前,确定所述固态硬盘组中的可用空间不足。
38.根据权利要求34所述的装置,其特征在于,所述装置还包括释放模块;
所述释放模块,用于当所述逻辑块组所包含的所有分条中均完成回收时,释放所述控制器分配给所述逻辑块组的逻辑地址,所述目标分条的逻辑地址是所述逻辑块组的逻辑地址的子集。
39.根据权利要求34所述的装置,其特征在于,所述指示模块在指示所述固态硬盘组搬移所述目标分条中的有效数据时,具体用于指示所述固态硬盘组回收所述目标分条包括:指示所述固态硬盘组读取所述目标分条中的有效数据;向所述固态硬盘组发送写数据指令,所述写数据指令包括第一逻辑地址以及所述有效数据。
40.根据权利要求39所述的装置,其特征在于,所述指示模块还用于:
确定所述目标分条中的数据所属的IO请求;
当所述IO请求包含的部分数据存储在其他分条时,指示所述固态硬盘组将所述部分数据中的有效数据搬移至新分配的第二逻辑地址中,所述第二逻辑地址与所述第一逻辑地址连续。
41.根据权利要求40所述的装置,其特征在于,所述其他分条是所述目标分条的相邻分条,所述相邻分条包含的分条单元的逻辑地址与所述目标分条包含的分条单元的逻辑地址连续。
42.一种闪存阵列,其特征在于,包括如权利要求1至权利要求9中任一所述的系统控制器以及固态硬盘组,所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条。
43.一种闪存阵列,其特征在于,包括如权利要求10至权利要求17中任一所述的系统控制器以及固态硬盘组,所述固态硬盘组包括多个固态硬盘,所述固态硬盘组包括逻辑块组,所述逻辑块组包括多个分条。
CN201810954801.XA 2018-07-06 2018-08-21 一种系统控制器和系统垃圾回收方法 Active CN110688323B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2021500208A JP7146054B2 (ja) 2018-07-06 2019-01-17 システムコントローラおよびシステムガベージコレクション方法
PCT/CN2019/072095 WO2020007030A1 (zh) 2018-07-06 2019-01-17 一种系统控制器和系统垃圾回收方法
EP19831058.3A EP3798852B1 (en) 2018-07-06 2019-01-17 System controller and system garbage recovery method
US17/119,691 US11321229B2 (en) 2018-07-06 2020-12-11 System controller and system garbage collection method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810739117 2018-07-06
CN201810739117X 2018-07-06

Publications (2)

Publication Number Publication Date
CN110688323A CN110688323A (zh) 2020-01-14
CN110688323B true CN110688323B (zh) 2023-11-17

Family

ID=69107005

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810954801.XA Active CN110688323B (zh) 2018-07-06 2018-08-21 一种系统控制器和系统垃圾回收方法

Country Status (3)

Country Link
EP (1) EP3798852B1 (zh)
JP (1) JP7146054B2 (zh)
CN (1) CN110688323B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930301A (zh) * 2020-06-29 2020-11-13 深圳佰维存储科技股份有限公司 垃圾回收优化方法、装置、存储介质及电子设备
CN113625959B (zh) * 2021-06-30 2023-12-29 济南浪潮数据技术有限公司 一种数据处理方法和装置
CN117472288B (zh) * 2023-12-27 2024-04-16 成都领目科技有限公司 一种基于raid0硬盘组的io写入方法及模型

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103744798A (zh) * 2013-12-17 2014-04-23 记忆科技(深圳)有限公司 固态硬盘的垃圾回收方法
CN105637490A (zh) * 2013-09-03 2016-06-01 桑迪士克科技股份有限公司 用于在闪速存储器装置之间迁移数据的方法和系统
CN107479825A (zh) * 2017-06-30 2017-12-15 华为技术有限公司 一种存储系统、固态硬盘和数据存储方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727245B2 (en) * 2013-03-15 2017-08-08 Avalanche Technology, Inc. Method and apparatus for de-duplication for solid state disks (SSDs)
CN103699337B (zh) 2013-12-04 2017-01-18 华为技术有限公司 一种基于独立磁盘冗余阵列raid的写控制方法及系统
ES1140083Y (es) * 2015-04-27 2015-09-08 Farran Ignacio Florensa Descompatactador tetrafunción
JP6283771B2 (ja) 2015-04-28 2018-02-21 株式会社日立製作所 ストレージ装置
US10185658B2 (en) * 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
WO2017173623A1 (zh) * 2016-04-07 2017-10-12 华为技术有限公司 用于处理存储设备中分条的方法和存储设备
US10474362B2 (en) * 2016-10-14 2019-11-12 Smart Modular Technologies, Inc. Flash-based block storage system with trimmed space management and method of operation thereof
CA2978845C (en) 2016-11-11 2021-08-31 Huawei Technologies Co., Ltd. Storage system and system garbage collection method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105637490A (zh) * 2013-09-03 2016-06-01 桑迪士克科技股份有限公司 用于在闪速存储器装置之间迁移数据的方法和系统
CN103744798A (zh) * 2013-12-17 2014-04-23 记忆科技(深圳)有限公司 固态硬盘的垃圾回收方法
CN107479825A (zh) * 2017-06-30 2017-12-15 华为技术有限公司 一种存储系统、固态硬盘和数据存储方法

Also Published As

Publication number Publication date
JP2021529406A (ja) 2021-10-28
CN110688323A (zh) 2020-01-14
JP7146054B2 (ja) 2022-10-03
EP3798852B1 (en) 2024-04-24
EP3798852A1 (en) 2021-03-31
EP3798852A4 (en) 2021-08-25

Similar Documents

Publication Publication Date Title
US20240061574A1 (en) Memory system for controlling nonvolatile memory
CN111164574B (zh) 基于存储设备内部地址的冗余编码条带
CN106874217B (zh) 存储器系统及控制方法
CN106874211B (zh) 存储器系统及非易失性存储器的控制方法
US9792172B2 (en) Memory system and method of controlling nonvolatile memory
US11321229B2 (en) System controller and system garbage collection method
US7409489B2 (en) Scheduling of reclaim operations in non-volatile memory
US11928053B2 (en) System garbage collection method and method for garbage collection in solid state disk
WO2014102882A1 (en) Storage apparatus and storage control method
WO2018189858A1 (ja) ストレージシステム
CN109086219B (zh) 去分配命令处理方法及其存储设备
WO2022017002A1 (zh) 一种垃圾回收方法及装置
US10621085B2 (en) Storage system and system garbage collection method
US20230259453A1 (en) Memory system and method of controlling nonvolatile memory
CN110688323B (zh) 一种系统控制器和系统垃圾回收方法
CN109558333B (zh) 具有可变额外存储空间的固态存储设备命名空间
US20190243758A1 (en) Storage control device and storage control method
CN113490922B (zh) 固态硬盘写放大优化方法
JP6817340B2 (ja) 計算機
CN110888591B (zh) 数据储存装置以及非挥发式存储器控制方法
CN110580228A (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
GR01 Patent grant
GR01 Patent grant