【摘要】 检查点容错技术中文件状态一致性维护的实现方法属于容错技术中文件检查点技术领 域,其特征在于在底层文件系统和用户程序之间建立一个由运行时文件系统和函数库构成的 检查点设置和卷回恢复文件系统,其中用地址映射模块映射系统挂载点和实际数据路径之间 的映射关系;用日志管理模块执行用户的文件操作请求;用状态跟踪模块更新操作后的文件 状态;用冲突检测模块检测文件访问冲突;用数据提交模块根据文件状态执行缓存模式的提 交操作,把缓存数据写回磁盘。本发明具有以下优点:完整性、透明性、易部署性、可移植 性、低开销以及自适应性,尤其适用于高性能计算中保证故障发生后检查点能正确恢复文件 状态的一致性。 【专利类型】发明授权 【申请人】清华大学 【申请人类型】学校 【申请人地址】100084北京市100084-82信箱 【申请人地区】中国 【申请人城市】北京市 【申请人区县】海淀区 【申请号】CN200810101595.4 【申请日】2008-03-10 【申请年份】2008 【公开公告号】CN100583051C 【公开公告日】2010-01-20 【公开公告年份】2010 【授权公告号】CN100583051C 【授权公告日】2010-01-20 【授权公告年份】2010.0 【IPC分类号】G06F11/14; G06F17/30 【发明人】郑纬民; 陈文光; 薛瑞尼 【主权项内容】1.检查点容错技术中文件状态一致性维护的实现方法,其特征在于该方法依次会有以下 步骤: 步骤(1)初始化 在用户程序和底层文件系统之间以堆叠工作方式有一个运行在用户态的面向检查点设置 与卷回恢复的文件系统CprFS,所述CprFS由两部分组成:CprFS运行时文件系统和CprFS函 数库,CprFS运行时文件系统向用户程序提供标准文件访问接口并跟踪文件状态转换,而 CprFS函数库向用户程序提供事务性处理接口,用来向所述CprFS运行时文件系统发出对应 操作请求,为此在所述CprFS系统设有:地址映射模块、日志管理模块、状态跟踪模块、后 备缓存模块、冲突检测模块和数据提交模块,其中: 地址映射模块,记录所述CprFS运行时文件系统作为应用程序访问数据文件入口的挂载 点和实际数据路径之间的映射关系,所述挂载点称为代理数据路径,该实际数据路径是指实 际数据文件在已有底层文件系统中的路径,并在需要时把用户请求的路径映射到实际路径; 日志管理模块,维护一张哈希表,以文件名作为键值,缓存数据采用块长设定的双链表 形式维护,链表中的日志包含了缓存数据和每个操作命令,该日志管理模块根据用户程序向 所述代理数据路径发出的不同操作请求按以下不同方式执行: 当所述操作请求为文件数据写入请求时,该日志管理模块调用所述地址映射模块,该日 志管理模块根据文件名查询哈希表,并在双链表中定位更新数据的位置,若数据已存于链表 中,则直接覆盖;否则,需要先从实际数据文件中把对应数据加载入链表,然后再覆盖; 当所述操作请求为文件数据读取请求时,该日志管理模块首先在哈希表的链表中查询请 求的数据,如果查询失败则继续查询后备缓存,如果查询后备缓存也失败则通过所述地址映 射模块直接查询实际的数据文件; 当所述操作请求为文件截断请求时,按与处理读取请求相同的方法在哈希表中定位文件 后,再把链表根据需要截断; 状态跟踪模块,内含一个文件访问模型,以利用该状态跟踪模块修改文件状态,所述文 件访问模型由文件状态和该文件状态在事务提交时对应的操作构成,其中: 文件状态分为活动ALIVE、消亡DEAD以及重生RENEWED三大类,其中: 活动,含有正常normal和截断truncated两个状态: 正常状态,即单纯写入,直接写回磁盘; 截断状态,即截断后写回磁盘; 消亡,含有死亡dead和删除deleted两个状态: 死亡,即改名原始文件,执行空操作Noop; 删除,即删除文件; 重生,含有再生reborn、改名renamed、(死亡,再生)(dead,reborn)、(死亡,改 名)(dead,renamed)、(死亡,改名,截断)(dead,renamed,truncated)、以及(改名,截 断)(renamed,truncated)六个状态: 再生,即删除后新建,截断为0后写回磁盘; 改名,即改名目标文件,先删除对应的改名原始文件开始的dead标志,再改名; (死亡,再生),即先为改名原始文件后新建,执行空操作Noop; (死亡,改名),即先为改名原始文件后为改名目标文件,执行空操作Noop; (死亡,改名,截断),即先进入(死亡,改名)状态后截断,执行空操作Noop; (改名,截断),即先为改名目标文件后截断; 所述状态跟踪模块,根据用户提交的文件操作更新从所述日志管理模块引入的文件状态; 后备缓存模块,根据所述日志管理模块的请求,当内存日志量超过设定的阈值后,所述 后备缓存模块把部分数据写入自己的后备缓存区域; 冲突检测模块,调用并比较所述日志管理模块记录的读写操作区域,判断一个进程把文 件修改在本地备份时,是否有另外一个节点的进程在读取刚被更新的内容,若日志管理模块 记录的读写操作区域存在重叠,则确认发生冲突,便通知数据提交模块取消此次事务; 数据提交模块,在无冲突时根据请求进程的进程号遍历哈希表,把与发出设置检查点请 求进程绑定在一起的所有文件根据其状态执行相应的提交操作; 步骤(2)所述CprFS运行时文件系统依次按以下步骤执行文件状态的一致性维护方法: 步骤(2.1)初始化日志管理模块、地址映射模块和后备缓存模块; 步骤(2.2)CprFS运行时文件系统接收用户发来的请求,经过判定,分别进行以下操作: 若为退出命令则退出CprFS运行时文件系统; 若为设置检查点请求,则执行步骤(2.6); 若为卷回恢复请求,则执行步骤(2.8); 否则,通过地址映射模块得到实际数据文件的位置,并执行步骤(2.3); 步骤(2.3)根据文件请求类型的不同,执行相应的缓存操作,把缓存数据记录在所述哈 希表的链表中,缓存命令记录在文件状态中; 步骤(2.4)若哈希表中缓存数据超过阈值,则通过后备缓存模块把部分缓存数据写入该 后备缓存区域; 步骤(2.5)所述CprFS运行时文件系统完成一次用户文件请求操作,返回步骤(2.2); 步骤(2.6)首先由冲突检测模块判断有无文件访问冲突,若有则取消事务,并退出系统; 否则执行数据提交模块中的提交操作; 步骤(2.7)完成检查点设置操作,返回步骤(2.2) 步骤(2.8)根据故障发生的位置不同来确定文件状态的卷回操作: 若在正常运行或者在内存保存过程中发生故障,则直接卷回至上一次检查点,并取消未 完成的事务; 若在文件检查点发生故障,则卷回至最新的检查点,并重新提交剩余记录; 步骤(2.9)卷回操作完成,返回步骤(2.2)。 【当前权利人】清华大学 【当前专利权人地址】北京市100084-82信箱 【专利权人类型】公立 【统一社会信用代码】12100000400000624D 【引证次数】4.0 【他引次数】4.0 【家族引证次数】4.0 【家族被引证次数】50