一种辅助记录的组织方法技术

技术编号:11467110 阅读:64 留言:0更新日期:2015-05-17 22:26
本发明专利技术提供一种辅助记录的组织方法,该方法包括逻辑日志转化为数据日志并在内存追加记录的过程和文件回收的过程。本发明专利技术提供的方法将文件拆分成了小文件,使回收时的内存消耗更加可控,同时,由于回收过程由独立后台线程运行,内存分配失败的代价也大大降低。将耗时的严重影响系统性能的阶段从关键路径剥离出来,提升了关键路径的处理速度,大大提高了用户体验的满意度。

【技术实现步骤摘要】
一种辅助记录的组织方法
本专利技术涉及一种分布式文件操作方法,具体涉及一种辅助记录的组织方法。
技术介绍
并行存储系统中,经常需要记录一些辅助记录或者索引来达到特定目的,如在创建过程中记录哪些磁盘上保存了该文件的数据,这样我们就能准确的知道那个磁盘上保存了哪些文件,当发生磁盘故障时能够快速的修复这些文件;服务端收到客户端的删除请求时只删除dentry项,并不回收磁盘数据,而是将删除记录下来后应答客户端,后台由独立回收线程完成真正的删除,以达到快速响应用户的目的。在日志分布式文件系统中,这些记录同样需要记录日志以达到跟元数据相同的保护级别,否则当系统发生掉电等故障时这些记录有可能是不可信的。这些记录具有以下特点:同类型记录之间是独立的,对记录的存储位置没有特别要求,只在需要时能够拿到所有记录,可以含已失效的记录,但有效记录不能缺少。为了不影响文件系统的并发性能,这些辅助记录所在的事务是不可能在辅助记录锁的保护下进行的,所以这类日志只能记录逻辑日志,利用日志处理线程的无并发特性在预处理时转化成数据日志以保证每条记录在文件内偏移量的唯一性。这类记录的原有实现方式是每类记录放在同一个文件,当文件中的某个记录无效时,添加一条对消记录,在需要回收该文件时,从头到尾扫描文件记录,如果记录及对消记录同时存在则这两条记录都会被删除,剩余记录放入原文件以达到回收目的。这种实现方式存在以下问题:1)回收时可能由于内存不足失败。由于回收时需要将文件内所有记录load到内存并且建立内存hash结构以方便记录及其对消记录配对,当系统内存资源本身就比较紧张的情况下,可能由于内存分配失败导致回收失败。2)如果日志系统的逻辑日志到数据日志转化过程处于关键路径,这种实现方式是不可接受的,这会使分布式文件系统产生锯齿状性能,甚至1分钟内不能响应用户,严重影响用户体验。这是由于回收会改变文件长度,进而改变新放入记录的偏移量,所以回收过程必须与逻辑日志到数据日志的转化过程互斥,原来的实现方式中回收也在日志处理线程中进行。当记录文件非常大时,即使加上预读机制,这一过程的耗时相对于文件系统的服务能力也是非常大的。对于分布式文件系统是不可接受的。
技术实现思路
为了克服上述现有技术的不足,本专利技术提供一种辅助记录组织方法,该方法将记录拆分成多个独立文件进行存放,将耗时的严重影响系统性能的阶段从关键路径剥离出来。使回收时的内存消耗更加可控,同时由于回收过程由独立后台线程运行,内存分配失败的代价也大大降低。为了实现上述专利技术目的,本专利技术采取如下技术方案:一种辅助记录的组织方法,该方法包括逻辑日志转化为数据日志并在内存追加记录的过程和文件回收的过程。本专利技术提供的第一优选技术方案中,所述逻辑日志转化为数据日志并在内存追加记录的过程的步骤如下:(1)根据逻辑日志查找记录的内存结构;(2)获取要写入的页号、页内偏移量和页所属的文件号;(3)从页缓存中获取页并将页引用计数加1;(4)根据页内剩余空间及本次要追加写入的记录条数将记录拷入页缓存;若页剩余空间不足则将本页放满后分配新页直到将本次写入记录全部放入页缓存;(5)对新写入的记录生成数据日志,并获取页的引用计数;(6)更新记录内存结构;(7)释放从页缓存获取页时所加计数,即将页引用计数减1。本专利技术提供的第二优选技术方案中,所述文件回收过程的步骤如下:(1)找到要回收的记录类型的内存结构;(2)从最小的文件号开始对每个文件进行扫描;(3)读取文件号对应的文件中的每一页,并判断页内记录是否仍然有效,若有效则将记录放入临时缓存中;(4)判断文件内无效记录是否达到初设比例,若没有达到初设比例,则跳转到步骤(3);若达到初设比例,则对临时缓存中的记录生成逻辑日志,并生成删除无效页对应的文件的删除日志。本专利技术提供的第三优选技术方案中,所述逻辑日志为操作记录的日志,如添加、修改和删除一项记录。本专利技术提供的第四优选技术方案中,所述数据日志为在特定文件的特定偏移量写入具体数据的日志。与最接近的现有技术相比,本专利技术的优异效果在于:本专利技术提供的技术方案将文件拆分成了小文件,使回收时的内存消耗更加可控,同时,由于回收过程由独立后台线程运行,内存分配失败的代价也大大降低。将耗时的严重影响系统性能的阶段从关键路径剥离出来,提升了关键路径的处理速度,大大提高了用户体验的满意度。附图说明图1是磁盘结构示意图;图2是内存结构示意图;图3是逻辑日志转为数据日志的流程图;图4是记录文件回收的流程图。具体实施方式下面结合附图对本专利技术作进一步详细说明。如图1所示,组织方法的磁盘结构为每类记录元数据文件都包含每类记录的唯一标识fid和无效记录数invalidnr。当无效记录数达到一定比例才进行回收,所述一定比例默认为30%,也可以自由调整。每类记录磁盘上有多个记录文件。如图2所示,组织方法的内存结构包括用于保护结构内容的读写锁rwlock、本类记录当前最小subid号min_subid(便于获取回收及顺序读取的起始文件)、本类记录当前最大subid号max_subid(用于文件满创建新文件时subid分配,也用于追加记录时文件查找)、追加记录时需要写入的页号last_pgidx、追加记录时的页内偏移pgoff、磁盘元数据content和页缓存pgtree。页内存结构包括磁盘内容是否读入页缓存标记flag、本页所属的文件subid、本页在文件内的偏移量pgidx、本页内记录长度(单个记录长度不一定能被页大小整除,所有有效记录长度可能与页大小不同)rdlen、页引用计数(只有当页引用计数为1时才能回收页内存,页初始计数为1,当页被使用时需要抓页计数,使用完毕释放计数,此外,对页记录日志也要抓页计数,当日志将数据应用到磁盘后释放页计数,这样可以防止页提前释放导致旧数据被读取)refcnt、记录内容(记录在页内逐条放置并在内存记录追加记录不会跨页存放)rdblk。如图3所示,逻辑日志转为数据日志并在内存追加记录流程,具体步骤如下:(1)根据逻辑日志查找记录内存结构;(2)获取要写入的页号、页内偏移量和页所属的文件号subid;(3)从页缓存pgtree中获取页并加计数;(4)根据页内剩余空间及本次要追加写入的记录条数将记录拷入页缓存;若页剩余空间不足则将本页放满后分配新页直到将本次写入记录全部放入页缓存;(5)对新写入的记录生成数据日志,并获取页的引用计数;(6)更新记录内存结构;(7)释放从页缓存获取页时所加计数,即将页引用计数减1。如图4所示,所述文件回收过程的步骤如下:(1)找到要回收的记录类型的内存结构;(2)从最小的文件号开始对每个文件进行扫描;(3)读取文件号对应的文件中的每一页,并判断页内记录是否仍然有效,若有效则将记录放入临时缓存中;(4)判断文件内无效记录是否达到初设比例,若没有达到初设比例,则跳转到步骤(3);若达到初设比例,则对临时缓存中的记录生成逻辑日志,并生成删除无效页对应的文件的删除日志。逻辑日志为操作记录的日志,如添加、修改和删除一项记录。数据日志为在特定文件的特定偏移量写入具体数据的日志。最后应当说明的是:以上实施例仅用以说明本专利技术的技术方案而非对其限制,尽管参照上述实施例对本专利技术进行了详细的说明,所属领域的普通技术人员依然可本文档来自技高网
...
一种辅助记录的组织方法

【技术保护点】
一种辅助记录的组织方法,其特征在于,该方法包括逻辑日志转化为数据日志并在内存追加记录的过程和文件回收的过程。

【技术特征摘要】
1.一种辅助记录的组织方法,其特征在于,该方法包括逻辑日志转化为数据日志并在内存追加记录的过程和文件回收的过程;所述逻辑日志转化为数据日志并在内存追加记录的过程的步骤如下:(1)根据逻辑日志查找记录的内存结构;(2)获取要写入的页号、页内偏移量和该页所属的文件号;(3)从页缓存中获取该页并将该页引用计数加1;(4)根据该页内剩余空间及本次要追加写入的记录条数将记录拷入该页缓存;若该页剩余空间不足则将本页放满后分配新页直到将本次写入记录全部放入该页缓存;(5)对新写入的记录生成数据日志,并获取该页的引用计数;(6)更新记录内存结构;(7)释放从所述页缓存获取所述页时所加计数,即将所述页引用计数减1;...

【专利技术属性】
技术研发人员:马照云杨浩马振杰
申请(专利权)人:曙光云计算技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1