CN112764664A - 一种磁盘缓存方法及装置 - Google Patents

一种磁盘缓存方法及装置 Download PDF

Info

Publication number
CN112764664A
CN112764664A CN201911002144.XA CN201911002144A CN112764664A CN 112764664 A CN112764664 A CN 112764664A CN 201911002144 A CN201911002144 A CN 201911002144A CN 112764664 A CN112764664 A CN 112764664A
Authority
CN
China
Prior art keywords
data
disk
data block
user
block
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.)
Granted
Application number
CN201911002144.XA
Other languages
English (en)
Other versions
CN112764664B (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.)
Shenzhen Ipanel TV Inc
Original Assignee
Shenzhen Ipanel TV Inc
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 Shenzhen Ipanel TV Inc filed Critical Shenzhen Ipanel TV Inc
Priority to CN201911002144.XA priority Critical patent/CN112764664B/zh
Publication of CN112764664A publication Critical patent/CN112764664A/zh
Application granted granted Critical
Publication of CN112764664B publication Critical patent/CN112764664B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种磁盘缓存方法及装置,通过在系统中创建共享内存,并且该共享内存包括索引区和数据区,响应于用户的磁盘读取数据请求,判断预设的索引区中的LRU队列中是否有与磁盘读取数据请求相匹配的目标数据,如果是,获取目标数据,并将目标数据发送至用户,如果否,在数据区获取空闲数据块,将从磁盘读取到的数据存储到空闲数据块;将存储数据后的数据块设置在LRU队列的头部,并将与存储数据后的数据块的计数器进行数值更新;将存储数据后的数据块中的数据发送给用户。实现了最大化使用内存,且通过LRU队列来对各个磁盘的使用进行自动调整,提高了磁盘缓存的使用效率。

Description

一种磁盘缓存方法及装置
技术领域
本发明涉及数据读写技术领域,特别是涉及一种磁盘缓存方法及装置。
背景技术
在Linux系统的磁盘的配置中,一般都会给磁盘配置一个缓存,用来提高数据的读写性能。配置缓存的大小根据业务的需求进行调整。通常一台服务器,一般有多个硬盘,特别是机械盘(SATA盘)。若每一个硬盘都配置一个缓存,则有多少个硬盘就需要配置多少个缓存与之对应。但是,在实际使用的过程中,磁盘的数据读取并不均匀,且磁盘上的数据热度在磁盘各自的缓存中也无法正确的表现,使得磁盘缓存的使用效率较低。
发明内容
针对于上述问题,本发明提供一种磁盘缓存方法及装置,提高了磁盘缓存的使用效率。
一种磁盘缓存方法,该方法包括:
响应于用户的磁盘读取数据请求,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据,如果是,获取所述目标数据,并将所述目标数据发送至用户,其中,预先创建有与磁盘对应的共享内存,所述共享内存划分为索引区和数据区,所述索引区划分为若干个LRU队列,所述数据区根据所述磁盘的数据块的大小划分为若干个数据块;
如果否,在所述数据区获取空闲数据块,将从所述磁盘读取到的数据存储到所述空闲数据块;
将存储数据后的数据块设置在所述LRU队列的头部,并将与所述存储数据后的数据块的计数器进行数值更新;
将所述存储数据后的空闲数据块中的数据发送给所述用户。
可选地,该方法还包括:
响应于所述数据区中的所有的空闲数据块均被存储有数据,根据存储数据后的空闲数据块的计数器对应的数值,确定所述LRU队列中的第一目标数据块;
将所述第一目标数据块确定为当前磁盘需要缓存的磁盘。
可选地,所述第一目标数据块为所述存储数据后的空闲数据块的计数器对应的数值,在所有数据块的计数器对应的数值中最小的数据块。
可选地,所述磁盘的LRU队列头信息中有磁盘的标识信息,其中,所述响应于用户的磁盘读取数据请求,包括:
对用户的磁盘读取数据请求进行解析,获得数据块的索引编号,其中,所述索引编号表征数据块和磁盘编号的映射标识,使得根据所述数据块的索引编号,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据。
可选地,该方法还包括:
响应于预设的索引区中的LRU队列中没有与所述磁盘读取数据请求相匹配的目标数据,判断用户读取的数据量是否小于数据量阈值,如果是,则从所述磁盘读取数据,并将读取到的数据返回给所述用户;
如果否,则通过数据块的标识信息指定的磁盘的位置加上所述数据块内部的偏移大小,将读取到的数据发送给用户。
可选地,所述将与存储数据后的空闲数据块的计数器进行数值更新,包括:
响应于通过数据区的数据块将数据返回给用户,将所述数据块对应的计数器的数值加1;
当数据发送给用户且发送完毕,将所述数据块对应的计数器的数值减1。
可选地,该方法还包括:
将所述数据区的数据块的时间戳设置为数据被读取时的时间;
根据时间戳对应的时间,确定第二目标数据块;
将所述第二目标数据块在所述LRU队列中删除。
可选地,所述磁盘的LRU队列头信息中还包括队列锁,所述队列锁为多个进程之间操作所述磁盘的LRU队列的状态锁。
一种磁盘缓存装置,该装置包括:
判断单元,用于响应于用户的磁盘读取数据请求,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据,如果是,获取所述目标数据,并将所述目标数据发送至用户,其中,预先创建有与磁盘对应的共享内存,所述共享内存划分为索引区和数据区,所述索引区划分为若干个LRU队列,所述数据区根据所述磁盘的数据块的大小划分为若干个数据块;
数据存储单元,用于如果否,在所述数据区获取空闲数据块,将从所述磁盘读取到的数据存储到所述空闲数据块;
数据更新单元,用于将存储数据后的数据块设置在所述LRU队列的头部,并将与所述存储数据后的数据块的计数器进行数值更新;
数据发送单元,用于将所述存储数据后的数据块中的数据发送给所述用户。
可选地,该装置还包括:
第一确定单元,用于响应于所述数据区中的所有的空闲数据块均被存储有数据,根据存储数据后的空闲数据块的计数器对应的数值,确定所述LRU队列中的第一目标数据块;
第二确定单元,用于将所述第一目标数据块确定为当前磁盘需要缓存的磁盘。
相较于现有技术,本发明提供了一种磁盘缓存方法及装置,通过在系统中创建共享内存,并且该共享内存包括索引区和数据区,响应于用户的磁盘读取数据请求,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据,如果是,获取所述目标数据,并将所述目标数据发送至用户,如果否,在所述数据区获取空闲数据块,将从所述磁盘读取到的数据存储到所述空闲数据块;将存储数据后的数据块设置在所述LRU队列的头部,并将与所述存储数据后的数据块的计数器进行数值更新;将所述存储数据后的数据块中的数据发送给所述用户。实现了最大化使用内存,且通过LRU队列来对各个磁盘的使用进行自动调整,提高了磁盘缓存的使用效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种磁盘缓存方法的流程示意图;
图2为本发明实施例提供的一种磁盘缓存装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
为了能够对本发明实施例进行说明,下面对本发明中的相关术语进行解释说明。
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操作和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
磁盘:计算机的外部存储器中也采用了类似磁带的装置,比较常用的一种叫磁盘,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失。
数据块:是一组按顺序连续排列在一起的几组记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位。是数据的物理记录,与数据的逻辑记录(逻辑上有联系,在存储器上占有一组邻接单元的数据单位)之间的对应关系有三种方式:一个块即为一个记录;一个块包含若干个逻辑记录;一个逻辑记录占有几个块。数据块的大小可以是固定的或是可变的,块与块之间有间隙。设计数据块大小,受到多方面因素的影响,包括输入、输出效率,存储空间代价以及计算机应用特点等。
每一个数据块都有对应的一个索引节点,索引节点中保存有数据块的索引号,文件系统根据索引号来读取该数据块的数据。
LRU:是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最少使用的页面予以淘汰。
在本发明实施例中提供了一种磁盘缓存方法,参见图1,该方法包括:
S101、响应于用户的磁盘读取数据请求,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据,如果是,则执行步骤S102,否则执行步骤S103;
S102、获取所述目标数据,并将所述目标数据发送至用户;
S103、在所述数据区获取空闲数据块,将从所述磁盘读取到的数据存储到所述空闲数据块;
S104、将存储数据后的数据块设置在所述LRU队列的头部,并将与所述存储数据后的数据块的计数器进行数值更新;
S105、将所述存储数据后的数据块中的数据发送给所述用户。
需要说明的是,在数据区获取到空闲数据块,当将磁盘读取到的数据存储到该空闲数据块后,原来的空闲数据块已经存储了数据,即成为了存储数据后的数据块。具体的,在初始化的时候,所有数据块所有的数据块都是空闲的,是由于计数器标识为0,这样的数据块是空闲数据块,其作用在于,每一个队列都有数据块进行使用。其区别于已经存储了数据的数据块。
在本发明实施例中,在Linux系统中创建一个共享内存,共享内存分为两部分:索引区和数据区。索引区根据系统磁盘的个数划分为若干个大小相等的LRU队列,且这些LRU的每一个队列都可以全部记录数据区中的所有的数据块。将数据区根据磁盘的数据块的大小划分为若干个数据块,即磁盘中的一个数据块的大小和数据区的每一个数据块的大小是相等的。
索引区中的每一个LRU对应一个磁盘,每一个磁盘固定对应一个自己的LRU。用户每次从某一个磁盘读取数据的时候,首先从各自的LRU队列中读取数据,若LRU队列中不存在用户需要的数据,则从数据区获取一个空闲的数据块,将空闲的数据块的首地址作为基础地址,然后通过这个地址从磁盘读取数据存放到这个数据块中。并同时将这个数据块存放到该磁盘对应的LRU队列的头部,使用计数器增加1。
然后将该数据块的数据返回给用户;若用户第二次读取这个数据块中的内容,则直接从这个共性内存块中的数据返回给用户。
这里主要解决的问题在于,共享内存中的数据区的数据块是所有磁盘都共享的内存块,在磁盘使用的时候,有些磁盘访问的数据比较多,可以使用比较多的共享内存数据块,而访问比较少的磁盘,则使用较少的数据块,达到在相同的内存的情况下,比较热的磁盘使用较多的内存作为缓存,比较冷的磁盘使用了较少的内存作为缓存。
当数据区中的所有空闲的数据块都使用完毕后,系统针对每一个磁盘的LRU队列中的末尾选择一个最冷的数据块最为淘汰数据块,将淘汰的数据块分配给当前磁盘需要缓存的磁盘使用。通过这样,可以最大化使用内存,且通过LRU队列来调整各个磁盘的冷热程度的自动调整。提高了热磁盘的使用缓存更多的目的。
在上述实施例的基础上,该方法还包括:
响应于所述数据区中的所有的空闲数据块均被存储有数据,根据存储数据后的空闲数据块的计数器对应的数值,确定所述LRU队列中的第一目标数据块;
将所述第一目标数据块确定为当前磁盘需要缓存的磁盘。
可选地,所述第一目标数据块为所述存储数据后的空闲数据块的计数器对应的数值,在所有数据块的计数器对应的数值中最小的数据块。
可选地,所述磁盘的LRU队列头信息中有磁盘的标识信息,其中,所述响应于用户的磁盘读取数据请求,包括:
对用户的磁盘读取数据请求进行解析,获得数据块的索引编号,其中,所述索引编号表征数据块和磁盘编号的映射标识,使得根据所述数据块的索引编号,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据。
可选地,该方法还包括:
响应于预设的索引区中的LRU队列中没有与所述磁盘读取数据请求相匹配的目标数据,判断用户读取的数据量是否小于数据量阈值,如果是,则从所述磁盘读取数据,并将读取到的数据返回给所述用户;
如果否,则通过数据块的标识信息指定的磁盘的位置加上所述数据块内部的偏移大小,将读取到的数据发送给用户。
可选地,所述将与存储数据后的空闲数据块的计数器进行数值更新,包括:
响应于通过数据区的数据块将数据返回给用户,将所述数据块对应的计数器的数值加1;
当数据发送给用户且发送完毕,将所述数据块对应的计数器的数值减1。
对应的,该方法还包括:
将所述数据区的数据块的时间戳设置为数据被读取时的时间;
根据时间戳对应的时间,确定第二目标数据块;
将所述第二目标数据块在所述LRU队列中删除。
具体的,所述磁盘的LRU队列头信息中还包括队列锁,所述队列锁为多个进程之间操作所述磁盘的LRU对垒的状态锁。
下面以具体的应用实施例对本发明提供的磁盘缓存方法进行说明。
假设一台服务器有20块硬盘,每一块硬盘的数据块大小是一定的,比如每一个数据块的大小是4MB。
在本发明实施例中分布式磁盘是自己使用的数据盘进行读写数据,不适用系统自带的文件系统。所以,磁盘可以划分为4MB一个数据块大小用来存储文件的实际数据。
每一块磁盘对应的一个磁盘的服务程序,用来对外部提供读写服务,我们对每一个磁盘的服务成为磁盘服务模块。即每一个磁盘服务器模块只对外提供一个磁盘的服务,那么这一台服务器需要有20个磁盘服务模块对外提供服务。
每一个磁盘服务模块都对应一个实际的服务进程。为了解决这么多磁盘都使用一个缓存管理,那么就需要创建一个共享内存来管理实际需要输出的数据。
创建一块预设大小的共享内存。假设这个预设大小是10GB的内存。
然后将这个共享内存分为两部分:
数据区和索引区。
其中:数据区必须按照磁盘的数据块的大小进行划分为若干个数据块,磁盘的数据块为4MB一个块,那么数据区的数据块的大小也是4MB大小来存储数据。
其中,索引区中存在20个LRU队列,这些队列的每一个队列都可以针对上面的数据块进行完全使用。即假设有着20个磁盘只有一个热盘,其他都是冷盘。那么数据区的所有数据块都可以为这个热盘使用。其他的磁盘使用的数据区的数据块的个数为0。其中,冷盘是指在一段时间内,用户没有请求访问的磁盘;热盘是在当前时间段内,一直存在用户访问的磁盘。
每一个磁盘一个LRU队列,其中,每一个磁盘RLU队列头信息有磁盘的ID,这个ID在系统初始化的时候就为每一个磁盘设定了一个唯一的ID,队列锁,用于多个进程之间操作这个磁盘的队列的状态锁。
队列列表,在共享内存中的结构存储中不能使用当前进程的地址指针,当前的地址指针在另外的一个进程中,就无法正确访问了,所以在共享内存的管理器中,只能使用数值化相关的管理。
使用双向链表来作为LRU队列。初始化的时候将数据块中所有的数据均匀的挂接在20个不同的LUR队列中,即,为每一个磁盘分配了初始化均匀的共享数据块使用。
即:LRU1对应的本地磁盘1;LRU2对应的本地磁盘2.....等。
LRU1初始化的使用挂靠了数据区域的二十分之一的数据块到该队列中,且这些数据块的使用等级都是0。同样LRU2、LRU3和LRU1的初始化相同。
其中LRU的队列中,每一个元素都有一个使用等级,这个等级表示用户读取数据的时候进行的累加值,访问的次数越多,则使用等级就越高,初始值为0.
创建好队列后,主进程创建子进程。子进程启动起来后,将使用各自的共享内存的对应的LRU队列。
用户读取数据:
将数据区域划分成若干个数据块,每一个数据块和磁盘上的数据块的大小完全一致。且每一个数据块对应磁盘上的信息有:
磁盘的ID:这个是磁盘上的ID信息,在使用的时候和磁盘的ID保持一致。
使用标记:表示这个数据块的使用状态。
优先级:用于确定这个数据块的使用优先级,优先级越高,表示数据使用的次数越多,就越靠近LRU队列的前面。当优先级标记为0的时候,表示这个数据块可以从某一个磁盘队列移除了。当移除后,这个数据块就可以用来给当前所使用的热盘使用,并将优先级设置为1,同时将最新使用的数据块放到LRU的前面。若LRU队列的尾部发现一个数据块的优先级大于1,则将优先级减1,然后再将该数据块放到队列的头部。
数据块的映射ID,这个ID和磁盘中对应的数据块的索引ID对应,当磁盘的数据复制到该数据块中的时候,同时将磁盘索引的ID记录在该字段中。
使用计数器:当从该磁盘中查询到该数据块的时候,需要将数据回复给应用程序,那么首先将这个计数器增加1,然后再将数据发送给用户,不需要复制数据块中的数据再发送,而直接使用该数据块的对应的地址作为发送数据的地址,直接将数据块中的数据内容发送给用户,减少数据的复制次数。当数据发送完毕后,然后再将该数据块的计数器减1.
最后一次使用的时间戳:使用该时间戳用来在所有LRU队列中做淘汰算法。时间最久的最先淘汰。时间最短的需要保留。
由于磁盘服务进程处于服务状态,用户就可以通过磁盘的服务进程访问磁盘上的文件等信息了。
用户向磁盘请求数据,是从该磁盘的服务进程进行访问磁盘的数据的。每一个磁盘对应一个服务进程,所以,每一个磁盘的服务进程都持有这个共享内存的管理句柄。
首先用户请求数据的时候,提供了数据块的索引编号,即数据块和磁盘编号的映射ID。通过这个磁盘数据块的编号在当前磁盘的队列中获取已经缓存的数据块。若在当前的LRU中查询到了对应的数据块,则将该数据块的优先级增加1,同时将该数据块的信息存放到LRU队列的前面,时间戳设置为当前时间。
然后将该数据块的计数器增加1.若用户只需要读取这个数据块中的一部分,比如偏移1M的位置开始读取2M的数据。那么只需要将该数据块的偏移位置为1M,数据大小为2M的数据发送给用户。当该数据块的数据发送完毕后,然后再将该数据块的计数器减1。
若在LRU队列中没有找到磁盘数据块ID对应的共享内存块,则分为两步执行。若用户读取的数据小于预设值,则直接从磁盘读取数据给用户;比如这个预设值为1M。若用户读取的数据小于1M,则首先通过数据块ID指定的磁盘的位置加上数据块内部的偏移大小,读取用户的数据直接发送给用户模块。否则:
检查当前的LRU队列尾部是否含有数据块优先级为0的数据块(这个数据块的优先级为0,表示系统初始化设置的),若有,直接将该LRU队列尾部的数据块出队列,然后通过该数据块作为内存数据块,从磁盘对应的数据块ID对应的磁盘数据位置读取数据到这个内存块中。大小为磁盘数据块对应的大小。
读取完毕后,修改该数据块的信息:数据块的映射ID设置为用户读取的数据块的实际的数据块ID;使用标志设置为1.优先级设置为1.放到队列的开头。
然后将该数据块的计数器增加1,时间戳设置为当前时间,根据用户读取的数据块的内部偏移位置,数据大小将该块的全部或部分数据发送给用户,然后将该数据块的计数器减1。
之所以使用计数器,是由于用户请求的数据的随机性,用户可能读取同一个数据块中的数据。那么我们为了减少数据的复制次数,直接使用该数据块来发送数据,计数器也是用来防止正在使用的数据块被强制淘汰。
当当前的LRU队列的末尾找不到使用标志位0的数据块。则在所有队列中选择一个数据块,其中,选择条件:
1、若数据块的使用标志为0优先出队;
2、若某一个LRU队列中的最后一个优先级为大于1的数据块,则将该数据块的优先级减1,将该数据块重新放入到该数据块所在队列的头部。
3、选择一个时间戳最久的数据块,且这个数据块的计数器为0。
将选择好的数据块出队,出队后,将使用标志设置为0。然后使用这个数据块作为内存数据块,从磁盘中读取数据,存放到该数据块中。
然后将该数据块存放到当前磁盘对应的LRU队列头部,设置优先级为1,使用标志为1,同时设置该数据块的映射ID为当前磁盘对应的磁盘的数据块ID。
将计数器增加1,设置时间戳为当前时间。将该数据块的部分或全部数据发送给用户,然后将该数据块的计数器减1。
通过以上方法可以得到,如果一台服务器上的某些磁盘够热,那么根据使用的时间来确定哪些时间比较长的数据块就被淘汰,淘汰的队列中的数据块不一定是当前磁盘对应的LRU的数据块。可能是比较冷的磁盘上的数据块被用来缓存比较热的磁盘的数据块使用。通过这种算法,可以大大提高比较热的磁盘的缓存能够力。减少热数据在这个磁盘上的访问次数,提高用户体验。
对应的,参见图2,在本发明实施例中还提供了一种磁盘缓存装置,包括:
判断单元10,用于响应于用户的磁盘读取数据请求,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据,如果是,获取所述目标数据,并将所述目标数据发送至用户,其中,预先创建有与磁盘对应的共享内存,所述共享内存划分为索引区和数据区,所述索引区划分为若干个LRU队列,所述数据区根据所述磁盘的数据块的大小划分为若干个数据块;
数据存储单元20,用于如果否,在所述数据区获取空闲数据块,将从所述磁盘读取到的数据存储到所述空闲数据块;
数据更新单元30,用于将存储数据后的数据块设置在所述LRU队列的头部,并将与所述存储数据后的数据块的计数器进行数值更新;
数据发送单元40,用于将所述存储数据后的数据块中的数据发送给所述用户。
在上述实施例的基础上,该装置还包括:
第一确定单元,用于响应于所述数据区中的所有的空闲数据块均被存储有数据,根据存储数据后的空闲数据块的计数器对应的数值,确定所述LRU队列中的第一目标数据块;
第二确定单元,用于将所述第一目标数据块确定为当前磁盘需要缓存的磁盘。
在上述实施例的基础上,所述第一目标数据块为所述存储数据后的空闲数据块的计数器对应的数值,在所有数据块的计数器对应的数值中最小的数据块。
在上述实施例的基础上,所述磁盘的LRU队列头信息中有磁盘的标识信息,其中,所述判断单元包括:
解析子单元,用于对用户的磁盘读取数据请求进行解析,获得数据块的索引编号,其中,所述索引编号表征数据块和磁盘编号的映射标识,使得根据所述数据块的索引编号,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据。
可选地,该装置还包括:
数据量判断单元,用于响应于预设的索引区中的LRU队列中没有与所述磁盘读取数据请求相匹配的目标数据,判断用户读取的数据量是否小于数据量阈值,如果是,则从所述磁盘读取数据,并将读取到的数据返回给所述用户;
如果否,则通过数据块的标识信息指定的磁盘的位置加上所述数据块内部的偏移大小,将读取到的数据发送给用户。
可选地,所述数据更新单元具体用于:
响应于通过数据区的数据块将数据返回给用户,将所述数据块对应的计数器的数值加1;
当数据发送给用户且发送完毕,将所述数据块对应的计数器的数值减1。
可选地,该装置还包括:
时间确定单元,用于将所述数据区的数据块的时间戳设置为数据被读取时的时间;
第三确定单元,用于根据时间戳对应的时间,确定第二目标数据块;
删除单元,用于将所述第二目标数据块在所述LRU队列中删除。
在上述实施例的基础上,所述磁盘的LRU队列头信息中还包括队列锁,所述队列锁为多个进程之间操作所述磁盘的LRU队列的状态锁。
本发明提供了一种磁盘缓存装置,通过在系统中创建共享内存,并且该共享内存包括索引区和数据区,响应于用户的磁盘读取数据请求,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据,如果是,获取所述目标数据,并将所述目标数据发送至用户,如果否,在所述数据区获取空闲数据块,将从所述磁盘读取到的数据存储到所述空闲数据块;将存储数据后的数据块设置在所述LRU队列的头部,并将与所述存储数据后的数据块的计数器进行数值更新;将所述存储数据后的数据块中的数据发送给所述用户。实现了最大化使用内存,且通过LRU队列来对各个磁盘的使用进行自动调整,提高了磁盘缓存的使用效率。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种磁盘缓存方法,其特征在于,该方法包括:
响应于用户的磁盘读取数据请求,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据,如果是,获取所述目标数据,并将所述目标数据发送至用户,其中,预先创建有与磁盘对应的共享内存,所述共享内存划分为索引区和数据区,所述索引区划分为若干个LRU队列,所述数据区根据所述磁盘的数据块的大小划分为若干个数据块;
如果否,在所述数据区获取空闲数据块,将从所述磁盘读取到的数据存储到所述空闲数据块;
将存储数据后的数据块设置在所述LRU队列的头部,并将与所述存储数据后的数据块的计数器进行数值更新;
将所述存储数据后的数据块中的数据发送给所述用户。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
响应于所述数据区中的所有的空闲数据块均被存储有数据,根据存储数据后的空闲数据块的计数器对应的数值,确定所述LRU队列中的第一目标数据块;
将所述第一目标数据块确定为当前磁盘需要缓存的磁盘。
3.根据权利要求2所述的方法,其特征在于,所述第一目标数据块为所述存储数据后的空闲数据块的计数器对应的数值,在所有数据块的计数器对应的数值中最小的数据块。
4.根据权利要求1所述的方法,其特征在于,所述磁盘的LRU队列头信息中有磁盘的标识信息,其中,所述响应于用户的磁盘读取数据请求,包括:
对用户的磁盘读取数据请求进行解析,获得数据块的索引编号,其中,所述索引编号表征数据块和磁盘编号的映射标识,使得根据所述数据块的索引编号,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据。
5.根据权利要求4所述的方法,其特征在于,该方法还包括:
响应于预设的索引区中的LRU队列中没有与所述磁盘读取数据请求相匹配的目标数据,判断用户读取的数据量是否小于数据量阈值,如果是,则从所述磁盘读取数据,并将读取到的数据返回给所述用户;
如果否,则通过数据块的标识信息指定的磁盘的位置加上所述数据块内部的偏移大小,将读取到的数据发送给用户。
6.根据权利要求1所述的方法,其特征在于,所述将与存储数据后的空闲数据块的计数器进行数值更新,包括:
响应于通过数据区的数据块将数据返回给用户,将所述数据块对应的计数器的数值加1;
当数据发送给用户且发送完毕,将所述数据块对应的计数器的数值减1。
7.根据权利要求1所述的方法,其特征在于,该方法还包括:
将所述数据区的数据块的时间戳设置为数据被读取时的时间;
根据时间戳对应的时间,确定第二目标数据块;
将所述第二目标数据块在所述LRU队列中删除。
8.根据权利要求4所述的方法,其特征在于,所述磁盘的LRU队列头信息中还包括队列锁,所述队列锁为多个进程之间操作所述磁盘的LRU队列的状态锁。
9.一种磁盘缓存装置,其特征在于,该装置包括:
判断单元,用于响应于用户的磁盘读取数据请求,判断预设的索引区中的LRU队列中是否有与所述磁盘读取数据请求相匹配的目标数据,如果是,获取所述目标数据,并将所述目标数据发送至用户,其中,预先创建有与磁盘对应的共享内存,所述共享内存划分为索引区和数据区,所述索引区划分为若干个LRU队列,所述数据区根据所述磁盘的数据块的大小划分为若干个数据块;
数据存储单元,用于如果否,在所述数据区获取空闲数据块,将从所述磁盘读取到的数据存储到所述空闲数据块;
数据更新单元,用于将存储数据后的数据块设置在所述LRU队列的头部,并将与所述存储数据后的数据块的计数器进行数值更新;
数据发送单元,用于将所述存储数据后的数据块中的数据发送给所述用户。
10.根据权利要求9所述的装置,其特征在于,该装置还包括:
第一确定单元,用于响应于所述数据区中的所有的空闲数据块均被存储有数据,根据存储数据后的空闲数据块的计数器对应的数值,确定所述LRU队列中的第一目标数据块;
第二确定单元,用于将所述第一目标数据块确定为当前磁盘需要缓存的磁盘。
CN201911002144.XA 2019-10-21 2019-10-21 一种磁盘缓存方法及装置 Active CN112764664B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911002144.XA CN112764664B (zh) 2019-10-21 2019-10-21 一种磁盘缓存方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911002144.XA CN112764664B (zh) 2019-10-21 2019-10-21 一种磁盘缓存方法及装置

Publications (2)

Publication Number Publication Date
CN112764664A true CN112764664A (zh) 2021-05-07
CN112764664B CN112764664B (zh) 2024-08-16

Family

ID=75691772

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911002144.XA Active CN112764664B (zh) 2019-10-21 2019-10-21 一种磁盘缓存方法及装置

Country Status (1)

Country Link
CN (1) CN112764664B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254270A (zh) * 2021-05-28 2021-08-13 济南浪潮数据技术有限公司 一种存储缓存热点数据自恢复方法、系统及存储介质
CN113760782A (zh) * 2021-08-23 2021-12-07 南京森根科技股份有限公司 一种可动态调节的环形缓存系统及其控制方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392445A (en) * 1992-07-09 1995-02-21 Hitachi Ltd. Data storing system and data transfer method with a plurality of disk units
US20080177975A1 (en) * 2007-01-23 2008-07-24 Nobuo Kawamura Database management system for controlling setting of cache partition area in storage system
JP2009199540A (ja) * 2008-02-25 2009-09-03 Nec Corp ストレージ装置とシステムと方法並びにプログラム
CN102402622A (zh) * 2011-12-27 2012-04-04 北京人大金仓信息技术股份有限公司 嵌入式内存数据库的内存页面管理调度方法
CN104503923A (zh) * 2014-11-21 2015-04-08 华中科技大学 一种非对称磁盘阵列高速缓存调度方法
CN106155764A (zh) * 2015-04-23 2016-11-23 阿里巴巴集团控股有限公司 调度虚拟机输入输出资源的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392445A (en) * 1992-07-09 1995-02-21 Hitachi Ltd. Data storing system and data transfer method with a plurality of disk units
US20080177975A1 (en) * 2007-01-23 2008-07-24 Nobuo Kawamura Database management system for controlling setting of cache partition area in storage system
JP2009199540A (ja) * 2008-02-25 2009-09-03 Nec Corp ストレージ装置とシステムと方法並びにプログラム
CN102402622A (zh) * 2011-12-27 2012-04-04 北京人大金仓信息技术股份有限公司 嵌入式内存数据库的内存页面管理调度方法
CN104503923A (zh) * 2014-11-21 2015-04-08 华中科技大学 一种非对称磁盘阵列高速缓存调度方法
CN106155764A (zh) * 2015-04-23 2016-11-23 阿里巴巴集团控股有限公司 调度虚拟机输入输出资源的方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254270A (zh) * 2021-05-28 2021-08-13 济南浪潮数据技术有限公司 一种存储缓存热点数据自恢复方法、系统及存储介质
CN113760782A (zh) * 2021-08-23 2021-12-07 南京森根科技股份有限公司 一种可动态调节的环形缓存系统及其控制方法

Also Published As

Publication number Publication date
CN112764664B (zh) 2024-08-16

Similar Documents

Publication Publication Date Title
CN106776368B (zh) 一种数据读取时的缓存管理方法、装置及系统
KR101717644B1 (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
US7886110B2 (en) Dynamically adjusting cache policy based on device load in a mass storage system
CN110555001B (zh) 数据处理方法、装置、终端及介质
JP4186509B2 (ja) ディスクシステムとそのキャッシュ制御方法
CN106970765B (zh) 数据存储方法及装置
CN106201335B (zh) 存储系统
CN115328820B (zh) 多级缓存系统的访问方法、数据存储方法及装置
CN101620516A (zh) 信息处理装置、其控制方法,以及程序
US11809330B2 (en) Information processing apparatus and method
US7032093B1 (en) On-demand allocation of physical storage for virtual volumes using a zero logical disk
CN112764664B (zh) 一种磁盘缓存方法及装置
US20170123975A1 (en) Centralized distributed systems and methods for managing operations
US20070174550A1 (en) Data area managing method in information recording medium and information processor employing data area managing method
CN110321057B (zh) 具有增强io性能确定性的缓存的存储设备
CN111190537B (zh) 一种追加写场景下顺序存储磁盘管理的方法及系统
US20040039875A1 (en) Disk array device and virtual volume management method in disk array device
CN106095331B (zh) 一种固定大文件内部资源的控制方法
CN110321081A (zh) 一种闪存读缓存的方法及其系统
KR100909765B1 (ko) 데이터 기록 장치 및 데이터 기록 프로그램을 기록한 기록매체
CN109508140B (zh) 存储资源管理方法、装置、电子设备及电子设备、系统
US5761710A (en) Information apparatus with cache memory for data and data management information
US9170929B2 (en) Memory controller
CN111290975A (zh) 使用统一缓存处理读命令与预读命令的方法及其存储设备
JP4095840B2 (ja) キャッシュメモリ管理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant