CN103268291B - 在闪存存储系统中延迟持久化索引元数据的方法 - Google Patents

在闪存存储系统中延迟持久化索引元数据的方法 Download PDF

Info

Publication number
CN103268291B
CN103268291B CN201310195832.9A CN201310195832A CN103268291B CN 103268291 B CN103268291 B CN 103268291B CN 201310195832 A CN201310195832 A CN 201310195832A CN 103268291 B CN103268291 B CN 103268291B
Authority
CN
China
Prior art keywords
flash
index
data
new window
metadata
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
CN201310195832.9A
Other languages
English (en)
Other versions
CN103268291A (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 CN201310195832.9A priority Critical patent/CN103268291B/zh
Publication of CN103268291A publication Critical patent/CN103268291A/zh
Application granted granted Critical
Publication of CN103268291B publication Critical patent/CN103268291B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提出一种在闪存存储系统中延迟持久化索引元数据的方法,包括以下步骤:S1:闪存存储系统在写数据时生成数据的数据类型和反向索引,并将反向索引一同写入闪存;S2:根据数据、数据类型和反向索引建立内存正向索引,并使用待持久化索引列表标记未写入内存正向索引的数据;S3:通过更新窗口跟踪尚未建立正向索引的数据;以及S4:当闪存存储系统发生故障时,根据更新窗口的数据类型和反向索引重构正向索引以恢复闪存存储系统的故障。根据本发明实施例的方法,通过反向索引延迟了正向索引的持久化,减少了数据写操作的延迟,避免了用于被索引数据与索引元数据的事务操作开销,同时降低了更新窗口元数据持久化带来的竞争延迟。

Description

在闪存存储系统中延迟持久化索引元数据的方法
技术领域
本发明涉及闪存存储技术领域,特别涉及一种在闪存存储系统中延迟持久化索引元数据的方法。
背景技术
闪存是一种电子可擦除可编程的非易失性存储器件。闪存以页为单位进行读写,以块为单位进行擦除。随着编程擦除(Program/Erase,P/E)次数的增加,闪存单元贮存电子的能力减弱,降低造成数据存储的可靠性。闪存的编程擦除次数有限,该问题也被称为闪存的寿命问题。
在存储系统中,数据写操作通常包括数据更新以及元数据更新,后者用于记录数据更新的位置或者记录数据修改的状态。例如,文件系统创建文件的操作在写入索引节点(inode)之后需要在目录项(directoryentries)中更新该创建文件的目录项。用于索引的元数据需要及时持久化,否则被索引的数据在系统故障后不能被查找到,从而造成数据丢失。索引元数据的更新既增加了写操作的延迟,也带来了闪存寿命和操作原子性的问题。首先,数据写操作等待索引元数据持久化完成后返回,元数据持久化的延迟增加了写操作的延迟。其次,索引元数据持久化操作加速了闪存存储系统中P/E的频率,降低了闪存存储系统的寿命。由于闪存以页为单位进行读写,索引元数据持久化引入至少一个闪存页的更新。频繁的元数据更新持久化也造成大量的额外闪存页的写。最后,索引元数据的持久化也使得数据写操作的原子性保证更为复杂。文件系统等软件模块引入事务等机制维护写操作的原子性,进一步加剧了闪存存储系统的性能及寿命问题。
发明内容
本发明的目的旨在至少解决上述的技术缺陷之一。
为此,本发明的目的在于提出一种在闪存存储系统中延迟持久化索引元数据的方法。
为达到上述目的,本发明的实施例提出一种在闪存存储系统中延迟持久化索引元数据的方法,包括以下步骤:S1:闪存存储系统在写数据时生成所述数据的数据类型和反向索引,并将所述反向索引一同写入闪存;S2:根据所述数据、所述数据类型和反向索引建立内存正向索引,并使用待持久化索引列表标记未写入所述内存正向索引的数据;S3:通过更新窗口跟踪尚未建立所述正向索引的数据;以及S4:当所述闪存存储系统发生故障时,根据所述更新窗口的数据类型和反向索引重构正向索引以恢复所述闪存存储系统的故障。
本发明的一个实施例中,还包括:当所述更新窗口的利用率超过阈值时,为所述更新窗口分配新的更新窗口,并将所述更新窗口中已满的闪存块从所述更新窗口中移除。
本发明的一个实施例中,所述更新窗口中已满的闪存块从所述更新窗口中移除进一步包括:当所述更新窗口中存在已满的闪存块时,更新所述已满的闪存块的正向索引,并将所述已满的闪存块从所述更新窗口中移除。
本发明的一个实施例中,所述步骤S2具体包括:根据更新窗口元数据中闪存块的地址确定所述更新窗口;获得所述更新窗口中页元数据中的所述数据类型,并根据不同数据类型读取存储于不同位置的所述反向索引,以生成所述内存正向索引;以及使用待持久化索引列表标记未写入所述内存正向索引的数据。
本发明的一个实施例中,所述反向索引根据所述数据类型而不同。
本发明的一个实施例中,所述数据类型包括数据和索引节点。
根据本发明实施例的方法,通过正向索引减少在被延迟持久化的闪存写次数和数据写操作的延迟,避免了用于被索引数据与索引元数据的事务操作开销,同时使得闪存空间分配不会受到检查点操作的阻塞,在更新窗口元数据持久化的同时可进行数据写操作,很大程度上降低了更新窗口元数据持久化带来的竞争延迟。另外,反向索引可提供系统意外故障后的正向索引重构,提高了系统鲁棒性。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的在闪存存储系统中延迟持久化索引元数据的方法的流程图;
图2为根据本发明一个实施例的闪存页页元数据字段的示意图;
图3为根据本发明一个实施例的数据类型和反向索引的生成流程图;
图4为根据本发明一个实施例的更新窗口的实施例示意图;
图5为根据本发明一个实施例的内存更新窗口元数据与存储设备更新窗口元数据的状态转换过程示意图;
图6为根据本发明一个实施例的更新窗口的检查点操作的流程图;以及
图7为根据本发明一个实施例的闪存存储系统的故障恢复的流程图。
具体实施方式
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
图1为根据本发明一个实施例的在闪存存储系统中延迟持久化索引元数据的方法的流程图。如图1所示,根据本发明实施例的在闪存存储系统中延迟持久化索引元数据的方法,包括以下步骤:
步骤101,闪存存储系统在写数据时生成数据的数据类型和反向索引,并将反向索引一同写入闪存。
步骤102,根据数据、数据类型和反向索引建立内存正向索引,并使用待持久化索引列表标记未写入内存正向索引的数据。
具体地,在读写功能单元中,读操作与原先读操作一样。写操作与原先写操作不同,需要在被索引数据写入时一同写入反向索引。写操作首先判断写操作中被索引数据的数据类型,根据不同的数据类型生成不同的反向索引,并记录于不同的位置。其中,反向索引根据数据类型而不同。
在本发明的一个实施例中,根据更新窗口元数据中闪存块的地址确定更新窗口。然后获得更新窗口中页元数据中的数据类型,并根据不同数据类型读取存储于不同位置的反向索引,以生成内存正向索引,之后使用待持久化索引列表标记未写入内存正向索引的数据。
在本发明的一个实施例中,被索引数据的数据类型分为数据(DATA)和索引节点(INODE)两种。数据类型记录于页元数据中数据类型字段。图2为根据本发明一个实施例的闪存页页元数据字段的示意图。如图2所示,反向索引根据数据类型不同而不同。数据的反向索引格式为<i_num,l_off,version>,其中,字段分别记录了该数据所属文件索引节点的索引号,在该文件中的逻辑偏移,以及该数据更新的版本。索引节点反向索引格式为<parent_i_num,name,version>,其中,字段分别记录了该索引节点所在目录的索引节点的索引号,该索引节点所表示文件的文件名,已经该索引节点的更新版本。反向索引记录的位置也因数据类型的不同而不同。数据的反向索引记录于页元数据中,而不影响数据内容。索引节点的方向索引因name字段为变长字段,因而记录于索引节点的起始位置。
图3为根据本发明一个实施例的数据类型和反向索引的生成流程图。如图3所示,数据类型和反向索引的生成包括以下步骤:
步骤(1)记录数据类型,生成反向索引。
步骤(1.1)首先判断当前写操作的数据类型,若为数据写,转步骤(1.2),若为索引节点写,转步骤(1.3),否则转步骤(1.4)。
步骤(1.2)若为数据写,则按照闪存页大小切分为闪存页写,为每个闪存页生成反向索引,并与数据类型一同记录于页元数据。
步骤(1.2.1)切分数据写为闪存页写,并循环以下步骤至数据写完成。
步骤(1.2.2)在闪存页写的页元数据中设置数据类型字段为DATA,表示该闪存页的内容为数据。
步骤(1.2.3)为该闪存页生成反向索引<i_num,l_off,version>,并记录在页元数据中,其中i_num表示该页所属文件索引节点的索引号,l_off表示该闪存页在该页所属文件中的逻辑页偏移,version表示版本号。
步骤(1.2.4)写入该页的页数据及页元数据。
步骤(1.3)若为索引节点写,生成该索引节点的反向索引,记录于索引节点的起始位置,即记录在该索引节点第一个闪存页的页数据中,同时将数据类型记录于页元数据中。
步骤(1.3.1)为该索引节点生成反向索引<parent_i_num,name,version>,记录于索引节点的起始位置,其中,parent_i_num为该索引节点表示文件所在目录的索引节点的索引号,name为该索引节点表示文件的文件名,version为版本号。
步骤(1.3.2)按闪存页大小对索引节点内容切分为闪存页写,在第一个闪存页的页元数据中设置数据类型字段为INODE,表示该闪存页为索引节点的第一个闪存页,然后写入该页的页数据及页元数据。
步骤(1.3.3)继续写入该索引节点的其它闪存页。
步骤(1.4)直接写入该页的页数据及页元数据。
步骤(2)更新内存正向索引,将正向索引内存结构链接到待持久化正向索引链表中。
步骤(2.1)区分不同类型的数据,确定对正向索引结构的持久化。
步骤(2.2)若数据类型为DATA,则需要在其索引节点的映射中更新映射关系。
步骤(2.2.1)在其索引节点的映射关系内存数据结构中更新映射关系。
步骤(2.2.2)若索引节点中除映射关系、时间等字段发生修改外,其它字段未发生修改,可不立即持久化,将索引节点的内存结构链接到待持久化正向索引链表中。
步骤(2.2.3)否则,立即进行该索引节点的持久化。
步骤(2.3)若数据类型为INODE,则需要在其目录的目录项中增加相应目录项。
步骤(2.3.1)在其目录的目录项的内存结构中增加相应目录项。
步骤(2.3.2)将目录项的内存结构链接到待持久化正向索引链表中。
步骤(2.4)对于其它数据类型的更新,按原有方式更新其索引元数据。
在本发明的一个实施例中,闪存存储系统包括闪存存储子系统以及基于闪存存储子系统的文件系统等软件模块。为延迟持久化索引元数据,闪存存储系统引入三个功能单元:支持索引元数据延迟持久化的读写功能单元、更新窗口与检查点功能单元和故障恢复功能单元。这三个功能单元可实施于直接管理闪存的文件系统等软件模块内部,也可实施于管理闪存的固件闪存转换层中。实施例一示出了在闪存介质上直接构建文件系统的方式,不引入闪存转换层。在这种方式下,支持索引元数据延迟持久化的三个功能单元实施于文件系统中。
在本发明的一个实施例中,索引元数据是指用于索引数据存放物理地址的映射关系。索引节点作为数据页的索引元数据时,在直接管理闪存的文件系统中,异地更新要求每次数据页的更改都需要修改映射关系。将这种映射关系直接记录于索引节点中。索引节点除了记录该文件逻辑偏移至物理地址的映射关系外,还记录文件大小、访问时间、访问控制列表等元数据信息。但其中映射关系被认为是索引元数据。目录项作为索引节点的索引元数据。目录项中记录了该目录中文件的名字及索引节点号。文件系统通过索引节点号查找索引节点的位置。在直接管理闪存介质的闪存存储系统中,目录项中记录的索引节点号与其所表示的索引节点物理地址的映射关系因闪存异地更新特性而频繁修改,因而写操作直接在目录项中同时记录了索引节点的物理地址。目录项被认为是索引节点的索引元数据。这些索引元数据是用于正向查找数据页或索引节点的物理地址,所以也被称为正向索引。反之,记录于数据页或者索引节点中的用于扫描重构正向索引的索引,被称为反向索引。为延迟持久化索引元数据,正向索引在其内存结构中更新到最新状态,然后通过加入待持久化正向索引链表的方式延后持久化。待持久化正向索引链表记录了尚未持久化的正向索引的内存结构。
步骤103,通过更新窗口跟踪尚未建立正向索引的数据。
具体地,更新窗口用于跟踪尚未建立正向索引的数据所在的闪存块。由于更新窗口需要在系统故障之后能被确认,因而更新窗口元数据需要及时持久化,以避免系统意外故障导致的内存状态丢失。为减少更新窗口元数据的持久化,检查点操作预先分配预设数量的空闲闪存块至更新窗口,直至更新窗口中页面使用率超过预设阈值时才启动检查点操作持久化更新窗口元数据。
检查点操作是需要持久化待持久化正向索引,并修改存储设备更新窗口元数据。为避免更新窗口元数据修改过程中闪存空间分配被阻塞,闪存空间分配的闪存块为前后两个更新窗口中闪存块的交集。也就是,不管存储设备更新窗口元数据修改成功与否,从新旧两个存储设备更新窗口元数据均能查找到该修改过程中用于闪存空间分配的闪存块。从而在检查点操作过程中继续提供闪存空间分配服务,而不被阻塞。
图4为根据本发明一个实施例的更新窗口的实施例示意图。如图4所示,当前更新窗口包含闪存块16,33,18,19,68,69,70,71,128,129,130,62,79,80,81,82,其中闪存块16,33,18,19,68,69,70,71已写满,而闪存块128,129,130,62,79,80,81,82未写满。根据预设阈值,当前更新窗口需要移动,因而分配闪存块144,145,146,147,148,96,97,98至更新窗口,新更新窗口包含闪存块128,129,130,62,79,80,81,82,144,145,146,147,148,96,97,98。
图5为根据本发明一个实施例的内存更新窗口元数据与存储设备更新窗口元数据的状态转换过程示意图。在图4所示的情况下的内存更新窗口元数据以及存储设备更新窗口元数据在检查点操作中的状态转换的时间序列。如图5所示,在检查点操作的起始时刻T(i),内存及存储设备更新窗口元数据一致,均包含闪存块16,33,18,19,68,69,70,71,128,129,130,62,79,80,81,82。检查点操作首先从更新窗口中移除已写满的闪存块,修改内存更新窗口元数据,其包含闪存块128,129,130,62,79,80,81,82,如时刻T(i+1)所示,而此时存储设备更新窗口元数据不变。直至时刻T(i+3),检查点操作持久化待持久化正向索引完成,并分配新闪存块至更新窗口。此时,检查点操作先修改存储设备更新窗口元数据,其包含闪存块128,129,130,62,79,80,81,82,144,145,146,147,148,96,97,98。等待存储设备更新窗口元数据持久化完毕,内存更新窗口元数据才修改为最新状态,包含闪存块128,129,130,62,79,80,81,82,144,145,146,147,148,96,97,98。在检查点持久化待持久化正向索引的过程中,闪存空间分配仍可从闪存块128,129,130,62,79,80,81,82中分配。
图6为根据本发明一个实施例的更新窗口的检查点操作的流程图。如图6所示,更新窗口的数据处理包括如下步骤:
步骤(1)区分当前更新窗口已写满和未写满闪存块,设置当前内存更新窗口元数据为未写满闪存块及未使用闪存块的物理地址,将闪存空间分配限制在该范围内。
步骤(1.1)在当前更新窗口中,判断每个闪存块的最新分配页面号,若为最后该闪存块的最后一页,则该闪存块已写满,否则未写满。
步骤(1.2)将已写满闪存块的物理地址从内存更新窗口元数据中移除,则当前内存更新窗口元数据记录了当前更新窗口中的未写满闪存块及未使用闪存块的物理地址,如图5中T(i+1)时间所示。
步骤(2)持久化内存中待持久化正向索引链表。
步骤(2.1)扫描待持久化正向索引链表,将其中节点写入闪存存储设备中,并将其从链表中移除。
步骤(2.2)检查该链表是否为空,若不为空,则转步骤(2.1)。
步骤(3)分配空闲闪存块至更新窗口,修改存储设备更新窗口元数据
步骤(3.1)判断当前内存更新窗口元数据中闪存块的个数,并由预设更新窗口大小减去该值,计算出需要新分配闪存块个数。
步骤(3.2)从空闲块列表中分配相应个数的闪存块至更新窗口,并生成临时数据结构记录该闪存块的物理地址。
步骤(3.3)由当前内存更新窗口元数据与临时数据结构合并成新的内存更新窗口元数据,并持久化到存储设备,修改存储设备更新窗口元数据,如图5中T(i+2)时间所示。
步骤(3)最后,修改内存更新窗口元数据至最新状态,以提供新的闪存空间分配,如图5中T(i+3)时间所示。
步骤104,当闪存存储系统发生故障时,根据更新窗口的数据类型和反向索引重构正向索引以恢复闪存存储系统的故障。
具体地,系统意外故障重启后,故障恢复功能单元确认更新窗口找出尚未建立正向索引的数据所在闪存块,然后读取页元数据中的数据类型,并根据不同的数据类型读取反向索引重构正向索引,以恢复索引元数据。
在本发明的一个实施例中,当更新窗口的利用率超过阈值时,为更新窗口分配新的更新窗口,并将更新窗口中已满的闪存块从更新窗口中移除,其中,当更新窗口中存在已满的闪存块时,首先更新已满的闪存块的正向索引,然后将已满的闪存块从更新窗口中移除。
图7为根据本发明一个实施例的闪存存储系统的故障恢复的流程图。如图7所示,闪存存储系统的故障恢复包括如下步骤:
步骤(1)读取更新窗口元数据,确定更新窗口。
步骤(2)扫描更新窗口中每个已使用闪存页的页元数据,根据不同数据类型读取反向索引,重构正向索引。
步骤(2.1)循环读取更新窗口中每个已使用的闪存页的页元数据,确定数据类型;若更新窗口扫描完成,则转步骤(3);若为数据页,转步骤(2.2),若为索引节点,转步骤(2.3),其它则转步骤(2.1)继续读取下一个已使用闪存页的页元数据。
步骤(2.2)从页元数据中读取数据页的反向索引<i_num,l_offversion>。
步骤(2.2.1)检查索引号为i_num的索引节点的在文件逻辑偏移为l_off处的映射关系,若映射关系中物理页号与当前闪存页的物理页号一致,则转步骤(2.1)。
步骤(2.2.2)若映射关系中物理页号与当前闪存页的物理页号不一致,则将映射关系中修改为当前物理页号,并将该页的内存结构链接到待持久化正向索引链表中,转步骤(2.1)。
步骤(2.3)从页数据中读取索引节点的反向索引<parent_i_inum,name,version>。
步骤(2.3.1)检查索引号为parent_i_num的索引节点所表示的目录的目录项中是否有名字为name的目录项,若存在,则转步骤(2.1)。
步骤(2.3.2)若不存在名字为name的目录项,则用name以及当前索引节点的索引号i_num生成目录项,添加到目录的目录项中,然后将该页的内存结构链接到待持久化正向索引链表中,转步骤(2.1)以完成对闪存存储系统的故障恢复。
在本发明的一个实施例中,文件系统等软件模块通过闪存转换层管理闪存介质的方式下,文件系统中文件逻辑偏移或目录项索引号至物理地址存在两层映射关系。首先,文件系统中文件逻辑偏移与目录项索引号映射到存储设备导出的线性地址上。然后该线性地址通过闪存转换层的映射关系映射到闪存物理地址。因而这种方式下的索引元数据既包括了文件系统索引元数据,也包括了闪存转换层索引元数据。前者为用于索引线性地址的文件逻辑偏移或索引节点号。后者为用于索引物理地址的线性地址。
在本发明的一个实施例中,数据页的反向索引为<i_num,l_off,LPN,version>,其中i_num表示该数据所在文件的索引节点索引号,l_off表示该数据在文件中的逻辑偏移,LPN记录该数据所在的线性地址,version为该数据的更新版本。在正向索引重构过程中,首先检查文件系统中索引号为i_num的索引节点中映射关系是否存在l_off至LPN的映射关系。若该关系不存在且当前反向索引中版本号更高,则在索引节点中更新l_off至LPN的映射关系。然后检查闪存转换层中LPN是当前闪存页物理页号PPN的映射关系,若不存在且当前反向索引中版本号更高,则更新闪存转换层中的映射关系。索引节点的反向索引为<parent_i_num,name,LPN,version>,其中parent_i_num表示该索引节点所在目录的索引节点索引号,name表示该索引节点所代表文件的文件名,LPN表示该索引节点所在的线性地址,version表示该索引节点的更新版本。正向索引重构分为两个步骤。首先,检查索引节点索引号为parent_i_num的目录项中是否存在名字为name的目录项,若不存在且反向索引中版本号更高,则更新该目录项。然后检查闪存转换层中是否存在LPN至当前闪存页物理页号PPN的映射关系,若不存在且反向索引中版本号更高,则更新闪存转换层中该映射关系。
在本发明的一个实施例中,文件系统等软件模块通过闪存转换层管理闪存介质的方式下,若文件系统中索引节点号、逻辑偏移不能传递到闪存转换层中,则索引元数据的延迟持久化仅作用于闪存转换层映射关系的延迟持久化。
在本发明的一个实施例中,闪存转换层无法感知文件系统的语义,无法判别写操作的数据类型,因而只作用于闪存转换层中的索引元数据。反向索引为<LPN,version>,其中LPN为该闪存页的线性地址,version为该闪存页的更新版本。重构正向索引时,查找闪存转换层映射关系中LPN所对应的映射关系,若与当前闪存页物理页号不匹配且当前反向索引更新版本号更高,则将LPN所对应的映射关系更新为当前闪存页页号。
在本发明的一个实施例中,为跟踪存储设备上尚未建立正向索引的数据,支持索引元数据延迟持久化的闪存存储系统引入更新窗口。更新窗口记录上一次检查点之后尚未建立正向索引的闪存块的物理地址。检查点操作用于持久化闪存存储系统中待持久化的正向索引,被新分配相应数据的空闲闪存块至更新窗口,并修改更新窗口元数据。更新窗口元数据是记录更新窗口中闪存块物理地址的元数据,包括内存更新窗口元数据和存储设备更新窗口元数据。其中,内存更新窗口元数据为存储设备更新窗口元数据在内存中的数据结构。
根据本发明实施例的方法,通过正向索引减少在被延迟持久化的闪存写次数和数据写操作的延迟,避免了用于被索引数据与索引元数据的事务操作开销,同时使得闪存空间分配不会受到检查点操作的阻塞,在更新窗口元数据持久化的同时可进行数据写操作,很大程度上降低了更新窗口元数据持久化带来的竞争延迟。另外,反向索引可提供系统意外故障后的正向索引重构,提高了系统鲁棒性。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (5)

1.一种在闪存存储系统中延迟持久化索引元数据的方法,其特征在于,包括以下步骤:
S1:闪存存储系统在写数据时生成所述数据的数据类型和反向索引,并将所述反向索引一同写入闪存;
S2:根据所述数据、所述数据类型和反向索引建立内存正向索引,并使用待持久化索引列表标记未写入所述内存正向索引的数据;
S3:通过更新窗口跟踪尚未建立所述正向索引的数据;以及
S4:当所述闪存存储系统发生故障时,根据所述更新窗口的数据类型和反向索引重构正向索引以恢复所述闪存存储系统的故障,
所述步骤S2具体包括:
根据更新窗口元数据中闪存块的地址确定所述更新窗口;
获得所述更新窗口中页元数据中的所述数据类型,并根据不同数据类型读取存储于不同位置的所述反向索引,以生成所述内存正向索引;以及
使用待持久化索引列表标记未写入所述内存正向索引的数据。
2.如权利要求1所述的在闪存存储系统中延迟持久化索引元数据的方法,其特征在于,还包括:
当所述更新窗口的利用率超过阈值时,为所述更新窗口分配新的更新窗口,并将所述更新窗口中已满的闪存块从所述更新窗口中移除。
3.如权利要求2所述的在闪存存储系统中延迟持久化索引元数据的方法,其特征在于,所述更新窗口中已满的闪存块从所述更新窗口中移除进一步包括:
当所述更新窗口中存在已满的闪存块时,更新所述已满的闪存块的正向索引,并将所述已满的闪存块从所述更新窗口中移除。
4.如权利要求1所述的在闪存存储系统中延迟持久化索引元数据的方法,其特征在于,所述反向索引根据所述数据类型而不同。
5.如权利要求1所述的在闪存存储系统中延迟持久化索引元数据的方法,其特征在于,所述数据类型包括数据和索引节点。
CN201310195832.9A 2013-05-23 2013-05-23 在闪存存储系统中延迟持久化索引元数据的方法 Active CN103268291B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310195832.9A CN103268291B (zh) 2013-05-23 2013-05-23 在闪存存储系统中延迟持久化索引元数据的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310195832.9A CN103268291B (zh) 2013-05-23 2013-05-23 在闪存存储系统中延迟持久化索引元数据的方法

Publications (2)

Publication Number Publication Date
CN103268291A CN103268291A (zh) 2013-08-28
CN103268291B true CN103268291B (zh) 2016-02-24

Family

ID=49011922

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310195832.9A Active CN103268291B (zh) 2013-05-23 2013-05-23 在闪存存储系统中延迟持久化索引元数据的方法

Country Status (1)

Country Link
CN (1) CN103268291B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720834B2 (en) * 2015-12-11 2017-08-01 Oracle International Corporation Power saving for reverse directory
CN107885671B (zh) * 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
CN108227568A (zh) * 2017-12-15 2018-06-29 中国航空工业集团公司西安飞行自动控制研究所 一种基于SAFEBus总线的数据存储装置与方法
CN108509353A (zh) * 2018-03-14 2018-09-07 清华大学 基于裸闪存的对象存储构建方法及装置
CN109086010B (zh) * 2018-08-29 2021-12-17 郑州云海信息技术有限公司 一种在全闪存存储阵列上提升元数据可靠性的方法
CN109407979B (zh) * 2018-09-27 2020-07-28 清华大学 多线程持久性b+树数据结构设计与实现方法
CN113111034B (zh) * 2021-04-07 2023-08-04 山东英信计算机技术有限公司 一种索引预分配的方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187901A (zh) * 2007-12-20 2008-05-28 康佳集团股份有限公司 一种实现文件访问的高速缓存系统和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187901A (zh) * 2007-12-20 2008-05-28 康佳集团股份有限公司 一种实现文件访问的高速缓存系统和方法

Also Published As

Publication number Publication date
CN103268291A (zh) 2013-08-28

Similar Documents

Publication Publication Date Title
CN103268291B (zh) 在闪存存储系统中延迟持久化索引元数据的方法
CN102696010B (zh) 用于将数据高速缓存在固态存储设备上的装置、系统和方法
US8874515B2 (en) Low level object version tracking using non-volatile memory write generations
CN103577121B (zh) 一种基于Nand Flash的高可靠线性文件存取方法
CN102693184B (zh) 处理具有非易失性存储器的系统的动态和静态数据
CN107391774B (zh) 基于重复数据删除的日志文件系统的垃圾回收方法
CN101387987B (zh) 存储器装置、存储器控制方法和程序
US9336095B2 (en) Computing system and related data management method thereof
CN105183839A (zh) 一种基于Hadoop的小文件分级索引的存储优化方法
EP1895418A1 (en) Nonvolatile memory device, method of writing data, and method of reading out data
CN105359099A (zh) 索引更新管线
KR20110117099A (ko) 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법
US20200034340A1 (en) Flash file system and data management method therof
CN103996412A (zh) 一种用于智能卡非易失性存储器的掉电保护方法
CN105718530A (zh) 文件存储系统及其文件存储控制方法
CN104298681A (zh) 一种数据存储方法及装置
US8108356B2 (en) Method for recovering data in a storage system
CN103617097A (zh) 文件恢复方法及装置
CN102521274A (zh) 一种基于ibatis的SQL脚本动态加载方法
CN105045850A (zh) 云存储日志文件系统中垃圾数据回收方法
US20160170674A1 (en) Optimized management of operation data in a solid-state memory
KR20110046118A (ko) 적응적 로깅 장치 및 방법
US20200272604A1 (en) Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device
CN105376269A (zh) 虚拟机存储系统及其实现方法和装置
KR20170084675A (ko) 메모리 내의 데이터를 액세스하는 방법과 이를 이용하는 메모리 장치

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