[发明专利]一种用于Linux系统数据缓存分配的管理方法有效
申请号: | 201010139175.2 | 申请日: | 2010-04-06 |
公开(公告)号: | CN101826055A | 公开(公告)日: | 2010-09-08 |
发明(设计)人: | 王文方 | 申请(专利权)人: | 山东高效能服务器和存储研究院 |
主分类号: | G06F12/08 | 分类号: | G06F12/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 250014 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 linux 系统 数据 缓存 分配 管理 方法 | ||
技术领域
本发明涉及一种计算机应用技术领域,具体地说是一种用于Linux系统数据缓存分配的管理方法.
背景技术
在基于Linux操作系统构建的数据存储系统中,为提高数据的读写性能,通常采用独立划分数据缓存区的方法,但由于Linux内核内存分配的固有限制,如动态分配的内存空间无法大于1024个页面,为内核传入mem参数切分得到的内存空间无法动态伸缩等,因而导致传统的基于Linux固有内存分配机制的数据缓存的分配与管理方法缺乏灵活性与可扩展性。
在系统宕机后,虽然在具有BBU(电池备份单元)的情况下,可以保证,内存中的缓存数据仍然存在,但由于缓存空间均为动态分配,无法通过有效的机制重建整个数据缓存池,因此对存储系统来说将可能造成关键数据的丢失。
因此,如何使用一种数据缓存的分配与管理方法,使缓存的分配与管理独立于Linux操作系统内核版本,缓存大小能够根据需要进行动态调整,且在系统宕机后,在具有BBU(电池备份单元)的情况下能够重建整个数据缓存池,从而避免缓存失效而造成的数据丢失是基于Linux操作系统构建的数据存储系统所面临的一个主要问题。
发明内容
本发明提供一种用于Linux系统的数据缓存分配管理方法,通常用于基于Linux操作系统构建的数据存储系统中,使数据缓存的分配与管理独立于Linux操作系统内核版本,且数据缓存的大小能够根据实际运行情况进行动态调整,同时,采用数据缓存记录技术,将元数据信息分配在内存中的固定位置,系统因故障而宕机后,在具有BBU(电池备份单元)的情况下,可恢复整个数据缓存的内容,避免存储系统因故障而造成的数据丢失,解决了传统Linux系统的数据分配与管理方法缺乏灵活性与可扩展性的问题,提高了数据缓存的分配与管理效率,增强了兼容性与可复用性,并提高了数据的可靠性。
本发明的目的是按以下方式实现的,该系统体系结构包括:内核Patch模块1、缓存分配回收模块2、缓存访问接口模块3、缓存管理接口模块4和缓存故障重建模块5其中:
内核Patch模块1将数据缓存的元数据信息分配在内存的固定位置,在Linux内核启动后,当执行到setup_memory函数时,动态增加min_low_p fn变量的值,从而预留出一段由原min_low_p fn值开始到新min_low_p fn值结束的固定的内存空间存储元数据信息。预留的内存空间大小由系统的全部内存空间所决定,其计算公式为:
预留空间大小=系统内存空间大小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表中查找对应的Unit单元,从Hash表中移除,利用Linux系统的内存回收函数进行缓存释放。
缓存访问接口模块3提供Unit单元的访问接口。访问接口以Unit标识为传入参数,在元数据Hash表中查找对应的Unit单元,返回指向Unit单元的句柄。Unit单元的句柄为标准的内核地址空间的形式,从而可像普通内存一样对Unit单元进行数据访问操作。
缓存管理接口模块4提供数据缓存的管理接口,包括缓存空间大小设定、Unit单元大小设定。缓存空间大小设定以缓存空间的大小为传入参数,更新缓存空间大小阈值,若当期缓存空间大于该阈值则进行Unit单元释放,直到缓存空间小于阈值。Unit单元大小设定以Unit单元的大小为传入参数,调用缓存分配回收模块2的回收接口,释放缓存中原有的Unit单元,此后Unit单元的分配将以新设定的Unit单元大小为单位。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东高效能服务器和存储研究院,未经山东高效能服务器和存储研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010139175.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:信道质量指示上报控制方法、基站以及用户设备
- 下一篇:水平度检测装置
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置