CN107665156A - 多流日志重播 - Google Patents
多流日志重播 Download PDFInfo
- Publication number
- CN107665156A CN107665156A CN201710535674.5A CN201710535674A CN107665156A CN 107665156 A CN107665156 A CN 107665156A CN 201710535674 A CN201710535674 A CN 201710535674A CN 107665156 A CN107665156 A CN 107665156A
- Authority
- CN
- China
- Prior art keywords
- block collection
- collection
- row number
- individual block
- individual
- 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
- 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/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash 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/7205—Cleaning, compaction, garbage collection, erase control
Abstract
一种用于闪存存储系统的间接重播的方法,所述方法包括在主机流中,将数据写入闪存存储系统的块集。对主机块集分配从最近关闭的主机块集增加的主序列号。该方法包括将间接日志写入与所分配的主序列号相关联的每个主机块集。该方法包括在垃圾回收(GC)流中,将数据写入闪存存储系统的其他块集。基于最近关闭的主机块集对GC块集分配主序列号,并对GC块集分配从最近关闭的GC块集增加的次序列号。该方法包括将间接日志写入与分配的主序列号和次序列号相关联的每个GC块集。通过重播以主序列号和次序列号为顺序的块集的日志来构造间接表。
Description
技术领域
本公开涉及闪存存储设备,并且更具体地,涉及为闪存存储设备恢复间接系统。
背景技术
用于闪存存储设备的间接系统针对每个主机可访问逻辑块地址(logical blockaddress,LBA)跟踪闪存存储器设备上的物理位置。在闪存存储设备断电并在电源恢复时再次启动后,间接系统恢复到间接系统在断电之前的状态,被称为间接重播或重播的处理。间接重播通常利用与用户数据一起记录的新的写入或写入增量的日志将间接系统的快照的组合用作一个整体。但是,基于快照的重播可能会提高固件的复杂性,因为必须管理快照和日志记录之间的同步。由于快照所需的资源,运行时性能可能会受到影响。当使用快照来重播时,启动时性能也可能受损。
发明内容
本技术避免使用针对重播的快照。从写入增量(deltas)重播整个闪存存储设备。本技术还允许在多流系统中的无快照重播。
根据本技术的方面,提供了一种用于重播闪存存储设备的方法。该方法包括在主流中,将数据写入到存储设备的第一多个块集。该方法包括将各个主序列号分配给所述第一多个块集的每个块集,其中所述各个主序列号是从被分配给所述第一多个块集的最近关闭的块集的先前主序列号增加的。该方法还包括将各个间接日志写入到所述第一多个块集的每一个,其中所述各个间接日志对应于被写入(例如,写入增量)到各个块集的数据并且与被分配给所述各个块集的所述各个主序列号相关联。该方法还包括在与所述主流同时操作的次流中,将数据写入到所述存储设备的第二多个块集。该方法包括将各个主-次序列号分配给所述第二多个块集的每个块集,其中所述各个主-次序列号包含被分配给所述第一多个块集的最近关闭的块集的先前主序列号以及从所述第二多个块集中的最近关闭的块集增加的各个次序列号。该方法还包括将各个间接日志写入到所述第二多个块集中的每一个,其中所述各个间接日志对应于被写入到所述各个块集的数据并且与被分配给所述各个块集的所述各个主-次序列号相关联。该方法还包括通过重播来自所述第一多个块集和所述第二多个块集的间接日志来在所述存储设备的存储器中构造间接表,所述第一多个块集和第二多个块集首先根据各个主序列号并且其次根据各个次序列号来排序。
根据本技术的方面,提供了闪存存储设备。闪存存储设备包括存储器、多个闪存设备、和控制器。闪存设备每个都含有被分成块的存储器单元,并且通过组合来自每个闪存设备的块将多个闪存设备组织成块集。控制器被配置为在主机流中,将数据写入到所述闪存存储系统的第一多个块集。控制器被配置为将各个主序列号分配给所述第一多个块集的每个块集,其中所述各个主序列号是从被分配给所述第一多个块集的最近关闭的块集的先前主序列号增加的。控制器还被配置为将各个间接日志写入到所述第一多个块集的每一个,其中所述各个间接日志对应于被写入到各个块集的数据并且与被分配给所述各个块集的所述各个主序列号相关联。控制器还被配置为在与所述主机流同时操作的垃圾收集流中,将数据写入到所述闪存存储系统的第二多个块集。控制器被配置为将各个主-次序列号分配给所述第二多个块集的每个块集,其中所述各个主-次序列号包含被分配给所述第一多个块集的最近关闭的块集的先前主序列号以及从所述第二多个块集中的最近关闭的块集增加的各个次序列号。控制器还被配置为将各个间接日志写入到所述第二多个块集中的每一个,其中所述各个间接日志对应于被写入到所述各个块集的数据并且与被分配给所述各个块集的所述各个主-次序列号相关联。控制器还被配置为通过重播来自所述第一多个块集和所述第二多个块集的间接日志来在所述存储器中构造间接表,所述第一多个块集和第二多个块集首先根据各个主序列号并且其次根据各个次序列号来排序。
根据本技术的方面,提供了一种用可执行指令编码的机器可读介质。当处理器执行所述指令时,所述指令使处理器进行操作。该操作包括在主流中,将数据写入到存储设备的第一多个块集。该操作包括将各个主序列号分配给所述第一多个块集的每个块集,其中所述各个主序列号是从被分配给所述第一多个块集的最近关闭的块集的先前主序列号增加的。该操作还包括将各个间接日志写入到所述第一多个块集的每一个,其中所述各个间接日志对应于被写入到各个块集的数据并且与被分配给所述各个块集的所述各个主序列号相关联。该操作还包括在与所述主流同时操作的次流中,将数据写入到所述存储设备的第二多个块集。该操作包括将各个主-次序列号分配给所述第二多个块集的每个块集,其中所述各个主-次序列号包含被分配给所述第一多个块集的最近关闭的块集的先前主序列号以及从所述第二多个块集中的最近关闭的块集增加的各个次序列号。该操作还包括将各个间接日志写入到所述第二多个块集中的每一个,其中所述各个间接日志对应于被写入到所述各个块集的数据并且与被分配给所述各个块集的所述各个主-次序列号相关联。该操作包括通过重播来自所述第一多个块集和所述第二多个块集的间接日志来在所述存储设备的存储器中构造间接表,所述第一多个块集和第二多个块集首先根据各个主序列号并且其次根据各个次序列号来排序。
应当理解,从下面的详细描述中,本技术的其他配置对本领域技术人员将容易地变得显而易见,其中通过说明的方式示出和描述了本技术的各种配置。如将认识到的,本技术能够具有其他和不同的配置,并且其多个细节能够具有在各种其他方面的修改,而全部不脱离本技术的范围。因此,附图和详细描述在本质上被认为是说明性的而不是限制性的。
附图说明
图1是示出根据本技术的方面的闪存存储设备的组件的框图。
图2A是根据本技术的方面的针对主流和次流的块集标识符(identifier,ID)的图。
图2B示出了具有针对图2A的块集的对应的主/次序列号的块集ID。
图3是根据本技术的方面的日志的图。
图4是说明根据本技术的方面的用于针对闪存存储系统的重播的方法的流程图。
具体实施方式
以下阐述的详细描述旨在作为本技术的各种配置的描述,并不旨在表示可以实践本技术的唯一配置。附图并入本文,并构成详细描述的一部分。详细描述包括用于提供对本技术的全面了解的目的的具体细节。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实践本技术。在某些情况下,以框图的形式示出众所周知的结构和组件,为了避免模糊本技术的概念。
图1是说明根据本技术的方面的闪存存储系统110的组件的框图。如图1所描述的,闪存存储系统110包括接口115、控制器120、存储器125和闪存设备130A-130N。接口115促进闪存存储系统110和主机150之间的数据、命令和/或控制信号的通信。控制器120控制闪存存储系统110的操作以根据从主机150接收的命令在闪存设备130中的一个中存储和检索数据。可以是随机存取存储器(random access memory,RAM)的存储器125为控制器120提供临时存储空间以处理命令并在主机150与闪存设备130A-130N之间传送数据。下面更详细地描述这些部件的每一个的操作。
接口115提供主机150和闪存存储系统110之间的物理和电连接。接口115被配置为经由物理和电连接促进主机150和闪存存储系统110之间的数据、命令和/或控制信号的通信。与接口115的连接和通信可以基于诸如通用串行总线(Universal Serial Bus,USB)、小型计算机系统接口(Small Computer System Interface,SCSI)、串行高级技术附件(Serial Advanced Technology Attachment,SATA)等的标准接口。可替换地,连接和/或通信可以基于专有接口。本技术不限于任何特定类型的接口。
控制器120管理主机150与闪存设备130A-130N之间的数据流。控制器120被耦合到接口115并且被配置为经由接口115从主机150接收命令和数据。例如,控制器120可以从主机150接收数据和写入命令,以在一个或多个闪存设备130中写入数据。控制器120还被配置为经由接口115将数据发送到主机系统。例如,控制器120可以响应于读取命令,从闪存设备130读取数据并且将数据发送到主机150。控制器120还被配置为基于可以从主机150接收的内部控制算法或其他类型的命令来管理存储在闪存设备130A-130N和存储器125中的数据。可以在闪存存储系统110中由控制器120进行其他维护操作。
可以用通用处理器、微控制器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或其他可编程逻辑设备、离散门或晶体管逻辑设备、离散硬件组件或其被设计和配置为进行本文所述的操作和功能的任何组合来实现控制器120。控制器120可以通过执行存储在机器/计算机可读介质上的一个或多个指令序列来执行本文描述的操作和功能。机器/计算机可读介质可以是闪存设备130、存储器125或控制器120可从其读取指令或代码的其他类型的可读介质。例如,闪存存储系统110可以包括用固件/软件编码的诸如EPROM(Erasable Programmable Read Only Memory,可擦除可编程只读存储器)或EEPROM(Electrically Erasable Programmable Read Only Memory,电可擦除可编程只读存储器)的只读存储器(read only memory,ROM),该固件/软件包含在闪存存储系统110的操作期间由控制器120读取和执行的一个或多个指令序列。
闪存设备130A-130N可以全部位于单个闪存芯片上或者被布置在多个闪存芯片上。可以在多个通道中分割闪存设备,通过该多个通道,由控制器120从闪存设备读取数据并将数据写入闪存设备,或将闪存设备耦合到单个通道。可以使用NAND(Not And,与非)闪存来实现闪存设备130。
闪存设备130包括分成诸如闪存块140的存储块的多个存储器单元。这些存储块可以被称为数据块或存储器块并且可由控制器120使用物理块地址来寻址。存储块中的每一个被进一步被分成可由控制器120使用物理页地址或离含有参考页的存储块的物理块地址的偏移来寻址的多个数据段或页。存储块表示在单个擦除操作中在闪存设备130内擦除的数据单元。物理页表示在单个读取或写入操作中从闪存设备130读取或写入闪存设备130的数据单元。类似地分布于闪存设备130的闪存块140,诸如闪存块140A-1至140N-1,可以被集合在一起作为块集145。每个闪存设备130也包含可以被用于存储比如计数器和与对应的闪存设备130有关的其他数据的寄存器135。
本技术不限于闪存的任何特定容量。例如,闪存25中的存储块可以每一个包含32、64或128页。附加地,闪存25中的页可以每一个包含512字节、2千字节或4千字节。
存储器125表示在闪存存储系统110的操作期间被耦合到控制器120并由其使用的易失性存储器。控制器120可以在存储器125中缓冲命令和/或数据。控制器120也可以使用存储器125以存储间接系统,诸如用于将由主机150使用的逻辑数据地址转换成与闪存设备130A-130N的部分对应的虚拟和/或物理地址的地址转换表。传统用于管理闪存存储系统的其他类型的表、数据、状态指示符等也可以由控制器120存储在存储器125中。可以使用动态随机存取存储器(dynamic random access memory,DRAM)、静态随机存取存储器(staticrandom access memory,SRAM)或不脱离本技术的范围且本领域技术人员已知的其它类型的易失性随机存取存储器来完成存储器125。
当闪存存储系统110例如由于电源故障或关闭闪存存储系统110而断电时,间接系统的状态可能丢失。一旦电源恢复到闪存系统,必须将间接系统恢复到间接系统在断电之前的状态。在基于日志的重播中可以避免快照的使用。对于每个写入操作,记录描述虚拟到物理地址的映射的改变的日志。从第一个日志按顺序重播日志将重建间接系统。在单流系统中,其中一次打开并写入一个块集,块集的顺序编号确保将以正确的顺序重播日志。
块集存储对应的日志。这种在线日志记录约束了写入存储设备的日志的数量。在线日志也自然中止不再需要的日志,因为当该块集被擦除时,日志被擦除。以正确的顺序重播需要以被写入的块集的顺序重播日志。然而,在多流系统中,其中多于一个流同时操作,使得一次可以打开多于一个块集,简单的顺序编号可能引入相干性错误。
例如,主机流可以打开第一块集,同时垃圾收集(garbage collection,GC)流打开第二块集。GC是指通过将有效数据从块移动到另一个块并擦除该块来释放该块的处理。能够在GC流中将映射的较新的版本写入到块集。正确的重播序列取决于首先关闭哪个块集,以便在较新的映射(基于较新的日志)之后,不再重播较旧的映射(基于较旧的日志)。然而,因为序列号是随着打开块集而分配的,并且块集关闭的顺序不是可预测的,简单的顺序编号可能在重播期间产生错误。在重播期间,较旧的映射可能最终取代较新的映射。
图2A示出了针对两个流,主流210和次流220,打开和关闭块集的序列。主流210包括块集201、204、206和203。次流220包括块集207、202和205。块集的长度对应于打开和关闭时间。例如,在关闭块集201之后并且在块集204是打开的时,打开块集207。换句话说,两个块集打开,用于在同一时间写入数据。当不再能够写入块集时,诸如如果没有可用空间,或者在预定的时间段之后,可以关闭块集,使得块集不能无限期地打开。主流210可以对应于主机流,使得为主机操作而打开和关闭块集201、204、206和203。次流220可以对应于垃圾收集(GC)流,使得为GC操作而打开和关闭块集207、202和205。
根据一些方面,当打开块集时,为每个块集分配序列号。用于主机块集的序列号包括主序列号。用于GC块集的序列号包括主-次序列号,其包括主序列号分量和次序列号分量。主序列号用于对主机块进行排序。次序列号用于对GC块集进行排序。当向主机块集分配序列号时,增加上次关闭的主机块集主序列号并将其分配给当前的主机块集。对于主机块集不需要次序列号,因此次序列号可能为0或空。
对于GC流,将用于GC块集的主序列号设置为上次关闭的主机块集主序列号。将可以从1开始的次序列号用于对具有相同主序列号的GC块集进行编号。换句话说,直到上次关闭的主机块集改变前为止,GC块集将具有相同的主序列号,具有不同的次序列号。此外,当选择用于GC流的块集时,排除具有比当前的GC块集中的主序列号高的主序列号的块集。
图2B示出了用于图2A中的块集的有序块集ID块。如在图2A所见的,主流210首先打开块集201。将主编号1000和流类型为主机分配给块集201。次序列号为空。然后关闭块集201并且打开块集204。由于上次关闭的块集——块集201——具有主序列号1000,将下一个主序列号1001分配给块集204。次序列号为空,流类型为主机。
在打开块集204之后,在次流220中打开块集207。上次关闭的主机块集是块集201,因为块集204仍然是打开的。块集201具有主序列号1000,其也被用于块集207的主序列号。将次序列号1分配给块集207,其是主序列号1000的第一GC块集。将流类型设置为GC。
在块集204仍然打开时,次流220关闭块集207并打开块集202。上次关闭的主机块集仍然是块集201,因此将主序列号1000分配给块集202。用于块集202的次序列号是从先前的次序列号增加的,因此将用于块集202的次序列号设置为2。流类型是GC。
当块集202仍然打开时,主流210关闭块集204并打开块集206。上次关闭的主机块集现在是块集204,因此用于块集206的主序列号为1002(例如从块集204的主序列号增加的)。次序列号为空,并且流类型为主机。
当块集206仍然打开时,次流220关闭块集202并打开块集205。上次关闭的主机块集是块集204,因此用于块集205的主序列号为1001(例如块集204的相同的主序列号)。将次序列号设置为1,并且流类型为GC。
主流210关闭块集206并打开块集203。将主序列号1003分配给块集203(例如从块集206的主序列号增加的)。次序列号为空,并且流类型为主机。
图3示出了可以被保存到块集的日志的图。该日志包括页眉301、页脚302和具有虚拟到物理(virtual-to-physical,V2P)条目308的一系列逻辑块号(logical blocknumbers,LBN)307对。LBN对应于逻辑块地址,并且V2P对应于物理地址。LBN 307和V2P 308对描述了作为对应的写入操作的结果的间接系统的改变。页眉301包括块集序列号303、日志条目编号304、打开时间戳305和流编号306。页脚302包括块集序列号303和日志条目编号304。块集序列号303包括主序列号和次序列号。日志条目编号对应于日志条目的索引。打开时间戳305对应于打开块集的时间。流编号306标识打开了块集的流。
图4是说明根据本技术的用于管理闪存存储系统110的方法的流程图。可以由控制器120从用指令编码的介质读取和执行一个或多个指令序列来执行该方法。一旦控制器120已经完成了一旦闪存存储设备110已经通电所需的任何启动任务和内务处理过程,或者接收到为维护目的而中断的操作和接收到写入请求时,则该方法开始。写入请求可以基于经由接口115从主机150接收的命令。可替换地,可以由控制器120执行的诸如维护处理的内部处理来生成写入请求。在接收到写入请求时,控制器120发起写入请求。发起写入请求可以包括确定要写入哪个块集。一旦已经发起写入请求,则从框410开始处理。
在框410处,在主流中,将数据写入到存储设备的第一多个块集。主流可以是主机流,例如用于将主机数据写入一个或多个块集145。可以基于写入操作所需的块集和用于存储设备管理的因素来由控制器120选择一个或多个块集145。可以选择块集145并将其排队,或者可以在需要下一个块集145时,诸如在一个块集145关闭之后,选择该块集145。主流可以一次打开一个块集145。
在框420处,将主序列号分配给第一多个块集的每个块集。主序列号是从被分配给第一多个块集中的最近关闭的块集的先前主序列号增加的。当为主流打开块集145时,控制器120确定最近关闭的块集145的主序列号。最近关闭的块集的主序列号然后增加1以确定当前的主序列号。将当前的主序列号分配给当前打开的块集145。在某些实施方式中,可以用计数器跟踪主序列号,随着打开块集而增加该计数器。在这种实施方式中,可能存在多于一个打开和关闭块集的主流。计数器防止具有与第一打开的块集145相同的主编号的第二打开的块集145。
当打开块集时,将主序列号分配给该块集,以在该流为打开时正确地引导写入操作。例如,如果两个块集145被打开但没有已经被分配的主序列号,针对这些块集145的重播顺序将是未定义的。此外,某些运行时数据引导决策依赖于知道每个打开的块集的主序列号。然而,在某些实施方式中,主序列号可以当关闭该块集时被分配。
在框430处,将间接日志写入第一多个块集中的每一个。间接日志对应于被写入块集的数据,并与被分配给各个块集的主序列号相关联。随着更新块集145,将间接日志写入每个块集145。可以将一个或多个间接日志写入块集145的块140。可以将目录写入例如块集145的上一块140,其对间接日志跟踪。因此,可以将间接日志分散在块集145当中。另外,可以将间接日志写入具体位置,诸如在逻辑条带(stripe)的上一页之后的页。
在框440处,在与主流同时操作的次流中,将数据写入第二多个块集。次流可以是垃圾回收流或其他维护流。可以选择块集并将其排队,或者可以随着先前的块集被关闭来选择该块集。例如,GC流可以选择用于GC操作的块集145。但是,GC流将排除具有比当前GC主序列号大的主序列号的块集。
在框450处,将主-次序列号分配给第二多个块集的每个块集。主-次序列号包含被分配给第一多个块集中最近关闭的块集的先前主序列号以及包含从第二多个块集中最近关闭的块集增加的次序列号。在某些实施方式中,诸如具有多个主机流的系统,跨所有主机流的最旧的主机主序列号被用于GC主序列号。
在框460处,将间接日志写入到第二多个块集中的每一个。间接日志对应于被写入到各个块集的数据,并且与被分配给各个块集的各个主-次序列号相关联。类似于上述框430,随着更新块集145,将日记写入到对应的块集145。
在框470处,通过重播来自第一多个块集和第二多个块集的间接日志来在存储设备的存储器中构造间接表,所述第一多个块集和第二多个块集首先根据各个主序列号并且其次根据各个次序列号来排序。块470可以在针对闪存存储系统110的启动序列期间发生。例如,闪存存储系统110可能已经断电或者可能已经被关闭,并且随后再次通电。
识别闪存存储系统110中具有日志的块集145。控制器120可以识别块集145中的哪个具有有效数据,并且确定具有有效数据的块集145的主序列号或主-次序列号。在某些实施方式中,控制器120可以维持块集145以及对应的主序列号或主-次序列号的持续列表。在某些其他实施方式中,每个块集145可以例如通过在关闭块集时将标识符存储到在流中打开的下一个块集,来在相关联的流中维护下一个块集145的标识符或到下一个块集145的链接。
首先根据各个主序列号对具有日志的块集145进行排序。具有相同主序列号的块145然后由次序列号来排序,其中次序列号开始为0或为空。通过以块集145的这个顺序重播来自块集145的日志,来发生重播。
可替换地,具有日志的块集145可以被分成两个列表,主机列表和GC列表。主机列表包括指定为主机类型的块集145,并且GC列表包括指定为GC类型的块集145。通过主序列号来对主机列表的块集进行排序。首先通过主序列号并且然后通过次序列号,对GC列表的块集进行排序。
重播以最旧的序列号开始,该序列号可以来自主机列表或GC列表。当重播主机块集时,对块集的日志重播,直到重播到具有与在GC列表的开头处的GC块集(例如,还未被重播的最旧的GC块集)的主序列号匹配的主序列号的主机块集。在重播了这个主机块集之后,从GC列表的开头开始重播GC块集。
当前的GC主序列号对应于GC列表的开头。对GC块集重播,直到重播到具有与当前的GC主序列号相同的主序列号的所有GC块集。然后,重播下一个主机块列表。在主机列表和GC列表之间切换重播,直到已经重播了所有块集。
本领域技术人员将理解,本文描述的各种说明性的块、模块、元件、组件、方法和算法可以被实现为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性,上面已经在其功能方面一般描述了各种说明性的块、模块、元件、组件、方法和算法。这种功能是否被实现为硬件或软件取决于特定应用和施加在整个系统上的设计限制。技术人员可以针对每个特定应用以各种方式实现所描述的功能。在不脱离本技术的范围的情况下可以不同地安排(例如,以不同的顺序安排或以不同的方式分隔)各种组件和块。
可以理解,所公开的处理中的步骤的具体顺序或层次是示例性途径的说明。基于设计偏好,可以理解,可以重新安排处理中的步骤的具体顺序或层次。可以同时进行一些步骤。所附方法权利要求以样本顺序呈现各种步骤的元件,并不意味着被限于所呈现的特定顺序或层次。
提供前面的描述以使得本领域任何技术人员能够实践本文描述的各个方面。对于这些方面的各种修改对于本领域技术人员将容易地显而易见,并且本文定义的一般原理可以被应用于其他方面。因此,权利要求不旨在被限于本文示出的方面,而是被赋予与文字权利要求一致的全部范围,其中除非特别地如此陈述,对单数形式的元件的引用并不旨在“一个且仅一个”,而是“一个或多个”。除非另有特别地陈述,术语“一些”是指一个或多个。男性中的代词(例如,他的)包括女性和中性的性别(例如,她和它的),反之亦然。标题和副标题,如果有的话,仅为了方便而被使用,不限制本发明。
诸如“方面”之类的短语并不暗示着这样的方面对本技术是必需的或者这种方面应用于本技术的所有配置。涉及方面的公开可以应用于所有配置或一个或多个配置。诸如方面的短语可以指一个或多个方面,反之亦然。诸如“配置”的短语并不意味着这样的配置对于本技术是必需的或者这种配置适用于本技术的所有配置。涉及配置的公开可以应用于所有配置或一个或多个配置。这样的配置的短语可以指一个或多个配置,反之亦然。
词语“示例性”在本文中用于意味“充当示例或说明”。本文中描述为“示例性”的任何方面或设计不一定被解释为比其他方面或设计优选或有利。
本领域普通技术人员已知或后来已知的遍及本公开描述的各个方面的元件的所有结构和功能的等同物通过引用明确地并入本文,并且旨在被权利要求包含。此外,无论这些公开是否在权利要求中被明确地叙述,本文中公开的内容不旨在专用于公众。权利要求要素不被根据35U.S.C.112节第六段的规定来解释,除非该要素是使用短语“用于的构件”明确叙述的,或者在方法权利要求的情况中该要素是使用短语“用于的步骤”来叙述的。此外,对于说明书或权利要求中使用术语“包括”“具有”等等的程度,这些术语旨在以类似于术语“包含”的方式是包容性的,如“包含”当在权利要求中被用作过渡词时所解释的。
Claims (20)
1.一种方法,包含:
在主流中,将数据写入到存储设备的第一多个块集;
将各个主序列号分配给所述第一多个块集的每个块集,其中所述各个主序列号是从被分配给所述第一多个块集的最近关闭的块集的先前主序列号增加的;
将各个间接日志写入到所述第一多个块集的每一个,其中所述各个间接日志对应于被写入到各个块集的数据并且与被分配给所述各个块集的所述各个主序列号相关联;
在与所述主流同时操作的次流中,将数据写入到所述存储设备的第二多个块集;
将各个主-次序列号分配给所述第二多个块集的每个块集,其中所述各个主-次序列号包含被分配给所述第一多个块集的最近关闭的块集的先前主序列号以及从所述第二多个块集中的最近关闭的块集增加的各个次序列号;
将各个间接日志写入到所述第二多个块集中的每一个,其中所述各个间接日志对应于被写入到所述各个块集的数据并且与被分配给所述各个块集的所述各个主-次序列号相关联;以及
通过重播来自所述第一多个块集和所述第二多个块集的间接日志来在所述存储设备的存储器中构造间接表,所述第一多个块集和第二多个块集首先根据各个主序列号并且其次根据各个次序列号来排序。
2.根据权利要求1所述的方法,其中,构造所述间接表还包含:
根据各个主序列号来对所述第一多个块集排序;
根据各个主序列号来对所述第二多个块集排序;以及
根据各个次序列号来对所述第二多个块集中具有相同主序列号的块集排序。
3.根据权利要求2所述的方法,其中,构造所述间接表还包含:
重播来自所排序的第一多个块集的每个块集的间接日志,直到所重播的块集的主序列号与所排序的第二多个块集中的最旧的主序列号匹配;以及
重播来自所排序的第二多个块集的每个块集的间接日志,直到具有与最旧的主序列号匹配的主序列号的所有块集已经被重播。
4.根据权利要求1所述的方法,其中,构造所述间接表还包含:
将所述第一多个块集和所述第二多个块集组合成第三多个块集;
根据各个主序列号来对所述第三多个块集排序;
根据各个次序列号来对所述第二多个块集中具有相同主序列号的块集排序;以及
重播来自所排序的第三多个块集的每个块集的间接日志。
5.根据权利要求1所述的方法,还包含:
在与所述主流同时操作的第二主流中,将数据写入到所述存储设备的第三多个块集;
将各个主序列号分配给所述第三多个块集的每个块集,其中所述各个主序列号是从被分配给所述第一多个块集或所述第三多个块集的最近关闭的块集的先前主序列号增加的;以及
将各个间接日志写入到所述第三多个块集中的每一个。
6.根据权利要求5所述的方法,其中所述主-次序列号包含被分配给所述第一多个块集或第三多个块集的最近关闭的块集的先前主序列号。
7.根据权利要求5所述的方法,其中所述主-次序列号包含被分配给所述第一多个块集的最近关闭的块集与所述第三多个块集的最近关闭的块集之间的较旧的块集的先前主序列号。
8.根据权利要求5所述的方法,其中所述主流对应于主机流,所述第二主流对应于第二主机流,并且所述次流对应于垃圾收集流。
9.根据权利要求1所述的方法,其中所述主流对应于主机流,并且所述次流对应于垃圾收集流。
10.根据权利要求9所述的方法,其中所述垃圾收集流为所述第二多个块集选择具有比所分配的主-次序列号的主序列号小的各个主序列号的块集。
11.根据权利要求1所述的方法,其中响应于启动所述存储设备,构造所述间接表。
12.一种闪存存储系统,包含:
存储器;
多个闪存设备;以及
控制器,所述控制器被配置为:
在主机流中,将数据写入到所述闪存存储系统的第一多个块集;
将各个主序列号分配给所述第一多个块集的每个块集,其中所述各个主序列号是从被分配给所述第一多个块集的最近关闭的块集的先前主序列号增加的;
将各个间接日志写入到所述第一多个块集的每一个,其中所述各个间接日志对应于被写入到各个块集的数据并且与被分配给所述各个块集的所述各个主序列号相关联;
在与所述主机流同时操作的垃圾收集流中,将数据写入到所述闪存存储系统的第二多个块集;
将各个主-次序列号分配给所述第二多个块集的每个块集,其中所述各个主-次序列号包含被分配给所述第一多个块集的最近关闭的块集的先前主序列号以及从所述第二多个块集中的最近关闭的块集增加的各个次序列号;
将各个间接日志写入到所述第二多个块集中的每一个,其中所述各个间接日志对应于被写入到所述各个块集的数据并且与被分配给所述各个块集的所述各个主-次序列号相关联;以及
通过重播来自所述第一多个块集和所述第二多个块集的间接日志来在所述存储器中构造间接表,所述第一多个块集和第二多个块集首先根据各个主序列号并且其次根据各个次序列号来排序。
13.根据权利要求12所述的闪存存储系统,其中所述控制器还被配置为:
根据各个主序列号来对所述第一多个块集排序;
根据各个主序列号来对所述第二多个块集排序;以及
根据各个次序列号来对所述第二多个块集中具有相同主序列号的块集排序;
重播来自所排序的第一多个块集的每个块集的间接日志,直到所重播的块集的主序列号与所排序的第二多个块集中的最旧的主序列号匹配;以及
重播来自所排序的第二多个块集的每个块集的间接日志,直到具有与最旧的主序列号匹配的主序列号的所有块集已经被重播。
14.根据权利要求12所述的闪存存储系统,其中所述控制器还被配置为:
将所述第一多个块集和所述第二多个块集组合成第三多个块集;
根据各个主序列号来对所述第三多个块集排序;
根据各个次序列号来对所述第二多个块集中具有相同主序列号的块集排序;以及
重播来自所排序的第三多个块集的每个块集的间接日志。
15.根据权利要求12所述的闪存存储系统,其中所述控制器还被配置为:
在与所述主机流同时操作的第二主机流中,将数据写入到所述存储系统的第三多个块集;
将各个主序列号分配给所述第三多个块集的每个块集,其中所述各个主序列号是从被分配给所述第一多个块集或所述第三多个块集的最近关闭的块集的先前主序列号增加的;以及
将各个间接日志写入到所述第三多个块集中的每一个。
16.根据权利要求12所述的闪存存储系统,其中,响应于启动所述存储设备,构造所述间接表。
17.一种用可执行指令编码的机器可读介质,所述可执行指令在由处理器执行时使所述处理器进行操作,所述操作包含:
在主流中,将数据写入到存储设备的第一多个块集;
将各个主序列号分配给所述第一多个块集的每个块集,其中所述各个主序列号是从被分配给所述第一多个块集的最近关闭的块集的先前主序列号增加的;
将各个间接日志写入到所述第一多个块集的每一个,其中所述各个间接日志对应于被写入到各个块集的数据并且与被分配给所述各个块集的所述各个主序列号相关联;
在与所述主流同时操作的次流中,将数据写入到所述存储设备的第二多个块集;
将各个主-次序列号分配给所述第二多个块集的每个块集,其中所述各个主-次序列号包含被分配给所述第一多个块集的最近关闭的块集的先前主序列号以及从所述第二多个块集中的最近关闭的块集增加的各个次序列号;
将各个间接日志写入到所述第二多个块集中的每一个,其中所述各个间接日志对应于被写入到所述各个块集的数据并且与被分配给所述各个块集的所述各个主-次序列号相关联;以及
通过重播来自所述第一多个块集和所述第二多个块集的间接日志来在所述存储设备的存储器中构造间接表,所述第一多个块集和第二多个块集首先根据各个主序列号并且其次根据各个次序列号来排序。
18.根据权利要求17所述的机器可读介质,其中所述操作还包含:
在与所述主流同时操作的第二主流中,将数据写入到所述存储设备的第三多个块集;
将各个主序列号分配给所述第三多个块集的每个块集,其中所述各个主序列号是从被分配给所述第一多个块集或所述第三多个块集的最近关闭的块集的先前主序列号增加的;以及
将各个间接日志写入到所述第三多个块集中的每一个。
19.根据权利要求18所述的机器可读介质,其中所述主-次序列号包含被分配给所述第一多个块集的最近关闭的块集与所述第三多个块集的最近关闭的块集之间的较旧的块集的先前主序列号。
20.根据权利要求18所述的机器可读介质,其中所述主流对应于主机流,所述第二主流对应于第二主机流,并且所述次流对应于垃圾收集流。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/221,547 US9946489B2 (en) | 2016-07-27 | 2016-07-27 | Multi-stream journaled replay |
US15/221,547 | 2016-07-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107665156A true CN107665156A (zh) | 2018-02-06 |
CN107665156B CN107665156B (zh) | 2021-07-06 |
Family
ID=60951089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710535674.5A Active CN107665156B (zh) | 2016-07-27 | 2017-06-28 | 日志重播方法与系统 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9946489B2 (zh) |
KR (1) | KR101979088B1 (zh) |
CN (1) | CN107665156B (zh) |
DE (1) | DE102017112489B4 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338975A (zh) * | 2018-12-19 | 2020-06-26 | 北京忆恒创源科技有限公司 | 面向多流的垃圾回收方法及其存储设备 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210012085A (ko) | 2019-07-23 | 2021-02-03 | 삼성전자주식회사 | 저널 리플레이를 개선하기 위한 스토리지 장치, 그것의 동작 방법, 및 스토리지 장치를 포함하는 전자 장치 |
US11467980B2 (en) | 2020-01-10 | 2022-10-11 | Micron Technology, Inc. | Performing a media management operation based on a sequence identifier for a block |
US11620234B2 (en) | 2020-06-29 | 2023-04-04 | Western Digital Technologies, Inc. | Operation-deterministic write operations for data recovery and integrity checks |
KR20220168510A (ko) * | 2021-06-16 | 2022-12-23 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102089746A (zh) * | 2008-05-13 | 2011-06-08 | 微软公司 | 采用事务日志的闪存恢复 |
US8290899B2 (en) * | 2007-03-28 | 2012-10-16 | Netapp, Inc. | Group stamping style asynchronous replication utilizing a loosely-accurate global clock |
CN103298013A (zh) * | 2013-06-24 | 2013-09-11 | 京信通信系统(中国)有限公司 | 一种进行业务恢复的方法及装置 |
CN104035729A (zh) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
US20150317079A1 (en) * | 2013-03-28 | 2015-11-05 | Hewlett-Packard Development Company, L.P. | Coordinating replication of data stored in a non-volatile memory-based system |
CN105389230A (zh) * | 2015-10-21 | 2016-03-09 | 上海爱数信息技术股份有限公司 | 一种结合快照技术的持续数据保护系统及方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR930008656B1 (ko) * | 1991-07-19 | 1993-09-11 | 삼성전자 주식회사 | 노이즈가 억제되는 데이타 출력 버퍼 |
US6229737B1 (en) * | 1996-12-12 | 2001-05-08 | Ericsson Inc. | Method and apparatus for initializing semiconductor memory |
US6378035B1 (en) * | 1999-04-06 | 2002-04-23 | Microsoft Corporation | Streaming information appliance with buffer read and write synchronization |
US6535920B1 (en) * | 1999-04-06 | 2003-03-18 | Microsoft Corporation | Analyzing, indexing and seeking of streaming information |
US6820144B2 (en) * | 1999-04-06 | 2004-11-16 | Microsoft Corporation | Data format for a streaming information appliance |
US7085842B2 (en) * | 2001-02-12 | 2006-08-01 | Open Text Corporation | Line navigation conferencing system |
US7065696B1 (en) * | 2003-04-11 | 2006-06-20 | Broadlogic Network Technologies Inc. | Method and system for providing high-speed forward error correction for multi-stream data |
US7574451B2 (en) * | 2004-11-02 | 2009-08-11 | Microsoft Corporation | System and method for speeding up database lookups for multiple synchronized data streams |
US7366826B2 (en) | 2004-12-16 | 2008-04-29 | Sandisk Corporation | Non-volatile memory and method with multi-stream update tracking |
US7386655B2 (en) * | 2004-12-16 | 2008-06-10 | Sandisk Corporation | Non-volatile memory and method with improved indexing for scratch pad and update blocks |
US7594087B2 (en) * | 2006-01-19 | 2009-09-22 | Sigmatel, Inc. | System and method for writing data to and erasing data from non-volatile memory |
ATE456432T1 (de) | 2006-09-05 | 2010-02-15 | Senson Invest Ltd | Tragbares elektrowerkzeug |
US8151060B2 (en) | 2006-11-28 | 2012-04-03 | Hitachi, Ltd. | Semiconductor memory system having a snapshot function |
WO2009076723A1 (en) * | 2007-12-19 | 2009-06-25 | Colin Simon | Device and method for synchronisation of digital video and audio streams to media presentation devices |
US7941692B2 (en) | 2007-12-31 | 2011-05-10 | Intel Corporation | NAND power fail recovery |
US8200922B2 (en) | 2008-12-17 | 2012-06-12 | Netapp, Inc. | Storage system snapshot assisted by SSD technology |
CN103392207B (zh) * | 2011-10-05 | 2017-08-04 | 希捷科技有限公司 | 非易失性存储的自身日志记录和层级一致性 |
US8977769B2 (en) * | 2012-01-17 | 2015-03-10 | Harman International Industries, Incorporated | System for managing lossless failover in an audio-bridging (AVB) network |
US9202577B2 (en) | 2012-03-30 | 2015-12-01 | Intel Corporation | Solid state drive management in power loss recovery |
US9037820B2 (en) | 2012-06-29 | 2015-05-19 | Intel Corporation | Optimized context drop for a solid state drive (SSD) |
JP5887418B2 (ja) | 2012-09-14 | 2016-03-16 | 株式会社日立製作所 | ストリームデータ多重処理方法 |
US9690642B2 (en) | 2012-12-18 | 2017-06-27 | Western Digital Technologies, Inc. | Salvaging event trace information in power loss interruption scenarios |
US9183142B2 (en) | 2013-03-15 | 2015-11-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Reducing flash memory write amplification and latency |
US20150127891A1 (en) * | 2013-11-04 | 2015-05-07 | Falconstor, Inc. | Write performance preservation with snapshots |
US9720618B1 (en) * | 2013-12-16 | 2017-08-01 | EMC IP Holding Company LLC | Maintaining backup snapshots using continuous replication from multiple sources |
US9588847B1 (en) * | 2014-03-25 | 2017-03-07 | EMC IP Holding Company LLC | Recovering corrupt virtual machine disks |
US9804934B1 (en) * | 2014-12-30 | 2017-10-31 | EMC IP Holding Company LLC | Production recovery using a point in time snapshot |
US10108350B2 (en) * | 2015-09-10 | 2018-10-23 | Western Digital Technologies, Inc. | Method for providing nonvolatile storage write bandwidth using a caching namespace |
US10048876B2 (en) * | 2015-09-10 | 2018-08-14 | Western Digital Technologies, Inc. | Method for providing nonvolatile storage write bandwidth using a caching namespace |
-
2016
- 2016-07-27 US US15/221,547 patent/US9946489B2/en not_active Expired - Fee Related
-
2017
- 2017-06-07 DE DE102017112489.6A patent/DE102017112489B4/de active Active
- 2017-06-19 KR KR1020170077449A patent/KR101979088B1/ko active IP Right Grant
- 2017-06-28 CN CN201710535674.5A patent/CN107665156B/zh active Active
-
2018
- 2018-04-13 US US15/953,373 patent/US10635341B2/en active Active
-
2020
- 2020-03-19 US US16/824,581 patent/US11182091B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8290899B2 (en) * | 2007-03-28 | 2012-10-16 | Netapp, Inc. | Group stamping style asynchronous replication utilizing a loosely-accurate global clock |
CN102089746A (zh) * | 2008-05-13 | 2011-06-08 | 微软公司 | 采用事务日志的闪存恢复 |
US20150317079A1 (en) * | 2013-03-28 | 2015-11-05 | Hewlett-Packard Development Company, L.P. | Coordinating replication of data stored in a non-volatile memory-based system |
CN103298013A (zh) * | 2013-06-24 | 2013-09-11 | 京信通信系统(中国)有限公司 | 一种进行业务恢复的方法及装置 |
CN104035729A (zh) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
CN105389230A (zh) * | 2015-10-21 | 2016-03-09 | 上海爱数信息技术股份有限公司 | 一种结合快照技术的持续数据保护系统及方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338975A (zh) * | 2018-12-19 | 2020-06-26 | 北京忆恒创源科技有限公司 | 面向多流的垃圾回收方法及其存储设备 |
Also Published As
Publication number | Publication date |
---|---|
KR20180012691A (ko) | 2018-02-06 |
US11182091B2 (en) | 2021-11-23 |
US10635341B2 (en) | 2020-04-28 |
KR101979088B1 (ko) | 2019-08-28 |
US20180232176A1 (en) | 2018-08-16 |
DE102017112489A1 (de) | 2018-02-01 |
US9946489B2 (en) | 2018-04-17 |
CN107665156B (zh) | 2021-07-06 |
US20200218463A1 (en) | 2020-07-09 |
DE102017112489B4 (de) | 2023-10-12 |
US20180032277A1 (en) | 2018-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107665156A (zh) | 多流日志重播 | |
US8909986B2 (en) | Data storing method for solid state drive to preserve data integrity after power failure | |
CN103995578B (zh) | 一种具有数据持续模式的器件驱动器 | |
CN101681312B (zh) | 存储器系统 | |
US8255616B2 (en) | Non-volatile memory device and method therefor | |
US7039786B2 (en) | Memory device and recording and/or reproducing apparatus employing this memory device | |
US7146455B2 (en) | System and method for optimized access to memory devices requiring block writing | |
US20130227246A1 (en) | Management information generating method, logical block constructing method, and semiconductor memory device | |
US20130254458A1 (en) | Single-level cell and multi-level cell hybrid solid state drive | |
TW201037717A (en) | Method for accessing storage apparatus and related control circuit | |
CN103688246A (zh) | 具有在活跃slc和mlc存储器分区之间分布的小逻辑组的非易失性存储器和方法 | |
US20110161563A1 (en) | Block management method of a non-volatile memory | |
KR20160043121A (ko) | 동적 멀티 모드 동작의 비휘발성 메모리 | |
CN101714062A (zh) | 改进的混合驱动器 | |
CN103270500A (zh) | 事务日志恢复 | |
CN104205065B (zh) | 用于列表数据压缩的多重分类 | |
CN101946286A (zh) | 用于模拟每单元单个位的nand闪存的每单元多个位的nand闪存的控制器 | |
CN101124555A (zh) | 具有多流更新的非易失性存储器和方法 | |
CN102999430A (zh) | 处理具有非易失性存储器的系统的未完全关闭 | |
CN101008919A (zh) | 基于裸设备的音视频数据存取方法和装置 | |
CN101681313A (zh) | 存储器系统 | |
WO2003088044A1 (fr) | Dispositif de stockage de donnees | |
JP2009503735A5 (zh) | ||
CN101763309A (zh) | 非易失性存储装置、信息记录系统及信息记录方法 | |
CN103365786A (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 |