CN106951376A - 面向闪存的细粒度非易失缓存系统以及缓存管理方法 - Google Patents
面向闪存的细粒度非易失缓存系统以及缓存管理方法 Download PDFInfo
- Publication number
- CN106951376A CN106951376A CN201710107121.XA CN201710107121A CN106951376A CN 106951376 A CN106951376 A CN 106951376A CN 201710107121 A CN201710107121 A CN 201710107121A CN 106951376 A CN106951376 A CN 106951376A
- Authority
- CN
- China
- Prior art keywords
- cache
- page
- cache module
- file system
- volatile
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向闪存的细粒度非易失缓存系统以及缓存管理方法,其中系统包括:设置于主机端的易失性缓存模块,用于缓存文件系统中的读写操作内容,并采用粗粒度的方式对易失性缓存模块的缓存空间进行管理和分配;设置于主机端的非易失性缓存模块,用于缓存文件系统中的同步操作内容,并采用细粒度的方式对非易失性缓存模块的缓存空间进行管理和分配,以及在有数据页被替换时,将被替换的数据页内容写回至固态硬盘中相应位置;固态硬盘设置于存储端,用于与易失性缓存模块进行交互以实现易失性缓存模块中缓存页的读取和写回操作。该系统不仅避免系统在出现掉电或崩溃故障时,导致缓存数据的丢失现象,还提升了系统性能并延长设备的使用寿命。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种面向闪存的细粒度非易失缓存系统以及缓存管理方法。
背景技术
闪存设备是一种可擦除、可重写的电子非易失性存储介质,它已被广泛用于数据存储系统中,而有限的使用寿命和较差的写性能一直阻碍着闪存设备的发展和使用。因此为了克服这一问题,可通过常用的缓存方法减少闪存设备的写操作次数,进而提升基于闪存设备的性能和使用寿命。
相关技术中,文件系统的缓存方式大多是通过动态随机存取存储器(DynamicRandom Access Memory,英文简称为:DRAM)缓存数据以提升系统I/O性能。然而,由于DRAM具有易失性,因此在系统出现掉电或崩溃故障时,DRAM缓存中的数据出现丢失并导致文件系统出现不一致的状态。
为了避免系统在出现掉电或崩溃故障时导致的数据丢失,可使用额外的同步操作(例如fsync或者fdatasync)进行有选择性地持久化关键数据。例如,数据库系统在事务操作提交之前将日志文件同步至硬盘,从而保证数据的持久性,但频繁的文件同步操作极大地降低了DRAM缓存效率,并且还严重减少了闪存设备的使用寿命。
另外,在相关技术中,随着新型非易失主存(Non-Volatile Main Memory,英文简称:NVMM)器件(例如相变存储器)的出现和发展,使得该新型非易失主存器件很有可能成为未来计算机系统中主存的存储介质。该新型非易失主存器件相比于DRAM,能够提供非易失、高存储密度、和低能耗等特性,但是由于成本因素,新型非易失主存器件无法应用于大规模应用中。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种面向闪存的细粒度非易失缓存系统,该系统不仅能够避免系统在出现掉电或崩溃故障时,导致缓存数据的丢失现象,还能够提升系统性能并延长闪存设备的使用寿命。
本发明的第二个目的在于提出一种面向闪存的细粒度非易失缓存管理方法。
为了实现上述目的,本发明的第一方面实施例的面向闪存的细粒度非易失缓存系统。所述缓存系统面向闪存存储设备并建立在文件系统之上,所述缓存系统包括:设置于主机端的易失性缓存模块,所述易失性缓存模块用于缓存所述文件系统中的读写操作内容,并采用粗粒度的方式对所述易失性缓存模块的缓存空间进行管理和分配;设置于所述主机端的非易失性缓存模块,所述非易失性缓存模块用于缓存所述文件系统中的同步操作内容,并采用细粒度的方式对所述非易失性缓存模块的缓存空间进行管理和分配,以及在有数据页被替换时,将所述被替换的数据页的内容写回至固态硬盘中的相应位置以保证数据的持久性;所述固态硬盘设置于存储端,用于与所述易失性缓存模块进行交互以实现所述易失性缓存模块中缓存页的读取和写回操作;其中,在检测当前有页面需要进行同步缓存时,所述文件系统判断被同步页面是否需要按照细粒度的方式进行缓存,若是,则将所述被同步页面中的脏缓存行数据缓存至所述非易失性缓存模块中,否则将所述被同步页面中的全部内容写入所述非易失性缓存模块中。
本发明实施例的面向闪存的细粒度非易失缓存系统,通过在缓存系统中设置易失性缓存和非易失性缓存的混合缓存结构,将传统的文件系统中读写缓存和同步缓存进行拆分,进而分别通过混合缓存结构中的非易失性缓存对文件系统中的同步操作进行缓存,以保证数据的持久性,提升缓存利用率,以及易失性缓存对文件系统中的普通读写操作内容进行缓存,以实现对缓存空间进行管理和分配。该系统不仅能够避免系统在出现掉电或崩溃故障时,导致缓存数据的丢失现象,还能够提升系统性能并延长闪存设备的使用寿命。
为了实现上述目的,本发明第二方面实施例的面向闪存的细粒度非易失缓存管理方法。所述缓存管理方法应用于所述面向闪存的细粒度非易失缓存系统中,所述缓存管理方法包括以下步骤:在检测当前有页面需要进行同步缓存时,文件系统判断被同步页面是否需要按照细粒度的方式进行缓存;若是,则所述文件系统将所述被同步页面中的脏缓存行数据缓存至非易失性缓存模块中;若否,则所述文件系统将所述被同步页面中的全部内容写入非易失性缓存模块中。
本发明实施例的面向闪存的细粒度非易失缓存管理方法,首先通过文件系统判断当前需要同步缓存的当前页面是否需要按照细粒度的方式进行缓存;如果是则将被同步页面中的脏缓存行数据缓存至非易失性缓存模块中;如果否则将被同步页面中的全部内容写入非易失性缓存模块中,从而不仅能够避免系统在出现掉电或崩溃故障时,导致缓存数据的丢失现象,还能够提升系统性能并延长闪存设备的使用寿命。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
图1是根据本发明一个实施例的面向闪存的细粒度非易失缓存系统的结构示意图;
图2是根据本发明另一个实施例的面向闪存的细粒度非易失缓存系统的结构示意图;
图3是根据本发明一个实施例的非易失性缓存模块的缓存空间结构示意图;
图4是根据本发明实施例的面向闪存的细粒度非易失缓存管理方法的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的面向闪存的细粒度非易失缓存系统以及缓存管理方法。
图1是根据本发明一个实施例的面向闪存的细粒度非易失缓存系统的结构示意图。其中,该缓存系统面向闪存存储设备并建立在文件系统之上。
如图1所示,该缓存系统可包括:易失性缓存模块10,非易失性缓存模块20、以及固态硬盘30。
其中,易失性缓存模块10设置于主机端,用于缓存文件系统中的读写操作内容,并采用粗粒度的方式对易失性缓存模块10中的缓存空间进行管理和分配。
非易失性缓存模块20设置于主机端,用于缓存文件系统中的同步操作内容,并采用细粒度的方式对非易失性缓存模块20的缓存空间进行管理和分配,以及在有数据页被替换时,将被替换的数据页的内容写回至固态硬盘30中的相应位置以保证数据的持久性。
固态硬盘30设置于存储端,用于与易失性缓存模块10进行交互以实现易失性缓存模块10中缓存页的读取和写回操作。
其中,在检测当前有页面需要进行同步缓存时,文件系统判断被同步页面是否需要按照细粒度的方式进行缓存,若是,则将被同步页面中的脏缓存行数据缓存至非易失性缓存模块20中,否则将被同步页面中的全部内容写入非易失性缓存模块20中。
需要说明的是,在本实施例中,易失性缓存模块10和非易失性缓存模块20分别与主机的内存总线连接,并通过内存接口与内存进行访问,以提供细粒度缓存需要的字节寻址特性。
具体地,为了避免细粒度缓存而导致普通读写操作性能降低的问题,本发明实施例的细粒度非易失缓存系统,可将易失性缓存模块和非易失性缓存模块的混合结构作为后台闪存设备的混合缓存,以使得该缓存系统能够在不丢弃现有技术的缓存写回方法在提升缓存效率方面所带来的好处的同时,尽可能地发挥出非易失性缓存存储介质的字节寻址和非易失性的特点,并利用细粒度的缓存管理方式,提升非易失性缓存的利用率,从而达到缓存系统性能提升的目的。
下面对面向闪存的细粒度非易失缓存系统进行具体说明,如图2所示。图2是根据本发明另一个实施例的面向闪存的细粒度非易失缓存系统的结构示意图。
具体地,该缓存系统在主机端设置一易失性缓存模块10和一非易失性缓存模块20,并且在存储端设置一固态硬盘30。其中,易失性缓存10模块和非易失性缓存模块20与主机端的内存总线相连,并通过内存接口进行访问,以提供细粒度缓存系统需要的字节寻址特性。其中,内存接口可以是指load和store命令。
可以理解的是,在本实施例中通过该缓存系统将传统的普通读写操作和同步缓存操作进行分离,进而依据缓存系统中的易失性缓存模块10对普通读写操作内容进行缓存,并将使用粗粒度的方式将对易失性缓存空间进行管理和分配,以减小缓存索引的开销。其中,在本实施例中,粗粒度可以为4KB页粒度,也可以是其他粒度,在此不对其进行具体限制。
也就是说,易失性缓存模块10中的缓存内容主要用于满足普通读写操作。例如,应用程序的读操作或者写操作将直接发往易失性缓存模块。并且易失性缓存模块10的读取和写回过程将直接和存储端的固态硬盘30进行交互。
其中,如图2所示,非易失性缓存模块20主要用于保证应用程序所需的数据持久性。即当应用程序需要执行同步操作时(例如fsync),该缓存系统将易失性缓存模块10中需要进行同步操作的页面以细粒度或者粗粒度的方式缓存于非易失性缓存模块20中,从而避免了传统单一易失性缓存模块10在缓存时遇到大量同步操作过程时所产生的大量闪存写操作,进而提升闪存设备的性能和寿命。
需要说明的是,在本实施例中,非易失性缓存模块20的缓存空间包含若干全局元数据页210以及动态分配的数据页220,具体可参见图3。为了满足自适应缓存分配的需求,该非易失性缓存模块20的缓存空间中的动态分配的数据页220中包含两种不同类型的数据页,即细粒度页221和粗粒度页222。
其中,每个4096字节的细粒度页221的空间将分为页内元数据区域2210和页内数据区域2211。页内元数据区域2210包含三部分:(1)8字节的缓存行位图,该8字节的缓存行位图用于表示页内数据区域2210内每个缓存行是否处于有效状态;(2)448字节的缓存行映射表,该448字节的缓存行映射表表示页内数据区域2210内每个缓存行所对应的闪存物理地址;(3)最后56字节的填充记录空间,用于保证页内元数据区域2210所占大小和缓存行大小对齐。另外,页内数据区域2210还按照缓存行粒度来分配和管理,并且每个细粒度页221的数据区域包含56个缓存行用于存储真实的缓存数据。
其中,粗粒度页222空间则按照页粒度进行管理和分配。基于图3所示,可以看出,粗粒度页222内并不包含任何元数据,而和该页对应的闪存物理地址则存放在非易失性缓存模块20的全局元数据页210空间内。
另外,在本发明实施例中,非易失性缓存模块20的每个数据页可包含三种状态中的任意一种,即粗粒度状态,细粒度状态,空闲状态。为了识别这三种状态,全局元数据页210除了包含粗粒度页222的闪存映射表之外,还存储了每个数据页的状态位图,以用于在系统崩溃恢复的过程中识别出每个数据页的状态。其中,在数据页的状态位图中,每个页需要两位空间用来表示三种不同状态中的任意一种。
进一步地,在本实施例中,当非易失性缓存模块20进行数据替换,且被替换数据页同时存在于易失性缓存模块10中时,文件系统将易失性缓存模块10中与被替换数据页对应的页面状态从脏状态修改为干净状态。
具体地,当有数据页需要从非易失性缓存模块20中被替换时,该数据页的内容需要先写回至固态硬盘30中的相应位置以保证应用程序所需的数据持久性。与此同时,为了保留现有缓存替换算法对提升缓存命中率所带来的好处,当非易失性缓存模块20中某数据页需要被替换时,如果该数据页也同时存在于易失性缓存模块10中,则不将该数据页从易失性缓存模块10中被替换。也就是说,易失性缓存模块10始终按照原有的缓存替换算法进行数据替换,即将易失性缓存模块10中的相应页面状态从脏状态修改为干净状态。
可以理解的是,非易失性缓存模块20不改变原有普通读写操作的缓存命中率,而是尽可能地减少由同步操作导致的闪存写操作的次数。
更具体地,当非易失性缓存模块20在细粒度缓存模式下进行数据替换时,文件系统不需要将与替换页对应的原始数据页内容与非易失性缓存模块20中离散的最新数据区间内容进行合并再写回,仅需将易失性缓存模块10中的页内容刷回至相应的闪存页内即可,并且在写回成功之后,与替换页对应的非易失性缓存模块20区间的空间均被释放。也就是说,当易失性缓存模块10中的脏缓存页被替换并写回至固态硬盘30之后,在非易失性缓存模块20中所有和该写回页面相关联的数据均会被丢弃。
当非易失性缓存模块20在粗粒度缓存模式下进行数据替换时,文件系统可将该被同步页面已有的非易失性缓存模块20区间内容与当前的易失性缓存模块20页面内容进行合并,并写入一个新的非易失性缓存模块20粗粒度页中。为此,文件系统首先通过缓存替换方法清理出足够的空闲空间,若替换后的空闲空间分散位于多个细粒度页中,则进一步通过内存拷贝操作将这些空闲空间合并至同一页中以产生一个新的空闲页。其次,文件系统将需要同步的易失性缓存模块10页面的内容拷贝至该非易失性缓存模块20空闲页中,并通过修改位于非易失性缓存模块20全局元数据空间内的状态位图将该非易失性缓存模块20页面的状态从空闲状态改为粗粒度状态。最后,文件系统将删除并释放该被同步页面存放在非易失性缓存模块20中的旧缓存区间。
进一步地,为了在被同步页面内脏数据比例接近或者等于100%的情况下不损失缓存利用率,本发明还可根据被同步页面内脏缓存页中数据比例情况自适应地为同步页面选择细粒度或者粗粒度的缓存模式,从而避免单一细粒度缓存管理在某些情况下可能降低缓存利用率的缺陷。
其中,该文件系统可根据基于细粒度模式的成本收益模型来判断每个被同步页面是否需要按照细粒度模式进行缓存。其中,基于细粒度缓存模式的成本收益模型可如(1)式:
其中,收益值表示所能节省的缓存空间总大小,Total_Cnt表示被同步页面内的缓存行总数,Dirty_Cnt表示被同步页面内的脏缓存行数量,64表示缓存行大小,成本值表示将要消耗的缓存空间总大小,512/56表示每个缓存行将要消耗的缓存空间大小。
可以理解的是,文件系统在细粒度缓存模式的收益值大于成本值时,判定被同步页面按照细粒度的方式进行缓存,并在收益值小于或等于成本值时,判定被同步页面按照粗粒度的方式进行缓存。
进一步地,在被同步页面中的脏缓存行数据写入非易失性缓存模块20时,文件系统根据非易失性缓存模块20的缓存索引判断脏缓存行是否命中,若是,则将脏缓存行数据写入非易失性缓存模块20中与脏缓存行对应的缓存位置,否则控制非易失性缓存模块20从细粒度页中为脏缓存行分配一块新的缓存空间。
也就是说,对于每个需要写入非易失性缓存模块20的脏缓存行,文件系统需要通过非易失性缓存模块20索引判断该缓存行是否命中。如果命中,则直接将相关数据写入和该缓存行对应的非易失性缓存模块20缓存位置。否则,若未命中,则非易失性缓存模块20需要为该脏缓存行分配一块新的缓存空间,并且该缓存行空间从细粒度页中分配。
进一步地,为了方便查询易失性缓存模块10中的某个脏缓存行是否在非易失性缓存模块20中命中,文件系统还可为每个逻辑页维护一个索引链表,并且链表的表头用哈希表进行索引。为了节省索引所需的存储空间并提升索引性能,每个索引链表的表项表示一段连续的映射区间(即extent),该映射区间可以表示为一个三元组<起始文件逻辑地址,起始非易失性缓存物理地址,映射长度>。该三元组表示一段指定长度的连续文件逻辑区间被映射至了另一段位于非易失性缓存模块20上的连续物理区间。另外,该三元组中每一项的值都和缓存行大小对齐,并且每个页的索引链表的所有表项均按照映射区间中的起始逻辑地址顺序进行链接,以方便索引的查找和映射区间的合并。
进一步地,在文件系统发生崩溃重启时,文件系统将非易失性缓存模块20中的最新数据和固态硬盘30中的原始数据进行合并,以恢复文件系统的最新镜像内容。
具体地,文件系统崩溃是在所难免的,因此在文件系统崩溃重启时,需要能够恢复出文件系统在崩溃之前的最近状态。在本实施例中,文件系统恢复过程可具体包含以下两个步骤:
第一步骤,首先,文件系统通过扫描非易失性缓存模块20的全局元数据空间的状态位图识别出数据区域内每个页的状态;其次,文件系统继续通过全局元数据空间内的页映射表识别出每个粗粒度页所对应的闪存页地址,并通过每个细粒度页面头部的缓存行映射表识别出该页中每个缓存行所对应的闪存页地址;最后,文件系统会将非易失性缓存模块20中所有缓存区间对应的闪存页(包括所有细粒度页内缓存行和粗粒度页所对应的闪存页)内容从固态硬盘30读取至易失性缓存模块10中。
第二步骤,文件系统通过扫描非易失性缓存模块20中所有的数据页空间,并将每个细粒度页数据区域内的缓存行数据和每个粗粒度页的页数据拷贝至相应的易失性缓存模块10页内,以保证用户可以看到文件系统在崩溃之前的最新数据。需要说明的是,在将非易失性缓存模块20中的最新数据和易失性缓存模块10中的原始页数据合并之后,易失性缓存模块10页内的最新内容不需要在系统恢复过程之后立刻写回至固态硬盘30中。相反,写回过程可以在易失性缓存模块10或者非易失性缓存模块20进行替换时再执行,这是由于在恢复过程完成之后文件系统并不会直接删除非易失性缓存模块20中的数据,而是等待至易失性缓存模块10或者非易失性缓存模块20中的相应数据执行替换时再删除。
通过上述两个步骤之后,文件系统的最新镜像内容得到了恢复,这是由于文件系统中每个页的最新数据可以从易失性缓存模块10(若命中)或者固态硬盘30中(若未命中)得到。
需要说明的是,在本实施例中,文件系统不缓存任何文件系统的元数据内容,所有的元数据操作均按照文件系统原有的方式执行。相反,本发明实施例仅改变了文件系统执行同步操作过程时将易失性缓存模块10同步页面内的数据写回至存储端的过程。因此,本发明不影响文件系统的元数据一致性。另外,由于现有大部分上层应用程序(例如数据库系统)具有不同的一致性语义需求,通常根据自身特定的应用语义并使用文件系统同步操作所提供的持久性和顺序性来设计相应的事务机制。为此,同现有Ext3/Ext4文件系统默认提供的ordered data模式类似,本发明通过为同步操作提供正确的持久性保证,从而给上层应用提供了实现正确的一致性协议的需求。
综上,本发明实施例的面向闪存的细粒度非易失缓存系统,通过在缓存系统中设置易失性缓存和非易失性缓存的混合缓存结构,将传统的文字系统中读写缓存和同步缓存进行拆分,进而分别通过混合缓存结构中的非易失性缓存对文字系统中的同步操作进行缓存,以保证数据的持久性,提升缓存利用率,以及易失性缓存对文字系统中的普通读写操作内容进行缓存,以实现对缓存空间进行管理和分配。该系统不仅能够避免系统在出现掉电或崩溃故障时,导致缓存数据的丢失现象,还能够提升系统性能并延长闪存设备的使用寿命。
为了实现上述实施例,本发明还提出了一种面向闪存的细粒度非易失缓存管理方法。
图4是根据本发明实施例的面向闪存的细粒度非易失缓存管理方法的流程图。其中,需要说明的是,该缓存管理方法可应用与上述实施例的面向闪存的细粒度非易失性缓存系统中。
如图4所示,该面向闪存的细粒度非易失缓存管理方法可包括以下几个步骤:
S401、在检测当前有页面需要进行同步缓存时,文件系统判断被同步页面是否需要按照细粒度的方式进行缓存。
具体地,当检测出有页面需要进行同步缓存时,文件系统可根据该页面内的脏数据比例自适应地为该页面选择细粒度或者粗粒度的缓存模式,从而避免单一细粒度缓存管理在某些情况下可能降低缓存利用率的缺陷。
进一步地,为了避免细粒度缓存模式所引入的缓存索引和元数据开销,本实施例还可基于细粒度模式的成本收益模型来判断该被同步页面应该按照粗粒度模式或者细粒度模式进行缓存。
S402、若是,则文件系统将被同步页面中的脏缓存行数据缓存至非易失性缓存模块中。
其中,当判断被同步页面需要按照细粒度的方式进行缓存时,则文件系统仅将该被同步页面内的脏缓存行数据写入非易失性缓存模块中。
S403、若否,则文件系统将被同步页面中的全部内容写入非易失性缓存模块中。
当判断该被同步页面需要按照粗粒度模式进行缓存,则文件系统将该被同步页面的整页数据内容写入非易失性缓存模块中。
本发明实施例的面向闪存的细粒度非易失缓存管理方法,首先通过文件系统判断当前需要同步缓存的当前页面是否需要按照细粒度的方式进行缓存;如果是则将被同步页面中的脏缓存行数据缓存至非易失性缓存模块中;如果否则将被同步页面中的全部内容写入非易失性缓存模块中,从而不仅能够避免系统在出现掉电或崩溃故障时,导致缓存数据的丢失现象,还能够提升系统性能并延长闪存设备的使用寿命。
进一步地,基于上述实施例,在步骤403之后,本发明实施例还公开了在文件系统发生崩溃重启时,文件系统将非易失性缓存模块中的最新数据和固态硬盘中的原始数据进行合并,以恢复文件系统的最新镜像内容。
也就是说,在系统出现掉电或崩溃时,文件系统能够根据缓存在非易失性缓存模块中的数据恢复出文件系统在崩溃之前的状态,进一步地提升了系统的使用性能和可靠性,满足了用户需求。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种面向闪存的细粒度非易失缓存系统,其特征在于,所述缓存系统面向闪存存储设备并建立在文件系统之上,所述缓存系统包括:
设置于主机端的易失性缓存模块,所述易失性缓存模块用于缓存所述文件系统中的读写操作内容,并采用粗粒度的方式对所述易失性缓存模块的缓存空间进行管理和分配;
设置于所述主机端的非易失性缓存模块,所述非易失性缓存模块用于缓存所述文件系统中的同步操作内容,并采用细粒度的方式对所述非易失性缓存模块的缓存空间进行管理和分配,以及在有数据页被替换时,将所述被替换的数据页的内容写回至固态硬盘中的相应位置以保证数据的持久性;
所述固态硬盘设置于存储端,用于与所述易失性缓存模块进行交互以实现所述易失性缓存模块中缓存页的读取和写回操作;
其中,在检测当前有页面需要进行同步缓存时,所述文件系统判断被同步页面是否需要按照细粒度的方式进行缓存,若是,则将所述被同步页面中的脏缓存行数据缓存至所述非易失性缓存模块中,否则将所述被同步页面中的全部内容写入所述非易失性缓存模块中。
2.根据权利要求1所述的面向闪存的细粒度非易失缓存系统,其特征在于,所述易失性缓存模块和所述非易失性缓存模块分别与主机的内存总线连接,并通过内存接口与所述内存进行访问。
3.根据权利要求1所述的面向闪存的细粒度非易失缓存系统,其特征在于,在所述非易失性缓存模块进行数据替换,且被替换数据页同时存在于所述易失性缓存模块中时,所述文件系统将所述易失性缓存模块中与所述被替换数据页对应的页面状态从脏状态修改为干净状态。
4.根据权利要求1所述的面向闪存的细粒度非易失缓存系统,其特征在于,所述文件系统根据基于细粒度缓存模式的成本收益模型判断所述被同步页面是否需要按照细粒度的方式进行缓存。
5.根据权利要求4所述的面向闪存的细粒度非易失缓存系统,其特征在于,所述基于细粒度缓存模式的成本收益模型为:
收益值=(Total_Cnt-Dirty_Cnt)*64
成本值=Dirty_Cnt*(512/56)
其中,所述收益值表示所能节省的缓存空间总大小,Total_Cnt表示所述被同步页面内的缓存行总数,Dirty_Cnt表示所述被同步页面内的脏缓存行数量,64表示缓存行大小,所述成本值表示将要消耗的缓存空间总大小,512/56表示每个缓存行将要消耗的缓存空间大小。
6.根据权利要求5所述的面向闪存的细粒度非易失缓存系统,其特征在于,所述文件系统在所述细粒度缓存模式的收益值大于所述成本值时,判定所述被同步页面按照细粒度的方式进行缓存,并在所述收益值小于或等于所述成本值时,判定所述被同步页面按照粗粒度的方式进行缓存。
7.根据权利要求1所述的面向闪存的细粒度非易失缓存系统,其特征在于,在所述被同步页面中的脏缓存行数据写入所述非易失性缓存模块时,所述文件系统根据所述非易失性缓存模块的缓存索引判断所述脏缓存行是否命中,若是,则将所述脏缓存行数据写入所述非易失性缓存模块中与所述脏缓存行对应的缓存位置,否则控制所述非易失性缓存模块从细粒度页中为所述脏缓存行分配一块新的缓存空间。
8.根据权利要求1至7中任一项所述的面向闪存的细粒度非易失缓存系统,其特征在于,在所述文件系统发生崩溃重启时,所述文件系统将所述非易失性缓存模块中的最新数据和所述固态硬盘中的原始数据进行合并,以恢复所述文件系统的最新镜像内容。
9.一种面向闪存的细粒度非易失缓存管理方法,其特征在于,所述缓存管理方法应用于根据权利要求1至8中任一项所述的面向闪存的细粒度非易失缓存系统中,所述缓存管理方法包括以下步骤:
在检测当前有页面需要进行同步缓存时,文件系统判断被同步页面是否需要按照细粒度的方式进行缓存;
若是,则所述文件系统将所述被同步页面中的脏缓存行数据缓存至非易失性缓存模块中;
若否,则所述文件系统将所述被同步页面中的全部内容写入非易失性缓存模块中。
10.根据权利要求9所述的面向闪存的细粒度非易失缓存管理方法,其特征在于,还包括:
在所述文件系统发生崩溃重启时,所述文件系统将所述非易失性缓存模块中的最新数据和所述固态硬盘中的原始数据进行合并,以恢复所述文件系统的最新镜像内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710107121.XA CN106951376B (zh) | 2017-02-27 | 2017-02-27 | 面向闪存的细粒度非易失缓存系统以及缓存管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710107121.XA CN106951376B (zh) | 2017-02-27 | 2017-02-27 | 面向闪存的细粒度非易失缓存系统以及缓存管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106951376A true CN106951376A (zh) | 2017-07-14 |
CN106951376B CN106951376B (zh) | 2019-10-29 |
Family
ID=59467534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710107121.XA Active CN106951376B (zh) | 2017-02-27 | 2017-02-27 | 面向闪存的细粒度非易失缓存系统以及缓存管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106951376B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704400A (zh) * | 2017-10-12 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种面向非易失存储的页缓存方法 |
CN108763508A (zh) * | 2018-05-30 | 2018-11-06 | 中兴通讯股份有限公司 | 数据页访问方法、存储引擎以及计算机可读存储介质 |
CN108804346A (zh) * | 2018-05-30 | 2018-11-13 | 广东思诺伟智能技术有限公司 | 一种电池soc数据在flash存储器存储的方法 |
CN109086425A (zh) * | 2018-08-09 | 2018-12-25 | 北京百度网讯科技有限公司 | 用于数据库的数据处理方法和装置 |
CN110347338A (zh) * | 2019-06-18 | 2019-10-18 | 重庆大学 | 混合内存数据交换处理方法、系统及可读存储介质 |
CN110688345A (zh) * | 2019-09-26 | 2020-01-14 | 重庆大学 | 一种内存文件系统的多粒度结构化空间管理机制 |
CN111414320A (zh) * | 2020-02-20 | 2020-07-14 | 上海交通大学 | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 |
CN112559384A (zh) * | 2020-12-17 | 2021-03-26 | 南昌航空大学 | 一种基于非易失存储器的混合固态盘动态分区方法 |
CN114115711A (zh) * | 2021-08-24 | 2022-03-01 | 上海交通大学 | 基于非易失内存文件系统的快速缓存系统 |
CN115809021A (zh) * | 2022-11-22 | 2023-03-17 | 小米汽车科技有限公司 | 可写文件系统的空间共享方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553339A (zh) * | 2003-06-05 | 2004-12-08 | 联想(北京)有限公司 | 细粒度快照实现方法 |
CN102117248A (zh) * | 2011-03-09 | 2011-07-06 | 浪潮(北京)电子信息产业有限公司 | 一种缓存系统和在缓存系统中缓存数据的方法 |
US8456938B2 (en) * | 2010-03-24 | 2013-06-04 | Apple Inc. | Systems and methods for refreshing non-volatile memory |
US20160188464A1 (en) * | 2014-12-30 | 2016-06-30 | Sandisk Technologies Inc. | Method and System for Using Non-Volatile Memory as a Replacement for Volatile Memory |
CN106126439A (zh) * | 2007-07-25 | 2016-11-16 | 技佳科技有限公司 | 混合存储子系统中的可变分区 |
-
2017
- 2017-02-27 CN CN201710107121.XA patent/CN106951376B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553339A (zh) * | 2003-06-05 | 2004-12-08 | 联想(北京)有限公司 | 细粒度快照实现方法 |
CN1266609C (zh) * | 2003-06-05 | 2006-07-26 | 联想(北京)有限公司 | 细粒度快照实现方法 |
CN106126439A (zh) * | 2007-07-25 | 2016-11-16 | 技佳科技有限公司 | 混合存储子系统中的可变分区 |
US8456938B2 (en) * | 2010-03-24 | 2013-06-04 | Apple Inc. | Systems and methods for refreshing non-volatile memory |
CN102117248A (zh) * | 2011-03-09 | 2011-07-06 | 浪潮(北京)电子信息产业有限公司 | 一种缓存系统和在缓存系统中缓存数据的方法 |
US20160188464A1 (en) * | 2014-12-30 | 2016-06-30 | Sandisk Technologies Inc. | Method and System for Using Non-Volatile Memory as a Replacement for Volatile Memory |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704400A (zh) * | 2017-10-12 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种面向非易失存储的页缓存方法 |
CN108763508A (zh) * | 2018-05-30 | 2018-11-06 | 中兴通讯股份有限公司 | 数据页访问方法、存储引擎以及计算机可读存储介质 |
CN108804346A (zh) * | 2018-05-30 | 2018-11-13 | 广东思诺伟智能技术有限公司 | 一种电池soc数据在flash存储器存储的方法 |
CN108763508B (zh) * | 2018-05-30 | 2019-07-30 | 中兴通讯股份有限公司 | 数据页访问方法、存储引擎以及计算机可读存储介质 |
CN109086425B (zh) * | 2018-08-09 | 2022-05-06 | 北京百度网讯科技有限公司 | 用于数据库的数据处理方法和装置 |
CN109086425A (zh) * | 2018-08-09 | 2018-12-25 | 北京百度网讯科技有限公司 | 用于数据库的数据处理方法和装置 |
CN110347338A (zh) * | 2019-06-18 | 2019-10-18 | 重庆大学 | 混合内存数据交换处理方法、系统及可读存储介质 |
CN110688345A (zh) * | 2019-09-26 | 2020-01-14 | 重庆大学 | 一种内存文件系统的多粒度结构化空间管理机制 |
CN111414320A (zh) * | 2020-02-20 | 2020-07-14 | 上海交通大学 | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 |
CN111414320B (zh) * | 2020-02-20 | 2023-06-06 | 上海交通大学 | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 |
CN112559384A (zh) * | 2020-12-17 | 2021-03-26 | 南昌航空大学 | 一种基于非易失存储器的混合固态盘动态分区方法 |
CN112559384B (zh) * | 2020-12-17 | 2022-04-15 | 南昌航空大学 | 一种基于非易失存储器的混合固态盘动态分区方法 |
CN114115711A (zh) * | 2021-08-24 | 2022-03-01 | 上海交通大学 | 基于非易失内存文件系统的快速缓存系统 |
CN114115711B (zh) * | 2021-08-24 | 2023-10-17 | 上海交通大学 | 基于非易失内存文件系统的快速缓存系统 |
CN115809021A (zh) * | 2022-11-22 | 2023-03-17 | 小米汽车科技有限公司 | 可写文件系统的空间共享方法及装置 |
CN115809021B (zh) * | 2022-11-22 | 2023-10-20 | 小米汽车科技有限公司 | 可写文件系统的空间共享方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106951376B (zh) | 2019-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106951376B (zh) | 面向闪存的细粒度非易失缓存系统以及缓存管理方法 | |
US9959053B2 (en) | Method for constructing NVRAM-based efficient file system | |
US20200117368A1 (en) | Method for achieving data copying in ftl of solid state drive, system and solid state drive | |
US8510500B2 (en) | Device driver including a flash memory file system and method thereof and a flash memory device and method thereof | |
KR101717644B1 (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
US7991942B2 (en) | Memory block compaction method, circuit, and system in storage devices based on flash memories | |
CN101673245B (zh) | 包括存储器管理装置的信息处理装置和存储器管理方法 | |
CN103473150B (zh) | 一种用于数据去重系统中的碎片重写方法 | |
CN105930282B (zh) | 一种用于nand flash的数据缓存方法 | |
CN101387987B (zh) | 存储器装置、存储器控制方法和程序 | |
US9075754B1 (en) | Managing cache backup and restore | |
US20120054419A1 (en) | Memory device and operating method thereof | |
CN103631536B (zh) | 一种利用ssd的无效数据优化raid5/6写性能的方法 | |
US20230053087A1 (en) | Data management system and method of controlling | |
CN103558992A (zh) | 堆外直接内存数据存储器,创建和/或管理堆外直接内存数据存储器的方法,和/或包括堆外直接内存数据存储器的系统 | |
CN105608016B (zh) | Dram与mram结合的固态硬盘及使用mram的存储卡 | |
CN108431783A (zh) | 访问请求处理方法、装置及计算机系统 | |
CN110502455A (zh) | 数据存储方法及系统 | |
CN101019098A (zh) | 格式化非易失性半导体存储器的文件存储装置、主机设备、方法,以及在非易失性半导体存储器中写数据的方法 | |
CN108733306A (zh) | 一种文件合并方法及装置 | |
CN110196818A (zh) | 缓存数据的方法、缓存设备和存储系统 | |
CN109558335A (zh) | 一种基于Nor Flash存储器的嵌入式系统的文件存储格式 | |
CN112416812A (zh) | 访问请求处理方法、装置及计算机系统 | |
CN103150267A (zh) | 一种多控制器间的缓存同步方法 | |
CN111414320A (zh) | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |