CN103246519B - 在闪存存储设备中提供通用事务支持的方法 - Google Patents

在闪存存储设备中提供通用事务支持的方法 Download PDF

Info

Publication number
CN103246519B
CN103246519B CN201310195746.8A CN201310195746A CN103246519B CN 103246519 B CN103246519 B CN 103246519B CN 201310195746 A CN201310195746 A CN 201310195746A CN 103246519 B CN103246519 B CN 103246519B
Authority
CN
China
Prior art keywords
affairs
region
page
data update
transaction
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
CN201310195746.8A
Other languages
English (en)
Other versions
CN103246519A (zh
Inventor
舒继武
陆游游
郭佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN201310195746.8A priority Critical patent/CN103246519B/zh
Publication of CN103246519A publication Critical patent/CN103246519A/zh
Application granted granted Critical
Publication of CN103246519B publication Critical patent/CN103246519B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出一种在闪存存储设备中提供通用事务支持的方法,包括以下步骤:S1:闪存存储设备从系统接收待处理事务,并对待处理事务进行处理;S2:将闪存存储设备的闪存块分为四个区域,并将处理后的事务存储至四个区域的数据更新区域中,其中,四个区域包括数据更新区域、事务检查区域、事务完成区域和空闲区域;S3:当检测数据更新区域的页面利用率大于预设值时,系统对数据更新区域的闪存块进行检测,并将数据更新区域中已提交的事务移动到事务完成区域。根据本发明实施例的方法,通过对空闲区域、数据更新区域、事务检查区域和事务完成区域的维护,以提供通用事务支持,降低系统事务操作开销。

Description

在闪存存储设备中提供通用事务支持的方法
技术领域
本发明涉及闪存存储技术领域,特别涉及一种在闪存存储设备中提供通用事务支持的方法。
背景技术
事务是用于保证系统一致性的常见机制,其主要性质为ACID性质,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。事务机制通常由系统在软件部分提供,例如文件系统以及数据库管理系统通过日志的方式实现。日志方式的实现需要在日志部分和数据原地址两个地方更新数据,并且用于事务提交等事务元数据占用额外的空间,因而日志方式不仅降低了系统的性能,也降低了闪存存储设备的寿命。
闪存的擦除以闪存块为单位,其开销相比于以页为单位读写的读写开销较为高昂,因而多采用异地更新的方式,即新分配一个干净的页面用于数据的更新,同时将旧的页面置为无效以留作垃圾回收。异地更新的方式为闪存提供了单个页面更新的原子性。同时,闪存中每个页面包含一段保留的空间,用于记录逻辑地址号、ECC校验等信息,该保留空间被称为页元数据。页元数据与页数据的读写由单个读写操作完成,是原子性操作。页元数据可用于记录事务元数据的,以提供包含多个页面更新的事务操作的原子性。因而,闪存存储设备提供事务支持可降低系统的性能开销,提升闪存存储设备的寿命。
现有两种在闪存存储设备中提供事务支持的方式主要有两种。一种是利用了日志方式将更新操作以追加写的形式写入闪存存储设备。这种方式需要上层系统或应用程序提供两个事务的完全隔离,即同一时刻不能同时进行两个事务。另一个方式采用在页元数据中记录的环状结构的方式维护多个页面的原子性。这种方式需要上层系统或应用程序提供有冲突的两个事务的隔离,即同一时刻不能同时进行两个包含有相同页面更新的事务。这两种方式都需要上层系统或应用程序提供相应级别的隔离,反之,上层系统或应用程序对隔离性与一致性级别的选择也受到了限制。即使两个有冲突的事务可以顺序化,其仍然不能在上述两种方式中同时进行。这两种方式都不能提供通用的事务支持。因此,如何从闪存存储设备提供通用事务支持是本领域需要解决的一个技术问题。
发明内容
本发明的目的旨在至少解决上述的技术缺陷之一。
为此,本发明的目的在于提出一种在闪存存储设备中提供通用事务支持的方法。
为达到上述目的,本发明的实施例提出一种在闪存存储设备中提供通用事务支持的方法,包括以下步骤:S1:闪存存储设备从系统接收待处理事务,并对所述待处理事务进行处理;S2:将闪存存储设备的闪存块分为四个区域,并将处理后的事务存储至所述四个区域的数据更新区域中,其中,所述四个区域包括数据更新区域、事务检查区域、事务完成区域和空闲区域;S3:当检测所述数据更新区域的页面利用率大于预设值时,所述系统对所述数据更新区域的闪存块进行检测,并将所述数据更新区域中已提交的事务移动到所述事务完成区域。
本发明的一个实施例中,还包括:S4:当所述系统发生故障时,所述系统对所述数据更新区域进行扫描,并在所述数据更新区域读取所述处理后的事务中页面的非零计数;以及S5:如果在所述数据更新区域读取到所述处理后的事务中页面的非零计数,则判定所述待处理事务已提交,其中,所述处理后的事务中页面的非零计数与所读取到的所述事务的页面数目相等。
本发明的一个实施例中,所述步骤S3进一步包括:当所述数据更新区域的利用率超过阈值时,将所述空闲区域的一部分区域划分为数据更新区域。
本发明的一个实施例中,所述步骤S5进一步包括:在所述数据检查区域扫描与未能判断是否为已提交事务含有相同事务的数据页面;如果在所述数据检查区域读取到所述处理后的事务中页面的非零计数时,则判定所述处理后的事务已提交,其中,所述处理后的事务中页面的非零计数与所读取到的所述事务的页面数目相等。
本发明的一个实施例中,当无法确定所述处理后的事务为已提交时,将所述处理后的事务作为未完成事务或终止事务,并释放所述未完成事务或终止事务的占用空间。
本发明的一个实施例中,所述事务的移动通过修改对应事务的区域元数据来实现。
根据本发明实施例的方法,通过对空闲区域、数据更新区域、事务检查区域和事务完成区域的维护,以提供通用事务支持,降低系统事务操作开销。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的在闪存存储设备中提供通用事务支持的方法的流程图;
图2为根据本发明一个实施例的提供通用事务支持的闪存存储设备的闪存转换层功能单元示意图;
图3为根据本发明一个实施例的页元数据中事务管理信息的示意图;
图4为根据本发明一个实施例的内存事务处理表的示意图;
图5为根据本发明一个实施例的事务操作的流程图;
图6为根据本发明一个实施例的事务检查点操作的流程图;
图7为根据本发明一个实施例的事务恢复操作的流程图;以及
图8为根据本发明一个实施例的设备初始化的实流程图。
具体实施方式
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
图1为根据本发明一个实施例的在闪存存储设备中提供通用事务支持的方法的流程图。如图1所示,根据本发明实施例的在闪存存储设备中提供通用事务支持的方法,包括以下步骤:
步骤101,闪存存储设备从系统接收待处理事务,并对待处理事务进行处理。
图2为根据本发明一个实施例的提供通用事务支持的闪存存储设备的闪存转换层功能单元示意图。如图2所示,在闪存存储设备中提供通用事务支持的闪存存储设备除了原有闪存转换层(FlashTranslationLayer,FTL)的功能单元之外,还包含有三个新的功能单元:事务恢复与设备初始化、事务操作、事务检查点。事务恢复和设备初始化在设备启动时运行,检测设备启动状态,恢复上一次关闭时未能完成的已提交事务。事务操作处理上层系统或应用程序发送的事务开始、事务写、事务提交和事务中止等事务操作。事务检查点负责闪存存储设备中四个区域的转换。通用事务支持是指提供多种不同级别的隔离性或一致性的事务的支持,即隔离性或一致性的级别由上层系统或应用程序选择,不受闪存存储设备的约束。
在本发明的一个实施例中,事务操作命令包含对事务开始(TX_START)、事务写(TX_WRITE)、事务提交(TX_COMMIT)、事务中止(TX_ABORT)四个命令。事务开始命令用于上层系统或应用程序与闪存存储设备协商事务编号,并启动新事务。事务写命令用于上层系统或应用程序写数据,并标记当前写操作所在的事务编号。事务提交或事务中止命令用于上层系统或应用程序提交或中止指定事务编号的事务。事务操作功能单元负责处理上述四种事务操作命令。
事务操作功能单元在页元数据中记录事务管理信息。图3为根据本发明一个实施例的页元数据中事务管理信息的示意图。如图3所示,页元数据是闪存页中的一段空间,用于记录逻辑页号、ECC校验等元数据信息。页元数据与页数据一同被读出或者写入,是原子性操作。
提供通用事务支持的闪存存储设备还包含有内存事务处理表和内存活跃事务数据结构这两个内存数据结构,用于记录事务信息。内存事务处理表记录了正运行事务的每个事务写中的页面写记录。每个页面写记录包含有该页面写的逻辑页号、物理页号等信息。图4为根据本发明一个实施例的内存事务处理表的示意图。如图4所示,内存事务处理表的数据结构。每个事务中的事务写按页面大小切分为页面写,并生成页面写记录,链接于该事务的链表中。当前所有正运行事务的链表头以双向链表链接。内存活跃事务数据结构则记录了当前活跃事务的事务编号。活跃事务是指数据更新区域中所有闪存块中所包含页面所在的事务。活跃事务用于事务开始时事务编号的冲突检测。
图5为根据本发明一个实施例的事务操作的流程图。如图5所示,事务操作包括如下步骤:
步骤(1)上层系统或应用程序通知闪存存储设备事务开始,并协商事务编号。
步骤(1.2)上层系统或应用程序首先向闪存存储设备发送事务开始命令(TX_START),传入上层系统或应用程序试图使用的事务编号。
步骤(1.2)闪存存储设备检查传入的事务编号是否与当前活跃的事务编号冲突,活跃事务编号指数据更新区域和事务检查区域中所包含的事务编号,可以为已提交事务、已中止事务或正在处理事务的事务编号;若不冲突,则返回成功,转步骤(2),否则转步骤(1.3)。
步骤(1.3)若事务编号产生冲突,闪存存储设备设置冲突标志,并生成一个新的事务编号返回给上层系统或应用程序。
步骤(1.4)若上层系统或应用程序能正确处理冲突标志,则按照新的事务编号进行事务,转步骤(2),否则事务写操作失败。
步骤(2)闪存存储设备接收上层系统或应用程序发送的事务写操作(TX_WRITE),为每一个事务写操作修改内存事务处理表,更新正在运行的事务信息的记录。
步骤(2.1)将事务写操作按照闪存页大小切分为多个页面写操作。
步骤(2.2)为每个页面写操作修改内存事务处理表,增加该页面写的记录。
步骤(2.2.1)判断内存事务处理表中该事务编号是否存在,若存在,转步骤(2.2.3),否则转步骤(2.2.2)。
步骤(2.2.2)若内存事务处理表中该事务编号不存在,则生成该事务编号的链表头,包括事务编号、当前事务页面计数,并链接到内存事务处理表的链表上。
步骤(2.2.3)生成当前事务写操作的记录,包括逻辑页号,并将该记录链接到以该事务编号为链表头的链表上。
步骤(2.3)将该页面写操作的待更新数据进行缓存或更新到闪存物理页。
步骤(2.3.1)判断该页面写操作的待更新数据是否可以缓存在闪存存储设备的缓存中,若是,则进行缓存,转步骤(2.4),否则转步骤(2.3.2)。
步骤(2.3.2)从数据更新区域中分配一个干净的物理页,并写入页数据及页元数据。
步骤(2.3.2.1)闪存存储设备为当前事务写生成事务管理信息,包括事务编号、事务页面计数,其中除事务的最后一个页面计数设置为该事务所有页面个数外,其余事务页面计数设置为0。
步骤(2.3.2.2)事务管理信息与闪存存储设备原有的ECC校验等元数据一同存放于页元数据中。
步骤(2.3.2.3)页元数据与页数据一同被写入到新分配的物理页中,并在内存事务处理表的该页面写的记录中增加新物理页号的字段信息。
步骤(2.4)循环步骤(2.2)、步骤(2.3)处理当前事务操作所切分的页面写操作,直至完成转步骤(2.5)。
步骤(2.5)闪存存储设备接收上层系统或应用程序发送的命令,若仍为事务写操作,则转步骤(2),若为事务开始命令,则转步骤(1),若为事务提交或事务中止,则转步骤(3)。
步骤(3)闪存存储设备接收到上层系统或应用程序发送的事务提交(TX_COMMIT)或中止(TX_ABORT)命令,则将内存事务处理表中该事务的页面修改操作更新到映射表中。
步骤(3.1)若为事务提交操作,依次将内存事务处理表中该事务的页面修改操作更新到映射表。
步骤(3.1.1)依次判断内存事务处理表中该事务的链表中的页面写操作的记录中是否已经有新物理页号,即是否已经将数据写入闪存物理页中,若是则转步骤(3.1.3),否则转不走(3.1.2)。
步骤(3.1.2)从数据更新区域中分配一个干净的物理页,并写入页数据及页元数据。
步骤(3.1.2.1)闪存存储设备为当前事务写生成事务管理信息,包括事务编号、事务页面计数,其中除事务的最后一个页面计数设置为该事务所有页面个数外,其余事务页面计数设置为0。
步骤(3.1.2.2)事务管理信息与闪存存储设备原有的ECC校验等元数据一同存放于页元数据中。
步骤(3.1.2.3)页元数据与页数据一同被写入到新分配的物理页中,并在内存事务处理表的该页面写的记录中增加新物理页号的字段信息。
步骤(3.1.3)更新映射表项为新物理页号,并将映射表项中原有物理页号置为无效。
步骤(3.1.4)循环步骤(3.1.1)至步骤(3.1.3),直至内存事务处理表中该事务的链表中的页面写操作的记录全部处理完毕,并在内存活跃事务数据结构中记录该事务的事务编号。
步骤(3.2)若为事务中止操作,直接丢弃内存事务处理表中该事务的页面修改操作,同时在内存活跃事务数据结构中记录该事务的事务编号;
步骤(4)完成对该事务的操作。
步骤102,将闪存存储设备的闪存块分为四个区域,并将处理后的事务存储至四个区域的数据更新区域中,其中,四个区域包括数据更新区域、事务检查区域、事务完成区域和空闲区域。
具体而言,提供通用事务支持的闪存存储设备中将闪存块划分为四个区域:空闲区域、数据更新区域、事务检查区域、事务完成区域。其中,数据更新区域用于记录上一事务检查点时未能写满的闪存块以及预分配的用于现阶段页面分配的闪存块。从上一事务检查点结束到下一事务检查点开始的间隔时间内,空闲页面的分配只能从数据更新区域分配。事务检查区域用于记录上一事务检查点时已写满的闪存块,但这些块所包含的页面中存在某页面在未完成的事务中,或者存在某页面所在事务所涉及的闪存块未写满。事务检查区域用于事务恢复时事务已提交的辅助判断。空闲区域记录除数据更新区域中空闲块之外的所有空闲块。事务完成区域记录所有已写满的闪存块,且这些闪存块中所包含的事务均已完成。事务检查点操作负责各部分闪存块在四个区域的移动。事务检查点并不是真实意义上从物理位置上移动闪存块,而是通过记录闪存块地址的方式确定四个区域所包含的闪存块。闪存块的地址记录被称为区域元数据。提供通用事务支持的闪存存储设备利用了设备原有对空闲块和已使用块的记录,仅记录数据更新区域和事务检查区域的区域元数据。空闲区域由原有对空闲块的记录减去数据更新区域的闪存块的方式得到。事务完成区域有原有对已使用闪存块减去数据更新区域和事务检查区域的闪存块的方式得到。
事务的状态包括:正运行事务、已提交事务、中止事务。其中,已提交事务和中止事务也被称为已完成事务,即事务的状态可确定。正运行事务也被称为未完成事务。
步骤103,当检测数据更新区域的页面利用率大于预设值时,系统对数据更新区域的闪存块进行检测,并将数据更新区域中已提交的事务移动到事务完成区域。其中,事务的移动通过修改对应事务的区域元数据来实现。
具体地,当数据更新区域的页面利用率超过预设数值时,事务检查点功能单元启动事务检查点操作,进行区域的装换。事务检查点功能单元首先检测并移动数据更新区域中可以移动到事务完成区域的闪存块,接着检测并移动数据更新区域中可以移动到事务检查区域的闪存块,然后检测并移动事务检查区域中可以移动到事务完成区域的闪存块,最后从空闲区域预分配闪存块至数据更新区域。事务检查点操作还进行区域元数据的持久化,以完成该事务检查点。其中,当数据更新区域的利用率超过阈值时,将空闲区域的一部分区域划分为数据更新区域。
在本发明的一个实施例中,当系统发生故障时,系统对数据更新区域进行扫描,并在数据更新区域读取处理后的事务中页面的非零计数,如果在数据更新区域读取到处理后的事务中页面的非零计数,则判定待处理事务已提交,其中,处理后的事务中页面的非零计数与所读取到的事务的页面数目相等。
在本发明的一个实施例中,在数据检查区域扫描与未能判断是否为已提交事务含有相同事务的数据页面,如果在数据检查区域读取到处理后的事务中页面的非零计数时,则判定处理后的事务已提交,其中,处理后的事务中页面的非零计数与所读取到的事务的页面数目相等。
图6为根据本发明一个实施例的事务检查点操作的流程图。如图6所示,事务检查包括如下步骤:
步骤(1)事务检查点操作区分数据更新区域中已写满的闪存块和未写满闪存块,其中未写满闪存块包括未使用闪存块。
步骤(2)扫描数据更新区域中已写满的闪存块。
步骤(2.1)对该闪存块所包含的每个闪存页所在的事务,若该事务已完成,且其所涉及的闪存块都已写满,则移动到事务完成区域。
步骤(2.2)对该闪存块所包含的每个闪存页所在的事务,若存在某事务未完成,或者存在某事务所涉及的闪存块未写满,则移动该闪存块到事务检查区域。
步骤(3)扫描事务检查区域的闪存块,对该闪存块所包含的每个闪存页所在的事务,若该事务已完成,且其所涉及的闪存块都已写满,则移动到事务完成区域。
步骤(4)对移动到事务完成区域的闪存块,将其所包含的每个闪存页所在的事务编号从内存活跃事务数据结构中删除,表示该事务不再活跃。
步骤(5)从空闲区域分配闪存块到数据更新区域,直至数据更新区域的闪存块个数达到预设数值。
步骤(6)事务检查点修改闪存存储设备上的区域元数据,然后更新内存区域元数据数据结构,完成事务检查点操作。
在本发明的一个实施例中,如果在数据检查区域读取到处理后的事务中页面的非零计数时,判定处理后的事务已提交。当无法确定处理后的事务为已提交时,将处理后的事务作为未完成事务或终止事务,并释放未完成事务或终止事务的占用空间。
在本发明的一个实施例中,垃圾回收将其擦除的闪存块从事务完成区域移动到空闲区域。提供通用事务支持的闪存存储设备限定垃圾回收作用范围为事务完成区域,即不能选择数据更新区域和事务检查区域的闪存块进行擦除。
在本发明的一个实施例中,系统意外故障后,提供通用事务支持的闪存系统能够通过事务恢复与初始化功能单元恢复已提交的事务。由于上一事务检查点操作已经保证了事务完成区域中闪存块中所有闪存页所在事务的原子性和持久性,因而事务恢复与初始化功能单元在系统启动后仅需区分上一事务检查点之后的事务的状态。首先,事务恢复与初始化功能单元扫描数据更新区域,构建内存事务处理表,并通过事务管理信息中的事务页面个数判断事务是否已提交,进行相应操作。接着,事务恢复与初始化功能单元在事务检查区域中查找数据更新区域中未能判断已提交的事务中的页面写。如果事务检查区域扫描完成后仍不能判断为已提交的事务几位未完成事务或中止事务。最后,事务恢复与初始化功能单元重新提交已提交事务,直接丢弃未完成事务或中止事务的内存数据结构,并更新内存活跃事务数据结构。
图7为根据本发明一个实施例的事务恢复操作的流程图。如图7所示,当系统发生故障时,系统对数据更新区域进行扫描,并在数据更新区域查找待处理事务的事务编号和计数,如果在数据更新区域查找到事务的事务编号和计数,则判定待处理事务已提交。即当对发生故障时通过事务恢复与初始化功能单元对事务进行恢复,其具体步骤如下:
步骤(1)事务恢复操作读取闪存存储设备的区域元数据,确定数据更新区域以及事务检查区域。
步骤(2)扫描数据更新区域的所有已使用页面的页元数据,判断事务是否完成。
步骤(2.1)依次扫描页元数据,读取事务编号和事务页面计数,同时读取该页的逻辑页号,并记录该页的物理页号。
步骤(2.2)生成页面写记录,恢复至内存事务处理表。
步骤(2.2.1)判断内存事务处理表中该事务编号是否存在,若存在,转步骤(2.2.3),否则转步骤(2.2.2)。
步骤(2.2.2)若内存事务处理表中该事务编号不存在,则生成该事务编号的链表头,包括事务编号、当前事务页面计数,并链接到内存事务处理表的链表上。
步骤(2.2.3)生成当前事务写操作的记录,包括逻辑页号、物理页号,并将该记录链接到以该事务编号为链表头的链表上。
步骤(2.3)循环步骤(2.1)至(2.2),直至数据更新区域所有已使用页面的页元数据扫描完毕。
步骤(2.4)扫描内存事务处理表中每个事务,判断事务页面计数非零值与当前链表中页记录个数是否一致,若一致,则进行事务提交操作。
步骤(2.4.1)更新映射表项为新物理页号,并将映射表项中原有物理页号置为无效。
步骤(2.5)若内存事务处理表为空,则转步骤(4),否则转步骤(3);
步骤(3)扫描事务检查区域的所有页面的页元数据,继续判断步骤(2)中未提交的事务。
步骤(3.1)依次扫描页元数据,读取事务编号和事务页面计数,同时读取该页的逻辑页号,并记录该页的物理页号。
步骤(3.2)若该事务编号在内存事务处理表中存在,则生成写记录,并恢复至内存事务处理表,否则转步骤(3.1)。
步骤(3.2.1)判断内存事务处理表中该事务编号是否存在,若存在,转步骤(2.2.3),否则转步骤(2.2.2)。
步骤(3.2.2)若内存事务处理表中该事务编号不存在,则生成该事务编号的链表头,包括事务编号、当前事务页面计数,并链接到内存事务处理表的链表上。
步骤(3.2.3)生成当前事务写操作的记录,包括逻辑页号、物理页号,并将该记录链接到以该事务编号为链表头的链表上。
步骤(3.3)判断事务页面计数非零值与当前链表中页记录个数是否一致,若一致,则进行事务提交操作。
步骤(3.3.1)更新映射表项为新物理页号,并将映射表项中原有物理页号置为无效。
步骤(3.4)若内存事务处理表为空,则转步骤(4),否则转步骤(3.1)。
步骤(4)事务恢复操作已完成已提交事务的判断,并更新到映射表中,然后直接丢弃未完成或已中止事务,即内存事务处理表中余下的事务,同时更新内存活跃事务数据结构。
步骤(5)事务恢复操作完成事务恢复。
图8为根据本发明一个实施例的设备初始化的实流程图。如图8所示,事务的初始化包括如下步骤:
步骤(1)闪存存储设备判断当前设备是否为初次使用,若不为初次使用,转步骤(2)。
步骤(1.1)检查每个闪存块的状态,将其区分为干净状态和已使用状态,前者表示该闪存块中所有页面均未有数据更新,后者表示该闪存块中包含已使用的页面。
步骤(1.2)依据原有的空闲空间管理方式记录干净的闪存块和已使用的闪存块,其中干净的闪存块和已使用的闪存块分别构成了空闲区域和事务完成区域。
步骤(1.3)设置数据更新区域和事务检查区域为空。
步骤(1.4)从空闲区域中分配预设数量的闪存块,并加入到数据更新区域。
步骤(1.5)闪存存储设备中的四个区域设置完成,转步骤(3)。
步骤(2)若当前设备不为初次使用,则判断设备是否需要格式化或正常启动,若需要格式化,则转步骤(2.1),否则转步骤(2.2)。
步骤(2.1)若当前设备需要格式化,则将所有已写页面置为无效,并调整四个区域。
步骤(2.1.1)读取区域元数据以确定数据更新区域和事务检查区域,读取原有空闲空间管理方式记录的干净的和已使用的闪存块,并通过减去数据更新区域和事务检查区域中闪存块的方法确定空闲区域和事务完成区域;
步骤(2.1.2)检查数据更新区域中的部分使用的闪存块,将其中未使用的页面置为无效页面,同时将其移动到事务完成区域。
步骤(2.1.3)将数据更新区域中的已写满的闪存块移动到事务完成区域。
步骤(2.1.4)将事务检查区域中的已写满的闪存块移动到事务完成区域。
步骤(2.1.5)闪存存储设备中的四个区域设置完成,转步骤(3)。
步骤(2.2)若当前设备正常启动,则先执行事务恢复操作,然后执行事务检查点操作,以设置闪存存储设备的四个区域。
步骤(3)构建内存事务处理表,完成初始化,并开始接收外部读写请求。
根据本发明实施例的方法,通过对空闲区域、数据更新区域、事务检查区域和事务完成区域的维护,以提供通用事务支持,降低系统事务操作开销。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (6)

1.一种在闪存存储设备中提供通用事务支持的方法,其特征在于,包括以下步骤:
S1:闪存存储设备从系统接收待处理事务,并对所述待处理事务进行处理;
S2:将闪存存储设备的闪存块分为四个区域,并将处理后的事务存储至所述四个区域的数据更新区域中,其中,所述四个区域包括数据更新区域、事务检查区域、事务完成区域和空闲区域;
S3:当检测所述数据更新区域的页面利用率大于预设值时,所述系统对所述数据更新区域的闪存块进行检测,并将所述数据更新区域中已提交的事务移动到所述事务完成区域。
2.如权利要求1所述的在闪存存储设备中提供通用事务支持的方法,其特征在于,还包括:
S4:当所述系统发生故障时,所述系统对所述数据更新区域进行扫描,并在所述数据更新区域读取所述处理后的事务中页面的非零计数;以及
S5:如果在所述数据更新区域读取到所述处理后的事务中页面的非零计数,则判定所述待处理事务已提交,其中,所述处理后的事务中页面的非零计数与所读取到的所述事务的页面数目相等。
3.如权利要求1所述的在闪存存储设备中提供通用事务支持的方法,其特征在于,所述步骤S3进一步包括:
当所述数据更新区域的利用率超过阈值时,将所述空闲区域的一部分区域划分为数据更新区域。
4.如权利要求2所述的在闪存存储设备中提供通用事务支持的方法,其特征在于,所述步骤S5进一步包括:
在所述事务检查区域扫描与未能判断是否为已提交事务含有相同事务的数据页面;
如果在所述事务检查区域读取到所述处理后的事务中页面的非零计数时,则判定所述处理后的事务已提交,其中,所述处理后的事务中页面的非零计数与所读取到的所述事务的页面数目相等。
5.如权利要求2或4所述的在闪存存储设备中提供通用事务支持的方法,其特征在于,当无法确定所述处理后的事务为已提交时,将所述处理后的事务作为未完成事务或终止事务,并释放所述未完成事务或终止事务的占用空间。
6.如权利要求1所述的在闪存存储设备中提供通用事务支持的方法,其特征在于,所述事务的移动通过修改对应事务的区域元数据来实现。
CN201310195746.8A 2013-05-23 2013-05-23 在闪存存储设备中提供通用事务支持的方法 Active CN103246519B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310195746.8A CN103246519B (zh) 2013-05-23 2013-05-23 在闪存存储设备中提供通用事务支持的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310195746.8A CN103246519B (zh) 2013-05-23 2013-05-23 在闪存存储设备中提供通用事务支持的方法

Publications (2)

Publication Number Publication Date
CN103246519A CN103246519A (zh) 2013-08-14
CN103246519B true CN103246519B (zh) 2016-06-01

Family

ID=48926053

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310195746.8A Active CN103246519B (zh) 2013-05-23 2013-05-23 在闪存存储设备中提供通用事务支持的方法

Country Status (1)

Country Link
CN (1) CN103246519B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630695B (zh) * 2014-10-25 2018-11-09 华为技术有限公司 一种事务提交的方法和装置
CN107870732B (zh) 2016-09-23 2020-12-25 伊姆西Ip控股有限责任公司 从固态存储设备冲刷页面的方法和设备
KR102233400B1 (ko) * 2017-05-29 2021-03-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727978A (zh) * 2008-10-23 2010-06-09 意法半导体股份有限公司 在电可擦和可编程的非易失性存储器中写入和读取数据的方法
US8010958B2 (en) * 2006-08-11 2011-08-30 Sharp Kabushiki Kaisha Data processing apparatus, program managing apparatus, control program updating method, program managing method, program managing system, updating program, and recording medium

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8010958B2 (en) * 2006-08-11 2011-08-30 Sharp Kabushiki Kaisha Data processing apparatus, program managing apparatus, control program updating method, program managing method, program managing system, updating program, and recording medium
CN101727978A (zh) * 2008-10-23 2010-06-09 意法半导体股份有限公司 在电可擦和可编程的非易失性存储器中写入和读取数据的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
闪存存储系统综述;陆游游等;《计算机研究与发展》;20121205;第49至59页 *

Also Published As

Publication number Publication date
CN103246519A (zh) 2013-08-14

Similar Documents

Publication Publication Date Title
CN101169751B (zh) 具有闪存设备的系统及其数据恢复方法
US7249221B2 (en) Storage system having network channels connecting shared cache memories to disk drives
CN102541757B (zh) 写缓存方法、缓存同步方法和装置
CN107391774B (zh) 基于重复数据删除的日志文件系统的垃圾回收方法
CN107992269B (zh) 一种基于去重ssd的事务写入方法
CN100377119C (zh) 闪存介质中数据保护方法
CN103631536B (zh) 一种利用ssd的无效数据优化raid5/6写性能的方法
CN101467134B (zh) 用于对闪存类型存储器设备中的事务进行处理的方法和装置
CN102012849B (zh) 一种基于闪存的数据库恢复方法
CN103577121A (zh) 一种基于nand flash的高可靠线性文件存取方法
CN101828173A (zh) 具有多个处理器、缓存电路和共享存储器的数据处理系统
CN105988723A (zh) 一种快照处理方法及装置
CN102098344B (zh) 一种缓存管理中同步版本方法和装置及其缓存管理系统
CN102299904A (zh) 一种实现业务数据备份的系统及方法
US6658541B2 (en) Computer system and a database access method thereof
CN103246519B (zh) 在闪存存储设备中提供通用事务支持的方法
US9262096B2 (en) Dynamic address mapping for finish in the field
CN102314506A (zh) 基于动态索引的分布式缓冲区管理方法
US20170160940A1 (en) Data processing method and apparatus of solid state disk
CN105376269B (zh) 虚拟机存储系统及其实现方法和装置
CN114661521A (zh) 离线去重方法、装置、电子设备、存储介质及程序产品
CN101894077B (zh) 一种数据存储方法及系统
CN104077078A (zh) 读存储区、更新存储区的方法及装置
US20170017406A1 (en) Systems and methods for improving flash-oriented file system garbage collection
CN112527197A (zh) 一种智能卡碎片存储空间整理方法、智能卡及系统

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