发明名称 一种应用于内容解析存储的基于内容的缓存方法
摘要 本发明涉及一种应用于内容解析存储的基于内容的缓存方法,具体包括如下内容:在CAS文件系统中嵌入一个以缓存内容作哈希值作为缓存索引的缓存模块,以缓存模块的读写操作代替原有磁盘操作。当CAS文件系统发起磁盘读写操作时,缓存模块先检查对应数据块是否已被缓存,如已被缓存则可直接从缓存模块内部的缓存区调出使用;当检查数据不在缓存区时,再由缓存模块发起实际读写操作,以减少实际读写次数。缓存区是定义在缓存模块中的一个存储区,由多个缓存单元组成,每个缓存单元可以缓存一个数据块。本发明方法可以提供一种在CAS文件系统中使用的缓存机制,来有效地提高CAS文件系统的性能。
申请公布号 CN102508790B 申请公布日期 2014.08.13
申请号 CN201110365027.7 申请日期 2011.11.17
申请人 北京航空航天大学 发明人 肖利民;龚韬;赵国玉;李秀桥;阮利
分类号 G06F12/08(2006.01)I 主分类号 G06F12/08(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 一种应用于内容解析存储的基于内容的缓存方法,具体包括如下内容:在CAS文件系统中嵌入一个以缓存内容作哈希值作为缓存索引的缓存模块,以缓存模块的读写操作代替原有磁盘操作;当CAS文件系统发起磁盘读写操作时,缓存模块先检查对应数据块是否已被缓存,如已被缓存则可直接从缓存模块内部的缓存区调出使用;当检查数据不在缓存区时,再由缓存模块发起实际读写操作,以减少实际读写次数;所述的缓存区是定义在缓存模块中的一个存储区,由多个缓存单元组成,每个缓存单元可以缓存一个数据块;其中,对于CAS文件读操作,CAS需要从共享存储区读到哈希值序列对应的数据块,这时在缓存模块内,先调用cache_read()进行读缓存操作;若成功从自身的缓存区读到了需要的数据块,则直接返回给CAS;否则,发起磁盘读操作读取共享存储区,获得数据块后,通过cache_write()将数据块写入缓存区,再返回上层;其中,对于CAS文件写操作,当CAS发起写操作时,CAS需要向共享存储区写入一个哈希值序列和数据块的映射,此时缓存模块同样以哈希值序列为索引,调用cache_write()将数据块保存到自己的缓存区,然后发起实际磁盘写操作写入共享存储区;其中,所述的cache_read()是一个缓存区的读操作,由传入的缓存索引在缓存区寻找对应的缓存单元,若缓存命中则拷贝缓存单元内的数据块,若不命中则返回失败标志;所述的cache_write()是一个缓存区的写操作,由数据块计算出索引值,并在缓存区寻找缓存单元保存;缓存索引是由哈希值序列计算得;在寻址一个缓存单元时,先由哈希值序列计算出缓存索引,找到对应组,然后在组里通过遍历的方法确定一个缓存单元;在cache_read()里,需要做读取缓存操作;先由哈希值序列计算出缓存索引,在索引对应的组内遍历与哈希值序列比对,若找到相同的哈希值序列,即认为缓存命中,返回缓存单元数据区的内容;并且重置缓存单元生命值;若全部不命中,则认为缓存没有命中,将组内的缓存单元生命值减小一个单位;返回值代表着缓存是否被命中;在cache_write()里,需要做记录缓存操作;先由哈希值序列计算出缓存索引,在索引对应的组内遍历与哈希值序列比对,若找到相同的哈希值序列,即认为缓存已经被中,不需要做其他操作;若没有命中,则查找生命值最小的缓存单元,将之替换;替换操作包括复制数据区,复制哈希值序列以及重置生命值的操作;生命值用于决定在哪个缓存单元被替换;在缓存单元刚记录数据时被重置,以后,每一次被遍历到时自减一个单位;自减到0后缓存单元被认为不再有效;替换操作查找生命值最小的缓存单元,将之替换成新的数据。
地址 100191 北京市海淀区学院路37号