数据单元集合的检查点设置的制作方法_4

文档序号:9893573阅读:来源:国知局
-number = checkpoint-number;
[0093] //推进LR巧旨针
[0094] lrc = lrc.prev;
[0095] }
[0096] }
[0097] //MRC现在是MRA(自while循环退出)
[009引 //如果LRC赶上MRC,那么将其设置回LRA
[0099] if(lrc==mrc)
[0100] Ire = Ira;
[0101] //记录删除型条目,运些条目带有此间隔所删除全部条目的键:
[0102] for(key in removed_keys)
[0103] write(checkpoint_file,checkpointed_removal(key));
[0104] //记录带有LCR键的LRC型条目:
[0105] write(checkpoint_file,checkpointed_lrc(lrc.key));
[0106] //推进检查点号
[0107] checkpoint_number++;
[0108] //删除列出为删除的文件
[0109] f〇r(file in files_to_remove)
[0110] remove_checkpoint_file(file);
[0111] 上述算法也表示在图3A的流程图中。检查点进程初始化300检查点文件,删除检查 点文件的空列表,加入新的空检查点文件,并将MR巧旨针推进至第一新条目。该进程W循环 条件来执行while循环302,该循环条件维持循环直至MRC指针等于MRA指针。在while循环 302中,进程将当前新条目写入304当前检查点文件,将当前CP的己录306进当前MRC条目,并 推进308MRC指针。进程检查310W确定LRC是否已经达到MRC,如果达到则返回进行下一个 whi le循环迭代,如果尚未达到则继续进行。如果继续进行whi le循环302,进程将LRC条目写 入312当前检查点文件。然后进程检查314W确定LRC条目是否为其旧检查点文件中的最新 条目,如果是,则通过将其加入到待删除的检查点文件列表来标记316该检查点文件为待删 除。然后进程将当前CP的己录31巧I挡前LRC条目,并在返回到下一个while循环迭代之前推 进32化R巧旨针。当退出while循环302之后,进程检查322W确定LRC是否已经达到MRC,如果 达到则将LRC设置回LRA。然后进程W在该检查点间隔删除的所有条目的键记录326删除型 项目,记录328LRC型项目,推进330 CPN,并删除332标记为待删除的检查点文件。
[0112] W下是恢复进程所用的W伪代码写成的算法的一个示例。可W实施W下算法W在 发生故障后恢复条目表的最新的一致状态(即,最近设置检查点的状态)。
[0113]
[0114]
[0115] 上述算法也表示在图3B的流程中。恢复进程将MRA指针和LRA指针初始化340为空 值。然后恢复进程执行嵌套化r循环,夕巧or循环%4在检查点文件上(最旧到最新)进行迭 代,内化r循环346在每一个检查点文件中的项目上进行迭代。在内化r循环346之中,如果项 目是删除型项目,则该进程就会删除该项目。然后该进程检查350该项目是否是条目型项 目,如果是,则查找352到具有指定键的条目并更新具有指定数据的条目,或者如果未查找 到,则创建具有指定键和数据的条目。通过设置指针而将更新的或创建的条目插入354到表 的适当位置。插入之后,或者如果该项目不是条目型项目,如果是LRC型项目则该进程将LRC 设置356为具有指定键的条目。然后两种化r循环返回W便进行下一次迭代。两种化r循环退 出后,该进程将MRC设置为MRA。
[0116] 可W被检查点进程所用的算法的其它示例可W包括其他步骤。例如,可W压缩检 查点文件。检查点文件可W合并为少于每个检查点间隔一个的物理文件。例如,可W有周期 性转换,其允许检查点进程W常量时间的操作来删除已经存储有更新拷贝的表条目的较旧 拷贝。可W在条目修改而非简单访问的基础上来维护较旧的条目列表。进程能够简单地删 除与小于针对最后一个LRC条目的检查点号的检查点号相关联的所有检查点文件,而不记 录当推进LR巧旨针时待删除的检查点文件中每一个的检查点号。当写入新条目时,进程能够 计数运些新条目,并在已经将运些新条目写入检查点文件的独立部分(例如,针对新条目的 部分、针对旧条目的部分、针对具有删除的键的条目的部分W及针对具有LRC条目的键的项 目的部分)之后写入相同(或相似)数量的旧条目,而不交叉存取检查点文件中的新、旧条目 W及利用标记区分新、旧条目。
[0117] 图4A到图4F示出了条目的表的不同状态和工作数据114内其它内存中状态的示 例、W及检查点文件120的不同状态的示例的图示。图4A示出了存储有键/数据对的条目和 识别最新的检查点文件的CPN(上述键/数据对存储在该最新的检查点文件中)的表400的部 分W及MRA指针、LRA指针、MR巧旨针和LR巧旨针的位置。图4A还示出了删除了的键的列表402。 在检查点进程生成具有CPN201的检查点文件之前,表400和列表402针对一种状态而示出。 为简单起见,针对给定键的数据的内容在示例中用单个字母表示。
[0118] 图4B和图4C显示的是在生成具有CPN201的检查点文件之前的现有检查点文件 (CPN193-CPN200)的一些集合。图4B示出了较早的检查点文件193-194,并且图4C示出了最 新的检查点文件198-200。在该示例中,检查点文件显示为表,W项目作为表中的行。每一个 项目具有针对'类型'字段的Ξ个可能值中的一个:E(条目型)、R(删除型)或L(LRC型)。条目 型项目具有针对'键'字段的键值、针对'数据'字段的数据值W及针对'真(New)?'字段的T (真)或F(假),分别指示条目是"新"条目还是"旧"条目。如上所述,"旧"条目是已经存储在 先前检查点文件中并且现在正在再次存储在较新检查点文件中的条目。删除型项目或LRC 型项目具有针对'键'字段的键值,但不具有针对'数据'或'真(New)?'字段的值。
[0119] 针对W如图4A所示的表400和列表402和如图4B-4C所示的检查点文件结束的检查 点间隔而执行上述伪代码中所描述的示意性算法,检查点进程将存储如图4D所示的具有 CPN201的新检查点文件。检查点进程还将删除具有CPN193的检查点文件,运是由于LR巧旨针 从该检查点文件中最后一个设置检查点的条目过渡到在具有CPN194的检查点文件中最后 一个设置检查点的条目表示不再需要具有CPN193的检查点文件中条目的任何拷贝。在检查 点进程已经存储了具有CPN201的检查点文件之后,并且在自从图4A的状态之后任何条目有 机会被访问之前,表400和列表402具有如图4E所示的状态。
[0120] 如果在存储具有CPN201的检查点文件之后有系统故障的话,系统能够通过按照其 CPN的顺序来仅仅对剩余的检查点文件(具有CPN194-CPN201)进行处理从而执行恢复进程 W恢复表400和列表402 (如图4E所示)的状态。图4F示出了当重建表400时表400的状态的一 系列快照(snapshot)。表400的状态的部分在处理完第一个检查点文件194并在处理完每一 个检查点文件198-200之后显示。然后,在处理完检查点文件201之后,恢复至表400的完全 恢复后的状态,包括表400(如图4E所示)中的指针。MRA指针和MR巧旨针被设置为表400中的 第一条目,并且LRA指针被设置为表400中的最后一个条目。利用最后一个检查点文件的LRC 型项目来恢复LR巧旨针值,上述检查点文件在该示例中是检查点文件201。
[0121] 图5示出了关于不同指针对于一系列九个不同检查点间隔是如何随时间移动的描 述,针对每一个检查点间隔的带纹理条柱表示表的不同部分。不同部分的大小随时间而变 化说明LR巧旨针赶上MR巧旨针并循环回LRA指针。在该示例中,有稳定数量的数据单元在该系 列检查点间隔期间被访问,并且表的大小稳定。在每一条下面是针对该检查点间隔正在写 入的检查点文件的当前CPN,在该当前CPN下面是存储有表的状态(已经删除任何旧检查点 文件之后)的剩余有效检查点文件的CPN列表。在多数使用情况下,包括在该示例中,剩余检 查点文件集相当稳定,平均每一个检查点间隔删除一个检查点文件。
[0122] 例如可W通过使用执行适当软件指令的可编程计算系统来实施上述检查点设置 方法,或者可W在诸如现场可编程口阵列(FPGA)的适当的硬件中或W-些混合形式来实 施。例如,在程序化方法中,软件可W包括在一个或多个已编程或可编程计算系统(可W具 有各种架构,诸如分布式、客户端/服务器、或网格式)上执行的一个或多个计算机程序中的 进程,每个计算系统包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易 失性存储器和/或存储元素)W及至少一个用户接口(用于使用至少一个输入设备或端口来 接收输入,W及用于使用至少一个输出设备或端口来提供输出)。该软件可包括更
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1