CN108475230A - 一种存储系统和系统垃圾回收方法 - Google Patents
一种存储系统和系统垃圾回收方法 Download PDFInfo
- Publication number
- CN108475230A CN108475230A CN201680003336.0A CN201680003336A CN108475230A CN 108475230 A CN108475230 A CN 108475230A CN 201680003336 A CN201680003336 A CN 201680003336A CN 108475230 A CN108475230 A CN 108475230A
- Authority
- CN
- China
- Prior art keywords
- controller
- section
- hard disk
- solid state
- state hard
- 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.)
- Granted
Links
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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
-
- 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/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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- 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/7202—Allocation control and policies
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
Abstract
一种存储系统及系统垃圾回收方法。存储系统包括第一控制器、第二控制器和固态硬盘。第一控制器或第二控制器以段为单位管理所述固态硬盘的存储空间。第一控制器用于对所述第一控制器管理的段中的多个段进行系统垃圾回收,所述第二控制器,用于当所述第一控制器进行系统垃圾回收时,对所述第二控制器管理的段中的多个段进行系统垃圾回收。第一控制器管理的段中的多个段与第二控制器管理的段中的多个段是在相同的时间段内分配的。因此,可以减少固态硬盘内部出现的写放大的次数。
Description
本申请涉及存储技术领域,特别是一种存储系统和系统垃圾回收方法。
闪存阵列是指包含固态硬盘和至少两个控制器的存储系统。其中,控制器以段(英文:segment)的形式管理固态硬盘的存储空间。段是由控制器分配的一段连续的逻辑地址的区域。段也是系统垃圾回收的基本单位。每个控制器都可以将接收的数据写入其管理的段中。固态硬盘从各个控制器接收的数据按照接收的时间顺序连续写入固态硬盘的块(英文:block)中。因此,在一个时间段内,各个控制器发送的数据可能被写入同一个块中。因此,每个块中存储的数据可能对应不同控制器管理的段。
闪存阵列进行系统垃圾回收并释放一些段后,对于一个固态硬盘的一个块来说,这个块并没有被擦除干净,因为它仍然包含其他未进行系统垃圾回收的段的数据。所以,当固态硬盘进行自己的垃圾回收时,仍然需要将这个块中其他未进行系统垃圾回收的段的数据写入空白的块中。导致固态硬盘内部出现的写放大的次数多。
发明内容
本申请提出了一种存储系统和系统垃圾回收方法,可以减少固态硬盘内部的写放大的次数。
本申请第一方面提供了一种存储系统。该存储系统包括第一控制器、第二控制器和固态硬盘。所述固态硬盘与所述第一控制器连接,并且所述固态硬盘与所述第二控制器连接。第一控制器或第二控制器以段为单位管理所述固态硬盘的存储空间。第一控制器用于对所述第一控制器管理的段中的多个段进行系统垃圾回收。当第一控制器进行系统垃圾回收时,第二控制器对第
二控制器管理的段中的多个段进行系统垃圾回收。其中,第一控制器管理的段中的多个段是在一个时间段内由第一控制器分配的,第二控制器管理的段中的多个段也是在所述时间段内由第二控制器分配的。
在本申请提供的存储系统中,第一控制器对其管理的段中的多个段进行系统垃圾回收,第二控制器也对其管理的段中的多个段进行系统垃圾回收,并且第一控制器进行系统垃圾回收的段与第二控制器进行系统垃圾回收的段是在相同的时间段内分配的。由于段是第一控制器或第二控制器管理固态硬盘的存储空间的单位,因此将数据写入段就是将数据写入固态硬盘的存储空间。第一控制器和第二控制器进行系统垃圾回收的段是在相同的时间段内分配的,因此这些段的数据写入固态硬盘的时间相近。进一步地,由于固态硬盘在写入数据时是按照接收数据的时间顺序连续写入一个或多个块,因此,相同的时间段内分配的段被执行系统垃圾回收之后,这些段所对应的块中的有效数据已经被全部复制到其他块中,这些段所对应的块中的数据就都变成无效数据了。当固态硬盘进行内部的垃圾回收时,被执行系统垃圾回收的段所对应的块无需再次进行有效数据的复制,从而减少了固态硬盘内部的写放大的次数。
结合第一方面,在第一方面的第一种实现中,第一控制器管理的段中的多个段是所述时间段内由第一控制器分配的所有的段。并且,第二控制器管理的段中的多个段是所述时间段内由第二控制器分配的所有的段。由此,可以保证在所述时间段内分配的所有的段都被系统垃圾回收了,那么固态硬盘中也有更多的块中的有效数据被全部复制到其他块,从而称为无效数据。
结合第一方面或者第一方面的第二种实现,在第一方面的第三种实现中,所述时间段在所述第一控制器或者第二控制器在所述时间段内分配的段的数量达到第一预设阈值时结束。按照这种实现方式,第一控制器和第二控制器便于统计各自分配的段的数量,操作方便。
结合第一方面或者第一方面的第二种实现,在第一方面的第四种实现
中,所述时间段在第一控制器以及第二控制器在所述时间段内分配的段的数量的总和达到第二预设阈值时结束。与第一方面的第三种实现方式相比,在第一方面的第四种实现方式中,第一控制器或者第二控制器需要给对方发送消息以查询对方分配的段的数量,操作起来较为复杂。然而,按照这种实现方式,在各个时间段内分配的段的数量上限相同。后续统计每个段组所包含的无效数据的数据量,从而选择出包含无效数据最多的段组时会更加准确。
结合第一方面或者第一方面的以上任意一种实现,在第一方面的第五种实现中,第一控制器管理的段中的多个段与第二控制器管理的段中的多个段属于同一个段组。这个段组包含的无效数据的数据量大于其他任意一个段组包含的无效数据的数据量。在第一方面的第五种实现中,第一控制器可以向第二控制器发送消息以查询第二控制器管理的段所包含的无效数据的数据量,第一控制器通过计算自己管理的段所包含的无效数据的数据量与第二控制器管理的段所包含的无效数据的数据量的和,从而得到包含无效数据最多的段组。这就保证了进行系统垃圾回收的段组是包含无效数据最多的段组,提高了系统垃圾回收的效率。
结合第一方面或者第一方面的第一种实现至第四种实现的任意一个,在第一方面的第六种实现中,第一控制器管理的段中的多个段与第二控制器管理的段中的多个段属于同一个段组。第一控制器管理的段中的多个段包含的无效数据的数据量大于第一控制器管理的段中的属于其他任意一个段组的多个段包含的无效数据的数据量。与第一方面的第五种实现相比,第一控制器只需统计自己管理的段所包含的无效数据的数据量,不需要向第二控制器发送消息以查询第二控制器管理的段所包含的无效数据的数据量。
结合第一方面的第五种实现或者第一方面的第六种实现,在第一方面的第七种实现中,第一控制器将所述段组的组标识发送给第二控制器。第二控制器根据预先保存的所述组标识与第二控制器管理的段中的多个段中每个段的标识之间的对应关系,确定第二控制器管理的段中的所述多个段。在第
七种实现中,由第一控制器确定系统垃圾回收的段组的组标识,将这个组标识发送给第二控制器,第二控制器可以根据所述组标识查找属于这个段组的多个段。
结合第一方面的第七种实现,在第一方面的第八种实现中,第一控制器管理的每个段的标识是第一控制器分配的,第一控制器管理的每个段的标识是第二控制器分配的。
结合第一方面的第七种实现,在第一方面的第九种实现中,第一控制器管理的每个段的标识是第一控制器分配的。第二控制器管理的每个段的标识也是第一控制器分配的,例如,第二控制器向第一控制器发送申请段标识的请求,以获得标识。
结合第一方面或者第一方面的以上任意一种实现,在第一方面的第十种实现中,所述第一控制器在执行系统垃圾回收时的具体操作是:将所述第一控制器管理的段中的多个段的每个段包含的有效数据的源逻辑地址发送给所述固态硬盘。第一控制器为所述有效数据分配目标逻辑地址并将所述目标逻辑地址发送给所述固态硬盘,以指示所述固态硬盘将所述有效数据从所述源逻辑地址复制到所述目标逻辑地址。然后,第一控制器向所述固态硬盘发送去映射命令。所述去映射命令包括所述第一控制器管理的段中的多个段的每个段的逻辑地址区间,以指示所述固态硬盘删除所述固态硬盘保存的所述每个段的逻辑地址与实际地址之间的对应关系。
本申请第二方面提供了一种系统垃圾回收方法。该方法应用于第一方面提供的存储系统中,由第一方面的第一控制器和第二控制器执行。
本申请第三方面提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可以由上述第一方面的第一控制器和第二控制器执行,并用于执行上述第二方面的至少一种方法。
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要
使用的附图作简单地介绍。
图1是本发明实施例提供的应用场景图;
图2是本发明实施例提供的控制器的结构图;
图3是本发明实施例提供的写数据的方法流程图;
图4是本发明实施例提供的系统垃圾回收的方法流程图。
本发明实施例提出了一种存储系统和垃圾回收方法,可以减少固态硬盘内部的写放大的次数。
图1描绘了本发明实施例提供的存储系统的组成图,图1所示的存储系统包括至少两个控制器(如图所示的控制器11以及控制器22)和多个固态硬盘44。
控制器11和控制器22分别通过存储区域网络(英文:storage area network,SAN)与主机(图中未示出)连接。控制器11与控制器22之间可以通信。控制器11和控制器22具有相同的物理结构和功能。以控制器11为例,它可以是一种计算设备,如服务器、台式计算机等等。在控制器11上安装有操作系统以及应用程序。控制器11可以接收来自主机的输入输出(I/O)请求。控制器11还可以存储I/O请求中携带的数据(如果有的话),并且将该数据写入固态硬盘44中。
固态硬盘(英文:Solid State Disk,SSD)是以闪存(英文:flash memory)芯片为存储介质的存储器,又名固态驱动器(Solid State Drive,SSD)。
图1仅是示例性说明,在实际应用中存储系统可包含多个控制器,每个控制器的物理结构和功能与控制器11类似,并且本实施例并不限定控制器11与控制器22之间,以及任意一个控制器与固态硬盘44之间的连接方式。只要各个控制器之间,以及各个控制器和固态硬盘44之间能够相互通信。
图2是控制器11的结构示例图,如图2所示,控制器11包括接口卡110、
处理器112和接口卡113。
接口卡110用于和主机通信,控制器11可以通过接口卡110接收主机的操作指令。处理器112可能是一个中央处理器(英文:central processing unit,CPU)。在本发明实施例中,处理器112可以用于接收来自主机的I/O请求、处理所述I/O请求。所述I/O请求可以是写数据请求或者读数据请求,处理器112还可以将写数据请求中的数据发送给固态硬盘44。此外,处理器112还可以用于执行系统垃圾回收操作。
可选地,控制器11还可以包括存储器111。存储器111用于临时存储从主机接收的数据或从固态硬盘44读取的数据。控制器11接收主机发送的多个写数据请求时,可以将所述多个写数据请求中的数据暂时保存在存储器111中。当存储器111的容量达到一定阈值时,将存储器111存储的数据以及为所述数据分配的逻辑地址发送给固态硬盘44。固态硬盘44存储所述数据。存储器111包括易失性存储器,非易失性存储器或其组合。易失性存储器例如为随机访问存储器(英文:random-access memory,RAM)。非易失性存储器例如软盘、硬盘、固态硬盘(solid state disk,SSD)、光盘等各种可以存储程序代码的机器可读介质。存储器111具有保电功能,保电功能是指系统发生掉电又重新上电时,存储器111中存储的数据也不会丢失。
接口卡113,用于和固态硬盘44通信,控制器11可以通过接口卡113将写数据请求(包括数据以及控制器11为所述数据分配的逻辑地址)发送给固态硬盘44存储。
控制器22的结构,以及各个部件的功能与控制器11类似,这里不再赘述。另外,控制器11和控制器22都属于系统控制器,系统控制器是独立的设备,不同于固态硬盘中的控制芯片。本实施例将固态硬盘的控制芯片称为固态硬盘控制器。如无特别指明,本实施例中的控制器都是指系统控制器。
固态硬盘44包括固态硬盘控制器和存储介质。其中,固态硬盘控制器用于执行控制器11或控制器22发送的写数据请求或者读数据请求等操作。
固态硬盘控制器中包含闪存翻译层(英文:flash translation layer,FTL)。闪存翻译层用于保存有数据的逻辑地址与实际地址之间的对应关系。因此,闪存翻译层用于将控制器发送的写数据请求或者读数据请求中的逻辑地址转化为固态硬盘中数据的实际地址。数据的逻辑地址是由控制器分配的,一个段的逻辑地址区间的子集。数据的逻辑地址包括起始逻辑地址和长度,起始逻辑地址指示所述数据位于的所述段的位置,长度代表所述数据的大小。数据的实际地址可以是固态硬盘中该数据的物理地址,也可以是在所述物理地址的基础上经过虚拟化,只对固态硬盘控制器可见的地址。该经过虚拟化的实际地址对系统控制器不可见。
存储介质通常包括一个或多个闪存芯片。每个闪存芯片包括若干个块。闪存芯片在读取或写入时是以一个页(英文:page)为基础的,但擦除操作只能以一个块为基础,擦除操作是指将这个块的所有位都设置为“1”。在擦除之前,固态硬盘控制器需要先将这个块中的有效数据复制到另一个块的空白页中去。块中的有效数据是指该块中保存的没有被修改过的数据,这部分数据可能会被读取。块中的无效数据是指该块中保存的已经被修改过的数据,这部分数据不可能会被读取。
每个块包含多个页(英文:page)。固态硬盘在执行写数据请求时,是以页为单位来写数据的。举例来说,控制器11向固态硬盘控制器发送一个写数据请求。所述写数据请求包括数据的逻辑地址。固态硬盘控制器在接收所述写数据请求之后,按照接收的时间顺序将所述数据连续写入一个或多个块中。连续写入一个或多个块是指,固态硬盘查找一个空白的块,将数据写入所述空白的块,直至将所述空白的块填满,当所述数据的大小超过块的容量时,固态硬盘控制器再查找下一个空白的块,继续写入。闪存翻译层建立并保存所述逻辑地址与写入所述数据的页的实际地址之间的对应关系。当控制器11向固态硬盘控制器发送读数据请求,要求读取所述数据时,所述读数据请求中包括所述逻辑地址。固态硬盘控制器根据所述逻辑地址、以及所
述逻辑地址与实际地址之间的对应关系读取所述数据,并将该数据发送给控制器11。
固态硬盘中的块、页以及实际地址对控制器来说是不可见的,因此控制器不能直接访问固态硬盘中的块和页。为了进行系统垃圾回收,系统控制器将固态硬盘的存储空间按照设定大小划分为若干个段,段是系统垃圾回收的基本单位,每个段均是多个逻辑地址的集合,并且这些逻辑地址是连续的。例如,所述设定大小是1024KB。一个段对应的逻辑地址区间是0KB-1023KB;另一个段对应的逻辑地址区间是1024KB-2047KB;再一个段对应的逻辑地址区间是2048KB-3071KB,依此类推。
在将数据写入段时,可以以扇区为单位写入。例如,一个扇区包括520个字节。其中512个字节是数据,8个字节是512字节的数据的数据完整性字段(英文:data integrity field,DIF)。也就是说,每次写入的数据须是512个字节的整数倍。如果所述数据的大小不满足512个字节的整数倍,可以添零补足。同样的,从段中读取数据时,也是以扇区为单位读取。另外,当数据写入段之后,需要记录该数据的有效性。数据的有效性是以所述数据是否被修改来确定的。如果所述数据是第一次写入,可以将所述数据记录为有效(称为有效数据)。如果所述数据被修改,则将所述修改前的数据记录为无效(称为无效数据)。具体的,可以用位图记录数据的有效性。例如,位图的每个“位”对应大小为1KB的数据的逻辑地址,当“位”为1时,代表所述逻辑地址中存储的数据有效,当“位”为0时,代表所述逻辑地址中存储的数据无效。
系统垃圾回收是指控制器以段为单位执行垃圾回收。控制器根据位图获取一个段中有效数据的逻辑地址,将所述有效数据的逻辑地址发送给固态硬盘,并且所述控制器为所述有效数据分配新的逻辑地址,发送给所述固态硬盘。所述固态硬盘从旧的逻辑地址中读取所述有效数据,写入所述新的逻辑地址中。然后,控制器再给固态硬盘发送去映射(英文:unmap)命令,所
述去映射命令包括所述待回收的段的逻辑地址区间,固态硬盘接收所述去映射命令之后,删除闪存翻译层中保存的所述逻辑地址区间的逻辑地址与实际地址之间的对应关系。固态硬盘还可以将所述实际地址对应的块标记为不包含有效数据的块。
系统垃圾回收有别于固态硬盘内部的垃圾回收。固态硬盘内部的垃圾回收是由固态硬盘自己完成的,不需要控制器配合。固态硬盘控制器先将各个块中的有效数据复制到空白的块,再擦除原来的块。另外,系统垃圾回收的触发条件通常是存储系统中空闲的段的数量不足(例如,低于某个阈值),而固态硬盘内部的垃圾回收的触发条件是该固态硬盘的空白的块的数量不足。
段通常具有四种状态,分别是空闲(英文:free)、正在写入(英文:writing)、写满(英文:full)和损坏(英文:bad)。空闲状态的段是指无内容的段。正在写入状态的段是指已写入数据但还没有被写满的段。写满状态的段是指全部空间均已被写满的段。正在写入状态的段和写满状态的段经过擦除之后可以成为空闲状态的段。损坏状态的段是指发生损坏不能使用的段。
下面结合图3介绍本实施例提供的写数据的方法,该方法可以应用于图1所示的应用场景中,由图1所示的控制器11或者控制器22执行。示例性的,该方法包括以下步骤:
S301,控制器11接收主机的数据,将数据写入控制器11的存储器111。
具体的,可以由处理器112通过接口卡110接收主机的数据,将其写入存储器111中。通常情况下,所述数据是携带在写数据指令中发送给控制器11的。
S302,当存储器111中的数据的大小达到预先设定的阈值时,控制器11查找正在写入状态的段。由于存储器111的容量有限,当其中存储的数据达到所述预先设定的阈值时就需要将存储器111中的数据写入固态硬盘44。
具体的,控制器11查找是否存在正在写入状态的段。例如,逻辑地址区间为0KB-1023KB的段,其中0KB-100KB的逻辑地址已写入数据,而101KB至1023KB的逻辑地址仍然没有被写入数据。那么控制器11就可以从101KB开始为所述数据分配逻辑地址。如果所述数据的大小为2KB,那么控制器11为所述数据分配的起始逻辑地址为101KB,长度为2KB。
若当前不存在已经写入数据但未被写满的段,则执行步骤S303。
S303,控制器11查找空闲的段,从所述空闲的段中为所述数据分配逻辑地址,将所述分配的逻辑地址发送给固态硬盘44。例如,逻辑地址区间为1024KB-2047KB的段是空闲的段。控制器11可以从1024KB开始为所述数据分配逻辑地址。如果所述数据的大小为2KB,那么控制器11为所述数据分配的逻辑地址为1024KB-1026KB KB。
S304,控制器11将所述数据以及分配的逻辑地址发送给固态硬盘44。
S305,固态硬盘44将所述数据连续写入一个或多个块。所述数据保存在块中的地址为实际地址。固态硬盘44在将所述数据写入所述块之后,将所述分配的逻辑地址与所述实际地址之间的对应关系保存在闪存翻译层中。
当一个段被控制器分配之后,这个段与这个控制器之间的归属关系也就确定了。例如控制器11选择空闲的逻辑地址区间为1024KB-2047KB的段,并向该段写入数据,那么该段就只能接收控制器11写入的数据,不能接收控制器22写入的数据。另外,当一个空闲的段被控制器11分配出来时,控制器11还可以为所述空闲的段分配标识。所述标识用以唯一识别所述分配的段。然而,固态硬盘控制器在将数据写入块时,不会区分所述数据是来自哪个控制器,只是按照接收数据的时间顺序连续写入所述块中。例如,控制器11将大小为2KB,逻辑地址为1024KB-1026KB的数据发送给固态硬盘44。固态硬盘控制器将该数据写入一个空白的块中,假设块的容量为1M,那么这个块还有1022KB的存储空间可以存储数据。此时,如果控制器22也向固态硬盘44发送一个写数据请求。所述写数据请求包括大小为3KB的
数据,该数据的逻辑地址为2048KB-2051KB。该数据对应的段是逻辑地址区间为2048KB-3071KB的段,并且该段是归属于控制器22的(控制器22分配的)。那么,固态硬盘控制器也将所述数据写入上述块中。此时,该块仍有1019KB的存储空间可以存储数据。如果还有其他控制器向固态硬盘44发送写数据请求,固态硬盘控制器会继续将其他控制器(也就是其他段)的数据写入所述块。或者,固态硬盘控制器也可以将控制器11发送的另一个段的数据(如果上一个段已被写满)写入所述块中。因此,一个块中存储的数据可能属于不同的段。
段的标识可以是数字、字母或者其他用于唯一标识所述段的符号,也可以是数字、字母或者其他符号之间的任意组合。如果控制器不分配段的标识,控制器可以用段的逻辑地址区间识别各个段。另外,所述标识也可以是序列号。在控制器11分配了标识之后,保存所述标识与所述段的逻辑地址区间之间的对应关系。后续将详细介绍为段分配标识的过程。
下面介绍控制器为段分配标识的过程。
控制器按照时间段为段分配标识(称为段标识)。在某些应用场景中,存储系统中的每个控制器(例如控制器11和控制器22)都具有分配标识的功能,在另外一些应用场景中,存储系统中只有一个控制器具有分配标识的功能,在这种情况下不具有分配功能的控制器可以给具有该功能的控制器发送申请段标识的请求,以获得标识。
示例一,控制器11和控制器22都具有分配标识的功能。当控制器11分配一个空闲的段时,控制器11为该段分配标识。同样的,当控制器22分配另一个空闲的段时,控制器22也为所述另一个空闲的段分配标识。在相同时间段内分配标识的段都属于同一个段组,所述相同时间段的结束时间点为:任意一个控制器分配的标识的总数达到预设阈值的时刻。例如,所述预设阈值为100,当控制器11分配的标识的总数达到100时,控制器11可以向控制器22发送通知消息,以指示控制器22当前时间段结束。那么在这段
时间内(这段时间的起点是控制器11或控制器22分配第一个标识,终点是控制器11分配第100个标识)控制器11为其分配标识的段,以及控制器22为其分配标识的段属于同一个组(称为段组)。控制器11或控制器22为该组分配组标识,并将所述组标识通知对方。控制器11保存所述组标识与该组中由控制器11管理的各个段的标识之间的对应关系,控制器22保存所述组标识与该组中由控制器22管理的各个段的标识之间的对应关系。
示例二,只有控制器11具有分配标识的功能。在这种情况下,当控制器22分配一个空闲的段时,控制器22会向控制器11发送请求消息,以请求控制器11为该段分配标识。此时,所述相同时间段的结束时间点为:具有标识分配功能的控制器分配的标识的总数达到预设阈值的时刻。例如,所述预设阈值为100,在控制器11分配第1个标识至控制器11分配第100个标识的时间段内,控制器11为其分配标识的段属于同一个组。这个组中的段既有控制器11管理的段,也有控制器22管理的段,只是这些段的标识都是控制器11分配的。控制器11再为这个组分配组标识,并将所述组标识通知控制器22。控制器11保存所述组标识与该组中由控制器11管理的各个段的标识之间的对应关系,控制器22保存所述组标识与该组中由控制器22管理的各个段的标识之间的对应关系。
在示例一和示例二中,都分配组标识,各个控制器记录组标识和段的标识之间的对应关系。如果不分配段的标识,并用段的逻辑地址区间识别各个段,控制器也分配组标识,并记录组标识和段的逻辑地址区间之间的对应关系。如果用序列号根据特定的规律标识段,组标识不是必需的。此时,可以以序列号的规律来判定哪些段属于同一个组。
例如,在示例三中,控制器11和控制器22都具有分配序列号的功能,并且控制器11和控制器22可以预先约定每个组的起始序列号。例如,第一组的起始序列号为1,第二个组的起始序列号为101,第三个组的起始序列号为201,等等。控制器11分配的起始序列号与控制器22分配的起始序列
号相同。每个控制器分别从起始序列号开始,依次为段分配序列号,每个序列号等于上一个序列号的数值加1。对于每个组,当任意一个控制器分配的序列号的总数达到预设阈值时,所有控制器都从下一个组的起始序列号开始分配。除了段的标识为序列号之外,示例三的其余内容与示例一类似,这里不再赘述。
示例四,只有控制器11具有分配标识的功能,并且所述标识是指序列号。以控制器11具有分配序列号的功能为例。控制器11预先设置每个组的起始序列号,从起始序列号开始,依次为自己的段以及控制器22的段分配序列号,每个序列号等于前一个序列号的数值加1。当控制器11分配的序列号的总数达到预设阈值时,则从下一个组的起始序列号开始分配。具体的,当控制器22需要为自己的段分配序列号时,控制器22向控制器11发送请求消息,控制器11根据所述请求消息分配序列号,并发送给控制器22。与示例三不同之处在于,在示例三中,由于控制器11和控制器22都可以为段分配序列号,因此这些序列号之间并不总是连续的,甚至可能会重复。而在示例四中,由于所有的序列号都是由控制器11分配的,所以这些序列号是连续的,并且不会重复。除了段的标识为序列号之外,示例四的其余内容与示例二类似,这里不再赘述。
由上面的描述可知,固态硬盘的一个块中存储的数据属于不同的段。假设一个块存储的数据分别属于序列号为1的段,序列号为2的段以及序列号为3的段。如果控制器对序列号为1的段以及序列号为2的段进行垃圾回收,固态硬盘将这两个段对应的有效的数据复制到其他段中。然而,对于上述块来说,仍然保留有序列号为3的段的数据。因此,当固态硬盘进行自己的垃圾回收时,仍然需要从该块中读取有效数据,并复制到其他块。从而导致固态硬盘内部出现写放大。
为了减少固态硬盘内部的写放大的次数,本发明实施例在执行系统垃圾回收操作时,以上面描述的段组为单位对段进行垃圾回收。由于该段组中的
各个段是在相同时间段内分配的,那么这些段的数据也是在相同的时间段内写入固态硬盘的。进一步地,由于固态硬盘在写入数据时是按照接收数据的时间顺序连续写入一个或多个块,因此,相同的时间段内分配的段被执行系统垃圾回收之后,这些段所对应的块中的有效数据已经被全部复制到其他块中,这些段所对应的块中的数据都是无效数据。当固态硬盘进行内部的垃圾回收时,被执行系统垃圾回收的段所对应的块无需再次进行有效数据的复制,从而减少了固态硬盘内部的写放大的次数。
下面介绍本实施例提供的系统垃圾回收的方法。
本发明实施例提供了一种系统垃圾回收的方法,应用在图1所示的存储系统中,所述存储系统包含多个段,其中部分段属于控制器11,部分段属于控制器22,所述存储系统包含的多个段可以划分为若干个段组。其中,每个段组中的段是在相同的时间段内分配的。每个段组具有唯一的组标识。本实施例提供的系统垃圾回收是以段组为单位来执行的。示例性的,该方法可以包括以下步骤:
401,控制器11统计各个段组包含的无效数据的数据量。
当空闲的段的数量低于预设阈值时,控制器11可以触发系统垃圾回收操作。在执行系统垃圾回收之前,控制器11可以统计每个段组包含的无效数据的数据量。由于一个段组所包含的各个段中,既有控制器11管理的段,又有控制器22管理的段(这里是以两个控制器为例,但本实施例还可以包括其他控制器)。一种实现是,控制器11只统计每个组中自己管理的那些段的无效数据的数据量,并且将包含无效数据最多的段组作为当前待回收的组。另一种实现是,控制器11不仅需要统计每个组中自己管理的那些段的无效数据的数据量,还需要获取每个组中其他控制器管理的那些段的无效数据的数据量。具体的,控制器11可以向其他控制器(例如控制器22)发送查询指令,所述查询指令包括组标识,控制器22根据所述组标识查询该段组所包括的段的无效数据的数据量,并反馈给控制器11。
另外,由前面的描述可知,当数据写入段之后,可以用位图来记录所述数据是否有效。因此,根据所述位图也可以统计一个段所包括的无效数据的数据量。
402,控制器11比较各个段组包含的无效数据的数据量,确定包含无效数据最多的段组。
控制器11根据自己统计的数据量,或者根据自己统计的数据量以及控制器22统计的数据量,可以得出哪个段组所包括的无效数据的数据量最多,将其作为当前待回收的段组。
403,控制器11对所述确定出的段组所包含的段执行系统垃圾回收操作。
具体的,在步骤403中控制器11指示固态硬盘44对所述确定出的段组所包含的段执行系统垃圾回收操作。这里的“指示”是指控制器11向固态硬盘44发送读数据请求、写数据请求以及去映射命令,使得固态硬盘44执行这些请求及命令。可以理解的是,固态硬盘44并不会主动地执行系统垃圾回收操作,只是被动地执行控制器11发送的请求及命令。控制器11指示固态硬盘44对所述确定出的段组所包含的段执行系统垃圾回收操作具体包括下述步骤:(1)控制器11向固态硬盘44发送读数据请求,所述读数据请求包括源逻辑地址。所述源逻辑地址是指一个段中有效数据的逻辑地址。固态硬盘44接收所述读数据请求之后,从所述源逻辑地址对应的实际地址中读取有效数据,写入固态硬盘控制器的存储器中。(2)控制器11向固态硬盘44发送写数据请求,所述写数据请求包括目标逻辑地址。所述目标逻辑地址是指控制器11为所述有效数据重新分配的逻辑地址。并且,目标逻辑地址与源逻辑地址对应不同的段,其中源逻辑地址对应的段是待回收的段,而目标逻辑地址对应的段是一个空闲的段或者处于正在写入状态的段。固态硬盘44接收所述写数据请求之后,从固态硬盘控制器的存储器中读取所述有效数据,并写入所述目标逻辑地址对应的实际地址中。(3)控制器11向固态硬盘44发送去映射命令,所述去映射命令包括所述待回收的段的逻辑
地址区间,固态硬盘44接收所述去映射命令之后,在闪存翻译层中删除所述逻辑地址区间中的每个逻辑地址与实际地址之间的对应关系。
404,控制器11将所述段组的组标识发送给控制器22,控制器22对所述段组所包含的段执行系统垃圾回收操作。
控制器22根据所述组标识,以及所述组标识与段的标识之间的对应关系,确定待回收的段,对所述待回收的段执行系统垃圾回收操作,具体的过程与403类似,这里不再赘述。
步骤403中控制器11执行系统垃圾回收的段与步骤404中控制器22执行系统垃圾回收的段是在相同的时间段内分配的。所述相同的时间段在所述第一控制器或所述第二控制器在所述时间段内分配的段的数量达到第一预设阈值时结束。当每个段都分配有标识并且每个控制器都具有分配标识的功能时,这里的相同的时间段与上面描述的示例一中的时间段一致。
另外,所述相同的时间段也可以在所述第一控制器以及第二控制器在所述时间段内分配的段的数量的总和达到第二预设阈值时结束。第二预设阈值可以与第一预设阈值相同,也可以不同。在这种情况下,第一控制器或者第二控制器需要给对方发送消息以查询对方分配的段的数量,从而获得这段时间内分配的段的数量的总和。当每个段都分配有标识并且只有一个控制器都具有分配标识的功能时,这里描述的相同的时间段也可以在具有分配标识的功能的控制器分配的标识的数量达到第二预设阈值时结束。
除了由控制器11统计各个段组包含的无效数据的数据量之外,本实施例还有一种实现是,在存储系统中指定一个控制器,专门用于统计各个段组包含的无效数据的数据量,例如,所述指定的控制器分别向控制器11和控制器22发送查询指令,以获取每个段组中控制器11管理的段包含的无效数据的数据量,以及每个段组中控制器22管理的段包含的无效数据的数据量。根据查询结果,确定包含无效数据最多的段组,并将所述段组的组标识分别发送给控制器11和控制器22。控制器11和控制器22分别根据所述组标识
与段的标识之间的对应关系,确定待回收的段,对所述待回收的段执行系统垃圾回收操作。
另外,本实施例也可以不对各个段组所包含的无效数据的数据量进行比较,而是监控每个段组所包含的无效数据的数据量,当某一个段组所包含的无效数据的数据量达到预设阈值时,对所述无效数据的数据量达到预设阈值的段组执行垃圾回收操作。
或者,控制器还可以依次对每个段组执行系统垃圾回收操作,不考虑段组中无效数据的大小。
或者,控制器还可以根据每个段组上一次执行系统垃圾回收操作的时间,选择最长时间未进行系统垃圾回收的段组作为当前系统垃圾回收操作的对象。
在上述步骤404中,控制器22是在控制器11执行系统垃圾回收时,对所述确定出的段组中由控制器22分配的段执行系统垃圾回收操作的。但是,控制器11和控制器22在执行系统垃圾回收操作时,并不是绝对同时进行的。只要在启动下一个段组的系统垃圾回收之前,控制器11和控制器22都完成了所述确定出的段组的系统垃圾回收即可。在实际应用中,控制器11和控制器22是以段组为单位来执行系统垃圾回收操作的。当一个段组中所包含的所有段都完成系统垃圾回收操作之后,再启动下一个段组的系统垃圾回收操作。这里的段组中所包含的所有段都完成系统垃圾回收操作是指,控制器11完成其管理的该段组中的段的系统垃圾回收操作,并且控制器22也完成了其管理的段组中的段的系统垃圾回收操作。示例性的,当控制器11和控制器22完成对包含无效数据最多的段组的系统垃圾回收时,再查找下一个包含无效数据最多的段组并启动系统垃圾回收。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件
实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、光盘。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,本领域普通技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
- 一种存储系统,其特征在于,包括第一控制器、第二控制器和固态硬盘,所述固态硬盘和所述第一控制器连接,所述固态硬盘和所述第二控制器连接,所述第一控制器或第二控制器以段为单位管理所述固态硬盘的存储空间,其中,所述第一控制器,用于对所述第一控制器管理的段中的多个段进行系统垃圾回收,所述第一控制器管理的段中的多个段是在一个时间段内由所述第一控制器分配的;并且,所述第二控制器,用于当所述第一控制器进行系统垃圾回收时,对所述第二控制器管理的段中的多个段进行系统垃圾回收,所述第二控制器管理的段中的多个段是在所述时间段内由所述第二控制器分配的。
- 根据权利要求1所述的存储系统,其特征在于,所述第一控制器管理的段中的多个段是所述时间段内由所述第一控制器分配的所有的段,所述第二控制器管理的段中的多个段是所述时间段内由所述第二控制器分配的所有的段。
- 根据权利要求1或2所述的存储系统,其特征在于,所述时间段在所述第一控制器或所述第二控制器在所述时间段内分配的段的数量达到第一预设阈值时结束。
- 根据权利要求1-3任一所述的存储系统,其特征在于,所述第一控制器管理的段中的多个段与所述第二控制器管理的段中的多个段属于同一个段组,所述段组包含的无效数据的数据量大于其他任意一个段组包含的无效数据的数据量。
- 根据权利要求4所述的存储系统,其特征在于,所述第一控制器,还用于将所述段组的组标识发送给所述第二控制器;所述第二控制器,还用于根据预先保存的所述组标识与所述第二控制器管理的段中的多个段中每个段的标识之间的对应关系,确定所述第二控制器管理的段中的所述多个段。
- 根据权利要求1-5任一所述的存储系统,其特征在于,所述第一控制器,用于将所述第一控制器管理的段中的多个段的每个段包含的有效数据的源逻辑地址发送给所述固态硬盘;为所述有效数据分配目标逻辑地址并将所述目标逻辑地址发送给所述固态硬盘,以指示所述固态硬盘将所述有效数据从所述源逻辑地址复制到所述目标逻辑地址;向所述固态硬盘发送去映射命令,所述去映射命令包括所述第一控制器管理的段中的多个段的每个段的逻辑地址区间,以指示所述固态硬盘删除所述固态硬盘保存的所述每个段的逻辑地址与实际地址之间的对应关系。
- 一种系统垃圾回收方法,其特征在于,所述方法应用于存储系统中,所述存储系统包括第一控制器、第二控制器和固态硬盘,所述固态硬盘和所述第一控制器连接,所述固态硬盘和所述第二控制器连接,所述第一控制器或第二控制器以段为单位管理所述固态硬盘的存储空间,所述方法包括:所述第一控制器对所述第一控制器管理的段中的多个段进行系统垃圾回收,所述第一控制器管理的段中的多个段是在一个时间段内由所述第一控制器分配的;当所述第一控制器进行系统垃圾回收时,所述第二控制器对所述第二控制器管理的段中的多个段进行系统垃圾回收,所述第二控制器管理的段中的多个段是在所述时间段内由所述第二控制器分配的。
- 根据权利要求7所述的方法,其特征在于,所述第一控制器管理的段中的多个段是所述时间段内由所述第一控制器分配的所有的段,所述第二控制器管理的段中的多个段是所述时间段内由所述第二控制器分配的所有的段。
- 根据权利要求7或8所述的方法,其特征在于,所述时间段在所述第一控制器或所述第二控制器在所述时间段内分配的段的数量达到第一预设阈值时结束。
- 根据权利要求7-9任一所述的方法,其特征在于,所述第一控制器管理的段中的多个段与所述第二控制器管理的段中的多个段属于同一个段组,所述段组包含的无效数据的数据量大于其他任意一个段组包含的无效数据的数据量。
- 根据权利要求10所述的方法,其特征在于,所述方法还包括:所述第一控制器将所述段组的组标识发送给所述第二控制器;所述第二控制器根据预先保存的所述组标识与所述第二控制器管理的段中的多个段中每个段的标识之间的对应关系,确定所述第二控制器管理的段中的所述多个段。
- 根据权利要求7-11任一所述的方法,其特征在于,所述第一控制器对所述第一控制器管理的段中的多个段进行系统垃圾回收包括:所述第一控制器将所述第一控制器管理的段中的多个段的每个段包含的有效数据的源逻辑地址发送给所述固态硬盘;所述第一控制器为所述有效数据分配目标逻辑地址并将所述目标逻辑地址发送给所述固态硬盘,以指示所述固态硬盘将所述有效数据从所述源逻辑地址复制到所述目标逻辑地址;所述第一控制器向所述固态硬盘发送去映射命令,所述去映射命令包括所述第一控制器管理的段中的多个段的每个段的逻辑地址区间,以指示所述固态硬盘删除所述固态硬盘保存的所述每个段的逻辑地址与实际地址之间的对应关系。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/105512 WO2018086075A1 (zh) | 2016-11-11 | 2016-11-11 | 一种存储系统和系统垃圾回收方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108475230A true CN108475230A (zh) | 2018-08-31 |
CN108475230B CN108475230B (zh) | 2021-07-16 |
Family
ID=62104425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680003336.0A Active CN108475230B (zh) | 2016-11-11 | 2016-11-11 | 一种存储系统和系统垃圾回收方法 |
Country Status (9)
Country | Link |
---|---|
US (2) | US10621085B2 (zh) |
EP (1) | EP3346387B1 (zh) |
JP (1) | JP6455900B2 (zh) |
CN (1) | CN108475230B (zh) |
AU (1) | AU2016397188B2 (zh) |
BR (1) | BR112017019425B1 (zh) |
CA (1) | CA2978845C (zh) |
SG (1) | SG11201707296QA (zh) |
WO (1) | WO2018086075A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113490922A (zh) * | 2019-02-27 | 2021-10-08 | 华为技术有限公司 | 固态硬盘写放大优化方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688323B (zh) * | 2018-07-06 | 2023-11-17 | 华为技术有限公司 | 一种系统控制器和系统垃圾回收方法 |
WO2020007030A1 (zh) | 2018-07-06 | 2020-01-09 | 华为技术有限公司 | 一种系统控制器和系统垃圾回收方法 |
CN110895513A (zh) * | 2018-09-12 | 2020-03-20 | 华为技术有限公司 | 一种系统垃圾回收方法和固态硬盘中的垃圾回收方法 |
US11288185B2 (en) * | 2019-01-03 | 2022-03-29 | Silicon Motion, Inc. | Method and computer program product for performing data writes into a flash memory |
TWI711048B (zh) * | 2020-02-07 | 2020-11-21 | 大陸商合肥兆芯電子有限公司 | 快閃記憶體之資料整理方法、控制電路單元與儲存裝置 |
CN112364758A (zh) * | 2020-11-10 | 2021-02-12 | 湖北惠立网络科技有限公司 | 基于多目标图像识别的垃圾分类回收方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110145475A1 (en) * | 2009-12-15 | 2011-06-16 | International Business Machines Corporation | Reducing access contention in flash-based memory systems |
CN102622308A (zh) * | 2012-02-23 | 2012-08-01 | 深圳市硅格半导体有限公司 | 多通道的管理方法及管理系统 |
US20150378886A1 (en) * | 2013-04-08 | 2015-12-31 | Avalanche Technology, Inc. | Software-defined ssd and system using the same |
US20160179422A1 (en) * | 2014-12-19 | 2016-06-23 | Samsung Electronics Co., Ltd. | Method of performing garbage collection and raid storage system adopting the same |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102479060A (zh) * | 2010-11-30 | 2012-05-30 | 英业达股份有限公司 | 储存系统的双控制器的运作方法 |
US8966172B2 (en) * | 2011-11-15 | 2015-02-24 | Pavilion Data Systems, Inc. | Processor agnostic data storage in a PCIE based shared storage enviroment |
US10180951B2 (en) * | 2013-03-15 | 2019-01-15 | Amazon Technologies, Inc. | Place snapshots |
CN103412826A (zh) * | 2013-07-18 | 2013-11-27 | 记忆科技(深圳)有限公司 | 固态硬盘的垃圾回收方法及系统 |
CN104424110B (zh) * | 2013-09-10 | 2017-11-14 | Lsi公司 | 固态驱动器的主动回收 |
CN103577338B (zh) | 2013-11-14 | 2016-06-29 | 华为技术有限公司 | 一种回收垃圾数据的方法及存储设备 |
CN103902465B (zh) * | 2014-03-19 | 2017-02-08 | 华为技术有限公司 | 一种固态硬盘垃圾回收的方法、系统和固态硬盘控制器 |
US9727456B2 (en) * | 2014-11-03 | 2017-08-08 | Pavilion Data Systems, Inc. | Scheduled garbage collection for solid state storage devices |
JP6459644B2 (ja) * | 2015-03-05 | 2019-01-30 | 富士通株式会社 | ストレージ制御装置、制御システム及び制御プログラム |
US9811462B2 (en) | 2015-04-30 | 2017-11-07 | Toshiba Memory Corporation | Memory system executing garbage collection |
KR102013430B1 (ko) | 2015-12-03 | 2019-08-22 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법 |
US10684795B2 (en) * | 2016-07-25 | 2020-06-16 | Toshiba Memory Corporation | Storage device and storage control method |
-
2016
- 2016-11-11 WO PCT/CN2016/105512 patent/WO2018086075A1/zh active Application Filing
- 2016-11-11 CA CA2978845A patent/CA2978845C/en active Active
- 2016-11-11 SG SG11201707296QA patent/SG11201707296QA/en unknown
- 2016-11-11 AU AU2016397188A patent/AU2016397188B2/en active Active
- 2016-11-11 EP EP16898146.2A patent/EP3346387B1/en active Active
- 2016-11-11 CN CN201680003336.0A patent/CN108475230B/zh active Active
- 2016-11-11 BR BR112017019425-2A patent/BR112017019425B1/pt active IP Right Grant
- 2016-11-11 JP JP2017553091A patent/JP6455900B2/ja active Active
-
2018
- 2018-08-09 US US16/059,938 patent/US10621085B2/en active Active
-
2020
- 2020-02-17 US US16/792,431 patent/US20200183831A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110145475A1 (en) * | 2009-12-15 | 2011-06-16 | International Business Machines Corporation | Reducing access contention in flash-based memory systems |
CN102713866A (zh) * | 2009-12-15 | 2012-10-03 | 国际商业机器公司 | 减少基于闪存的存储系统中的存取争用 |
CN102622308A (zh) * | 2012-02-23 | 2012-08-01 | 深圳市硅格半导体有限公司 | 多通道的管理方法及管理系统 |
US20150378886A1 (en) * | 2013-04-08 | 2015-12-31 | Avalanche Technology, Inc. | Software-defined ssd and system using the same |
US20160179422A1 (en) * | 2014-12-19 | 2016-06-23 | Samsung Electronics Co., Ltd. | Method of performing garbage collection and raid storage system adopting the same |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113490922A (zh) * | 2019-02-27 | 2021-10-08 | 华为技术有限公司 | 固态硬盘写放大优化方法 |
CN113490922B (zh) * | 2019-02-27 | 2023-07-18 | 华为技术有限公司 | 固态硬盘写放大优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CA2978845A1 (en) | 2018-05-11 |
CN108475230B (zh) | 2021-07-16 |
WO2018086075A1 (zh) | 2018-05-17 |
US10621085B2 (en) | 2020-04-14 |
AU2016397188A1 (en) | 2018-05-31 |
EP3346387A1 (en) | 2018-07-11 |
BR112017019425B1 (pt) | 2023-01-24 |
EP3346387A4 (en) | 2018-12-05 |
AU2016397188B2 (en) | 2019-02-21 |
JP6455900B2 (ja) | 2019-01-23 |
EP3346387B1 (en) | 2020-09-02 |
US20180349272A1 (en) | 2018-12-06 |
BR112017019425A2 (pt) | 2018-08-14 |
SG11201707296QA (en) | 2018-06-28 |
JP2018536908A (ja) | 2018-12-13 |
US20200183831A1 (en) | 2020-06-11 |
CA2978845C (en) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108475230A (zh) | 一种存储系统和系统垃圾回收方法 | |
US10761731B2 (en) | Array controller, solid state disk, and method for controlling solid state disk to write data | |
CN106874217B (zh) | 存储器系统及控制方法 | |
US9092323B2 (en) | Systems and methods for recovering addressing data | |
EP3171277A1 (en) | Method for managing files, distributed storage system and management node | |
US11928053B2 (en) | System garbage collection method and method for garbage collection in solid state disk | |
CN106569742A (zh) | 存储管理方法及存储设备 | |
CN110362499B (zh) | 电子机器及其控制方法、计算机系统及其控制方法以及主机的控制方法 | |
JP6147933B2 (ja) | コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法 | |
WO2011095516A1 (en) | Method and system for mass storage on flash memory | |
US10203899B2 (en) | Method for writing data into flash memory apparatus, flash memory apparatus, and storage system | |
CN105917303B (zh) | 一种控制器、识别数据块稳定性的方法和存储系统 | |
CN107479825A (zh) | 一种存储系统、固态硬盘和数据存储方法 | |
CN109074227A (zh) | 一种数据校验的方法及存储系统 | |
CN109508142A (zh) | 数据存储装置及其操作方法 | |
CN115756312A (zh) | 数据访问系统、数据访问方法和存储介质 | |
CN104408126B (zh) | 一种数据库的持久化写入方法、装置和系统 | |
CN110688323A (zh) | 一种系统控制器和系统垃圾回收方法 | |
CN110389706B (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 |