一种面向混合内存的掉电恢复的方法和系统与流程

文档序号:18101301发布日期:2019-07-06 11:22阅读:258来源:国知局
一种面向混合内存的掉电恢复的方法和系统与流程
本发明涉及大数据
技术领域
,具体涉及一种面向混合内存的掉电恢复的方法和系统。
背景技术
:随着大数据时代的到来,以redis、aerospike为代表的内存键值存储系统(memorybasedkeyvaluestoragesystem,简称memkv)迎来了飞速的发展。memkv为了获得极高的读写性能,将数据和索引全部存储在内存中,但由于传统的dram(dynamicrandomaccessmemory,动态随机存取存储器)内存是掉电易失的,memkv的可靠性难以保证,不论是主动关机的掉电、还是意外灾难的掉电(以下统称掉电),都会导致dram内存中的数据和索引全部丢失。为了在高性能和高可靠之间取得平衡,现有的memkv持久化技术主要有两种:其一是通过快照备份的方法,定期将dram内存中的数据和索引拷贝到外存,在掉电后,将外存中的数据和索引拷贝回到dram内存即完成恢复(恢复和重构为同义词),其优点是恢复的过程简单,恢复速度很快,但是缺点在于快照备份耗时较长、影响正常读写操作,并且发生在快照备份之后、掉电之前的写入数据会丢失;其二是通过外存中的日志记录所有写操作,在掉电后,通过日志回放即完成恢复,虽然这种技术能恢复全部的数据和索引,但是恢复速度太慢,并且日志记录严重影响了正常读写操作的性能。正是由于上述缺陷,memkv无法同时满足高性能和高可靠,只能让用户在高性能和高可靠之间权衡选择——要么放弃高可靠(不做持久化),要么放弃高性能(做持久化)。近年来,以pcm、3dxpoint、sttram为代表的非易失性内存(non-volatilememory,简称nvm)的问世,给memkv持久化技术提供了全新的解决思路。一种直观的方法是采用nvm直接替代传统dram内存,将数据和索引全部存储在nvm中,但是与dram相比,nvm的成本太高,这种方法不切实际,并且现有的dram全部放弃不用,也是一种巨大的浪费。综上,采用现有的快照备份技术,一旦掉电则索引和数据丢失,以备份来恢复索引和数据。采用日志记录技术,一旦掉电则索引和数据丢失,以日志来恢复索引和数据。而非易失性内存成本高,难以实际应用。因此,现有的memkv持久化技术难以同时支持高性能(能够快速地完成读写操作)和高可靠性(能够快速且完整地完成掉电恢复),使得memkv技术的发展受到限制。技术实现要素:为了克服上述现有技术的不足,本发明提供一种面向混合内存的掉电恢复系统及方法,是一种面向内存键值存储系统(memkv)的持久化技术,将memkv存储系统的数据和索引存储于nvm和dram构成的混合内存,当掉电时,索引丢失,但数据不丢,进而通过数据来恢复索引,在满足快速地完成读写操作的同时,还满足能够快速且完整地完成掉电恢复,即能够同时满足memkv存储系统的高性能和高可靠性。本发明提供的技术方案是:一种面向混合内存的掉电恢复系统,由nvm和dram构成的混合内存包括以下模块:操作系统区、用户区、索引区、热数据区、元数据区和数据区;其中,操作系统区、用户区、索引区和热数据区置于(存储于)dram中;元数据区和数据区置于(存储于)nvm中;所述元数据区为轻量级存储区域,用于在dram内容丢失的情况下,能够快速地将dram中的热数据区和索引区恢复出来;并记录操作时间,从而实现将系统恢复至任意指定时间的状态(时间的精度包括但不限于:日、小时、分钟、秒钟、毫秒等);所述热数据区可支持多种恢复级别(根据长期的工程实践经验设置);具体地:模块1:操作系统区。用于系统启动时将操作系统加载至内存中的预留区域。模块2:用户区。用于操作系统的若干用户在内存中申请和释放内存资源。模块3:索引区。索引的数据结构包括但不限于b+树索引、哈希索引。不论采用何种索引结构,都不影响本发明的掉电恢复。模块4:热数据区。用于存储热数据(即最近被读取访问的数据),其来源于nvm上的数据区,用于再次读取访问的快速完成。热数据区按序存储数据、循环覆盖。由于热数据区的空间有限,只有最近被访问的数据才是当前的热数据,在热数据区被写满之后,从热数据区的首部继续写入新的热数据,原来的数据则被覆盖,如此往复。在恢复时,热数据区支持4种恢复级别:第一恢复级别(完全恢复)、第二恢复级别(快速恢复)、第三恢复级别(模糊恢复)、第四恢复级别(惰性恢复)。第一恢复级别是指逆序遍历模块5中的元数据区,依据元数据区记录的数据地址,将模块6数据区的数据逐个拷贝至热数据区,直至热数据区填满。第二恢复级别是指将模块5元数据区中的最后一个条目中的地址在模块6数据区中的相应数据拷贝至热数据区。第三恢复级别是以模块5元数据区中的最后一个条目中的地址为中心,在模块6数据区中将与热数据区同等尺寸的数据拷贝至热数据区。第四恢复级别是不对热数据区进行恢复,待系统运行过程中自然地产生热数据。自然产生的热数据来自于:在系统恢复后,用户对数据的读写访问。用户新产生的热数据存储在数据区。本发明的惰性恢复是指不恢复系统崩溃之前的热数据,而是让用户在使用过程中产生新的热数据。模块5:元数据区。用于断电恢复,以条目的形式按序记录每一个文件的元数据,包括但不限于:起始地址、偏移长度、文件编号、操作时间等。当热数据区恢复数据时,通过元数据区的条目记录的元数据访问数据区的数据;模块6:数据区。用于存储文件数据。主要支持4种文件操作:增、删、查、改。增操作(写入一个文件):首先将文件内容写入数据区,然后在元数据区记录一个条目,最后根据索引的数据结构类别将文件编号和地址的对应关系添加进入索引区。查操作(读取一个文件):首先在热数据区查找该文件数据,如果存在则直接读取,如果不存在则根据文件编号,在索引区查找该文件的地址,最后在数据区的相应地址读取该文件的内容。删操作(删除一个文件):首先在索引区查找该文件的地址,其次在数据区中将该地址的内容删掉,再次在元数据区中删除相应条目,再次在索引区删除该文件的文件编号和地址,最后在热数据区检查该文件是否存在,如果存在则删除。改操作(先删除一个文件、再写入一个文件):是上述操作的组合。利用上述面向混合内存的掉电恢复系统,本发明还提供一种面向混合内存的掉电恢复方法,将memkv存储系统的数据和索引存储于nvm和dram构成的混合内存,当掉电时,索引丢失,但数据不丢失,进而通过数据来恢复索引;包括以下步骤:步骤1:触发恢复;触发包括用户主动触发和系统自动触发;触发条件包括但不限于:用户主动触发、正常启动机器时自动触发、异常断电后启动机器是时自动触发。用户选择期望恢复的时间节点time和恢复级别x。步骤2:恢复操作系统区。系统重启,索引区和热数据区的内容全部丢失,操作系统被自动加载至操作系统区。步骤3:恢复元数据和数据区。顺序读取元数据区中的每一个条目,将操作时间晚于time的所有m条元数据及其在数据区中的数据全部删除。元数据区中剩余l条元数据。步骤4:恢复索引区。由前至后顺序读取元数据区中的l条元数据,根据索引区的数据结构,将索引恢复。步骤5:恢复热数据区。根据恢复级别x,对热数据区进行恢复。恢复方法详见模块4热数据区的不同级别恢复方式。步骤6:恢复结束。系统移交给用户操作。与现有技术相比,本发明的有益效果是:采用本发明技术方案,将memkv存储系统的数据和索引存储于nvm和dram构成的混合内存,当掉电时,索引丢失,但数据不丢,进而通过数据来恢复索引,能够同时支持高性能(能够快速地完成读写操作)和高可靠(能够快速且完整地完成掉电恢复)。附图说明图1为本发明系统组成模块的结构示意图。图2为本发明提供的掉电恢复方法的流程框图。图3为实施例1、2、3、4中nvm在掉电后的状态示意图。图4为实施例1中热数据区的恢复示意图。图5为实施例1中索引区的恢复示意图。图6为实施例2中热数据区的恢复示意图。图7为实施例2中索引区的恢复示意图。图8为实施例3中热数据区的恢复示意图。图9为实施例3中索引区的恢复示意图。图10为实施例4中热数据区的恢复示意图。图11为实施例4中索引区的恢复示意图。具体实施方式下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。本发明提供一种面向混合内存的掉电恢复系统及方法,是一种面向内存键值存储系统(memkv)的持久化技术,将memkv存储系统的数据和索引存储于nvm和dram构成的混合内存,当掉电时,索引丢失,但数据不丢,进而通过数据来恢复索引。以下通过技术方案的4个实施例做进一步详细描述。4个实施用例的共同场景:内存键值存储系统为某品牌商业存储系统。dram为3条金士顿32gb内存,nvm为1条英特尔128gb内存。操作系统区占用16gb的dram,用户区占用48gb的dram,热数据区占用18gb的dram,索引区占用14gb的dram,元数据区占用16gb的nvm,数据区占用112gb的nvm。元数据区每个条目包括:起始地址offset、偏移长度length、文件编号fileid、操作时间ctime。在掉电后,dram中存储的内容全部丢失,nvm中存储的内容全部保留。掉电恢复的过程,即为dram中索引和热数据的恢复过程。nvm在掉电后的状态如图3所示。4个实施用例的情况如下表:用例序号索引方式恢复级别恢复的时间节点实施用例1b+树索引第一恢复级别掉电时间实施用例2b+树索引第二恢复级别用户指定时间实施用例3哈希索引第三恢复级别掉电时间实施用例4哈希索引第四恢复级别用户指定时间实施用例1在本实施用例中,索引采用b+树的结构来组织,所有的叶子节点和非叶子节点都是有序的,所有文件的编号及其地址存放在叶子节点中。系统默认恢复的时间节点为掉电时间。系统默认的恢复级别为第一恢复级别。恢复流程如下:(1)系统因异常断电而丢失dram中的所有内容。(2)通电后,用户开机,操作系统被自动加载。(3)由于恢复的时间节点为掉电时间,因此元数据区所有的条目被保留。(4)顺序读取元数据区中的13条元数据,根据b+树索引的生成规则(本领域的公知常识),重建索引区,恢复后的索引区如图5所示。(5)恢复热数据区。(5.1)读取第13条元数据,将nvm中起始地址为57gb,尺寸为1gb的数据拷贝至dram内存的热数据区。(5.2)读取第12条元数据,将nvm中起始地址为56gb,尺寸为1gb的数据拷贝至dram内存的热数据区。(5.3)读取第11条元数据,将nvm中起始地址为27gb,尺寸为1gb的数据拷贝至dram内存的热数据区。(5.4)读取第10条元数据,将nvm中起始地址为84gb,尺寸为1gb的数据拷贝至dram内存的热数据区。(5.5)读取第9条元数据,将nvm中起始地址为39gb,尺寸为1gb的数据拷贝至dram内存的热数据区。(5.6)读取第8条元数据,将nvm中起始地址为58gb,尺寸为1gb的数据拷贝至dram内存的热数据区。(5.7)读取第7条元数据,将nvm中起始地址为71gb,尺寸为1gb的数据拷贝至dram内存的热数据区。(5.8)读取第6条元数据,将nvm中起始地址为36gb,尺寸为1gb的数据拷贝至dram内存的热数据区。(5.9)读取第5条元数据,将nvm中起始地址为59gb,尺寸为10gb的数据拷贝至dram内存的热数据区。(5.10)至此,热数据区已填满,热数据区恢复结束。图4数据区中的红色数据为被拷贝至热数据区的数据。(6)本次恢复结束。实施用例2在本实施用例中,索引采用b+树的结构来组织,所有的叶子节点和非叶子节点都是有序的,所有文件的编号及其地址存放在叶子节点中。用户指定的恢复的时间节点为2018年12月10日。用户指定的恢复级别为第二恢复级别。恢复流程如下:(1)用户主动触发系统恢复,系统立即重启。(2)随即,dram的全部丢失,操作系统被自动加载。(3)元数据区第1-6条目被保留,第7-13条目被删除,第7-13条目在数据区中数据被删除。(4)顺序读取元数据区中剩余的6条元数据,根据b+树索引的生成规则(本领域的公知常识),重建索引区,恢复后的索引区如图7所示。(5)恢复热数据区。(5.1)读取第6条元数据,将nvm中起始地址为36gb,尺寸为1gb的数据拷贝至dram内存的热数据区。(5.2)至此,热数据区恢复结束。图6数据区中的红色数据为被拷贝至热数据区的数据。(6)本次恢复结束。实施用例3在本实施用例中,索引采用哈希结构来组织,所有文件的编号及其地址存放在指定的哈希桶中,哈希算法为除7求余数。系统默认恢复的时间节点为掉电时间。系统默认的恢复级别为第三恢复级别。恢复流程如下:(1)系统因异常断电而丢失dram中的所有内容。(2)通电后,用户开机,操作系统被自动加载。(3)由于恢复的时间节点为掉电时间,因此元数据区所有的条目被保留。(4)顺序读取元数据区中的13条元数据,根据哈希索引的生成规则(本领域的公知常识)和用户指定的哈希算法,重建索引区,恢复后的索引区如图9所示。(5)恢复热数据区。(5.1)读取第13条元数据,将nvm中起始地址为57gb,尺寸为1gb的数据拷贝至dram内存的热数据区。(5.2)以nvm中地址为57gb为中心,将前后的18gb数据均拷贝至dram内存的热数据区,具体包括:起始地址为56gb,尺寸为1gb的数据;起始地址为58gb,尺寸为1gb的数据;起始地址为49gb,尺寸为10gb的数据;起始地址为49gb,尺寸为5gb的数据。(5.3)至此,热数据区恢复结束。图8数据区中的红色数据为被拷贝至热数据区的数据。(6)本次恢复结束。实施用例4在本实施用例中,索引采用哈希结构来组织,所有文件的编号及其地址存放在指定的哈希桶中,哈希算法为除7求余数。用户指定的恢复的时间节点为2018年12月10日。用户指定的恢复级别为第四恢复级别。恢复流程如下:(1)用户主动触发系统恢复,系统立即重启。(2)随即,dram的全部丢失,操作系统被自动加载。(3)元数据区第1-6条目被保留,第7-13条目被删除,第7-13条目在数据区中数据被删除。(4)顺序读取元数据区中剩余的6条元数据,根据哈希索引的生成规则(本领域的公知常识)和用户指定的哈希算法,重建索引区,恢复后的索引区如图11所示。(5)不恢复热数据区,如图10所示,无红色数据。(6)本次恢复结束。需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1