发明名称 一种用于Linux系统数据缓存分配的管理方法
摘要 本发明涉及一种计算机应用技术领域,具体地说是一种用于Linux系统数据缓存分配的管理方法,通常用于基于Linux操作系统构建的数据存储系统中,使数据缓存的分配与管理独立于Linux操作系统内核版本,且数据缓存的大小能够根据实际运行情况进行动态调整,同时,采用数据缓存记录技术,将元数据信息分配在内存中的固定位置,系统因故障而宕机后,在具有BBU(电池备份单元)的情况下,可恢复整个数据缓存的内容,避免存储系统因故障而造成的数据丢失,解决了传统Linux系统的数据分配与管理方法缺乏灵活性与可扩展性的问题,提高了数据缓存的分配与管理效率,增强了兼容性与可复用性,并提高了数据的可靠性。
申请公布号 CN101826055B 申请公布日期 2015.04.01
申请号 CN201010139175.2 申请日期 2010.04.06
申请人 浪潮电子信息产业股份有限公司 发明人 王文方
分类号 G06F12/08(2006.01)I 主分类号 G06F12/08(2006.01)I
代理机构 代理人
主权项 一种用于Linux系统数据缓存分配的管理方法,其特征在于,该系统体系结构包括:内核Patch模块1、缓存分配回收模块2、缓存访问接口模块3、缓存管理接口模块4和缓存故障重建模块5其中:内核Patch模块1将数据缓存的元数据信息分配在内存的固定位置,在Linux内核启动后,当执行到setup_memory函数时,动态增加min_low_p fn变量的值,从而预留出一段由原min_low_p fn值开始到新min_low_p fn值结束的固定的内存空间存储元数据信息,预留的内存空间大小由系统的全部内存空间所决定,其计算公式为:预留空间大小=系统内存空间大小<b>*</b>Hash表项的大小/当前系统Unit单元大小+元数据控制信息大小,元数据信息以链式Hash的方式进行组织,数据缓存被分配为固定大小的Unit单元,每个Unit单元具有全系统唯一的Unit标识,并作为键值将Unit单元连入Hash表中,Unit单元到Hash表项的计算公式如下:Unit单元对应的Hash表项的个数= Unit标识%Hash表项的个数这种Unit单元到Hash表项的对应方式可以保证在平均情况下,根据Unit标识,在Hash表项中只需一次查找即可找到对应的Unit单元,保证缓存数据的查找效率;缓存分配回收模块2提供Unit单元的分配与回收接口,分配接口以Unit标识及要求的Unit单元数量为传入参数,利用Linux系统的内存分配函数进行缓存分配,在缓存分配成功后,根据Unit标识将Unit单元连入元数据Hash表中,回收接口以Unit标识为传入参数,在元数据Hash表中查找对应的Unit单元,从Hash表中移除,利用Linux系统的内存回收函数进行缓存释放;缓存访问接口模块3提供Unit单元的访问接口,访问接口以Unit标识为传入参数,在元数据Hash表中查找对应的Unit单元,返回指向Unit单元的句柄;缓存管理接口模块4提供数据缓存的管理接口,包括缓存空间大小设定、Unit单元大小设定,缓存空间大小设定以缓存空间的大小为传入参数,更新缓存空间大小阈值,若当期缓存空间大于该阈值则进行Unit单元释放,直到缓存空间小于阈值,Unit单元大小设定以Unit单元的大小为传入参数,调用缓存分配回收模块2的回收接口,释放缓存中原有的Unit单元,此后Unit单元的分配将以新设定的Unit单元大小为单位;缓存故障重建模块5在元数据信息区的保存一个故障标记,系统启动后该标记置位,系统正常关闭后清空该标记,系统启动后若发现故障标记置位,则表明系统为非正常关闭,遍历元数据的Hash列表,获取Unit单元的句柄,并标记为已占用,避免该空间写入新数据内容而造成数据丢失。
地址 250101 山东省济南市高新区舜雅路1036号