CN101826055B - 一种用于Linux系统数据缓存分配的管理方法 - Google Patents

一种用于Linux系统数据缓存分配的管理方法 Download PDF

Info

Publication number
CN101826055B
CN101826055B CN201010139175.2A CN201010139175A CN101826055B CN 101826055 B CN101826055 B CN 101826055B CN 201010139175 A CN201010139175 A CN 201010139175A CN 101826055 B CN101826055 B CN 101826055B
Authority
CN
China
Prior art keywords
unit
cache
size
data
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201010139175.2A
Other languages
English (en)
Other versions
CN101826055A (zh
Inventor
王文方
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN201010139175.2A priority Critical patent/CN101826055B/zh
Publication of CN101826055A publication Critical patent/CN101826055A/zh
Application granted granted Critical
Publication of CN101826055B publication Critical patent/CN101826055B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及一种计算机应用技术领域,具体地说是一种用于Linux系统数据缓存分配的管理方法,通常用于基于Linux操作系统构建的数据存储系统中,使数据缓存的分配与管理独立于Linux操作系统内核版本,且数据缓存的大小能够根据实际运行情况进行动态调整,同时,采用数据缓存记录技术,将元数据信息分配在内存中的固定位置,系统因故障而宕机后,在具有BBU(电池备份单元)的情况下,可恢复整个数据缓存的内容,避免存储系统因故障而造成的数据丢失,解决了传统Linux系统的数据分配与管理方法缺乏灵活性与可扩展性的问题,提高了数据缓存的分配与管理效率,增强了兼容性与可复用性,并提高了数据的可靠性。

Description

一种用于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单元大小为单位。
缓存故障重建模块5在元数据信息区的保存一个故障标记,系统启动后该标记置位,系统正常关闭后清空该标记。系统启动后若发现故障标记置位,则表明系统为非正常关闭,遍历元数据的Hash列表,获取Unit单元的句柄,并标记为已占用,避免该空间写入新数据内容而造成数据丢失。
本发明的有益效果是,用于Linux系统的数据缓存分配管理技术,使数据缓存的分配独立于Linux操作系统,缓存大小可根据需要进行动态调整,且在系统宕机后,在具有BBU(电池备份单元)的情况下能够重建整个数据缓存池。数据缓存的大小能够根据实际运行情况进行动态调整,且系统因故障而宕机后,在具有BBU(电池备份单元)的情况下,可恢复整个数据缓存的内容,采用数据缓存记录技术,将元数据信息分配在内存中的固定位置,系统因故障而宕机后,在具有BBU(电池备份单元)的情况下,可恢复整个数据缓存的内容,避免存储系统因故障而造成的数据丢失,解决了传统Linux系统的数据分配与管理方法缺乏灵活性与可扩展性的问题,提高了数据缓存的分配与管理效率,增强了兼容性与可复用性,并提高了数据的可靠性。
附图说明
图l是元数据Hash表的组织结构图;
图2是缓存数据分配流程图;
图3是缓存数据回收流程图;
图4是缓存数据访问流程图;
图5是缓存数据故障重建流程图。
具体实施方式
参照说明书附图对本发明的方法作以下详细地说明。
本发明体系结构主要包括:内核Patch模块1、缓存分配回收模块2、缓存访问接口模块3、缓存管理接口模块4和缓存故障重建模块5。
在一个典型的应用环境里,在进行缓存数据分配时,调用缓存分配回收模块2提供的接口,传入Unit单元标识,在Hash表中查找对应的Unit单元,若未找到则调用内核函数为Unit单元分配页面,并连入Hash表,否则返回缓存数据分配失败。在进行缓存数据回收时,调用缓存分配回收模块2提供的接口,传入Unit单元标识,在Hash表中查找对应的Unit单元,若未找到则返回缓存数据回收失败,否则调用内核函数为回收Unit单元页面,并从Hash表删除。在进行缓存数据访问时,调用缓存访问模块3提供的接口,传入Unit单元标识,在Hash表中查找对应的Unit单元,若未找到则返回缓存数据访问失败,否则返回Unit单元句柄。在系统每次启动后会进行故障检测,检查元数据区中的故障标记,若故障标记未置位,则执行正常的系统启动流程,若故障标记已置位,则遍历Hash表,取得缓存池中的所有Unit单元,并将状态设置为预留,避免Unit单元被新缓存数据覆盖。
这种技术与传统Linux系统的数据缓存分配技术的不同之处在于其利用位于内存固定位置的Hash表保存缓存数据信息,便于对数据进行分配与回收,方法独立于Linux操作系统内核版本,具有很强的兼容性与可复用性,同时可在系统宕机后会数据缓存进行重建,提高了缓存数据的可靠性。

Claims (1)

1.一种用于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表中移除,利用Linux系统的内存回收函数进行缓存释放;
缓存访问接口模块3提供Unit单元的访问接口,访问接口以Unit标识为传入参数,在元数据Hash表中查找对应的Unit单元,返回指向Unit单元的句柄;
缓存管理接口模块4提供数据缓存的管理接口,包括缓存空间大小设定、Unit单元大小设定,缓存空间大小设定以缓存空间的大小为传入参数,更新缓存空间大小阈值,若当期缓存空间大于该阈值则进行Unit单元释放,直到缓存空间小于阈值,Unit单元大小设定以Unit单元的大小为传入参数,调用缓存分配回收模块2的回收接口,释放缓存中原有的Unit单元,此后Unit单元的分配将以新设定的Unit单元大小为单位;
缓存故障重建模块5在元数据信息区的保存一个故障标记,系统启动后该标记置位,系统正常关闭后清空该标记,系统启动后若发现故障标记置位,则表明系统为非正常关闭,遍历元数据的Hash列表,获取Unit单元的句柄,并标记为已占用,避免该空间写入新数据内容而造成数据丢失。
CN201010139175.2A 2010-04-06 2010-04-06 一种用于Linux系统数据缓存分配的管理方法 Active CN101826055B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010139175.2A CN101826055B (zh) 2010-04-06 2010-04-06 一种用于Linux系统数据缓存分配的管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010139175.2A CN101826055B (zh) 2010-04-06 2010-04-06 一种用于Linux系统数据缓存分配的管理方法

Publications (2)

Publication Number Publication Date
CN101826055A CN101826055A (zh) 2010-09-08
CN101826055B true CN101826055B (zh) 2015-04-01

Family

ID=42689979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010139175.2A Active CN101826055B (zh) 2010-04-06 2010-04-06 一种用于Linux系统数据缓存分配的管理方法

Country Status (1)

Country Link
CN (1) CN101826055B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104836798B (zh) * 2015-04-15 2018-11-20 国家计算机网络与信息安全管理中心 一种维护客户端连接信息的方法及装置
CN104850470A (zh) * 2015-05-12 2015-08-19 浪潮电子信息产业股份有限公司 一种快速恢复Linux系统下误删除数据的方法
CN109491609B (zh) * 2018-11-02 2022-04-22 郑州云海信息技术有限公司 一种缓存数据处理方法、装置、设备及可读存储介质
CN113419977B (zh) * 2021-05-28 2023-03-21 济南浪潮数据技术有限公司 一种服务器中pcie设备管理系统和服务器
CN114356440B (zh) * 2021-12-21 2023-11-10 西安四叶草信息技术有限公司 系统优化方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1427342A (zh) * 2001-12-21 2003-07-02 上海贝尔有限公司 一种内存管理系统及其分配方法
CN1979450A (zh) * 2005-12-05 2007-06-13 英业达股份有限公司 高速缓存数据回存方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1427342A (zh) * 2001-12-21 2003-07-02 上海贝尔有限公司 一种内存管理系统及其分配方法
CN1979450A (zh) * 2005-12-05 2007-06-13 英业达股份有限公司 高速缓存数据回存方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Linux下物理内存管理技术探讨;楼程辉等;《计算机应用研究》;20000828;第2000年卷(第8期);第92-93页 *
Linux内存管理实现的分析与研究;肖竟华等;《计算机技术与发展》;20070228;第17卷(第2期);第187-189页 *
Linux内存管理机制的分析与研究;李小群等;《计算机科学》;20020415;第29卷(第4期);第18-20页 *

Also Published As

Publication number Publication date
CN101826055A (zh) 2010-09-08

Similar Documents

Publication Publication Date Title
CN103026346B (zh) 用于从固态存储器设备读取及写入数据的方法及存储系统
CN103577121B (zh) 一种基于Nand Flash的高可靠线性文件存取方法
KR102137761B1 (ko) 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법
CN102163175B (zh) 一种基于局部性分析的混合地址映射方法
CN102567427B (zh) 一种对象数据处理方法及装置
WO2016086819A1 (zh) 将数据写入叠瓦状磁记录smr硬盘的方法及装置
CN104572478A (zh) 数据存取方法和数据存取装置
CN105095094A (zh) 内存管理方法和设备
CN105718530A (zh) 文件存储系统及其文件存储控制方法
CN102843396A (zh) 一种分布式缓存系统中的数据写入及读取方法及装置
CN101826055B (zh) 一种用于Linux系统数据缓存分配的管理方法
KR20100081880A (ko) 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법
CN102841851A (zh) 闪存管理方法和闪存设备
CN103049224B (zh) 将数据导入物理磁带的方法、装置和系统
CN103838853A (zh) 一种基于不同存储介质的混合文件系统
CN104866428A (zh) 数据存取方法和数据存取装置
US11640244B2 (en) Intelligent block deallocation verification
KR102263040B1 (ko) 멀티 코어 솔리드 스테이트 드라이브의 운용 방법
CN103544110A (zh) 一种基于固态盘的块级连续数据保护方法
CN115794669A (zh) 一种扩展内存的方法、装置及相关设备
CN109558335A (zh) 一种基于Nor Flash存储器的嵌入式系统的文件存储格式
CN110955488A (zh) 一种持久性内存的虚拟化方法及系统
US20240086092A1 (en) Method for managing namespaces in a storage device and storage device employing the same
CN102955787A (zh) 一种文件目录表的使用方法、文件写入方法及应用的主电路板、cpu和外部存储器
CN106775684A (zh) 一种基于新型非易失性存储器的磁盘缓存掉电恢复方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: SHANDONG LANGCHAO HUICAI INVESTMENT HOLDING CO., L

Free format text: FORMER OWNER: SHANDONG HIGH-END SERVER + STORAGE RESEARCH INSTITUTE

Effective date: 20121017

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 250014 JINAN, SHANDONG PROVINCE TO: 250101 JINAN, SHANDONG PROVINCE

TA01 Transfer of patent application right

Effective date of registration: 20121017

Address after: Xinluo Avenue high tech Zone of Ji'nan City, Shandong province 250101 No. 1768 Qilu Software building B block 3 layer

Applicant after: Shandong wave color Klc Holdings Ltd

Address before: 250014 No. 224 mountain road, Lixia District, Shandong, Ji'nan

Applicant before: Shandong High-End Server & Storage Research Institute

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: LANGCHAO ELECTRONIC INFORMATION INDUSTRY CO., LTD.

Free format text: FORMER OWNER: SHANDONG LANGCHAO HUICAI INVESTMENT HOLDING CO., LTD.

Effective date: 20130724

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20130724

Address after: 250101 Shandong Province, Ji'nan City hi tech Development Zone, Nga Road No. 1036

Applicant after: Langchao Electronic Information Industry Co., Ltd.

Address before: Xinluo Avenue high tech Zone of Ji'nan City, Shandong province 250101 No. 1768 Qilu Software building B block 3 layer

Applicant before: Shandong wave color Klc Holdings Ltd

C14 Grant of patent or utility model
GR01 Patent grant