CN102089746A - 采用事务日志的闪存恢复 - Google Patents
采用事务日志的闪存恢复 Download PDFInfo
- Publication number
- CN102089746A CN102089746A CN2009801280613A CN200980128061A CN102089746A CN 102089746 A CN102089746 A CN 102089746A CN 2009801280613 A CN2009801280613 A CN 2009801280613A CN 200980128061 A CN200980128061 A CN 200980128061A CN 102089746 A CN102089746 A CN 102089746A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- checkpoint
- flash
- write
- sector
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/1441—Resetting or repowering
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于闪存恢复的事务日志,包括指定诸如对扇区的写入或对块的擦除等已经执行的操作的链式块序列。执行将整个闪存状态写入到闪存的检查点。一旦执行了检查点,就删除该检查点之前的所有日志条目,并且关于恢复的日志处理开始于最后的检查点。如果系统能够安全关闭,则可以在驱动程序卸载之前执行检查点,并且在初始化时,整个持久存储的闪存状态可被加载到闪存中且进行最少量的闪存扫描。如果在系统操作期间发生电源故障,则在下一次引导时,只须扫描日志条目中的在最后的检查点之后指定的扇区或块,而不是该部分上的所有扇区。
Description
技术领域
本发明涉及闪存恢复,尤其涉及采用事务日志的闪存恢复。
背景技术
闪存是可以电擦除和重新编程的非易失性计算机存储器。该技术主要用于存储卡和通用串行总线(“USB”)闪存驱动器以便进行一般存储以及在计算机和其他数字产品之间传输数据。闪存是大块擦除和编程的特定类型的电可擦可编程只读存储器(“EEPROM”)。闪存的成本比字节可编程EEPROM低得多,并因此已经变成在需要大量非易失性、固态存储之处的主流技术。应用的示例包括个人数字助理(“PDA”)、膝上型计算机、数字音频/视频播放器、数码相机、游戏控制台和移动电话。
闪存是非易失性的,这意味它不需要电源来维护存储在芯片中的信息。另外,闪存提供比硬盘相对更快的读访问时间(尽管没有用于PC中的主存储器的易失性DRAM存储器快)和更好的运动冲击抵抗性。这些特性导致闪存在便携式设备中的流行。闪存的另一特征是当被封装在存储卡中时,它是非常耐久的,从而能够抵挡强大的压力、极端温度以及甚至浸入水中。
当前可用闪存驱动程序通常需要在引导期间扫描闪存上的每一个扇区,以确定该闪存的状态并恢复任何因电源故障而被中断的操作。闪存状态包括数据结构,诸如逻辑到物理扇区的映射表、自由表,和脏表。然而,随着闪存部分变大,该过程可能花费非常长的时间,并因此影响引导时间。
发明内容
提供本发明内容是为了以精简的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
各实施方式涉及在关闭后采用事务日志来进行闪存恢复。事务日志可包括指定在关闭前已经执行的操作的链式块序列。根据某些实施方式,记录日志条目并在操作期间创建检查点。在初始化时定位事务日志并且处理该日志以便对闪存操作期间的电源故障进行恢复和处理。根据其他实施方式,可以整理事务日志以回收闪存空间。
通过阅读下面的“具体实施方式”并参考相关联的图形,这些及其他特点和优点将变得显而易见。应该理解,前面的一般性的说明和下面的具体实施方式只是说明性的,不会对如权利要求所述的方面形成限制。
附图说明
图1是示出不同类型的闪存的存储结构的图示;
图2是示出根据各实施方式的闪存驱动程序的高级体系结构的概念图;
图3示出了根据各实施方式的闪存驱动程序中的示例检查点操作(checkpointing)过程;
图4示出了根据各实施方式的闪存驱动程序中的用于在恢复时构造写入块列表的示例过程;
图5示出了根据各实施方式的闪存驱动程序中的用于在恢复时确定写入操作次序的示例过程;
图6示出了根据各实施方式的闪存驱动程序中的用于恢复由于电源故障而中断的写入操作的示例过程;以及
图7是其中可以实现各实施方式的示例计算操作环境的框图。
具体实施方式
如上文所简述的,可以利用具有检查点的事务日志来恢复闪存。在以下具体实施方式中,参考了构成了具体实施方式的一部分并作为说明示出了各具体实施方式或示例的附图。可组合这些方面,可利用其他方面,并且可以做出结构上的改变而不背离本发明的精神或范围。因此,以下具体实施方式并不旨在限制,并且本发明的范围由所附权利要求及其等效方案来限定。
虽然在结合在个人计算机上的操作系统上运行的应用程序执行的程序模块的一般上下文中描述了各实施方式,但是本领域技术人员会认识到各方面也可以结合其他程序模块实现。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。此外,本领域技术人员会理解,各实施方式可以用其他计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子产品、小型计算机、大型计算机等等。各实施方式还能在任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
各实施方式可被实现为计算机过程(方法)、计算系统、或者如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机系统可读并编码了用于执行计算机过程的指令的计算机程序的计算机存储介质。计算机程序产品还可以是计算系统可读并编码了用于执行计算机过程的指令的计算机程序的载体上的传播信号。
参考图1,提供了示出不同类型的闪存的存储结构的图100和110。两种主要类型的闪存是常见的:(1)NAND闪存,其中该介质被分成块集合,块集合被进一步细分成页(例如,对于大块NAND,从传统的512字节大小到2KB大小);以及(2)NOR闪存,其中该介质被分成块集合并且所有字节都可单独定址(如同RAM)。
图100示出了被分成一系列连续块(102,104,...,106)的NAND闪存。每一个块然后被进一步细分成某一数量的页(例如,每块32个扇区对于16MBNAND闪存设备而言是常见值)。每一页然后被进一步分成两个不同的部分:数据区域101(小块NAND上512字节,大块NAND上2KB),用于存储信息;以及额外区域103(小块NAND上16字节、大块NAND上64字节),用于存储额外信息,诸如闪存抽象层(FAL)元数据、纠错码(ECC)等。
图110示出了被分成一系列连续块(112,114,...,116)的NOR闪存。类似于传统RAM,这些块中的每一个字节都可单独定址。
NAND闪存通常表征为比NOR闪存更慢的读性能但比NOR闪存更快的写性能。NOR闪存通常具有与RAM相当的读速度并且允许系统代码的就地执行(XIP)。NAND闪存通常在介质上带有无法用来存储数据的坏块。结果,系统软件(也被称为设备驱动程序)负责坏块管理。已知NAND闪存在浮动栅极的氧化物层(Tox)中泄漏电流。实际上,这意味着页中的位随着时间的推移随机改变值是可能的。结果,使用ECC来检测并纠正介质中的位改变是必需的。此外,NOR闪存通常具有比NAND闪存慢得多的擦除时间,并且NAND闪存密度由于底层晶体管结构而伸缩得更好。
与常规单级单元格(SLC)NAND闪存每一个单元格存储1位形成对比,多级单元格(MLC)闪存每一个单元格存储2位。这允许存储密度翻倍,但导致各种缺点。该技术影响该部分的可靠性,这需要使用较大的ECC来检测并纠正位改变。它还可以对存储器编程方式提出限制。
大块NAND实质上具有较大的页大小(例如,2KB),这也给予它较大的块大小。较大的页大小还意味着备用区域也较大(例如,对于2KB数据页而言是64字节)。
如上所述,MLC和大块NAND对闪存编程方式提出限制。例如,MLC和大块NAND两者都需要在块中按顺序对页进行编程。一旦已写入页并且已经写入后续页,在擦除整个块之前无法重新写入原始页。此外,MLC施加只限制一个部分页编程的附加限制。这意味着一旦已经写入页,就无法在不擦除的情况下再次写入该页。大块NAND具有3个部分页编程的限制。
NAND和NOR闪存两者都还遭受物理约束,诸如:(1)写入操作只能将位从逻辑‘1’置位到逻辑‘0’;(2)擦除块将该块中的所有位置位为逻辑‘1’;(3)只能擦除块,并且不可能擦除块中的单独的页/字节而不擦除同一块中的所有页/字节;(4)块具有有限的擦除时间(100000到1000000个周期);以及(5)读取操作不对照写入/擦除生存期来计数。作为这些特性的结果,对介质执行“损耗均匀化”是必需的,以使得最大化设备的生存期。另外,需要使用用于有效地擦除块而不丢失数据的技术。考虑到闪存的目标通常是电池供电设备,在电源故障情形期间进行保护以防数据丢失是必需的。NAND闪存还要求ECC来进行保护以防由于泄漏电流而导致数据毁坏。
图2是示出根据各实施方式的闪存驱动程序的高级体系结构的概念图。在利用根据各实施方式的闪存的计算设备中,文件系统222在被称为闪存抽象层(FAL)224的“转换”层之上。FAL 224负责处理来自上层文件系统222的所有I/O请求,实现所有必需的“损耗均匀化”操作,维护数据完整性,处理电源故障情形等。应当注意,FAL 224将所有实际读/写请求传递至闪存介质驱动程序(FMD)226上。FMD 226包括负责与实际闪存硬件交互的一组入口点。FMD 226负责实现对闪存介质228进行读取/写入/擦除所必需的编程/擦除(P/E)算法236。
通过使用FAL 224,可以自由地选择用于目标设备的文件系统。另外,通过使用FMD 226,也可自由地选择用于目标设备的闪存。因为纠错码(ECC)编解码器在抽象链中被移交给FMD 226,所以可以选择任何ECC编解码器来与存储器设备一起使用。
根据一个实施方式,FAL 224可被分解成以下组件:(1)主FAL对象——该组件负责处理对特定闪存区域的读取/写入,以及在初始化期间构建逻辑到物理的映射;(2)扇区管理器——该组件负责管理介质上的自由和脏扇区的列表,在被提示时该扇区管理器可返回介质上的下一自由扇区(如果可用的话);(3)映射表——该组件负责维护逻辑到物理扇区的映射(232到234),文件系统使用逻辑扇区(232),所述逻辑扇区然后被映射到介质上的任意物理扇区(234),结果,FAL将所有逻辑扇区地址从文件系统转换成介质上的对应的物理扇区地址;(4)压缩器——该组件负责将脏扇区再循环成自由扇区,该压缩器分析整个闪存块以确定哪些扇区是脏的并且可以被再循环,块中的不脏的任何扇区被重新映射到介质的另一部分。
根据各实施方式的系统中的事务日志包括指定诸如对扇区的写入或对块的擦除等已经执行的操作的链式块序列。周期性地,执行检查点,其中将整个闪存状态写出到闪存中。一旦执行了检查点,就可删除该检查点之前的所有日志条目并且关于恢复的日志处理开始于最后的检查点。如果系统能够安全关闭,则可以在驱动程序卸载之前执行检查点,并且在初始化时,整个持久存储的闪存状态可被加载到闪存中且进行最少量的闪存扫描。如果电源故障在系统操作期间发生,则在下一次引导时,只须扫描日志条目中的在最后的检查点之后指定的扇区或块,而不是该部分上的所有扇区。
如上所述,事务日志被存储在闪存上并且包括链式块序列。根据一个实施方式,每一个块都具有指向链中的下一块的正向指针以及指向链中的前一块的反向指针。块中的每一个扇区存储单个日志条目。四种日志条目类型可以是:写入日志条目、擦除日志条目、检查点日志条目、以及恢复写入日志条目。事务日志可被存储在闪存上的任何位置,并且日志的位置无需被预先保存到一组特定块。这防止闪存写入不均匀地分布在部分上,这可导致该部分更快地损耗。
每一个日志块可由每一个扇区中的闪存的备用区域中的特殊位来标识。为了在初始化时定位日志,可以从闪存开头扫描每一个块直到找到具有特殊日志位的块。因为日志通常很好地分布在部分上并且对于每一块只须检查一位,所以能够相当快地找到第一个物理日志块。一旦找到第一物理日志块,就可通过遵循正向和反向指针来快速定位该日志的其余部分。一旦记录了整个日志的位置,就可通过在该日志的结尾处开始并反向检查每一个日志条目直到找到第一个检查点(由备用区域中的另一特殊位标识)来找到最后的检查点。一旦找到最后的检查点,日志恢复就可以开始。
结合图1和图2讨论的闪存结构和体系结构是出于说明的目的且不构成对实施方式的限制。此处所描述的本发明的各方面可以在采用图2所述的体系结构的各种变体的各种结构的闪存中实现。
图3示出了根据各实施方式的闪存驱动程序中的示例检查点操作过程300。日志条目记录和检查点操作是相互成对的过程。根据某些实施方式,在首次初始化日志时,写入该日志的第一个条目是检查点条目。
检查点涉及将RAM中的整个驱动程序状态持久存储到闪存。该状态包括映射表、脏块列表和自由块列表。可以分配一个或多个闪存块以存储当前闪存状态,并且检查点日志条目包括指向这些闪存块的指针。
该过程开始(341)于开始日志检查点步骤并移至脏次级映射表的转储清除(342)。在脏次级映射表的转储清除之后,分配块以存储FAL状态(344),如上所述。然后,将检查点条目添加到日志以指定新FAL状态的位置(346)。一旦添加检查点条目,就可转储清除(348)主映射表、脏块列表和自由块列表以保存有价值的闪存空间。一旦在日志中记录检查点,就不再需要任何先前的日志条目。
随着闪存操作继续,在日志中记录写入操作和擦除操作两者。对于写入操作,在执行写入之前,为将来写入分配一组块(例如,至多10个)并且记录指定这些块的日志条目。对这组保留块完成后续写入而不记录任何附加日志条目,这大大减少了在日志记录时涉及的开销。一旦日志条目中所指定的这组保留块被耗尽,分配另一组块并在日志中记录这组块。对于擦除操作,为压缩以回收脏扇区时涉及的每一次擦除记录日志条目(这可以扩展至在单个日志条目中存储多次擦除以减少开销)。周期性地,可以执行另一检查点,并且一旦完成该检查点,就可以回收先前的日志条目以便重用,如下文中更详细地描述。
图4示出了根据各实施方式的闪存驱动程序中的用于在恢复时构造写入块列表的示例过程400。通常,在安全关闭时,在驱动程序卸载之前执行检查点。因此,当系统再次引导时,闪存驱动程序只须简单地定位检查点并将整个闪存状态加载到RAM中。然而,如果出乎意料地发生电源故障,则驱动程序必须处理在最后的检查点之后记录的任何日志条目,以使得引导后的闪存状态与恰好在发生电源故障之前的状态一致。
一旦已经定位和初始化日志,就需要从最后的有效检查点开始处理日志。最后的检查点具有获取检查点时的所有闪存状态。根据某些实施方式,这被首先加载到RAM中以用作起始点。然后,扫描日志以确定写入块的次序。提前扫描日志的目的是在写入、压缩以及再次写入块时消除重复。可以构造两个写入块列表:一个用于数据写入,一个用于映射表写入。另外,可以构造包括已经擦除的块的擦除块列表。这被用于适当地更新自由列表。
如上文中所简述的,该写入块列表构造过程开始于扫描日志(451)并且一旦找到检查点,就从该检查点加载FAL状态(452)。然后,对每一个日志条目执行重复过程,如在该附图中的步骤454和469之间示出的。该重复过程包括首先确定日志条目是否是擦除类型日志条目(456)。如果日志条目是擦除条目,则将所指向的块添加到擦除块列表(458)并且从数据写入和映射表写入块列表中移除这些块(462)。
另一方面,如果日志条目不是擦除类型条目,则步骤464处的确定是这肯定是写入类型日志条目,因为它在最后的检查点之后。因此,将所指向的块被添加到处理写入列表以供稍后扫描(466)并且从擦除块列表中移除这些块(468)。如上所述,对每一个日志条目重复该过程。
图5示出了根据各实施方式的闪存驱动程序中的用于在恢复时确定写入操作次序的示例过程500。一旦构造写入块列表,就可检查写入块列表中的每一个块以确定发生了哪些写入操作。这可以执行两次:第一次针对映射表块,以使得所有已更新的次级表位置都被记录在主映射表中,而第二次针对数据块。
该过程涉及扫描写入的每一个块,并且通过为每一个位置更新新的逻辑到物理扇区的映射来有效地重新执行自从最后的检查点以来发生的操作。一旦该操作完成,就可将擦除块列表中的每一个块添加到自由块列表。
由此,在开始该处理(571)时,扫描写入处理列表以查找第一个数据和映射块(572)。然后,对于写入处理列表中的每一个数据块(574:589)以及对于每一个块中的每一个扇区执行以上讨论的两个重复过程直到找到自由扇区(576:588)。在重复过程中,为每一个位置添加新的逻辑到物理扇区的映射(578)并且如果映射到先前的物理扇区,则它被添加到脏列表(582)。在每一更新操作之后,作出确定(584)这是否是最后的写分配。如果该操作是最后的写分配,则可以为如以下详述的撕裂的写入确认校验和(586)。否则,对另一扇区(并最终对另一块)重复该过程。
一旦完成恢复时的对写入操作次序的确定,就已经处理了完全完成的所有单独的写入或擦除操作。然而,也需要解决电源故障在操作中间发生的情况。对于每一个操作,这可以如下处理。
写入操作——如果最后的日志条目是写入条目,则写入操作肯定是最后的发生的操作。在恢复时,可以扫描写入日志条目中所指定的每一个块以确定是否存在任何撕裂的写入(部分写入的扇区)。可以从开头逐个扇区地扫描这些块,并且确认每一个扇区的校验和以确定最后的写入操作是否完成。一旦找到自由扇区,则可以检查数据以确保未置位任何位。如果已经置位任何位,则这是撕裂的扇区写入。一旦找到有效自由扇区,则可以跳过块中的其余扇区。
压缩操作——该压缩操作包括一系列写入以便将有效映射扇区复制到新位置,之后擦除旧块。写入恢复以如上所述的相同方式处理。如果最后的日志条目是擦除条目,则重复该擦除即可,因为肯定已经复制任何有效数据。
检查点——如果最后的日志条目是检查点条目,则可以确认闪存状态的校验和以确定该闪存状态是否被完全写出。如果闪存状态是不完整的,则可擦除包含该闪存状态的块,并且一旦扫描了日志,就可将新闪存状态写出到相同的块。
图6示出了根据各实施方式的闪存驱动程序中的用于恢复由于电源故障而中断的写入操作的示例过程。如果电源在写入期间丢失并产生其中数据的校验和是无效的撕裂的写入,则需要压缩包含该写入的块。另外,如果写入故障在普通操作期间发生,则可能需要以相同方式压缩包含写入失败的块。在后一种情况下,随后可将该块标记为坏。
写入恢复过程在操作691处开始并且获取下一自由块以用作复制目的地(692)。然后,用源和目的地块来写入恢复日志条目,之后将所映射的扇区从源块复制到目的地块(694)。之后对源块写入擦除日志条目(696)并且擦除源块(698)以结束该写入恢复过程(699)。
在写入恢复过程期间,发生另一次电源故障的可能性也可通过使用相同的恢复写入日志条目以及相同的源和目的地块来重复写入恢复过程来处理。通过重用相同的日志条目,在系统可能不断重新引导(例如,重复的电源故障、系统异常等)的情况下避免可能地写入许多日志条目。
随着闪存操作继续,日志可能继续变大并且在某一点上需要进行整理以重用块。因为在根据各实施例的系统中在任何给定时刻肯定存在至少一个检查点,所以新检查点可能必须在能够删除任何较老的检查点之前写出。在那种情况下,从开头解除日志的分配以使得保持链接列表结构。另外,在检查点日志条目之前解除闪存状态块的分配,以使得不丢失对那些闪存状态块的引用。因此,在驱动程序中可能需要附加状态来以正确次序执行分配解除。日志块的分配解除仅涉及擦除块。
执行检查点以整理日志的确切时间取决于各种试探。一旦恰好存在足够的空闲空间来执行检查点并且存在要回收的额外日志块,则可以创建检查点以防止空闲空间落到创建检查点所必需的量之下。此外,一旦日志大小达到特定临界大小,就可执行检查点以释放空间,以使得可以更优地执行闪存数据写入操作。还可以在系统CPU空闲时周期性地执行检查点以防止日志大小或空闲空间达到临界水平。
以上结合图3-图6描述的操作是示例操作并且不构成限制。通过遵照此处所描述的原理,使用事务日志的闪存恢复可通过具有更少或更多步骤的其他操作并且以与此处所讨论的不同的次序来实现。
图7及相关联的讨论旨在提供对其中可实现各实施方式的合适计算环境的简要概括描述。参考图7,示出了诸如计算设备700等示例计算操作环境的框图。在基本配置中,计算设备700可以是能够使用闪存的任何类型的计算机并且通常包括至少一个处理单元702和系统存储器704。计算设备700还可包括协作执行程序的多个处理单元。虽然被示为单独的每块,但闪存703可以是系统存储器704、可移动存储707或不可移动存储710的一部分。取决于计算设备的确切配置和类型,系统存储器704可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。系统存储器704通常包括适于控制计算设备的操作的操作系统705,诸如来自华盛顿州雷德蒙市的微软公司的WINDOWS操作系统。系统存储器704还可以包括一个或多个软件应用程序,诸如程序模块706和用于管理闪存703的闪存驱动程序722。
闪存驱动程序722采用事务日志来恢复闪存内容。如上所述,根据各实施例的系统中的事务日志包括指定诸如对扇区的写入或对块的擦除等已经执行的操作的链式块序列。周期性地执行检查点,其中将整个闪存状态写出到闪存中。一旦执行检查点,就可删除该检查点之前的所有日志条目并且关于恢复的日志处理开始于最后的检查点。如果系统能够安全关闭,则可以在驱动程序卸载之前执行检查点,并且在初始化时,整个持久存储的闪存状态可被加载到闪存中且进行最少量的闪存扫描。如果电源故障在系统操作期间发生,则在下一次引导时,只须扫描日志条目中的在最后的检查点之后指定的扇区或块,而不是该部分上的所有扇区。闪存驱动程序722可以是操作系统的集成部分、与应用程序相关联的模块或其自己的单独应用程序。该基本配置在图7中由虚线708内的组件示出。
计算设备700可具有附加特征或功能。例如,计算设备700还可包括附加数据存储设备(可移动和/或不可移动),诸如例如磁盘、光盘、磁带或如上所述的闪存。在图7中通过可移动存储707和不可移动存储710示出了这样的附加存储。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器704、可移动存储707和不可移动存储710都是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算设备700访问的任何其他介质。任何这样的计算机存储介质都可以是设备700的一部分。计算设备700还可具有诸如键盘、鼠标、笔、话音输入设备、触摸输入设备等输入设备712。还可包括诸如显示器、扬声器、打印机等输出设备714。
计算设备700还可以包含允许该设备诸如在分布式计算环境中,例如在内联网或互联网中通过无线网络与其他计算设备718通信的通信连接716。通信连接716是通信介质的一个示例。通信介质通常由诸如载波或其他传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据来体现,并包括任何信息传递介质。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。虽然已调制数据信号的存在本质上可以是瞬时的,但生成该信号以导致接收设备的改变,由此在接收设备接收期间造成物理和有形改变(效果)。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声学、射频(RF)、红外线及其他无线介质之类的无线介质。
所要求保护的主题还包括如图3到图6中讨论的方法。这些方法可以用任何数量的方式,包括本文中所描述的结构来实现。一种此类方式是通过本文中描述的类型的设备的机器操作。
另一可任选方式是结合一个或多个人类操作者执行该方法的各个操作中的某一些来执行该方法的一个或多个操作。这些人类操作者无需彼此同在一处,而是其每一个可以仅与执行程序的一部分的机器同在一处。
以上说明书、示例和数据提供了对各实施方式组成的制造和使用的全面描述。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求和各实施方式的示例形式而公开的。
Claims (20)
1.一种至少部分地在计算设备中执行的用于采用事务日志来进行闪存恢复的方法,所述方法包括:
在闪存操作期间,生成包括指定已执行的闪存操作的链式块序列的事务日志(400);
通过将整个闪存状态写入所述闪存中的指定位置来执行检查点(300);
在完成所述检查点后,删除所有事务日志条目(348),其中最终检查点在闪存驱动程序在安全关闭期间卸载之前执行;
如果在所述安全关闭之后初始化所述闪存,则基于所述最终检查点来加载所述整个闪存状态(452);以及
如果在意外关闭之后,在未在所述闪存驱动程序卸载之前执行完整的检查点的情况下初始化所述闪存,则通过扫描最后的检查点之后的事务日志条目来恢复所述闪存状态(693)。
2.如权利要求1所述的方法,其特征在于,所述闪存上的每一个块(102、104、106)包括指向链中的下一块的正向指针,以及指向所述链中的前一块的反向指针,其中任何块中的每一个扇区存储单个日志条目,并且其中所述事务日志被存储在所述闪存中的任意位置而不被预先保存到一组特定块。
3.如权利要求2所述的方法,其特征在于,每一个日志块(102、104、106)由每一个对应的扇区中的闪存的备用区域中的特殊日志位来标识,并且从所述闪存的开头扫描每一个块直到找到具有所述特殊日志位的块,以便在初始化时定位所述事务日志。
4.如权利要求3所述的方法,其特征在于,还包括:
在定位具有所述特殊日志位的块后,通过遵循所述正向和反向指针来定位所述事务日志的其余部分(451);以及
通过在所述事务日志的结尾处开始并且反向检查每一个日志条目直到找到所述最后的检查点,来定位所述最后的检查点(451)。
5.如权利要求2所述的方法,其特征在于,所述日志条目具有来自以下一组类型的一种类型:写入日志条目、擦除日志条目、检查点日志条目、以及恢复写入日志条目。
6.如权利要求5所述的方法,其特征在于,主映射表、脏块列表和自由块列表在将检查点条目记录在所述事务日志中时被转储清除(348)。
7.如权利要求1所述的方法,其特征在于,还包括:
在执行写入操作之前,为将来的写入操作分配一组预定义块(346);
记录指定所分配的一组块的事务日志条目(346);以及
对所分配的一组块执行后续写入操作而不记录任何附加日志条目(300)。
8.如权利要求1所述的方法,其特征在于,还包括:
为在压缩以回收脏扇区时涉及的每一次擦除操作记录事务日志条目(458)。
9.如权利要求1所述的方法,其特征在于,在意外关闭后通过扫描所述最后的检查点之后的事务日志条目来恢复所述闪存状态包括:
在初始化时定位所述事务日志(454);
确定所述最后的检查点条目(456);以及
在所述最后的检查点后,构造用于数据写入的写入块列表、用于映射表写入的写入块列表,以及用于已擦除的块的擦除块列表(400)。
10.如权利要求9所述的方法,其特征在于,构造所述用于数据写入的写入块列表、所述用于映射表写入的写入块列表,以及所述用于已擦除的块的擦除块列表(400)包括:
在所述最后的检查点后,通过为每一个映射表块和数据块更新新的逻辑到物理扇区映射,来重新执行所述写入操作(466);以及
将所述擦除块中的所有块添加到自由块列表(462)。
11.如权利要求10所述的方法,其特征在于,还包括:
在每一次更新后,确定对应的写入操作是否是最后的写入操作(584);
如果所述写入操作是所述最后的写入操作,则确认校验和以检测部分写入的扇区(586);否则
对后续块重复所述更新(574、576、578、582、584)。
12.如权利要求1所述的方法,其特征在于,在意外关闭后通过扫描所述最后的检查点之后的事务日志条目来恢复所述闪存状态(691、692、693、694、696、698、699)还包括:
如果最后的事务日志条目是检查点条目,则确认所述闪存状态的校验和以确定所述闪存状态是否在所述意外关闭之前已经完全写入(586);以及
如果所述闪存状态是不完整的,则一旦完全扫描所述事务日志,就擦除包含所述闪存状态的块,并且将能被写入的新闪存状态写入相同的块(696、698)。
13.如权利要求1所述的方法,其特征在于,在意外关闭后通过扫描所述最后的检查点之后的事务日志条目来恢复所述闪存状态(691、692、693、694、696、698、699)还包括:
如果最后的事务日志条目是多次写入操作之后的形成压缩操作的擦除操作,则重复所述擦除操作(458、462、469)。
14.如权利要求1所述的方法,其特征在于,在意外关闭后通过扫描所述最后的检查点之后的事务日志条目来恢复所述闪存状态(691、692、693、694、696、698、699)还包括:
如果最后的事务日志条目是写入操作,则检查所述写入日志条目中所指定的每一个块,以便通过从开头逐个扇区地扫描所述块并确认每一个扇区的校验和,来确定是否存在任何部分写入的扇区(576、578、582、584、586);
响应于检测到自由扇区,检查是否置位任何位,其中位被置位指示部分写入的扇区(500);以及
在确认所检测到的自由扇区后,跳过已检查的块中的其余扇区(500)。
15.如权利要求1所述的方法,其特征在于,所述检测点响应于以下情形中的一个来执行(300):
存在足够的空闲空间来执行检查点,并且存在要回收的额外事务日志,以防止所述空闲空间落到执行检查点所必需的量之下;
所述事务日志达到预定义大小,以释放闪存数据写入操作的可用空间最优性能;以及
系统处理器以周期性的方式进入空闲状态,以防止所述事务日志大小和所述空闲空间之一达到预定义阈值。
16.一种能够采用事务日志来进行闪存恢复的计算设备(700),包括:
闪存(100、110);以及
耦合到所述闪存(100、110)的处理器(702),所述处理器(702)被安排成执行:
闪存驱动程序(226),被配置成与闪存硬件交互,实现编程和擦除算法,并实现纠错算法;
闪存抽象层(224),被配置成处理来自文件系统(222)的输入/输出请求,实现损耗均匀化操作,维护数据完整性,并且在意外关闭后,通过采用在常规闪存操作期间记录的事务日志以及反映所述闪存(228)在所述意外关闭之前的时间点处的整个状态的检查点来恢复闪存状态,来管理恢复;以及
所述文件系统(222)。
17.如权利要求16所述的计算设备(700),其特征在于,所述闪存抽象层(224)包括:
用于处理预定义闪存区域中的读/写操作以及用于在初始化期间构建逻辑到物理的映射的主闪存抽象层对象;
用于管理所述闪存硬件中的自由和脏扇区的列表的扇区管理器;
映射表,用于通过将逻辑扇区地址从所述文件系统转换成所述闪存硬件上的对应的物理扇区地址来维护所述逻辑到物理扇区的映射。
18.如权利要求17所述的计算设备(700),其特征在于,所述闪存抽象层(224)还包括:
压缩器,用于通过分析每一个闪存块以确定哪些扇区是脏的且要进行再循环的,来将脏扇区再循环成自由扇区,以使得所述闪存块中的不脏的任何扇区被重新映射到所述闪存硬件的另一部分。
19.一种其上存储有指令的计算机可读存储介质(228),所述指令用于采用事务日志来进行闪存恢复,所述指令包括:
在闪存操作期间,生成包括指定已执行的闪存操作的链式块序列的事务日志;
通过将整个闪存状态写入所述闪存(100、110)中的指定位置来执行检查点;
在完成所述检查点后,删除所有事务日志条目,其中最终检查点在闪存驱动程序在安全关闭期间卸载之前执行;
如果在所述安全关闭之后初始化所述闪存(100、110),则基于所述最终检查点来加载所述整个闪存状态;以及
如果在意外关闭之后,未在所述闪存驱动程序卸载之前执行完整的检查点,而初始化所述闪存(100、110),则通过以下操作来恢复所述闪存状态:
从所述闪存(100、110)的开头扫描每一个块(102、104、106、112、114、116)直到找到具有特殊日志位的块以定位所述事务日志,其中每一个日志块由每一个对应扇区中的闪存的备用区域中的特殊日志位来标识;
在定位具有所述特殊日志位的块后,通过遵循所述事务日志的每一个块中的正向和反向指针来定位所述事务日志的其余部分;以及
通过在所述事务日志的结尾处开始并且反向检查每一个日志条目直到找到所述最后的检查点,来定位所述最后的检查点。
20.如权利要求19所述的计算机可读存储介质(228),其特征在于,所述指令还包括:
当要在存在另一检查点的同时执行新检查点时,从开头解除检查点日志条目之前的事务日志的分配以使得所述事务日志的链接列表结构被保持。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/119,576 US7979626B2 (en) | 2008-05-13 | 2008-05-13 | Flash recovery employing transaction log |
US12/119,576 | 2008-05-13 | ||
PCT/US2009/040403 WO2009140000A1 (en) | 2008-05-13 | 2009-04-13 | Flash recovery employing transaction log |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102089746A true CN102089746A (zh) | 2011-06-08 |
CN102089746B CN102089746B (zh) | 2013-08-21 |
Family
ID=41317242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801280613A Active CN102089746B (zh) | 2008-05-13 | 2009-04-13 | 采用事务日志的闪存恢复 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7979626B2 (zh) |
CN (1) | CN102089746B (zh) |
WO (1) | WO2009140000A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541690A (zh) * | 2011-12-23 | 2012-07-04 | 北京握奇数据系统有限公司 | 一种智能卡及其恢复数据方法 |
CN103019886A (zh) * | 2012-12-11 | 2013-04-03 | 曙光信息产业(北京)有限公司 | 多元数据服务器下日志系统的恢复方法和装置 |
CN103902479A (zh) * | 2014-03-27 | 2014-07-02 | 浪潮电子信息产业股份有限公司 | 一种基于元数据日志的元数据缓存快速重建机制 |
CN104205115A (zh) * | 2012-03-26 | 2014-12-10 | 国际商业机器公司 | 使用不同安全擦除算法以从文件擦除与不同安全级别关联的组块 |
CN106055489A (zh) * | 2015-04-10 | 2016-10-26 | 旺宏电子股份有限公司 | 存储器装置与其操作方法 |
CN107544859A (zh) * | 2017-07-12 | 2018-01-05 | 上海交通大学 | 在混合内存系统上用来保证数据一致性的检查点方法 |
CN107665156A (zh) * | 2016-07-27 | 2018-02-06 | 西部数据技术公司 | 多流日志重播 |
CN107748705A (zh) * | 2017-11-08 | 2018-03-02 | 厦门市美亚柏科信息股份有限公司 | 系统evt日志碎片恢复的方法、终端设备及存储介质 |
CN107851053A (zh) * | 2015-07-16 | 2018-03-27 | 高通技术国际有限公司 | 用于管理快闪存储器内容的损坏的方法和设备 |
CN110187827A (zh) * | 2018-02-23 | 2019-08-30 | 三星电子株式会社 | 可编程数据存储装置及可编程网络数据存储系统 |
CN111433765A (zh) * | 2018-11-30 | 2020-07-17 | 深圳市大疆创新科技有限公司 | 日志存储方法、日志读取方法、智能电池、无人机 |
CN113179657A (zh) * | 2019-06-26 | 2021-07-27 | 西部数据技术公司 | 恢复行为对于数据存储设备的预后和原位修复的用途 |
CN117472447A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 寄存器重命名恢复方法、装置和设备 |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US20090327577A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Hybrid storage |
US9542431B2 (en) * | 2008-10-24 | 2017-01-10 | Microsoft Technology Licensing, Llc | Cyclic commit transaction protocol |
US7925925B2 (en) | 2008-12-30 | 2011-04-12 | Intel Corporation | Delta checkpoints for a non-volatile memory indirection table |
US8452734B2 (en) * | 2009-04-30 | 2013-05-28 | Texas Instruments Incorporated | FAT file in reserved cluster with ready entry state |
TWI457940B (zh) * | 2009-05-15 | 2014-10-21 | Macronix Int Co Ltd | 區塊為基礎快閃記憶體之位元組存取 |
US8495423B2 (en) * | 2009-08-11 | 2013-07-23 | International Business Machines Corporation | Flash-based memory system with robust backup and restart features and removable modules |
US8990476B2 (en) | 2009-10-01 | 2015-03-24 | Micron Technology, Inc. | Power interrupt management |
JP5359912B2 (ja) * | 2010-02-09 | 2013-12-04 | セイコーエプソン株式会社 | 設定情報管理システム、プリンターおよび電子機器の制御方法 |
WO2011116087A2 (en) * | 2010-03-16 | 2011-09-22 | Copiun, Inc. | Highly scalable and distributed data de-duplication |
CN101794247A (zh) * | 2010-03-26 | 2010-08-04 | 天津理工大学 | 嵌套事务模型下实时数据库故障恢复方法 |
JP5077385B2 (ja) * | 2010-04-15 | 2012-11-21 | 株式会社デンソー | 車両用ナビゲーション装置 |
US8305807B2 (en) | 2010-07-09 | 2012-11-06 | Sandisk Technologies Inc. | Detection of broken word-lines in memory arrays |
US8432732B2 (en) | 2010-07-09 | 2013-04-30 | Sandisk Technologies Inc. | Detection of word-line leakage in memory arrays |
US8514630B2 (en) | 2010-07-09 | 2013-08-20 | Sandisk Technologies Inc. | Detection of word-line leakage in memory arrays: current based approach |
CN102012849B (zh) * | 2010-11-19 | 2012-10-24 | 中国人民大学 | 一种基于闪存的数据库恢复方法 |
US8495338B2 (en) * | 2010-12-03 | 2013-07-23 | Micron Technology, Inc. | Transaction log recovery |
US9268646B1 (en) * | 2010-12-21 | 2016-02-23 | Western Digital Technologies, Inc. | System and method for optimized management of operation data in a solid-state memory |
CN102033945A (zh) * | 2010-12-21 | 2011-04-27 | 中兴通讯股份有限公司 | 一种回收脏块的方法及装置 |
US8379454B2 (en) | 2011-05-05 | 2013-02-19 | Sandisk Technologies Inc. | Detection of broken word-lines in memory arrays |
US8726076B2 (en) | 2011-05-27 | 2014-05-13 | Microsoft Corporation | Operator state checkpoint markers and rehydration |
US8726104B2 (en) | 2011-07-28 | 2014-05-13 | Sandisk Technologies Inc. | Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages |
US8775901B2 (en) | 2011-07-28 | 2014-07-08 | SanDisk Technologies, Inc. | Data recovery for defective word lines during programming of non-volatile memory arrays |
US8750042B2 (en) | 2011-07-28 | 2014-06-10 | Sandisk Technologies Inc. | Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures |
US8874935B2 (en) * | 2011-08-30 | 2014-10-28 | Microsoft Corporation | Sector map-based rapid data encryption policy compliance |
US9164887B2 (en) | 2011-12-05 | 2015-10-20 | Industrial Technology Research Institute | Power-failure recovery device and method for flash memory |
EP2820548B1 (en) | 2012-03-02 | 2016-12-14 | Hewlett Packard Enterprise Development LP | Versioned memories using a multi-level cell |
US9075758B2 (en) | 2012-03-19 | 2015-07-07 | Samsung Electronics Co., Ltd. | Removable storage device with transactional operation support and system including same |
WO2014143023A1 (en) * | 2013-03-15 | 2014-09-18 | Hewlett-Packard Development Company, L.P. | Memory module controller supporting extended writes |
US20140344570A1 (en) | 2013-05-20 | 2014-11-20 | Microsoft Corporation | Data Protection For Organizations On Computing Devices |
US9483397B2 (en) * | 2013-07-16 | 2016-11-01 | Intel Corporation | Erase management in memory systems |
CN104375902A (zh) * | 2013-08-13 | 2015-02-25 | 苏州广海信息科技有限公司 | 一种数据恢复软件 |
JP6255926B2 (ja) * | 2013-11-13 | 2018-01-10 | 富士通株式会社 | 監視制御プログラム、監視制御方法、および監視制御装置 |
US9558229B2 (en) * | 2013-11-26 | 2017-01-31 | Sap Se | Transaction private log buffering for high performance of transaction processing |
KR102233808B1 (ko) * | 2014-03-14 | 2021-03-30 | 삼성전자주식회사 | 저장 장치 및 그것의 테이블 관리 방법 |
US10615967B2 (en) | 2014-03-20 | 2020-04-07 | Microsoft Technology Licensing, Llc | Rapid data protection for storage devices |
US9825945B2 (en) | 2014-09-09 | 2017-11-21 | Microsoft Technology Licensing, Llc | Preserving data protection with policy |
US9853812B2 (en) | 2014-09-17 | 2017-12-26 | Microsoft Technology Licensing, Llc | Secure key management for roaming protected content |
US9900295B2 (en) | 2014-11-05 | 2018-02-20 | Microsoft Technology Licensing, Llc | Roaming content wipe actions across devices |
US10133768B2 (en) | 2015-04-14 | 2018-11-20 | Microsoft Technology Licensing, Llc | Latest external dependee entity in transaction record |
US10031814B2 (en) * | 2015-04-14 | 2018-07-24 | Microsoft Technology Licensing, Llc | Collection record location as log tail beginning |
US10592494B2 (en) | 2015-04-14 | 2020-03-17 | Microsoft Technology Licensing, Llc | Collection record for overlapping data stream collections |
US10102251B2 (en) | 2015-04-14 | 2018-10-16 | Microsoft Technology Licensing, Llc | Lockless open collection data structure |
US9766929B2 (en) | 2015-04-14 | 2017-09-19 | Microsoft Technology Licensing, Llc | Processing of data stream collection record sequence |
US9959137B2 (en) | 2015-04-14 | 2018-05-01 | Microsoft Technology Licensing, Llc | Transaction redo using skip element for object |
US9853820B2 (en) | 2015-06-30 | 2017-12-26 | Microsoft Technology Licensing, Llc | Intelligent deletion of revoked data |
US10108503B2 (en) * | 2015-08-24 | 2018-10-23 | Western Digital Technologies, Inc. | Methods and systems for updating a recovery sequence map |
US9900325B2 (en) | 2015-10-09 | 2018-02-20 | Microsoft Technology Licensing, Llc | Passive encryption of organization data |
US9940261B2 (en) * | 2016-05-05 | 2018-04-10 | Western Digital Technology, Inc. | Zoning of logical to physical data address translation tables with parallelized log list replay |
US10586210B2 (en) | 2016-11-30 | 2020-03-10 | International Business Machines Corporation | Blockchain checkpoints and certified checkpoints |
US10523421B2 (en) | 2016-11-30 | 2019-12-31 | International Business Machines Corporation | Checkpoints for permissionless blockchains |
US10380028B2 (en) * | 2016-12-30 | 2019-08-13 | Western Digital Technologies, Inc. | Recovery of validity data for a data storage system |
CN107402824B (zh) * | 2017-05-31 | 2020-06-02 | 创新先进技术有限公司 | 一种数据处理的方法及装置 |
US11100996B2 (en) | 2017-08-30 | 2021-08-24 | Micron Technology, Inc. | Log data storage for flash memory |
US10096380B1 (en) * | 2017-08-31 | 2018-10-09 | Micron Technology, Inc. | Erase page check |
KR102468737B1 (ko) * | 2017-12-19 | 2022-11-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
CN110764704B (zh) * | 2019-10-18 | 2023-09-05 | 浙江大华技术股份有限公司 | 一种环境变量写入方法、存储介质及电子装置 |
CN117472291B (zh) * | 2023-12-27 | 2024-03-22 | 苏州元脑智能科技有限公司 | 数据块的校验方法和装置、存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1165344A (zh) * | 1996-01-31 | 1997-11-19 | 株式会社东芝 | 具有检查点恢复功能的i/o控制设备 |
CN1829974A (zh) * | 2003-08-01 | 2006-09-06 | 甲骨文国际公司 | 借助于非失败节点的并行恢复 |
US20070168698A1 (en) * | 2005-11-03 | 2007-07-19 | Coulson Richard L | Recovering from a non-volatile memory failure |
CN101025705A (zh) * | 2001-03-07 | 2007-08-29 | 甲骨文国际公司 | 对多节点系统中的检查点队列进行管理 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7930278B2 (en) * | 1998-02-13 | 2011-04-19 | Oracle International Corporation | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
US6728879B1 (en) * | 1999-06-02 | 2004-04-27 | Microsoft Corporation | Transactional log with multi-sector log block validation |
KR100389867B1 (ko) * | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
US6820218B1 (en) * | 2001-09-04 | 2004-11-16 | Microsoft Corporation | Persistent stateful component-based applications via automatic recovery |
US6959401B2 (en) * | 2001-09-04 | 2005-10-25 | Microsoft Corporation | Recovery guarantees for software components |
US7178050B2 (en) * | 2002-02-22 | 2007-02-13 | Bea Systems, Inc. | System for highly available transaction recovery for transaction processing systems |
US7533214B2 (en) * | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
US7403945B2 (en) * | 2004-11-01 | 2008-07-22 | Sybase, Inc. | Distributed database system providing data and space management methodology |
US7620660B2 (en) * | 2005-06-30 | 2009-11-17 | Microsoft Corporation | Pre-image logging for database recovery |
US20070192373A1 (en) * | 2006-02-15 | 2007-08-16 | Microsoft Corporation | Recovery of logless components |
US7650458B2 (en) * | 2006-06-23 | 2010-01-19 | Microsoft Corporation | Flash memory driver |
US20080033964A1 (en) * | 2006-08-07 | 2008-02-07 | Bea Systems, Inc. | Failure recovery for distributed search |
US7975138B2 (en) * | 2007-07-18 | 2011-07-05 | Oracle International Corporation | Systems and methods for mutually authenticated transaction coordination messages over insecure connections |
-
2008
- 2008-05-13 US US12/119,576 patent/US7979626B2/en active Active
-
2009
- 2009-04-13 WO PCT/US2009/040403 patent/WO2009140000A1/en active Application Filing
- 2009-04-13 CN CN2009801280613A patent/CN102089746B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1165344A (zh) * | 1996-01-31 | 1997-11-19 | 株式会社东芝 | 具有检查点恢复功能的i/o控制设备 |
CN101025705A (zh) * | 2001-03-07 | 2007-08-29 | 甲骨文国际公司 | 对多节点系统中的检查点队列进行管理 |
CN1829974A (zh) * | 2003-08-01 | 2006-09-06 | 甲骨文国际公司 | 借助于非失败节点的并行恢复 |
US20070168698A1 (en) * | 2005-11-03 | 2007-07-19 | Coulson Richard L | Recovering from a non-volatile memory failure |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541690A (zh) * | 2011-12-23 | 2012-07-04 | 北京握奇数据系统有限公司 | 一种智能卡及其恢复数据方法 |
CN104205115A (zh) * | 2012-03-26 | 2014-12-10 | 国际商业机器公司 | 使用不同安全擦除算法以从文件擦除与不同安全级别关联的组块 |
CN104205115B (zh) * | 2012-03-26 | 2017-03-01 | 国际商业机器公司 | 使用不同安全擦除算法以从文件擦除与不同安全级别关联的组块 |
CN103019886A (zh) * | 2012-12-11 | 2013-04-03 | 曙光信息产业(北京)有限公司 | 多元数据服务器下日志系统的恢复方法和装置 |
CN103019886B (zh) * | 2012-12-11 | 2016-03-30 | 曙光信息产业(北京)有限公司 | 多元数据服务器下日志系统的恢复方法和装置 |
CN103902479A (zh) * | 2014-03-27 | 2014-07-02 | 浪潮电子信息产业股份有限公司 | 一种基于元数据日志的元数据缓存快速重建机制 |
CN106055489A (zh) * | 2015-04-10 | 2016-10-26 | 旺宏电子股份有限公司 | 存储器装置与其操作方法 |
CN106055489B (zh) * | 2015-04-10 | 2019-05-10 | 旺宏电子股份有限公司 | 存储器装置与其操作方法 |
CN107851053A (zh) * | 2015-07-16 | 2018-03-27 | 高通技术国际有限公司 | 用于管理快闪存储器内容的损坏的方法和设备 |
CN107665156A (zh) * | 2016-07-27 | 2018-02-06 | 西部数据技术公司 | 多流日志重播 |
US11182091B2 (en) | 2016-07-27 | 2021-11-23 | Western Digital Technologies, Inc. | Multi-stream journaled replay |
CN107544859A (zh) * | 2017-07-12 | 2018-01-05 | 上海交通大学 | 在混合内存系统上用来保证数据一致性的检查点方法 |
CN107748705A (zh) * | 2017-11-08 | 2018-03-02 | 厦门市美亚柏科信息股份有限公司 | 系统evt日志碎片恢复的方法、终端设备及存储介质 |
CN107748705B (zh) * | 2017-11-08 | 2020-04-14 | 厦门市美亚柏科信息股份有限公司 | 系统evt日志碎片恢复的方法、终端设备及存储介质 |
CN110187827A (zh) * | 2018-02-23 | 2019-08-30 | 三星电子株式会社 | 可编程数据存储装置及可编程网络数据存储系统 |
CN110187827B (zh) * | 2018-02-23 | 2021-10-15 | 三星电子株式会社 | 可编程数据存储装置及可编程网络数据存储系统 |
US11750370B2 (en) | 2018-02-23 | 2023-09-05 | Samsung Electronics Co., Ltd. | Programmable blockchain solid state drive and switch |
CN111433765A (zh) * | 2018-11-30 | 2020-07-17 | 深圳市大疆创新科技有限公司 | 日志存储方法、日志读取方法、智能电池、无人机 |
CN113179657A (zh) * | 2019-06-26 | 2021-07-27 | 西部数据技术公司 | 恢复行为对于数据存储设备的预后和原位修复的用途 |
CN117472447A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 寄存器重命名恢复方法、装置和设备 |
CN117472447B (zh) * | 2023-12-28 | 2024-03-12 | 北京微核芯科技有限公司 | 寄存器重命名恢复方法、装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
US7979626B2 (en) | 2011-07-12 |
CN102089746B (zh) | 2013-08-21 |
WO2009140000A1 (en) | 2009-11-19 |
US20090287874A1 (en) | 2009-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102089746B (zh) | 采用事务日志的闪存恢复 | |
EP2389631B1 (en) | Solid state memory formatting | |
US8046528B2 (en) | Data writing method for flash memory, and flash memory controller and storage device thereof | |
CN102150142B (zh) | 存储器系统和控制存储器系统的方法 | |
CN102999430B (zh) | 处理具有非易失性存储器的系统的未完全关闭 | |
US8402202B2 (en) | Input/output control method and apparatus optimized for flash memory | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US20120159244A1 (en) | Memory system | |
US20060200500A1 (en) | Method of efficiently recovering database | |
CN107273058A (zh) | 逻辑地址偏移 | |
JP2013065309A (ja) | 不揮発性メモリシステムのためのウィーブシーケンスカウンタ | |
TWI451249B (zh) | 用於非揮發性記憶體的資料合併方法、控制器與儲存裝置 | |
KR20120060236A (ko) | 파워 인터럽트 관리 | |
CN111755039A (zh) | 在恢复进程期间减少存储器系统中单元干扰的设备及方法 | |
CN112148533A (zh) | 将数据存储在存储器系统的mlc区域中的设备和方法 | |
CN110781023A (zh) | 用于在存储器系统中处理数据的设备和方法 | |
TWI540428B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
CN102053796A (zh) | 闪存储存系统、闪存控制器与数据处理方法 | |
CN102890655A (zh) | 存储器储存装置、其存储器控制器与有效数据识别方法 | |
TW202234411A (zh) | 用於快閃記憶體中進行故障區塊管理的方法與裝置 | |
US11620084B2 (en) | Storage device including memory controller and operating method of memory controller | |
CN104008070A (zh) | 固态驱动器中的主引导记录保护 | |
CN113093987A (zh) | 控制存储器装置的控制器及其操作方法 | |
TW201525693A (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
EP2267725A1 (en) | Memory device for managing the recovery of a non volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150506 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150506 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |