首页> 中国专利> 写缓存的方法和装置以及磁盘缓存区的同步方法和装置

写缓存的方法和装置以及磁盘缓存区的同步方法和装置

摘要

本发明实施例提供了一种写缓存的方法和装置以及磁盘缓存区的同步方法和装置。所述写缓存的方法,包括:获取系统的待写入数据;判断所述待写入数据的大小:当所述待写入数据的大小大于第一阈值时,将所述待写入数据写入磁盘的数据区;当所述待写入数据的大小小于或者等于所述第一阈值时,将所述待写入数据和对应的元数据信息写入非易失性内存存储器的缓存区中;所述元数据信息包括:待写入数据的磁盘地址、数据大小和版本号,所述版本号用于表示系统更新待写入数据的序号。本发明通过将待写入数据直接写入到磁盘的数据区,让大吞吐量数据不用经过磁盘的缓存区进行缓存,减少大吞吐量应用对缓存区空间的占用率,减少对缓存设备的压力。

著录项

  • 公开/公告号CN105511802A

    专利类型发明专利

  • 公开/公告日2016-04-20

    原文格式PDF

  • 申请/专利权人 北京达沃时代科技有限公司;

    申请/专利号CN201510825436.9

  • 发明设计人 阳立堂;杨苑;游成毅;

    申请日2015-11-24

  • 分类号G06F3/06(20060101);

  • 代理机构11255 北京市商泰律师事务所;

  • 代理人毛燕生

  • 地址 100097 北京市海淀区西四环北路10号一层

  • 入库时间 2023-12-18 15:29:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-05

    授权

    授权

  • 2018-05-11

    著录事项变更 IPC(主分类):G06F3/06 变更前: 变更后: 申请日:20151124

    著录事项变更

  • 2016-05-18

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20151124

    实质审查的生效

  • 2016-04-20

    公开

    公开

说明书

技术领域

本发明涉及计算机技术,尤其涉及一种写缓存的方法和装置以及磁盘缓存 区的同步方法和装置。

背景技术

目前,很多新型存储介质具有更好的访问性能,使用这些新型存储介质作 为写缓存,可以提升写入速度,合并小IO聚合成大的IO操作,来提升hdd磁盘 (HardDiskDrive硬盘驱动器)的每秒小IO的的操作个数。

但是,由于新型存储介质的成本昂贵,所以使用新型存储介质作为写缓存 时,缓存容量都很小,在应付吞吐率较高的应用环境时,写缓存被迅速写满, 写入性能会急速下降。如何提高写缓存应付长时间持续压力的写入,是设计写 缓存时面对的主要问题。

非易失性随机存取存储器nvram(nonvolatilerandomaccessmemory) 和nvdimm技术(一种集成了动态随机存取存储器DRAM+非易失性内存芯片的 内存条规格)的发展和商用,使得访问非易失性存储器的性能达到和主存储器 的性能相当。而hdd磁盘在顺序写入的粒度达到1MB时,可以达到120MBps以 上,以4KB的IO来进行计算,则单个hdd磁盘的IOPS(Input/Output OperationsPerSecond,即每秒进行读写)可以达到30K。

现有的写缓存实现中,都是将缓存放在更快速的存储介质上,但是越快速 的存储介质,其成本越高,容量越小。

发明内容

本发明的实施例提供了一种写缓存的方法和装置以及磁盘缓存区的同步方 法和装置,能够减少大吞吐量应用对缓存区空间的占用率。

为了实现上述目的,本发明采取了如下技术方案。

一种写缓存的方法,包括:

获取系统的待写入数据;

判断所述待写入数据的大小:

当所述待写入数据的大小大于第一阈值时,将所述待写入数据写入磁盘的 数据区;

当所述待写入数据的大小小于或者等于所述第一阈值时,将所述待写入数 据和对应的元数据信息写入非易失性内存存储器的缓存区中;所述元数据信息 包括:待写入数据的磁盘地址、数据大小和版本号,所述版本号用于表示系统 更新待写入数据的序号;

当所述非易失性内存存储器的缓存区中的数据大小大于第二阈值时,将所 述非易失性内存存储器的缓存区中的数据和对应的元数据信息写入磁盘的缓存 区中;并移除所述非易失性内存存储器的缓存区中的数据和对应的元数据信 息;

当所述磁盘的缓存区中的数据大小大于第三阈值时,将所述磁盘的缓存区 中的数据写入到磁盘的数据区中;并移除所述磁盘的缓存区中的数据和对应的 元数据信息。

所述当所述磁盘的缓存区中的数据大小大于第三阈值时,将所述磁盘的缓 存区中的数据写入到磁盘的数据区中的步骤包括:

对所述磁盘的缓存区中的数据进行合并,合并成一个数据块;

判断所述数据块的大小是否大于第四阈值;

当所述数据块的大小大于第四阈值时,将所述数据块写入磁盘的数据区 中;并将所述数据块和对应的元数据信息从所述磁盘的缓存区中移除;

当所述数据块小于或者等于所述第四阈值时,判断所述数据块中的第一个 数据页被合并的时长是否大于或等于设定时长,所述数据页包括预订比特的数 据;

如果被合并的时长大于或等于设定时长,将所述数据块的第一个数据页写 入所述磁盘的数据区,并将所述第一个数据页和对应的元数据信息从所述磁盘 的缓存区中移除。

一种磁盘缓存区的同步方法,包括:

判断磁盘的缓存区中的数据大小是否大于第三阈值;

当所述磁盘的缓存区中的数据大小大于第三阈值时,将所述磁盘的缓存区 中的数据写入到磁盘的数据区中;并移除所述磁盘的缓存区中的数据和对应的 元数据信息。

一种写缓存的装置,包括:

获取模块,获取系统的待写入数据;

第一判断模块,判断所述待写入数据的大小:

第一写入模块,当所述待写入数据的大小大于第一阈值时,将所述待写入 数据写入磁盘的数据区;

第二写入模块,当所述待写入数据的大小小于或者等于所述第一阈值时, 将所述待写入数据和对应的元数据信息写入非易失性内存存储器的缓存区中; 所述元数据信息包括:待写入数据的磁盘地址、数据大小和版本号,所述版本 号用于表示系统更新待写入数据的序号。

一种磁盘缓存区的同步装置,包括:

判断模块,判断磁盘的缓存区中的数据大小是否大于第三阈值;

写入模块,当所述磁盘的缓存区中的数据大小大于第三阈值时,将所述磁 盘的缓存区中的数据写入到磁盘的数据区中;并移除所述磁盘的缓存区中的数 据和对应的元数据信息。

由上述本发明的实施例提供的技术方案可以看出,本发明实施例中,通过 将待写入数据直接写入到磁盘的数据区,让大吞吐量数据不用经过磁盘的缓存 区进行缓存,减少大吞吐量应用对缓存区空间的占用率,减少对缓存设备的压 力。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描 述中变得明显,或通过本发明的实践了解到。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需 要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的 一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提 下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一提供的一种写缓存的方法的处理流程图;

图2为本发明实施例一提供的一种写缓存的装置的连接示意图;

图3为本发明实施例一提供的一种磁盘缓存区的同步方法的处理流程图;

图4为本发明实施例一提供的一种磁盘缓存区的同步装置的连接示意图。

图5为本发明实施例中的数据结构图;

图6为本发明写缓存的方法的应用场景;

图7为本发明写缓存的方法的另一应用场景;

图8为本发明实施例中读取非易失性内存缓存区中的缓存区的数据的处理 流程图;

图9为本发明实施例中读取非易失性内存缓存区中的掉电保护区的数据的 处理流程图;

图10为本发明的数据页最新查找树的流程图。

具体实施方式

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其 中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的 元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而 不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式 “一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的 是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、 操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整 数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被 “连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者 也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连 接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任 一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包 括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解 相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为 具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不 会用理想化或过于正式的含义来解释。

为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做 进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。

如图1所示,为本发明所述的一种写缓存的方法,包括:

步骤11,获取系统的待写入数据;

步骤12,判断所述待写入数据的大小:

步骤13,当所述待写入数据的大小大于第一阈值时,将所述待写入数据写 入磁盘的数据区;

步骤14,当所述待写入数据的大小小于或者等于所述第一阈值时,将所述 待写入数据和对应的元数据信息写入非易失性内存存储器的缓存区中;所述元 数据信息包括:待写入数据的磁盘地址、数据大小和版本号,所述版本号用于 表示系统更新待写入数据的序号。

本发明通过将待写入数据直接写入到磁盘的数据区,让大吞吐量数据不用 经过磁盘的缓存区进行缓存,减少大吞吐量应用对缓存区空间的占用率,减少 对缓存设备的压力。

所述方法还包括:

步骤15,当所述非易失性内存存储器的缓存区中的数据大小大于第二阈值 时,将所述非易失性内存存储器的缓存区中的数据和对应的元数据信息写入磁 盘的缓存区中;并移除所述非易失性内存存储器的缓存区中的数据和对应的元 数据信息;

步骤16,当所述磁盘的缓存区中的数据大小大于第四阈值时,将所述磁盘 的缓存区中的数据写入到磁盘的数据区中;并移除所述磁盘的缓存区中的数据 和对应的元数据信息。

其中,步骤16包括:

步骤161,对所述磁盘的缓存区中的数据进行合并,合并成一个数据块;

步骤162,判断所述数据块的大小是否大于第四阈值;

步骤163,当所述数据块的大小大于第四阈值时,将所述数据块写入磁盘 的数据区中;并将所述数据块和对应的元数据信息从所述磁盘的缓存区中移 除;

步骤164,当所述数据块小于或者等于所述第四阈值时,判断所述数据块 中的第一个数据页被合并的时长是否大于或等于设定时长,所述数据页包括预 订比特的数据;

步骤165,如果被合并的时长大于或等于设定时长,将所述数据块的第一 个数据页写入所述磁盘的数据区,并将所述第一个数据页和对应的元数据信息 从所述磁盘的缓存区中移除。

步骤163中的将所述数据块写入磁盘的数据区中的步骤具体为:

步骤1631,将所述待写入数据写入非易失性内存存储器的掉电保护区;

步骤1632,将所述待写入数据的元数据信息写入非易失性内存存储器的缓 存区;

步骤1634,将所述待写入数据写入磁盘的数据区;

步骤1635,将所述待写入数据的元数据信息从所述非易失性内存存储器的 缓存区中移除;

步骤1636,将所述待写入数据从所述非易失性内存存储器的掉电保护区中 移除。

步骤1634具体为:

步骤16341,判断所述非易失性内存存储器的缓冲区中是否存储有与所述 待写入数据的磁盘地址相同的第一数据;

步骤16342,如果有,则将所述第一数据设置为无效,使得所述第一数据 在后续处理中不被同步到所述磁盘的数据区中。

所述的方法,还包括:

步骤17,在系统异常退出并重新启动之后,判断是否满足以下两个条件: 所述非易失性内存存储器的缓存区中保存有所述磁盘的缓冲区中的数据;所述 非易失性内存存储器的掉电保护区中保存有所述磁盘缓冲区中的数据;

步骤18,当上述两个条件都不满足时,则将所述磁盘缓冲区中的数据写入 到磁盘的数据区,且从所述磁盘的缓冲区中移除;

或者,所述的方法,还包括:

步骤19,在系统异常退出并重新启动之后,判断是否满足以下三个条件: 所述非易失性内存存储器的掉电保护区保存有第二数据;所述非易失性内存存 储器的缓存区中保存有第三数据;所述非易失性内存存储器的掉电保护区内的 第二数据的版本号大于所述非易失性内存存储器的缓存区中的第三数据的版本 号;

步骤110,当同时满足上述三个条件时,将所述非易失性内存存储器的掉 电保护区的第二数据写入到磁盘的数据区,且从所述非易失性内存存储器的掉 电保护区中移除;

或者,所述的方法,还包括:

步骤111,在系统异常退出并重新启动之后,判断是否满足以下三个条 件:所述非易失性内存存储器的缓冲区中保存有第四数据;所述非易失性内存 存储器的掉电保护区中保存有第五数据;所述非易失性内存存储器的缓冲区中 的第四数据的版本号大于所述非易失性内存存储器的掉电保护区的第五数据的 版本号;

步骤112,当同时满足上述三个条件时,将所述非易失性内存存储器的缓 冲区的第四数据写入到磁盘的缓冲区,且从所述非易失性内存存储器的缓冲区 中移除。

上述实施例中,通过非易失性内存存储器的掉电保护区中记录直接写入磁 盘的数据区的数据,在服务器异常退出重新启动之后,只要扫描非易失性内存 存储器的缓存区和掉电保护区中的数据,就可以判断出非易失性内存存储器的 缓存区中哪些数据是不需要写入磁盘的数据区的,非易失性内存存储器的缓存 区中哪些数据是需要写入磁盘的数据区的。

如图2所示,所述磁盘缓存区的同步方法,包括:

步骤21,判断磁盘的缓存区中的数据大小是否大于第三阈值;

步骤22,当所述磁盘的缓存区中的数据大小大于第三阈值时,将所述磁盘 的缓存区中的数据写入到磁盘的数据区中;并移除所述磁盘的缓存区中的数据 和对应的元数据信息。

其中,步骤21包括:

步骤211,对所述磁盘的缓存区中的数据进行合并,合并成一个数据块;

步骤212,判断所述数据块的大小是否大于第四阈值。

步骤22包括:

步骤221,当所述数据块的大小大于第四阈值时,将所述数据块写入磁盘 的数据区中;并将所述数据块对应的元数据信息从所述磁盘的缓存区中移除; 所述元数据信息包括:待写入数据的磁盘地址、数据大小和版本号,所述版本 号用于表示系统更新待写入数据的序号;

步骤222,当所述数据块小于或者等于所述第四阈值时,判断所述数据块 中的第一个数据页被合并的时长是否大于或等于设定时长;所述数据页包括预 订比特的数据;

步骤223,如果被合并的时长大于或等于设定时长,将所述数据块的第一 个数据页写入所述磁盘的数据区,并将所述第一个数据页和对应的元数据信息 从所述磁盘的缓存区中移除。

其中,所述将所述数据块的第一个数据页写入所述磁盘的数据区的步骤包 括:将所述合并指针所在位置的数据页写入磁盘的数据区,且从所述磁盘的缓 存区中移除,并更新所述合并指针的位置。

其中,步骤211包括:

在内存中创建合并池;顺序读取磁盘的缓存区中的数据页,依次放到所述 合并池中,将所述合并池作为数据块;设置合并指针和读取指针,所述合并指 针表示所述合并池中的第一个数据页的位置;所述读取指针表示所述合并池中 的最后一个数据页的位置;所述数据页包括预订比特的数据;

其中,所述顺序读取磁盘的缓存区中的数据页,依次放到所述合并池中的 步骤包括:

顺序读取磁盘的缓存区中的数据页;

获取当前读取的数据页的版本号;

当当前读取的数据页的版本号小于合并池中的最新数据页版本号,则不将 当前读取的数据页加入到合并池中;

当当前读取的数据页的版本号等于所述最新数据页版本号,则将当前读到 的数据页加入到合并池中,将当前读取的数据页与合并池中当前最后的数据页 合并成一个数据块。

相应的,步骤222可以为:判断所述合并指针所在位置的数据页进入合并 池的时长是否大于预定时长。

如图3所示,为本发明所述的一种写缓存的装置,包括:

获取模块31,获取系统的待写入数据;

第一判断模块32,判断所述待写入数据的大小:

第一写入模块33,当所述待写入数据的大小大于第一阈值时,将所述待写 入数据写入磁盘的数据区;

第二写入模块34,当所述待写入数据的大小小于或者等于所述第一阈值 时,将所述待写入数据和对应的元数据信息写入非易失性内存存储器的缓存区 中;所述元数据信息包括:待写入数据的磁盘地址、数据大小和版本号,所述 版本号用于表示系统更新待写入数据的序号。

所述装置还包括:

第三写入模块35,当所述非易失性内存存储器的缓存区中的数据大小大于 第二阈值时,将所述非易失性内存存储器的缓存区中的数据和对应的元数据信 息写入磁盘的缓存区中;并移除所述非易失性内存存储器的缓存区中的数据和 对应的元数据信息;

第四写入模块36,当所述磁盘的缓存区中的数据大小大于第三阈值时,将 所述磁盘的缓存区中的数据写入到磁盘的数据区中;并移除所述磁盘的缓存区 中的数据和对应的元数据信息。

所述第四写入模块36包括:

合并子模块,对所述磁盘的缓存区中的数据进行合并,合并成一个数据 块;

第一判断子模块,判断所述数据块的大小是否大于第四阈值;

第一写入子模块,当所述数据块的大小大于第四阈值时,将所述数据块写 入磁盘的数据区中;并将所述数据块和对应的元数据信息从所述磁盘的缓存区 中移除;

第二判断子模块,当所述数据块小于或者等于所述第四阈值时,判断所述 数据块中的第一个数据页被合并的时长是否大于或等于设定时长,所述数据页 包括预订比特的数据;

第二写入子模块,如果被合并的时长大于或等于设定时长,将所述数据块 的第一个数据页写入所述磁盘的数据区,并将所述第一个数据页和对应的元数 据信息从所述磁盘的缓存区中移除。

所述第一写入模块33包括:

第一写入子模块,将所述待写入数据写入非易失性内存存储器的掉电保护 区;

第二写入子模块,将所述待写入数据的元数据信息写入非易失性内存存储 器的缓存区;

第三写入子模块,将所述待写入数据写入磁盘的数据区;

第一移除子模块,将所述待写入数据的元数据信息从所述非易失性内存存 储器的缓存区中移除;

第二移除子模块,将所述待写入数据从所述非易失性内存存储器的掉电保 护区中移除。

可选的,所述第一写入模块33包括:

判断子模块,判断所述非易失性内存存储器的缓冲区中是否存储有与所述 待写入数据的磁盘地址相同的第一数据;

设置子模块,如果有,则将所述第一数据设置为无效,使得所述第一数据 在后续处理中不被同步到所述磁盘的数据区中。

所述装置还包括:

第二判断模块37,在系统异常退出并重新启动之后,判断是否满足以下两 个条件:所述非易失性内存存储器的缓存区中保存有所述磁盘的缓冲区中的数 据;所述非易失性内存存储器的掉电保护区中保存有所述磁盘缓冲区中的数 据;

第五写入模块38,当上述两个条件都不满足时,则将所述磁盘缓冲区中的 数据写入到磁盘的数据区,且从所述磁盘的缓冲区中移除;

或者,所述装置还包括:

第三判断模块39,在系统异常退出并重新启动之后,判断是否满足以下三 个条件:所述非易失性内存存储器的掉电保护区保存有第二数据;所述非易失 性内存存储器的缓存区中保存有第三数据;所述非易失性内存存储器的掉电保 护区内的第二数据的版本号大于所述非易失性内存存储器的缓存区中的第三数 据的版本号;

第六写入模块310,当同时满足上述三个条件时,将所述非易失性内存存 储器的掉电保护区的第二数据写入到磁盘的数据区,且从所述非易失性内存存 储器的掉电保护区中移除;

或者,所述装置还包括:

第四判断模块311,在系统异常退出并重新启动之后,判断是否满足以下 三个条件:所述非易失性内存存储器的缓冲区中保存有第四数据;所述非易失 性内存存储器的掉电保护区中保存有第五数据;所述非易失性内存存储器的缓 冲区中的第四数据的版本号大于所述非易失性内存存储器的掉电保护区的第五 数据的版本号;

第七写入模块312,当同时满足上述三个条件时,将所述非易失性内存存 储器的缓冲区的第四数据写入到磁盘的缓冲区,且从所述非易失性内存存储器 的缓冲区中移除。

如图4所示,为本发明所述的一种磁盘缓存区的同步装置,包括:

判断模块41,判断磁盘的缓存区中的数据大小是否大于第三阈值;

写入模块42,当所述磁盘的缓存区中的数据大小大于第三阈值时,将所述 磁盘的缓存区中的数据写入到磁盘的数据区中;并移除所述磁盘的缓存区中的 数据和对应的元数据信息。

所述判断模块41包括:

合并子模块,对所述磁盘的缓存区中的数据进行合并,合并成一个数据 块;

第一判断子模块,判断所述数据块的大小是否大于第四阈值;

写入模块42包括:

第一写入子模块,当所述数据块的大小大于第四阈值时,将所述数据块写 入磁盘的数据区中;并将所述数据块对应的元数据信息从所述磁盘的缓存区中 移除;所述元数据信息包括:待写入数据的磁盘地址、数据大小和版本号,所 述版本号用于表示系统更新待写入数据的序号;

第二判断子模块,当所述数据块小于或者等于所述第四阈值时,判断所述 数据块中的第一个数据页被合并的时长是否大于或等于设定时长;所述数据页 包括预订比特的数据;

第二写入子模块,如果被合并的时长大于或等于设定时长,将所述数据块 的第一个数据页写入所述磁盘的数据区,并将所述第一个数据页和对应的元数 据信息从所述磁盘的缓存区中移除。

以下描述本发明的应用场景。

本发明实施例提供一种写缓存方法、缓存同步方法和装置。通过nvram缓 存和hdd硬盘缓存区域两层缓存的方式,解决了成本与性能的平衡问题。

如图5所示,为本发明实施例中的数据结构图。本发明中,将非易失性内 存存储器分为两部分,一部分为掉电保护区,用于存储大于阈值的数据,一部 分为缓冲区,用于存储小于阈值的数据和对应的元数据信息以及大于阈值的数 据的元数据信息。元数据信息包括磁盘地址、数据大小,和版本号。版本号用 于表示写入缓冲区的数据的新旧。

如图6所示,为本发明写缓存的方法的应用场景,包括:

首先,将数据所在磁盘编号、数据在磁盘上的地址,数据块大小以及数据 写入nvdimm;

然后,判断写入数据块是否大于设定阈值;

当为是时,数据写入hdd磁盘数据区,且将数据从nvdimm中移除;

当为否时,数据块追加到hdd缓冲区;数据写入hdd磁盘数据区;将数据所 在磁盘编号,数据在磁盘上的地址,数据大小和数据从hdd缓冲区移除;数据 从nvdimm中移除。

如图7所示,所述的写缓存方法包括:

首先,在非易失性内存存储器中维护一个递增的版本号。每次收到写入请 求时,将该版本号加1,并将版本号作为待写入数据的元数据信息;

然后,判断待写入数据的大小是否大于设定阈值:

如果待写入数据的大小大于设定的阈值,则将缓存区中与待写入数据的磁 盘地址相同的数据在磁盘缓冲区中的地址拷贝进入非易失性内存存储器,将大 于设定阈值的待写入数据写入到非易失性内存存储器的掉电保护区;然后,将 待写入数据写入到磁盘的数据区,然后,将待写入数据和待写入数据磁盘地址 相同的数据在缓冲区中的地址从非易失性内存存储器中移除。也就是说,待写 入数据写入到非易失内存数据区,数据写入到机械磁盘数据区;若磁盘缓存区 中缓存有与待写入数据磁盘地址相同的数据,将磁盘缓冲区中所有与待写入数 据磁盘地址相同的数据置为无效,无效状态的数据不用同步到机械磁盘数据 区。

如果待写入数据小于设定的阈值,将待写入数据写入非易失性内存存储器 的缓存区中;然后,当非易失性内存存储器的缓存区中的数据大于设定阈值, 将数据写入到磁盘缓存设备中。也就是说,该步骤为:待写入数据写入到非易 失内存数据块中;在数据块大小达到写入阈值时,将非易失内存数据块中的数 据写入到机械磁盘缓存区,将待写入数据从非易失内存中移除;然后,合并机 械磁盘缓存区的数据,并写入到机械磁盘数据区,将合并完成写入到机械磁盘 数据区的数据从机械磁盘缓存区中移除。

写缓存装置包括:

非易失性内存存储器掉电保护区的写入模块,用于将大于设定阈值的待写 入数据写入到非易失性内存存储器的掉电保护区。

非易失性内存存储器缓存区的写入模块,用于将小于或者等于设定阈值的 待写入数据、待写入数据的元数据信息写入到非易失性内存存储器的缓存区, 合并非易失性内存存储器的缓存区中的数据。

磁盘缓存写入模块,用于将非易失性内存存储器缓存模块中合并的待写入 数据、待写入数据的元数据信息写入到磁盘的缓存区。

本发明通过将待写入数据直接写入到磁盘的数据区,让大吞吐量数据不用 经过磁盘的缓存区进行缓存,减少大吞吐量应用对缓存区空间的占用率,减少 对缓存设备的压力。

另外,通过非易失性内存存储器的掉电保护区中记录直接写入磁盘的数据 区的数据,在服务器异常退出重新启动之后,只要扫描非易失性内存存储器的 缓存区和掉电保护区中的数据,就可以判断出非易失性内存存储器的缓存区中 哪些数据是不需要写入磁盘的数据区的,非易失性内存存储器的缓存区中哪些 数据是需要写入磁盘的数据区的。

本发明实施例提供一种缓存同步装置,包括:

合并模块,用于读取磁盘缓存区中的数据,创建一个内存中的合并池,合 并池的大小可以根据系统内存大小设定。合并模块中保存两个指针。一个是合 并指针,指向从磁盘的缓存区中第一个读到合并池中的缓存页位置;一个是读 取指针,指向从磁盘的缓存区中最后一个读到合并池中的缓存页位置。

磁盘写模块,将合并模块合并好的数据写入到磁盘的数据区上。

本发明提供的缓存同步方法,包括:

首先,合并模块顺序读取磁盘缓存区中的数据页,并增加读取指针;

然后,如果读到的数据页版本号小于最新数据页版本号,则不将数据页加 入到合并池中;

然后,如果版本号等于最新数据页版本号,则将数据页加入到合并池中, 并让数据页与合并池中临近的页进行合并成一个数据块;

然后,如果合并之后的数据块大于等于设定阈值,则将数据块写入磁盘 中,将数据块从合并池中移除;

然后,如果合并指针所在的位置数据页进入合并池已经大于等于设定的时 间,也将磁盘的缓存区当前合并指针所在位置的数据页写入磁盘的数据区,并 增加磁盘的缓存区的合并指针。

本发明可以将磁盘的IOPS与吞吐率很好的进行结合,将磁盘的IOPS从200 提升至3w,吞吐率提升至磁盘最大值。

以下描述本发明的具体实施例,包括:

步骤1,系统启动。初始化非易失性内存存储器的缓存区、非易失性内存 存储器的掉电保护区、合并指针、读取指针、写入指针、最新数据页查找树、 合并池。

步骤1包括:

步骤11,使用非易失性内存恢复函数,恢复出非易失性内存存储器的缓存 区、非易失性内存存储器的掉电保护区。

步骤12,构建最新数据页查找树。最新数据页查找树为一颗红黑树,其关 键字为数据页在磁盘的数据区的页号,值为数据页的最新版本号。从非易失性 内存中读取磁盘的缓存区的合并指针和写入指针,将读取指针置为与合并指针 相同的值;创建一个临时指针,临时指针的值与合并指针的值相同;根据流程 图构建最新数据页查找树。读取非易失性内存缓存区中的数据页,调整和修改 最新数据页查找树。读取非易失性内存缓存区中的掉电保护区的数据,调整和 修改最新数据页查找树。

如图8所示,包括:顺序读取非易失性内存缓存中的所有缓存单元中的数 据页;如果读取的数据页在查找树中不存在,将数据页插入到查找树中;如果 读取的数据页在查找树中存在且版本号大于查找树中的数据页版本号,更新查 找树中的数据页版本号。

如图9所示,包括:读取非易失性内存掉电保护区中所有的数据块;如果读 取的数据块中的数据页在查找树中不存在,将数据页插入到查找树中;如果读 取的数据页在查找树中存在且数据块版本号大于查找树中的数据页版本号,更 新查找树中的数据页版本号。

步骤2,系统运转。

步骤2包括:

步骤21,得到待写入数据请求,增加缓存系统版本号。

步骤21具体为:

若待写入数据的大小大于设定阈值,将待写入数据写入到非易失性内存的 掉电保护区;检查数据页查找树中是否有与待写入数据中数据页号相同的数 据;如果存在与待写入数据中数据页号相同的数据,将这些数据页版本号修改 为数据页版本号,将缓存系统版本号、待写入数据磁盘地址作为元记录追加到 非易失性内存的缓存区中;检查合并池中是否存在有与待写入数据的磁盘地址 相同的数据页;如果存在,将这些数据页从合并池中移除;

若待写入数据的大小小于或者等于设定阈值,将缓存系统版本号、待写入 数据的磁盘地址、待写入数据的大小和待写入数据作为数据记录追加到非易失 性内存的缓存区的缓存单元中;检查查找树中是否存在与待写入数据中数据页 号相同的数据;如果存在与待写入数据中数据页号相同的数据,将查找树中最 新的数据页版本号修改为最新的系统版本号。

步骤22,合并步骤。

步骤22具体包括:

首先,合并模块中保存两个数据结构:一颗查找树以添加到合并池中的时 间和在缓存中的数据页用跳表进行保存,递增合并指针。合并指针所指向的记 录为元记录。

然后,判断查找树中元记录对应的数据页号版本号是否与元记录中一致;

然后,如果一致,则将数据页从查找树中移除;

然后,如果不一致,则合并指针指向下一条记录。合并指针指向的记录为 数据记录。

然后,读取数据记录中的所有数据页;判断数据页版本号是否等于查找树 中的版本号;如果等于,则将数据页加入到合并池中,并将数据页从查找树中 移除。

如图10所示,为本发明的数据页最新查找树流程图,包括:

判断临时指针大于是否等于写入指针;

如果为否,则退出;

如果为是,则读取临时指针指向的数据页和数据页版本号;

判断数据页是否在查找树中存在?

如果为否,则将数据页插入到查找树中,值为数据页版本号;临时指针增 加1;并跳到上述第一步;

如果为是,则判断查找数中的版本号小于读取的数据页版本号;如果为 是,则更新查找树中的数据页版本号,且临时指针增加1,并跳到上述第一 步;如果为否,临时指针增加1,并跳到上述第一步。

本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的 模块或流程并不一定是实施本发明所必须的。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本 发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发 明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式 体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光 盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器, 或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相 似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之 处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以 描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装 置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或 者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理 单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实 际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普 通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述,仅 为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉 本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替 换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利 要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号