CN106484761B - 用于改进储存日志的方法和系统 - Google Patents

用于改进储存日志的方法和系统 Download PDF

Info

Publication number
CN106484761B
CN106484761B CN201610721545.0A CN201610721545A CN106484761B CN 106484761 B CN106484761 B CN 106484761B CN 201610721545 A CN201610721545 A CN 201610721545A CN 106484761 B CN106484761 B CN 106484761B
Authority
CN
China
Prior art keywords
bulk
flash memory
block
storage area
sequence
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
CN201610721545.0A
Other languages
English (en)
Other versions
CN106484761A (zh
Inventor
D.P.诺埃
P.A.米斯拉
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.)
Western Digital Technologies Inc
Original Assignee
Hitachi Global Storage Technologies Netherlands BV
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 Hitachi Global Storage Technologies Netherlands BV filed Critical Hitachi Global Storage Technologies Netherlands BV
Publication of CN106484761A publication Critical patent/CN106484761A/zh
Application granted granted Critical
Publication of CN106484761B publication Critical patent/CN106484761B/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/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • 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/061Improving I/O performance
    • 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
    • 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/064Management of blocks
    • 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/0643Management of files
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

公开了一种用于改进储存日志的技术。在一些实施例中,该技术可被实现为一种用于改进储存日志的方法,包括:向日志记录闪存中的储存区的第一大块中的有效块的计数;接收向该闪存写入第二大块的请求;使用控制器确定该第一大块中的有效块的计数是否低于指定阈值;并且在该第一大块中的有效块的数目低于指定阈值的情况下,向该闪存中的储存区的第一大块的位置写入第二大块。

Description

用于改进储存日志的方法和系统
技术领域
本公开涉及用于改进储存日志的方法和系统。
背景技术
日志文件系统可在向文件系统交付改变之前跟踪改变。这样的日志可降低在系统崩溃或错误时数据损坏或丢失的风险。日志典型地具有有限尺寸。日志能从空间(例如,文件)的开头写入到空间的末尾,并且一旦达到末尾则绕回空间的开头。现有编入日志的数据布局经受这样的问题,其中当日志绕回并且到达其中存在现有数据的点时,有用数据必须被重写。剩余有用数据必须被丢弃或重写到新位置中,这引起“写入放大”并降低性能(因为写入典型地比读取慢)。
发明内容
公开了一中用于改进储存日志的技术。在一些实施例中,这些技术可被实现为用于改进储存日志的方法,包括:向日志记录闪存中的储存区的第一大块中的有效块的计数,接收向该闪存写入第二大块的请求,使用控制器确定该第一大块中的有效块的计数是否低于指定阈值,并且在该第一大块中的有效块的数目低于指定阈值的情况下,向该闪存中的储存区的第一大块的位置写入第二大块。
实施例包括在日志中存储数据,提供“重放”日志并一直恢复数据的正确状态的能力,而无需顺序重放日志。实施例可包括在正常(写入)操作期间跳过日志的一些部分的能力。如下面进一步详细讨论的,日志可提供即使当其包括已跳过的较老数据时、也进行日志的恢复(重放)的能力。该日志可进一步提供使用多个CPU内核并行进行恢复的能力。
根据本公开的方面,一种用于改进储存日志的方法能包括步骤:向日志记录闪存中的储存区的第一大块中的有效块的计数,接收向该闪存写入第二大块的请求,并使用控制器确定该第一大块中的有效块的计数是否低于指定阈值。该方法还能包括步骤:在该第一大块中的有效块的数目低于指定阈值的情况下,向该闪存中的储存区的第一大块的位置写入第二大块,接收恢复请求,和使用恢复序列映射来恢复该闪存的一个或多个部分。
根据该实施例的附加方面,能在该闪存中与储存区的一个或多个大块关联的元数据中维持有效块的计数,并且能与逻辑块地址映射关联地存储该元数据。
根据该实施例的附加方面,当发生第一大块中的一个或多个块的重写时,更新该计数。
根据该实施例的附加方面,向该闪存中的储存区的第一大块的位置写入第二大块的步骤能包括:重新打包该储存区的第一大块的数据的部分,并向该闪存的第二储存位置写入该数据的部分。
根据该实施例的附加方面,在该第一大块中的有效块的数目超出指定阈值的情况下,该方法能使用该控制器确定该闪存的储存区的第三大块中的有效块的计数是否小于指定阈值。
根据该实施例的附加方面,能按照依次顺序来评估闪存的储存区的大块,以便确定闪存的储存区的特定大块是否包括满足指定阈值的多个有效块。
根据该实施例的附加方面,与储存区的一个或多个大块关联的元数据能包括在储存区的一个或多个大块的每一个中的有效块的计数,并且被分类为标识具有有效块的最低计数的储存区的块。
根据该实施例的附加方面,该阈值能被指定以降低写入放大问题。
根据该实施例的附加方面,取决于以下至少一个:CPU利用的级别、网络利用的级别、和用户指定偏好,能调整该阈值。
根据该实施例的附加方面,该阈值需要少于所述块的百分之五十是有效块,以使用大块的位置作为第二大块的写入位置。
根据该实施例的附加方面,该方法还能包括使得逻辑块地址与闪存块序列号关联的步骤。
根据该实施例的附加方面,使得逻辑块地址与闪存块序列号关联的步骤能包括:使得闪存序列号与逻辑块地址映射中的逻辑块地址关联。
根据该实施例的附加方面,恢复闪存的一个或多个部分能包括:在恢复之前读取闪存的大块,确定从闪存读取的大块的物理块是否在恢复序列映射中,在该物理块不在恢复序列映射中的情况下,向该逻辑块地址映射添加该物理块的地址,和向该恢复序列映射添加与该大块关联的序列号。
根据该实施例的附加方面,恢复闪存的一个或多个部分能包括:在恢复之前读取闪存的大块,确定从闪存读取的大块的物理块是否在恢复序列映射中,在该物理块在恢复序列映射中的情况下,比较与读取的大块关联的序列号和恢复序列映射中的与该大块关联的序列号,在与读取的大块关联的序列号高于恢复序列映射中的与该大块关联的序列号的情况下,更新该逻辑块地址映射以包括该物理块的物理块地址,和更新该恢复序列映射以包括与读取的大块关联的序列号。
根据该实施例的附加方面,该方法能包括:忽略其中与读取的大块关联的序列号低于恢复序列映射中的与该大块关联的序列号的、读取的块。
根据该实施例的附加方面,该方法能进一步包括步骤:通过逻辑块地址来对逻辑块地址映射进行分区,通过逻辑块地址来对恢复序列映射进行分区,和提供用于锁定块地址的范围的锁,其中该锁促进闪存储存器的并发恢复。
根据该公开的方面,一种计算机程序产品,包括可在计算机上运行的指令序列,该计算机程序产品执行用于改进储存日志的处理,该计算机程序产品实现步骤:向日志记录闪存中的储存区的第一大块中的有效块的计数;接收向该闪存写入第二大块的请求;使用控制器确定该第一大块中的有效块的计数是否低于指定阈值;在该第一大块中的有效块的数目低于指定阈值的情况下,向该闪存中的储存区的第一大块的位置写入第二大块;接收恢复请求;和使用恢复序列映射来恢复该闪存的一个或多个部分。
根据该公开的方面,一种用于改进储存日志的系统能包括:储存介质装置和与该储存介质装置关联的基于PCIe的装置控制器,其中所述基于PCIe的装置控制器被配置为:向日志记录闪存中的储存区的第一大块中的有效块的计数,接收向该闪存写入第二大块的请求,确定该第一大块中的有效块的计数是否低于指定阈值,在该第一大块中的有效块的数目低于指定阈值的情况下,向该闪存中的储存区的第一大块的位置写入第二大块,接收恢复请求,和使用恢复序列映射来恢复该闪存的一个或多个部分。
根据该实施例的附加方面,在该第一大块中的有效块的数目超出指定阈值的情况下,该装置控制器能确定该闪存的储存区的第三大块中的有效块的计数是否小于指定阈值。
现在将参考附图中示出的其示范实施例,来更详细地描述本公开。尽管下面参考示范实施例来描述本公开,但是应理解的是,本公开不限于此。可以利用这里的教义的本领域技术人员将认识到附加实现、修改、和实施例、以及落入这里描述的本公开的范围内的、并且能针对其本公开可具有重要用途的其他使用领域。
附图说明
为了促进本公开的更全面理解,现在参考附图,其中用相同附图标记参考相同元件。这些图不应被解释为限制本公开,而是意欲仅是示范性的。
图1是描绘了根据本公开的实施例的与主机装置通信的多个PCIe装置的框图。
图2是描绘了根据本公开的实施例的用于改进的储存日志的数据结构的框图。
图3是描绘了根据本公开的实施例的用于改进储存日志的组件的框图。
图4描绘了图示根据本公开的实施例的用于改进储存日志的方法的流程图。
图5描绘了根据本公开的实施例的用于使用改进的储存日志进行恢复的方法的流程图。
具体实施方式
本公开涉及一种用于对于固态驱动器(“SSD”)(例如,包括闪存)改进储存日志的技术。可提供允许改进的储存日志的易于随机存取的固态储存器、数据结构、算法、和/或电路(例如(微)处理器、逻辑门、开关、特定用途集成电路(ASIC)、可编程逻辑控制器(例如,FPGA)、和嵌入式微控制器)。
现在转到图,图1是描绘了根据本公开的实施例的与主机装置通信的PCIe装置的框图。图1包括多个计算技术,诸如主机系统102、主机CPU 104、和PCI高速根联合体106。交换器108可以经由PCI高速根联合体106将诸如目标110、116和122的多个目标(例如,PCIe装置,诸如基于NVMe的目标)可通信地耦接到主机系统102。
目标110可包括控制器112(例如,NVMe控制器)和非易失性储存器114。目标116可包括控制器118(例如,NVMe控制器)和非易失性储存器120。目标122可包括控制器124(例如,NVMe控制器)和非易失性储存器126。
基于存储器的资源可经由存储接口(例如,双数据率类型三同步动态随机存取存储器(DDR3SDRAM))由主机系统102存取。存储器能采取任何合适形式,例如但不限于固态存储器(例如,闪存、或固态驱动器(SSD))、光存储器、和磁存储器。
根据一些实施例,可使用除了PCIe之外的接口标准用于一个或多个部分,包括但不限于串行高级技术附件(SATA)、高级技术附件(ATA)、小型计算机系统接口(SCSI)、PCI-扩展(PCI-X)、光纤通道、串行附加SCSI(SAS)、安全数字(SD)、嵌入式多媒体卡(EMMC)、和通用闪速储存器(UFS)。
主机系统102能采样任何合适形式,例如但不限于,企业服务器、数据库主机、工作站、个人计算机、移动电话、游戏装置、个人数字助理(PDA)、电子邮件/文本消息传送装置、数字相机、数字媒体(例如,MP3)播放器、GPS导航装置、和TV系统。
主机装置102和目标装置能包括附加组件,为了简化图而没有在图1中示出。而且,在一些实施例中,并非存在示出的所有组件。此外,各个控制器、块和接口能按照任何适当的方式实现。例如,控制器能采取微处理器或处理器和计算机可读取介质的一个或多个的形式,所述计算机可读取介质存储例如(微)处理器、逻辑门、开关、特定用途集成电路(ASIC)、可编程逻辑控制器(例如,FPGA)、和嵌入式微控制器可运行的计算机可读取程序代码(例如,软件或固件)。
图2是描绘了根据本公开的实施例的用于改进的储存日志的数据结构的框图。图2包括储存装置209,其具有大块202、大块203到大块n、大块有效块计数210、逻辑到物理映射212、和恢复映射214。在一些实施例中,可组合大块有效块计数210、逻辑到物理映射212、和恢复映射214中的两个或多个。
数据可在包括该数据和用于多个个别“块”的元数据的“大块”中被(例如,顺序)写出。如果块稍后被重写,则其可能没有在适当位置被更新。取而代之的是,更新的数据块可被写入新的大块中。大块可典型地被顺序写出,直到达到储存装置的末尾为止。典型编入日志的数据布局一旦到达储存装置中的储存区的末尾,“绕回的”大块就向该装置的开头写入。在这一点,新的大块写入典型地重写现有的大块,并且这些大块内的有效数据可首先被重新打包到新的大块中或被丢弃。
本公开的实施例可提供能够容忍任何时间的不正常关机或崩溃的数据布局。为了处置不正常关机或崩溃,实施例可使用编入日志的布局。尽管利用两个大块进行图示,但是储存装置可包括任意数目的储存部分(例如,至大块n)。尽管大块202和203被描绘为特定尺寸的大块,但是可使用其他尺寸和部分或类型的储存器(例如,轨道、扇区、不同尺寸的大块等)。如图2中图示的,大块202和203可包括储存区的64块,一些由有效数据使用(包括例如块206和216的暗块)并且一些未被使用或保持已经重写的数据(包括例如块208的亮块)。大块202和203可以是储存日志系统中的两个大块,并且它们中的每一个可与序列号(即,分别202和203)关联。在一些实施例中,大块202可以是日志系统当前正写入的大块,并且大块203可以是下一顺序大块。
根据一些实施例,每一大块中的当前有效块的数目可被存储在大块有效块计数210中(例如,大块序列号202中的43个有效块和大块序列号203中的22个有效块)。在其他实施例中,数据结构可跟踪储存区的轨道、扇区、或其他部分中的数据的有效部分的数目。大块有效块计数210可将大块的序列号与有效块(例如,包括没被删除或重写的数据的块)的计数关联。如果接收到写入请求,则处置该写入请求的处理或电路(例如,储存装置209的储存控制器)可基于一个或多个因素确定是否向当前大块写入。例如,可基于当前大块中的有效块的数目是否小于指定阈值,来进行是否使用当前大块的确定。例如,如果阈值是50%并且当前大块是大块序列号202,则可使用该序列号来标识有效块的数目,以映射到大块有效块计数210中的计数。在当前示例中,大块序列号202的64块之中的43块可以是有效的(~67%)。大块序列号203的评估可确定64块之中的仅22块可以是有效的(~34%),由此大块序列号202可被“跳过”,并且该写入请求的数据可被写入到大块序列号203。
向大块序列号203写入数据并跳过大块序列号202可与传统顺序日志模型决裂,并且可需要附加数据来确保可恢复性。恢复映射214可跟踪与数据的有效部分关联的序列号(例如,包括数据的最当前块的物理大块)。传统上,恢复可顺序读取大块,并使用具有与逻辑块地址关联的物理储存的块的大块,直到标识了具有与相同逻辑块地址关联的物理块的具有更高序列号的新的大块为止。在那一点,新的物理块地址可与逻辑块地址关联。恢复映射214可将储存部分的序列号或其他指示符与逻辑块地址关联,使得恢复处理可标识储存部分的当前版本。例如,恢复映射214可将大块的序列号与逻辑块地址关联。在一些实施例中,当接收到恢复请求时,可顺序读取一个或多个储存部分。当读取储存区时,可生成恢复映射214,以将具有物理块的大块的序列号与具有逻辑物理地址的数据的当前拷贝关联。
在一些实施例中,恢复映射214可提供锁定,其可以以每一逻辑块为基础、以逻辑块的范围为基础、或以储存区的另一单元为基础。恢复序列映射的生成可指示与具有用于逻辑块的当前数据的物理块关联的大块的序列号,恢复可以不需要所有写入从日志读取并顺序施加。大块可被并行读取和恢复。恢复映射214可通过逻辑块地址来分区恢复序列映射和/或逻辑块地址映射,并且可提供关于逻辑块地址或逻辑块地址的范围的锁定,这允许并发找回不同逻辑块地址或逻辑块地址的不同范围。
逻辑到物理映射212可将逻辑块与储存装置的物理块关联。在一些实施例中,大块序列号可与逻辑块关联,以指示具有与逻辑块对应的有效物理块的物理大块。
图3描绘根据本公开实施例的用于改进储存日志(storage journaling)的组件。各组件可以是硬件(例如,专用电路)、固件、软件或前述的组合。
下面的描述描绘用于可以包括一个或更多组件的备份和恢复的系统和方法的网络元件、计算机和/或组件。如在此使用的,术语“组件”可以理解为指计算软件、固件、硬件和/或其各种组合(例如,(微)处理器、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器(例如,FPGA)、以及嵌入式微控制器、包含可执行指令的电子储存器等)。然而,组件不应理解为不在硬件、固件上实施或者记录在处理器可读可记录储存介质上的软件(即,组件不是软件本身)。要注意组件是示例性的。组件可以被组合、集成、分离和/或复制以支持各种应用。此外,替代或除了在特定组件处执行的功能,如在特定组件处执行的在此描述的功能可以在一个或更多其他组件处和/或由一个或更多其他装置执行。此外,组件可以跨越多个装置和/或彼此接近或远离的其他组件实施。此外,组件可以从一个装置移除和添加到另一装置,和/或可以包括在两个装置中。在一些实施例中,一个或更多组件可以实施为SSD控制器、主机系统和/或SSD优化软件的一部分。如图3中图示的,储存日志改进组件310可以包含有效块监控组件312、目标大块(chunk)识别组件314、恢复映射管理组件316和错误记录(error logging)和报告组件318。
有效块监控组件312可以追踪大块中有效块(即,还没有被重写的块)的数目、比例或其他指标。
在日志绕回(wrap around)(即,到达闪存的序列端并且从闪存的开端继续)之前还没有被重写的大块中的块可能包含可能需要重写或丢失的有效数据。有效块监控组件312可以追踪有效块,并且在与大块相关联的元数据中存储信息。元数据可以与逻辑块地址(LBA)映射相关联,并且可以指示数据的有效性或无效性的度量(例如,有效块的数目、无效或重写块的数目、有效块的比例、无效块的比例等)。包含有效性计数的元数据可以存储为将逻辑块地址映射到物理块地址的逻辑块地址映射的一部分,或者其可以存储在分离的数据结构中。有效性的计数或其他指标可以按照大块或按照其他分组(例如,盘驱动器上的扇区、盘驱动器上的轨道等)分组。有效块监控组件312可以监控到储存区的各部分的写入,并且当重写出现时可以更新计数(例如,当特定大块中的块被重写时,减少大块中有效块的数目)。
目标大块识别组件314可以使用关于数据有效性的元数据以识别用于写入的储存区的部分。可以选择储存区可以识别的部分,以减少需要重写的该储存区的有效部分的数目。这可以减少写入放大问题、I/O通信量、CPU或控制器利用以及储存装置上的磨损。例如,目标大块识别组件314可以略过包含大量有效数据的大块,并且重写已经接收重写或者替代数据无效的大块。在一些实施例中,目标大块识别组件314可以使用元数据,诸如大块中有效块的计数,并且可以将元数据与指定阈值比较。例如,如果识别的大块中有效块的数目低于指定阈值,那么目标大块识别组件314可以选择识别的大块的储存区作为用于写入请求的大块的目标位置。在储存区被写入请求重写之前,识别的大块的一个或更多有效块可以读取并且重新打包到新的大块中。重新打包的数据可以作为新大块的一部分写入到储存区中的第二位置。然而,如果目标大块识别组件314确定识别的大块中的有效块的数目满足或超过阈值,那么目标大块识别组件314可以略过该大块并且评估另一大块用于潜在的目标写入位置。在一些实施例中,可以顺序评估大块或储存区的其他单元。在一个或更多实施例中,可以分类元数据,以允许具有最低有效存储量的储存区的一部分(例如,大块、轨道、扇区)被识别。在确定是否重写储存区的一部分时,目标大块识别组件314还可以评估其他因素(例如,数据龄期、最后更新时间、数据使用的热度或频率、数据的连续次序、与储存区的一部分相关联的错误等)。
在一些实施例中,取决于一个或更多因素,可以调整由目标大块识别组件314评估的阈值或其他因素。因素可以包括例如CPU利用的级别、网络利用的级别和用户指定偏好。在一些实施例中,阈值可以要求少于块的百分之五十为有效块,以使用大块的位置作为用于第二大块的写入位置。
略过数据的部分可能破坏预期连续恢复的传统日志恢复格式。恢复映射管理组件316可以生成和/或管理一个或更多数据结构,用于尽管略过大块也恢复日志。一些数据格式可能包含可以用于恢复的序列号。例如,当写出大块时,其可以包含可能单调增加的序列号。恢复映射管理组件316可以追踪与数据的有效部分(例如,包含数据的最当前副本的物理块)相关联的序列号。传统上,恢复可以顺序读取大块,并且使用具有与逻辑块地址相关联的物理储存区的块的大块,直到识别具有有比与同一逻辑块地址相关联的物理块更高序列号的新大块。此时,新的物理块地址可以与逻辑块地址相关联。恢复映射管理组件316可以将序列号或储存区的部分的其他指标与逻辑块地址相关联,使得恢复处理可以识别储存区的部分的当前版本。例如,恢复映射管理组件316可以将大块的序列号与逻辑块地址相关联。在一些实施例中,当接收恢复请求时,恢复映射管理组件316可以顺序读取储存区的一个或更多部分。例如,恢复映射管理组件316可以读取储存区的所有大块和它们的块。在一些实施例中,恢复映射管理组件316可以生成数据结构(例如,恢复序列映射)以将具有包含数据的当前副本的物理块的大块的序列号与逻辑块地址相关联。
当读取储存区的块时,恢复映射管理组件316可以确定恢复序列映射中是否存在块。如果恢复序列映射中不存在块,那么恢复映射管理组件316可以添加具有包含块的当前大块的序列号的条目(entry)。恢复映射管理组件316还可以添加序列号到逻辑块地址映射。如果在恢复序列映射中存在块,那么恢复映射管理组件316可以比较与当前读取的大块相关联的序列号与恢复序列映射中存储的序列号。如果恢复序列映射中存储的序列号高于当前读取的块的序列号,那么可以忽略当前读取的大块的块。如果当前读取的大块的序列号高于恢复序列映射中存储的序列号,那么可以更新恢复序列映射和逻辑块地址以包括新的序列号和物理块地址。在一些实施例中,恢复映射管理组件316可以监控I/O,并且如果出现写入,那么逻辑块地址可以与当前大块的序列号和当前写入的物理块的物理块地址相关联。如果之后大块(例如,具有更高序列号的大块)指示块已经删除,那么可以从逻辑块地址映射和恢复序列映射删除该块。
一旦已经完成一个或更多读取(例如,已经恢复闪存的所有使用的块),那么恢复映射管理组件316可以促进恢复。恢复映射管理组件316可以提供锁定,该锁定可以基于每个逻辑块、基于一个范围的逻辑块或者基于储存区的其他单元。恢复序列映射的生成可以指示与具有用于逻辑块的当前数据的物理块相关联的大块的序列号,恢复可能不要求从日志读取并且顺序施加所有写入。可以并行读取大块,并且在没有并发性限制的情况下恢复(即,其中整个恢复是顺序的和序列化的,以根据日志的顺序进行)。在在此公开的系统和方法中,可以从存储装置并行读取所有大块,并且它们的读取一完成就可以并行处理。恢复映射管理组件316可以根据逻辑块地址分区恢复序列映射和/或逻辑块地址映射,并且可以对逻辑块地址或一个范围的逻辑块地址提供锁定,允许同时恢复不同逻辑块或不同范围的逻辑块。将以序列化的方式执行对于恢复序列和逻辑块地址映射的存取,因为这是控制重写检测的机制。通过逻辑块地址分区这些映射可以减轻该序列化的影响。因为存取仅需要在特定块地址内序列化,所以共享锁定一个范围的块地址可以允许恢复尽可能并行,而不要求每个块的锁定。
错误记录和报告组件318可以捕获错误,并且记录与块监控或大块识别相关联的错误。在一些实施例中,错误记录和报告组件318可以提供错误的通知。
图4描绘图示根据本公开的实施例用于改进储存日志的方法的流程图。然而,处理400仅是示例性的。例如,可以通过具有添加的、改变的、移除的或重新安排的阶段来改变处理400。处理可以在阶段402开始。
在阶段404,可以识别大块中有效块的数目。可以识别大块中有效块(即,还没有重写的块)的数目、比例或其他指标。在日志绕回(即,到达闪存的序列端并且从闪存的开端继续)之前还没有被重写的大块中的块可能包含可能需要重写或否则可能丢失的有效数据。可以追踪有效块,并且在与大块相关联的元数据中(例如,在图2的大块有效块计数210中)存储那些块的数目。元数据可以与逻辑块地址(LBA)映射相关联,并且可以指示数据的有效性或无效性的度量(例如,有效块的数目、无效或重写块的数目、有效块的比例、无效块的比例等)。包含有效性计数的元数据可以存储为将逻辑块地址映射到物理块地址的逻辑块地址映射的一部分(例如,图2的逻辑到物理映射212),或者其可以存储在分离的数据结构中(例如,图2的大块有效块计数210)。有效性的计数或其他指标可以按照大块或按照其他分组(例如,盘驱动器上的扇区、盘驱动器上的轨道等)分组。在一些实施例中,可以监控到储存区的各部分的写入,并且当重写出现或删除块时可以更新计数(例如,当特定大块中的块被重写时,减少大块中有效块的数目)。
在阶段406,可以接收写入请求。在阶段408,可以确定日志的当前大块是否是用于写入请求的适当位置。该确定可以基于一个或更多因素。
关于数据有效性的元数据可以用于识别用于写入的储存区的部分。可以选择可以识别储存区的部分,以减少需要重写的该储存区的有效部分的数目。这可以减少写入放大问题、I/O通信量、CPU或控制器利用以及储存装置上的磨损。例如,可以略过包含大量有效数据的大块,并且相反可以重写已经接收重写或者数据无效的大块。在大块的评估期间,可以将(例如,来自阶段304中生成的元数据的)有效块的计数与指定阈值比较。例如,如果识别的大块中有效块的数目低于指定阈值,那么可以选择该大块作为用于写入请求的大块的目标位置,并且方法可以在阶段412继续。然而,如果确定识别的大块中的有效块的数目满足或超过阈值,那么可以略过该大块并且方法可以在阶段410继续。
在一些实施例中,可以顺序评估大块或储存区的其他单元。在一个或更多实施例中,可以分类元数据,以允许具有最低有效储存量的储存区的一部分(例如,大块、轨道、扇区)被识别。在确定是否重写存储的一部分时,还可以评估其他因素(例如,数据龄期、最后更新时间、数据使用的热度或频率、数据的连续次序、与储存区的一部分相关联的错误等)。
在一些实施例中,取决于一个或更多因素,可以调整评估的阈值或其他因素。因素可以包括例如CPU利用的级别、网络利用的级别和用户指定偏好。在一些实施例中,阈值可以要求少于块的百分之五十为有效块,以使用大块的位置作为用于第二大块的写入位置。
在阶段410,可以对于潜在的目标写入位置评估另一大块。在阶段412,在储存区被写入请求重写之前,识别的大块的一个或更多有效块可以读取并且重新打包到新的大块中。在阶段414,重新打包的数据可以作为新大块的一部分写入到储存区中的第二位置。在阶段416,方法400可以结束。
图5描绘图示根据本公开的实施例用于使用改进的储存日志恢复的方法的流程图。
然而,处理500仅是示例性的。例如,可以通过具有添加的、改变的、移除的或重新安排的阶段来改变处理500。处理可以在阶段502开始。
在阶段504,可以生成用于恢复具有略过的大块的日志一个或更多数据结构(例如,图2的恢复映射214)。一些数据格式可能包含可以用于恢复的序列号。例如,当写出大块时,其可以包含可能单调增加的序列号。可以追踪与数据的有效部分(例如,包含数据的最当前副本的物理块)相关联的序列号。可以将序列号或储存区的部分的其他指标与逻辑块地址相关联,使得恢复处理可以识别储存区的部分的当前版本。例如,可以将大块的序列号与逻辑块地址相关联。在一些实施例中,可以生成数据结构(例如,恢复序列映射)以将具有包含数据的当前副本的物理块的大块的序列号与逻辑块地址相关联。
在阶段506,在一些实施例中,当接收恢复请求时,可以读取(例如,顺序地)储存区的一个或更多部分。例如,可以读取储存区的所有大块和它们的块。
在阶段508,可以确定恢复序列映射中是否存在块。如果恢复序列映射中不存在块,那么方法可以在阶段510继续。如果恢复序列映射中存在块,那么方法可以在阶段512继续。
在阶段510,方法可以向恢复序列映射中添加具有包含块的当前大块的序列号的条目。还可以添加当前块的物理块地址到逻辑块地址映射(例如,图2的逻辑到物理映射212)。
在阶段512,方法可以比较与当前读取的大块相关联的序列号与恢复序列映射中存储的序列号。如果恢复序列映射中存储的序列号高于当前读取的大块的序列号,那么可以在阶段514忽略当前读取的大块的块。如果当前读取的大块的序列号高于恢复序列映射中存储的序列号,那么方法可以在阶段516继续。
在阶段516,可以更新恢复序列映射和逻辑块地址映射以包括新的序列号和物理块地址。如果之后大块(例如,具有更高序列号的大块)指示块已经删除,那么可以从逻辑块地址映射和恢复序列映射删除该块。
在阶段518,一旦已经完成一个或更多读取(例如,已经恢复闪存的所有使用的块),那么在一些实施例中,可以提供锁定。锁定可以基于每个逻辑块、基于一个范围的逻辑块或者基于储存区的其他单元。恢复序列映射的生成可以指示与具有用于逻辑块的当前数据的物理块相关联的大块的序列号,恢复可能不要求从日志读取并且顺序施加所有写入。可以根据逻辑块地址分区恢复序列映射和/或逻辑块地址映射,并且可以对逻辑块地址或一个范围的逻辑块地址提供锁定,允许同时恢复不同逻辑块或不同范围的逻辑块。
在阶段520,可以(例如,如果使用锁定那么可选并行地)读取和恢复大块。在阶段522,方法500可以结束。
其他实施例可以在本发明的范围和精神内。例如,上述功能性可以使用软件、硬件、固件、硬布线或这些的任何的组合实施。根据指令运行的一个或更多计算机处理器可以实施与如上所述的用于根据本公开改进储存日志相关联的功能。如果在此情况下,那么这样的指令可以存储在一个或更多非暂时处理器可读储存介质(例如,磁盘或其他储存介质)上,这是在本公开的范围内的。此外,实施各功能的模块可以物理地位于各个位置,包括分布使得功能的各部分在不同物理位置实施。
本公开不限于由在此描述的特定实施例的范围。实际上,除了那些在此描述的外,本公开的其他各种实施例和对其的修改从前述描述和附图将对于本领域的普通技术人员来说显而易见。因此,这样的其他实施例和修改旨在落入本公开的范围。此外,尽管在此在用于特定目的的特定环境的特定实施方式的背景中描述了本公开,但是本领域的普通技术人员将认识到其有用性不限于此,并且本公开可以为了许多目的有利地在许多环境中实施。因此,应该鉴于如在此描述的本公开的完整范围和精神解释权利要求。

Claims (20)

1.一种用于改进储存日志的方法,包括:
向日志记录闪存中的储存区的第一大块中的有效块的计数;
接收向该闪存写入第二大块的请求;
使用控制器确定该第一大块中的有效块的计数是否低于指定阈值;
在该第一大块中的有效块的数目低于指定阈值的情况下,向该闪存中的储存区的第一大块的位置写入第二大块;
接收恢复请求;和
使用恢复序列映射来恢复该闪存的一个或多个部分。
2.根据权利要求1所述的方法,其中在该闪存中与储存区的一个或多个大块关联的元数据中维持有效块的计数。
3.根据权利要求2所述的方法,其中与逻辑块地址映射关联地存储该元数据。
4.根据权利要求1所述的方法,其中,当发生第一大块中的一个或多个块的重写时,更新该计数。
5.根据权利要求1所述的方法,其中向该闪存中的储存区的第一大块的位置写入第二大块的步骤包括:重新打包该储存区的第一大块的数据的部分,并向该闪存的另一储存位置写入该数据的部分。
6.根据权利要求1所述的方法,其中在该第一大块中的有效块的数目超出指定阈值的情况下,使用该控制器确定该闪存的储存区的第三大块中的有效块的计数是否小于指定阈值。
7.根据权利要求1所述的方法,其中按照依次顺序来评估闪存的储存区的大块,以便确定闪存的储存区的特定大块是否包括满足指定阈值的有效块的数目。
8.根据权利要求1所述的方法,其中与储存区的一个或多个大块关联的元数据包括在储存区的一个或多个大块的每一个中的有效块的计数,并且被分类为标识具有有效块的最低计数的储存区的块。
9.根据权利要求1所述的方法,其中指定该阈值以降低写入放大问题。
10.根据权利要求1所述的方法,其中取决于CPU利用的级别、网络利用的级别、和用户指定偏好,来调整该阈值。
11.根据权利要求1所述的方法,其中该阈值需要少于所述块的百分之五十为有效块,以使用所述第一大块的位置作为第二大块的写入位置。
12.根据权利要求1所述的方法,进一步包括使得逻辑块地址与闪存块序列号关联。
13.根据权利要求12所述的方法,其中使得逻辑块地址与闪存块序列号关联的步骤包括:使得闪存块序列号与逻辑块地址映射中的逻辑块地址关联。
14.根据权利要求13所述的方法,其中恢复闪存的一个或多个部分包括:
在恢复之前读取闪存的大块;
确定从闪存读取的大块的物理块是否在恢复序列映射中;
在该物理块不在恢复序列映射中的情况下,
向该逻辑块地址映射添加该物理块的地址,和
向该恢复序列映射添加与该大块关联的序列号。
15.根据权利要求13所述的方法,其中恢复闪存的一个或多个部分包括:
在恢复之前读取闪存的大块;
确定从闪存读取的大块的物理块是否在恢复序列映射中;
在该物理块在恢复序列映射中的情况下,
比较与读取的大块关联的序列号和恢复序列映射中的与该大块关联的序列号,
在与读取的大块关联的序列号高于恢复序列映射中的与该大块关联的序列号的情况下,
更新该逻辑块地址映射以包括该物理块的物理块地址;和
更新该恢复序列映射以包括与读取的大块关联的序列号。
16.根据权利要求15所述的方法,进一步包括:
忽略其中与读取的大块关联的序列号低于恢复序列映射中的与该大块关联的序列号的、读取的块。
17.根据权利要求13所述的方法,进一步包括:
通过逻辑块地址来对逻辑块地址映射进行分区;
通过逻辑块地址来对恢复序列映射进行分区;和
提供用于锁定块地址的范围的锁,其中该锁促进闪存储存器的并发恢复。
18.一种计算机可读储存介质,包括可在计算机上运行的指令序列,该指令序列执行用于改进储存日志的处理,当执行该计算机可读储存介质中包括的该指令序列时实现以下步骤:
向日志记录闪存中的储存区的第一大块中的有效块的计数;
接收向该闪存写入第二大块的请求;
使用控制器确定该第一大块中的有效块的计数是否低于指定阈值;
在该第一大块中的有效块的数目低于指定阈值的情况下,向该闪存中的储存区的第一大块的位置写入第二大块;
接收恢复请求;和
使用恢复序列映射来恢复该闪存的一个或多个部分。
19.一种用于改进储存日志的系统,该系统包括:
储存介质装置;和
与该储存介质装置关联的基于PCIe的装置控制器,其中所述基于PCIe的装置控制器被配置为:
向日志记录闪存中的储存区的第一大块中的有效块的计数;
接收向该闪存写入第二大块的请求;
确定该第一大块中的有效块的计数是否低于指定阈值;
在该第一大块中的有效块的数目低于指定阈值的情况下,向该闪存中的储存区的第一大块的位置写入第二大块;
接收恢复请求;和
使用恢复序列映射来恢复该闪存的一个或多个部分。
20.根据权利要求19所述的系统,其中在该第一大块中的有效块的数目超出指定阈值的情况下,所述基于PCIe的装置控制器被进一步配置为确定该闪存的储存区的第三大块中的有效块的计数是否小于指定阈值。
CN201610721545.0A 2015-08-24 2016-08-24 用于改进储存日志的方法和系统 Active CN106484761B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/833,844 2015-08-24
US14/833,844 US10108503B2 (en) 2015-08-24 2015-08-24 Methods and systems for updating a recovery sequence map

Publications (2)

Publication Number Publication Date
CN106484761A CN106484761A (zh) 2017-03-08
CN106484761B true CN106484761B (zh) 2019-06-28

Family

ID=57045483

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610721545.0A Active CN106484761B (zh) 2015-08-24 2016-08-24 用于改进储存日志的方法和系统

Country Status (6)

Country Link
US (1) US10108503B2 (zh)
JP (1) JP2017079053A (zh)
KR (1) KR101870521B1 (zh)
CN (1) CN106484761B (zh)
DE (1) DE102016010277A1 (zh)
GB (1) GB2543392B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10013306B2 (en) * 2015-03-18 2018-07-03 OSNEXUS Corporation Data recovery agent and search service for repairing bit rot
CN108108129B (zh) * 2017-12-19 2020-10-20 深圳忆联信息系统有限公司 一种动态量化固态硬盘数据可靠性的方法及固态硬盘
US10970216B2 (en) * 2017-12-27 2021-04-06 Intel Corporation Adaptive granularity write tracking
US10831596B2 (en) * 2018-01-22 2020-11-10 Micron Technology, Inc. Enhanced error correcting code capability using variable logical to physical associations of a data block
US10776218B2 (en) * 2018-05-31 2020-09-15 EMC IP Holding Company LLC Availability-driven data recovery in cloud storage systems
KR102089291B1 (ko) 2018-06-19 2020-03-16 주식회사 티맥스데이터 데이터 익스텐트 이동 방법
US11093364B2 (en) * 2018-12-18 2021-08-17 Micron Technology, Inc. Management of event log information of a memory sub-system
KR20200088713A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
TWI737189B (zh) * 2019-02-23 2021-08-21 國立清華大學 易於從固態儲存裝置之故障中還原的方法、電腦系統,及固態儲存裝置
KR20210120240A (ko) * 2020-03-26 2021-10-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102435910B1 (ko) * 2022-03-15 2022-08-25 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US11940882B2 (en) * 2022-07-25 2024-03-26 Hewlett Packard Enterprise Development Lp Migration of journal groups in a storage system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7518932B2 (en) * 2006-12-22 2009-04-14 Intel Corporation Erase cycle counting in non-volatile memories
CN101770427A (zh) * 2009-01-07 2010-07-07 芯邦科技(深圳)有限公司 一种利用Flash存储空间的方法及装置
CN102981970A (zh) * 2012-11-23 2013-03-20 深圳市江波龙电子有限公司 闪存管理方法和系统
CN103914392A (zh) * 2014-04-03 2014-07-09 深圳市硅格半导体有限公司 闪存的空块回收方法及装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
JP4186602B2 (ja) 2002-12-04 2008-11-26 株式会社日立製作所 ジャーナルログを利用した更新データ書込方法
US7480760B2 (en) 2003-12-17 2009-01-20 Wegener Communications, Inc. Rotational use of memory to minimize write cycles
US7167880B2 (en) 2004-04-14 2007-01-23 Hitachi, Ltd. Method and apparatus for avoiding journal overflow on backup and recovery system using storage based journaling
JP2007199905A (ja) * 2006-01-25 2007-08-09 Toshiba Corp 半導体記憶装置の制御方法
JP2007200182A (ja) * 2006-01-30 2007-08-09 Hitachi Ltd ストレージ装置、及びストレージシステム
JP2008033527A (ja) 2006-07-27 2008-02-14 Hitachi Ltd ストレージ装置、ディスク装置及びデータ復元方法
US20080281876A1 (en) * 2007-05-10 2008-11-13 Hitachi, Ltd. Methods and apparatus to recover data and configuration of storage system
US7979626B2 (en) 2008-05-13 2011-07-12 Microsoft Corporation Flash recovery employing transaction log
WO2011007599A1 (ja) * 2009-07-17 2011-01-20 株式会社 東芝 メモリ管理装置
JP5377175B2 (ja) * 2009-09-08 2013-12-25 株式会社東芝 コントローラ、及びデータ記憶装置
US9141526B2 (en) * 2010-09-16 2015-09-22 International Business Machines Corporation Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
EP2695066A1 (en) 2011-04-01 2014-02-12 Nexsan Corporation Journaling raid system
EP2764516A4 (en) * 2011-10-05 2015-07-08 Lsi Corp SELF-HISTORIZATION AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORES
US8631209B2 (en) 2012-01-26 2014-01-14 Upthere, Inc. Reusable content addressable stores as building blocks for creating large scale storage infrastructures
WO2013136371A1 (en) * 2012-03-15 2013-09-19 Hitachi, Ltd. Storage system and data management method
US9703794B2 (en) 2013-01-02 2017-07-11 International Business Machines Corporation Reducing fragmentation in compressed journal storage
US9213633B2 (en) * 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification
US20140372710A1 (en) * 2013-06-18 2014-12-18 Samsung Electronics Co., Ltd. System and method for recovering from an unexpected shutdown in a write-back caching environment
KR102025180B1 (ko) 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
US9336129B2 (en) * 2013-10-02 2016-05-10 Sandisk Technologies Inc. System and method for bank logical data remapping

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7518932B2 (en) * 2006-12-22 2009-04-14 Intel Corporation Erase cycle counting in non-volatile memories
CN101770427A (zh) * 2009-01-07 2010-07-07 芯邦科技(深圳)有限公司 一种利用Flash存储空间的方法及装置
CN102981970A (zh) * 2012-11-23 2013-03-20 深圳市江波龙电子有限公司 闪存管理方法和系统
CN103914392A (zh) * 2014-04-03 2014-07-09 深圳市硅格半导体有限公司 闪存的空块回收方法及装置

Also Published As

Publication number Publication date
CN106484761A (zh) 2017-03-08
US20170060698A1 (en) 2017-03-02
KR20170023735A (ko) 2017-03-06
GB2543392A (en) 2017-04-19
GB2543392B (en) 2019-03-20
JP2017079053A (ja) 2017-04-27
GB201614434D0 (en) 2016-10-05
DE102016010277A1 (de) 2017-03-02
KR101870521B1 (ko) 2018-07-19
US10108503B2 (en) 2018-10-23

Similar Documents

Publication Publication Date Title
CN106484761B (zh) 用于改进储存日志的方法和系统
US10318181B2 (en) System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US9952781B2 (en) Adaptive storage reliability management
US10025669B2 (en) Maintaining data-set coherency in non-volatile memory across power interruptions
US9519575B2 (en) Conditional iteration for a non-volatile device
US9923562B1 (en) Data storage device state detection on power loss
US10127166B2 (en) Data storage controller with multiple pipelines
KR101813786B1 (ko) Ssd 상의 기록-시-복사를 위한 시스템 및 방법
TWI645404B (zh) 資料儲存裝置以及非揮發式記憶體操作方法
US20140379965A1 (en) Adaptive cache memory controller
US7904764B2 (en) Memory lifetime gauging system, method and computer program product
KR101933766B1 (ko) 플래시 메모리 플러싱을 개선하는 방법 및 시스템
US20140244897A1 (en) Metadata Update Management In a Multi-Tiered Memory
US8732411B1 (en) Data de-duplication for information storage systems
US10372382B2 (en) Methods and apparatus for read disturb detection based on logical domain
JP2014154167A (ja) メモリ内のデータを管理するための方法および装置
WO2016101145A1 (zh) 一种控制器、识别数据块稳定性的方法和存储系统
CN106062724A (zh) 存储器模块上的数据管理
US20170017405A1 (en) Systems and methods for improving flash-oriented file system garbage collection
US20160342508A1 (en) Identifying memory regions that contain remapped memory locations
CN106528322A (zh) 检测数据的无记载损坏的方法和设备
KR101608623B1 (ko) 전원 손실 이후 효과적인 데이터 복구를 위한 메모리 복구 장치 및 방법
KR20170002279A (ko) 전원 손실 이후 효과적인 데이터 복구를 위한 메모리 복구 장치 및 방법

Legal Events

Date Code Title Description
C06 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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210331

Address after: California, USA

Patentee after: Western Digital Technologies, Inc.

Address before: Amsterdam

Patentee before: HGST Netherlands B.V.