文件系统的缓存方法及系统的制作方法

文档序号:6506826阅读:201来源:国知局
文件系统的缓存方法及系统的制作方法
【专利摘要】本发明适用于储存【技术领域】,提供了一种文件系统的缓存方法,通过固态硬盘实现,所述方法包括:配置所述文件系统的元数据的逻辑地址范围;获取所述文件系统所在的块设备的所有IO;判断所述IO的地址范围与所述元数据的逻辑地址范围是否有相交;若所述IO的地址范围与所述元数据的逻辑地址范围有相交,则缓存所述IO的数据。本发明还相应的提供一种文件系统的缓存系统。借此,本发明可确定对捕获的IO数据是否需要缓存,从而加速文件系统的IO处理速度。
【专利说明】文件系统的缓存方法及系统
【技术领域】
[0001]本发明涉及存储【技术领域】,尤其涉及一种文件系统的缓存方法及系统。
【背景技术】
[0002]固态硬盘(SSD)采用闪存作为存储介质,读取速度相对机械硬盘更快。固态硬盘不用磁头,寻道时间几乎为O。持续写入的速度非常惊人,不仅仅体现在持续读写上,随机读写速度也是极快,最常见的7200转机械硬盘的寻道时间一般为12-14毫秒,而固态硬盘可以轻易达到0.1毫秒甚至更低!
[0003]SSD在存储市场得到了广泛的应用,其应用模式除了作为机械硬盘的代替,还可以将SSD作为缓存,通常是作为块设备(块设备的基本特征是每个块都能独立于其它块而读写,磁盘是最常见的块设备)的缓存。但在这种模式下,何种数据需要存储在SSD中是个难题,究其原因是针对块设备的缓存失去了应用上下文,无法准确发现“热点”数据。
[0004]在文件系统中,metadata记录了文件系统的信息以及文件的信息,这些信息会被文件系统频繁访问,这会导致大量随机10,对于机械硬盘而言,大量的随机寻道时间将严重影响磁盘系统,从而导致基于文件系统的应用IO反映迟钝。
[0005]综上可知,现有的文件缓存方法及系统,在实际使用上显然存在不便与缺陷,所以有必要加以改进。

【发明内容】

[0006]针对上述的缺陷,本发明的目的在于提供一种文件系统的缓存方法及系统,可确定对捕获的IO数据是否需要缓存,从而加速文件系统的IO处理速度。
[0007]为了实现上述目的,本发明提供一种文件系统的缓存方法,通过固态硬盘实现,所述方法包括:
[0008]配置所述文件系统的元数据的逻辑地址范围;
[0009]获取所述文件系统所在的块设备的IO ;
[0010]判断所述IO的地址范围与所述元数据的逻辑地址范围是否有相交;
[0011]若所述IO的地址范围与所述元数据的逻辑地址范围有相交,则缓存所述IO的数据。
[0012]根据本发明的文件系统的缓存方法,所述配置所述文件系统的元数据的逻辑地址范围步骤包括:
[0013]通过第三方工具获取所述文件系统的元数据地址范围;
[0014]记录所述文件系统的元数据地址范围。
[0015]根据本发明的文件系统的缓存方法,所述获取所述文件系统所在的块设备的所有IO的步骤包括:
[0016]通过修改内核中所述块设备的驱动来获取所述10。
[0017]根据本发明的文件系统的缓存方法,所述若所述IO的地址范围与所述元数据的逻辑地址范围有相交,则缓存所述IO的数据的步骤包括:
[0018]若所述IO携带的为数据的写命令,则直接将所述数据写入缓存;
[0019]若所述IO携带的为数据的读命令,且在缓存中命中所述数据,则直接返回10;
[0020]若所述IO携带的为数据的读命令,且在缓存中未命中所述数据,则将所述IO派发到所述块设备,所述IO返回时将所述数据复制,并将所述复制的数据写入到所述缓存。
[0021]本发明还提供一种文件系统的缓存系统,通过固态硬盘实现,所述缓存系统包括:
[0022]元数据配置模块,用于配置所述文件系统的元数据的逻辑地址范围;
[0023]IO获取模块,用于获取所述文件系统所在的块设备的IO ;
[0024]地址判断模块,用于判断所述IO的地址范围与所述元数据的逻辑地址范围是否有相交;
[0025]数据缓存模块,用于所述IO的地址范围与所述元数据的逻辑地址范围有相交时,缓存所述IO的数据。
[0026]根据本发明的文件系统的缓存系统,缓存系统进一步包括,文件系统分析模块,用于通过第三方工具获取所述文件系统的元数据地址范围;
[0027]所述元数据配置模块进一步用于记录所述文件系统的元数据地址范围。
[0028]根据本发明的文件系统的缓存系统,所述IO获取模块进一步用于通过修改内核中所述块设备的驱动来获取所述10。
[0029]根据本发明的文件系统的缓存系统,若所述IO携带的为数据的写命令,则数据缓存模块直接将所述数据写入缓存;
[0030]若所述IO携带的为数据的读命令,且在缓存中命中所述数据,则直接返回10;
[0031]若所述IO携带的为数据的读命令,且在缓存中未命中所述数据,则将所述IO派发到所述块设备,所述IO返回时将所述数据复制,所述数据缓存模块将所述复制的数据写入到所述缓存。
[0032]本发明通过将固态硬盘作为缓存结构,其可以分析获取块设备中文件系统的元数据逻辑地址范围,当文件系统具有IO命令时,获取文件系统所在的块设备的该10,并判断所述IO的地址范围与所述元数据的逻辑地址范围是否有相交,若有相交,则将IO数据缓存,否则直接将IO派发到块设备,借此,本发明可以确定对捕获的IO数据是否需要缓存,从而加速文件系统的IO处理速度。
【专利附图】

【附图说明】
[0033]图1是本发明一实施例的缓存系统的结构示意图;
[0034]图2是本发明一实施例的文件系统的缓存方法流程图;
[0035]图3是本发明另一实施例的IO处理流程图。
【具体实施方式】
[0036]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。[0037]参见图1,本发明提供了一种文件系统的缓存系统,该缓存系统100通过固态硬盘(SSD)实现,其至少包括:
[0038]元数据配置模块10,用于配置所述文件系统的元数据的逻辑地址范围。
[0039]优选的是,本发明可以通过元数据配置模块10对文件系统的元数据直接配置逻辑地址范围,也可以通过预设一文件系统分析模块11分析获取文件系统的元数据逻辑地址范围后,再通过元数据配置模块10记录该元数据的逻辑地址范围。具体的,文件系统分析模块11可通过第三方工具如winHex、dumpe2fs等获取所述文件系统的元数据地址范围。
[0040]IO获取模块20,用于获取所述文件系统所在的块设备的10。
[0041]本发明通过修改内核中原块设备的驱动来实现捕获10,以Iinux操作系统为例:通过open原设备文件得到设备对应的gendisk,然后通过更改gendisk中的request_queue中的make_request_fn函数地址即可实现。
[0042]地址判断模块30,用于判断所述IO的地址范围与所述元数据的逻辑地址范围是否有相交,若是,则交由数据缓存模块40处理,否则直接将IO派送到块设备执行。
[0043]数据缓存模块40,用于所述IO的地址范围与所述元数据的逻辑地址范围有相交时,缓存所述IO的数据。
[0044]具体的,若所述IO携带的为数据的写命令,则数据缓存模块直接将所述数据写入缓存;若所述IO携带的为数据的读命令,且在缓存中命中所述数据,则直接返回IO ;若所述IO携带的为数据的读命令,且在缓存中未命中所述数据,则将所述IO派发到所述块设备,所述IO返回时将所述数据复制,所述数据缓存模块将所述复制的数据写入到所述缓存。
[0045]本发明的具体应用中,可以将使用热度较高的数据自动写入到缓存,在下一次接收相应数据的IO读/写命令时,可以直接从缓存中获取该数据,加速文件系统对IO的处理速度。
[0046]参见图2,本发明提供了一种文件系统的缓存方法,其通过如图1所示的系统100实现,系统100是基于固态硬盘的构架,该方法包括:
[0047]步骤S201,配置所述文件系统的元数据的逻辑地址范围。
[0048]本发明可以对文件系统的元数据直接配置逻辑地址范围,也可以通过预设分析获取文件系统的元数据逻辑地址范围后,再记录该元数据的逻辑地址范围。具体的,对于文件系统的元数据逻辑地址可通过第三方工具如winHex、dumpe2fs等实现。
[0049]步骤S202,获取所述文件系统所在的块设备的10。
[0050]本发明通过修改内核中原块设备的驱动来实现捕获10,以Iinux操作系统为例:通过open原设备文件得到设备对应的gendisk,然后通过更改gendisk中的request_queue中的make_request_fn函数地址即可实现。
[0051]步骤S203,判断所述IO的地址范围与所述元数据的逻辑地址范围是否有相交,若是,则执行步骤S204,否则执行步骤S205。
[0052]步骤S204,缓存所述IO的数据。
[0053]步骤S205,将所述IO派送到块设备处理。
[0054]本发明的具体应用中,可以将使用热度较高的数据自动写入到缓存,在下一次接收相应数据的IO读/写命令时,可以直接从缓存中获取该数据,加速文件系统对IO的处理速度。[0055]参见图3,是本发明一实施例提供的IO处理流程,其包括:
[0056]步骤S301,判断IO的地址范围与元数据的逻辑地址范围是否有相交,若是,则执行步骤S302,否则执行步骤S305。
[0057]步骤S302,判断IO是否为读命令,若是则执行步骤S303,否则判定该数据为写命令,并执行步骤S304。
[0058]步骤S303,判断所述IO的读命令数据是否在缓存中命中,若是则返回IO命令,否则执行步骤S305。
[0059]步骤S304,将IO命令数据写入缓存中。
[0060]步骤S305,将IO数据重定向到目标设备。
[0061]更进一步的,步骤S305之后还包括:所述IO返回时将所述数据复制,并将所述复制的数据写入到缓存中。借此,再次接收到相同数据的IO读命令时,可以直接命中该数据,提高IO速度。
[0062]综上所述,本发明通过将固态硬盘作为缓存结构,其可以分析获取块设备中文件系统的元数据逻辑地址范围,当文件系统具有IO命令时,获取文件系统所在的块设备的该10,并判断所述IO的地址范围与所述元数据的逻辑地址范围是否有相交,若有相交,则将IO数据缓存,否则直接将IO派发到块设备,借此,本发明可以确定对捕获的IO数据是否需要缓存,从而加速文件系统的IO处理速度。
[0063]当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【权利要求】
1.一种文件系统的缓存方法,通过固态硬盘实现,其特征在于,所述方法包括: 配置所述文件系统的元数据的逻辑地址范围; 获取所述文件系统所在的块设备的IO ; 判断所述IO的地址范围与所述元数据的逻辑地址范围是否有相交; 若所述IO的地址范围与所述元数据的逻辑地址范围有相交,则缓存所述IO的数据。
2.根据权利要求1所述的文件系统的缓存方法,其特征在于,所述配置所述文件系统的元数据的逻辑地址范围步骤包括: 通过第三方工具获取所述文件系统的元数据地址范围; 记录所述文件系统的元数据地址范围。
3.根据权利要求1所述的文件系统的缓存方法,其特征在于,所述获取所述文件系统所在的块设备的IO的步骤包括: 通过修改内核中所述块设备的驱动来获取所述10。
4.根据权利要求1所述的文件系统的缓存方法,其特征在于,所述若所述IO的地址范围与所述元数据的逻辑地址范围有相交,则缓存所述IO的数据的步骤包括: 若所述IO携带的为数据的写命令,则直接将所述数据写入缓存; 若所述IO携带的为数据的读命令,且在缓存中命中所述数据,则直接返回IO ; 若所述IO携带的为数据的读命令,且在缓存中未命中所述数据,则将所述IO派发到所述块设备,所述IO返回时将所述数据复制,并将所述复制的数据写入到所述缓存。
5.一种文件系统的缓存系统,通过固态硬盘实现,其特征在于,所述缓存系统包括: 元数据配置模块,用于配置所述文件系统的元数据的逻辑地址范围; IO获取模块,用于获取所述文件系统所在的块设备的IO ; 地址判断模块,用于判断所述IO的地址范围与所述元数据的逻辑地址范围是否有相交; 数据缓存模块,用于所述IO的地址范围与所述元数据的逻辑地址范围有相交时,缓存所述IO的数据。
6.根据权利要求5所述的文件系统的缓存系统,其特征在于,所述缓存系统进一步包括,文件系统分析模块,用于通过第三方工具获取所述文件系统的元数据地址范围; 所述元数据配置模块进一步用于记录所述文件系统的元数据地址范围。
7.根据权利要求5所述的文件系统的缓存系统,其特征在于,所述IO获取模块进一步用于通过修改内核中所述块设备的驱动来获取所述10。
8.根据权利要求5所述的文件系统的缓存系统,其特征在于, 若所述IO携带的为数据的写命令,则数据缓存模块直接将所述数据写入缓存; 若所述IO携带的为数据的读命令,且在缓存中命中所述数据,则直接返回IO ; 若所述IO携带的为数据的读命令,且在缓存中未命中所述数据,则将所述IO派发到所述块设备,所述IO返回时将所述数据复制,所述数据缓存模块将所述复制的数据写入到所述缓存。
【文档编号】G06F12/08GK103473184SQ201310331403
【公开日】2013年12月25日 申请日期:2013年8月1日 优先权日:2013年8月1日
【发明者】曹庭华 申请人:记忆科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1