CN106610793B - 超融合系统的缓存数据管理方法及装置 - Google Patents
超融合系统的缓存数据管理方法及装置 Download PDFInfo
- Publication number
- CN106610793B CN106610793B CN201611040703.2A CN201611040703A CN106610793B CN 106610793 B CN106610793 B CN 106610793B CN 201611040703 A CN201611040703 A CN 201611040703A CN 106610793 B CN106610793 B CN 106610793B
- Authority
- CN
- China
- Prior art keywords
- data
- cached
- lru queue
- host
- caching record
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种超融合系统的缓存数据管理方法,包括:当虚拟机所在主机正常运行时,对LRU队列进行动态保存,其中,一个LRU队列元素对应一条缓存记录,缓存记录为在将原始数据从低速存储介质缓存到高速存储介质时所生成;当虚拟机所在主机发生故障后而在新主机上重新启动时,获取动态保存的LRU队列,并依次取出动态保存的LRU队列中的缓存记录,以根据缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中。本发明还公开了一种超融合系统的缓存数据管理装置。本发明实现了在超融合系统中,即使虚拟机重新启动后也能快速提升数据读性能的有益效果。
Description
技术领域
本发明涉及缓存数据管理技术领域,尤其涉及超融合系统的缓存数据管理方法及装置。
背景技术
在基于混合存储介质的系统中,通常采用读缓存的方式,将存储在低速存储介质中且需要经常读取的原始数据缓存到高速存储介质(也即用于存储缓存数据的缓存空间)中,因而当下次再读取相同的原始数据时,只需直接从高速存储介质读取对应的缓存数据即可,进而可大大提升数据的读取速度。其中,高速存储介质中存储的缓存数据(也即热数据)只不过是低速存储介质中原始数据的一个拷贝。
读缓存具体用于优化读性能,为了让读性能达到最高,最好的办法是让读缓存处于最接近使用者的地方,而在基于分布式架构的超融合系统中,为让读性能达到最好,所采用的最佳方式就是虚拟机运行在哪个主机上,读缓存就在哪个主机上缓存这个虚拟机的数据。但此类方式又会产生新的问题,例如:虚拟机在主机A上运行,当主机A发生故障后,虚拟机者在主机B重新启动,由于该虚拟机的热数据缓存在主机A的读缓存空间中,因而此时虚拟机就没有了缓存,若重新生成则需要从低速存储介质读取大量的数据到高速存储介质中,从而让读性能出现断崖式的下降,并且这需要较长一段时间才能逐渐恢复之前的读性能。
发明内容
本发明的主要目的在于提供一种超融合系统的缓存数据管理方法及装置,旨在解决现有技术中,当超融合系统中主机出现故障后且虚拟机重新启动时,导致读性能出现断崖式下降的技术问题。
为实现上述目的,本发明提供一种超融合系统的缓存数据管理方法,所述超融合系统采用低速存储介质存储原始数据以及采用高速存储介质存储缓存数据,所述超融合系统的缓存数据管理方法包括:
当虚拟机所在主机正常运行时,对LRU队列进行动态保存,其中,一个LRU队列元素对应一条缓存记录,所述缓存记录为在将原始数据从低速存储介质缓存到高速存储介质时所生成;
当虚拟机所在主机发生故障后而在新主机上重新启动时,获取动态保存的所述LRU队列,并依次取出动态保存的所述LRU队列中的所述缓存记录,以根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中。
优选地,所述超融合系统的缓存数据管理方法还包括:
当虚拟机所在主机正常运行时,对所述LRU队列进行动态更新,其中,所述更新的方式至少包括:在所述LRU队列中加入新的缓存记录、调整所述缓存记录在所述LRU队列中的排序、删除所述缓存记录中的一条或多条记录。
优选地,所述当虚拟机所在主机正常运行时,对LRU队列进行动态保存包括:
当虚拟机所在主机正常运行时,每隔设定时间将所述LRU队列保存到低速存储介质中。
优选地,所述根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中之后,所述超融合系统的缓存数据管理方法还包括:
依次生成虚拟机所在新主机所对应的缓存记录,并将当前生成的缓存记录加入新的LRU队列中。
优选地,所述缓存记录至少包括:对象字段、偏移字段、长度字段与缓存位置字段;
其中,所述对象字段表示缓存的数据块所属文件,所述偏移字段与长度字段表示缓存的数据块在所属文件中的偏移起始位置与对应的数据长度,所述缓存位置表示缓存的数据块缓存到高速存储介质中的位置。
进一步地,为实现上述目的,本发明还提供一种超融合系统的缓存数据管理装置,所述超融合系统采用低速存储介质存储原始数据以及采用高速存储介质存储缓存数据,所述超融合系统的缓存数据管理装置包括:
保存模块,用于当虚拟机所在主机正常运行时,对LRU队列进行动态保存,其中,一个LRU队列元素对应一条缓存记录,所述缓存记录为在将原始数据从低速存储介质缓存到高速存储介质时所生成;
预读取模块,用于当虚拟机所在主机发生故障后而在新主机上重新启动时,获取动态保存的所述LRU队列,并依次取出动态保存的所述LRU队列中的所述缓存记录,以根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中。
优选地,所述超融合系统的缓存数据管理装置还包括:
更新模块,用于当虚拟机所在主机正常运行时,对所述LRU队列进行动态更新,其中,所述更新的方式至少包括:在所述LRU队列中加入新的缓存记录、调整所述缓存记录在所述LRU队列中的排序、删除所述缓存记录中的一条或多条记录。
优选地,所述保存模块还用于:
当虚拟机所在主机正常运行时,每隔设定时间将所述LRU队列保存到低速存储介质中。
优选地,所述预读取模块还用于:
当根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中时,依次生成虚拟机所在新主机所对应的缓存记录,并将当前生成的缓存记录加入新的LRU队列中。
优选地,所述缓存记录至少包括:对象字段、偏移字段、长度字段与缓存位置字段;
其中,所述对象字段表示缓存的数据块所属文件,所述偏移字段与长度字段表示缓存的数据块在所属文件中的偏移起始位置与对应的数据长度,所述缓存位置表示缓存的数据块缓存到高速存储介质中的位置。
本发明中,通过将读缓存的LRU队列进行动态保存,进而当主机故障或者异常情况关机后并且虚拟机重新启动时,根据保存的LRU队列,通过读缓存预读主动把之前缓存过的数据重新读入缓存空间中缓存起来,进而使得虚拟机重新启动后即可直接读取当前新主机上所缓存的缓存数据,从而解决了虚拟机重新启动后,读性能出现断崖式下降的问题,实现了在超融合系统中,即使虚拟机重新启动后也能快速提升数据读性能的有益效果。
附图说明
图1为本发明超融合系统的缓存数据管理方法一实施例的流程示意图;
图2为本发明超融合系统的缓存数据管理装置一实施例的功能模块示意图;
图3为本发明超融合系统的缓存数据管理装置另一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明超融合系统的缓存数据管理方法一实施例的流程示意图。
本实施例中,超融合系统具体指将虚拟化管理软件、虚拟存储、虚拟网络等基础部件融合到一起,并采用标准X86服务器硬件承载虚拟化管理软件、虚拟存储、虚拟网络等软件的IT基础设施部件。超融合系统存储采用分布式存储构架,使用前需要先组建集群,集群中所有主机(超融合一体机)的物理磁盘被虚拟成存储资源池,并通过虚拟机向虚拟化管理软件提供存储服务。
本实施例中,超融合系统采用低速存储介质存储原始数据以及采用高速存储介质存储缓存数据。同时,本实施例中对于存储介质的类型不限,例如低速存储介质采用HDD(Hard Disk Drive),而高速存储介质则采用SDD(Solid State Drives)。
在基于分布式架构的超融合系统中,为让读性能达到最好,所采用的最佳方式就是虚拟机运行在哪个主机上,读缓存就在哪个主机上缓存这个虚拟机的数据。因此,在基于混合存储介质的超融合系统中,低速存储介质(也即各主机的物理磁盘)通常被虚拟成存储资源池,再向虚拟化管理软件提供存储服务,也即低速存储介质作为超融合系统中各主机的公共存储资源以保存原始数据,而高速存储介质则作为主机的本地存储资源以保存虚拟机在主机上运行时所需的缓存数据。
此外,为解决虚拟机重新启动后,读性能出现断崖式下降的问题,本实施例中,超融合系统的缓存数据管理方法包括:
步骤S10,当虚拟机所在主机正常运行时,对LRU队列进行动态保存,其中,一个LRU队列元素对应一条缓存记录,所述缓存记录为在将原始数据从低速存储介质缓存到高速存储介质时所生成;
LRU(Least Recently Used,最近最少使用)是一种缓存淘汰算法,具体根据数据的历史访问记录来进行数据淘汰,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。而在基于混合存储介质的系统中,通常采用读缓存的方式,将存储在低速存储介质中且需要经常读取的原始数据缓存到高速存储介质(读缓存空间)中,因而当下次再读取相同的原始数据时,只需直接从高速存储介质读取对应的缓存数据即可,进而可大大提升数据的读取速度。
因此,基于读缓存操作的特点而采用LRU队列以描述和记录缓存数据的冷热情况。读缓存操作具体是把高速存储介质存储缓存数据的缓存空间切分成固定大小的块,如4K、8K、16K、32K、64K、128K大小的块,以供存储对应大小的数据块。当上层应用(超融合系统中的虚拟化管理软件)读取数据的时候,读缓存操作先把原始数据从低速存储介质中读入内存并提交给上层引用后,同时还把数据缓存到缓存空间对应大小的块中,然后生成表示这块数据的一条缓存记录放入到LRU队列中,也即一个LRU队列元素对应一条缓存记录。
可选的,所述缓存记录至少包括:对象字段、偏移字段、长度字段与缓存位置字段;其中,所述对象字段表示缓存的数据块所属文件,所述偏移字段与长度字段表示缓存的数据块在所属文件中的偏移起始位置与对应的数据长度,所述缓存位置表示缓存的数据块缓存到高速存储介质中的位置。如下表1所示的LRU队列结构。
表1
对象 | 偏移 | 长度 | 缓存位置 |
File1 | 0x0300 | 4KB | 0x3000 |
File1 | 0x0200 | 16KB | 0x4000 |
File2 | 0x0700 | 4KB | 0x1000 |
… | … | … | … |
例如,上层应用首次读取了存储在低速存储介质中File1文件偏移启示位置为0x0300、长度为4KB的数据块,同时,该数据块保存在当前主机的高速存储介质的0x3000位置,而当上层应用再次访问该数据块时,由于该数据块已经被缓存到主机的本地高速存储介质中了,因此,读缓存操作可直接从本地的高速存储介质中将该数据块读入内存以提交给上层应用,也即读缓存操作缓存了上层应用所经常访问的热数据,从而大大提升了数据的读性能。
本实施例中对于LRU队列进行动态保存的方式不限,比如每隔设定时间保存一次;或者在设定的时间点进行保存;或者根据当前虚拟机的运行状况,采用对应的保存方式进行保存,比如虚拟机运行频繁时进行LRU队列的动态保存,而在虚拟机空闲时不进行保存。优选的,当虚拟机所在主机正常运行时,每隔设定时间将所述LRU队列保存到低速存储介质中。比如每隔10分钟保存一次。
步骤S20,当虚拟机所在主机发生故障后而在新主机上重新启动时,获取动态保存的所述LRU队列,并依次取出动态保存的所述LRU队列中的所述缓存记录,以根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中。
当虚拟机所在主机发生故障后而在新主机上重新运行时,由于虚拟机之前所使用的缓存数据存储在故障主机上,因而虚拟机此时在新主机上运行后将不存在缓存数据。例如,虚拟机在主机A上运行,当主机A发生故障后,虚拟机者在主机B重新启动,由于该虚拟机的缓存数据缓存在主机A的读缓存空间中,因而此时虚拟机就没有了缓存,若重新生成则需要从低速存储介质读取大量的数据到高速存储介质中,从而让读性能出现断崖式的下降,并且这需要较长一段时间才能逐渐恢复之前的读性能。
因此,为解决上述问题,本实施例中,在虚拟机在新主机上重新启动并在读取数据之前,预先在新主机上缓存上层应用所要访问的数据,并且该预先缓存的数据为上层应用之前所经常访问的热数据,从而不仅避免了需要从低速存储介质读取大量的数据到高速存储介质所耗费的时间,同时,直接缓存上层应用之前所经常访问的热数据还可进一步提升系统的读性能。
本实施例中,由于在虚拟机正常运行时所保存的LRU队列的数据量非常小,因此,在虚拟机在新的主机上重新启动时,可以快速完成该LRU队列的获取而不影响到虚拟主机的启动。同时,在虚拟机在新的主机上重新启动并在读取数据之前的时间段内,在该新的主机上主动预先存储缓存数据同样不会对虚拟机的运行造成影响。具体根据依次读取的LRU队列中所有的缓存记录,并依次完成与缓存记录对应的数据块从低速存储介质到新主机的高速存储介质中的存储过程。
本实施例中,通过将读缓存的LRU队列进行动态保存,进而当主机故障或者异常情况关机后并且虚拟机重新启动时,根据保存的LRU队列,通过读缓存预读主动把之前缓存过的数据重新读入缓存空间中缓存起来,进而使得虚拟机重新启动后即可直接读取当前新主机上所缓存的缓存数据,从而解决了虚拟机重新启动后,读性能出现断崖式下降的问题,实现了在超融合系统中,即使虚拟机重新启动后也能快速提升数据读性能的有益效果。
进一步地,在本发明超融合系统的缓存数据管理方法另一实施例中,所述超融合系统的缓存数据管理方法还包括:
当虚拟机所在主机正常运行时,对所述LRU队列进行动态更新,其中,所述更新的方式至少包括:在所述LRU队列中加入新的缓存记录、调整所述缓存记录在所述LRU队列中的排序、删除所述缓存记录中的一条或多条记录。
本实施例中,当虚拟机所在主机正常运行时,不仅对LRU队列进行动态保存,同时还对LRU队列进行动态更新,从而始终保持LRU队列中缓存记录所对应的缓存数据为热数据(相对于低速存储介质中的原始数据而言)。
本实施中,对于LRU队列的动态更新方式不限。优选包括以下方式中的一种或多种:
(1)在LRU队列中加入新的缓存记录;
本实施例中,由于LRU队列保存的是热数据,而LRU队列中每一条缓存记录的热度从队首到对尾依次降低,也即对首存入的是最热的热数据记录,而对尾则是相对最冷的热数据记录,因此,当LRU队列中加入新的缓存记录时,该新的缓存记录优选添加到LRU队列的队首位置。
例如,当前LRU队列如表1所示,则当上层应用访问了File3文件中的数据后,LRU队列将变成如下表2所示。
表2
(2)调整缓存记录在LRU队列中的排序;
本实施例中,如果主机访问的缓存数据在LRU队列中存在相应的缓存记录,则为体现LRU队列中各条缓存记录之间的热度大小,因而需要相应调整被访问的缓存数据所对应缓存记录在LRU队列中的排序,优选将当前访问的已缓存记录的队列位置调整到LRU队列的队首。
例如,当前LRU队列如表2所示,则当上层应用再次访问了File2文件中的数据后,LRU队列将变成如下表3所示。
表3
对象 | 偏移 | 长度 | 缓存位置 |
File2 | 0x0700 | 4KB | 0x1000 |
File3 | 0x0600 | 12KB | 0x8000 |
File1 | 0x0300 | 4KB | 0x3000 |
File1 | 0x0200 | 16KB | 0x4000 |
… | … | … | … |
(3)删除缓存记录中的一条或多条记录。
本实施例中,由于LRU队列的存储空间大小有限,因此当LRU队列满空间时,如若当前需要添加新的缓存记录,则需要对原有缓存记录进行删除。由于LRU队列的对尾存储的是比较冷的热数据,因而,优选从对尾开始删除原有缓存记录直至预留出的存储空间可以存储新的缓存记录。
例如,当前LRU队列存储了N条缓存记录,同时LRU队列的容量也同样为N条,则当上层应用访问了新的数据块时,则当前LRU队列的第N条记录将被删除,同时将当前上层应用访问的新的数据块所生成的缓存记录放入第一条记录中。
可选的,为实现LRU队列的上述更新,优选LRU队列采用双向链表数据结构。其中,当存在新数据时,则直接插入到链表头部;而当缓存命中(即缓存数据被访问),则将数据移到链表头部;而当链表满的时候,则将链表尾部的数据丢弃。
本实施例中,LRU队列记录了数据的冷热情况,位于队首的缓存记录所对应的数据是最近访问过的,代表最热的数据,新加入的缓存记录放到队首,队列中的缓存记录所对应的数据再次被访问过后,也将其缓存记录取出来插入到队首的位置。队尾的缓存记录所对应的数据是最冷的数据,随着数据不再被访问,该数据对应的缓存记录会逐渐被其他热数据所对应的缓存记录挤到队尾,如果缓存空间满了,就淘汰掉队尾的缓存记录所对应的数据,清出来的空间用来保存更热的缓存数据。也即LRU队列末尾的缓存记录被淘汰掉后则表示对应的缓存数据已经不再被缓存了。
进一步地,在本发明超融合系统的缓存数据管理方法另一实施例中,虚拟机的运行是一个长时间的过程,为避免虚拟机运行过程中再次出现主机事故而重新在新的主机上重新启动后,又再次出现读性能下降的问题。因此,本实施例中,在上述步骤S20中,当根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中之后,所述超融合系统的缓存数据管理方法还包括:
依次生成虚拟机所在新主机所对应的缓存记录,并将当前生成的缓存记录加入新的LRU队列中。
本实施例中,在通过预读方式在虚拟机所在新主机上存储缓存数据的同时,每存储一块缓存数据,则对应生成一条缓存记录,并将缓存记录保存到新的LRU队列中。此时,虚拟机在新主机上已经能够正常运行了,也即此时虚拟机恢复到了正常运行状态,因此,当虚拟机在新主机上正常运行时,为避免该新主机也出现故障,因此,同样需要对该新的LRU队列进行动态保存。
例如,当虚拟机在主机A上正常运行时,将当前的第一LRU队列保存到低速存储介质中,而在主机A发生故障后,虚拟机者在主机B上重新启动时,从低速存储介质中读取第一LRU队列,并根据该第一LRU队列中的缓存记录,预先将对应的数据从低速存储介质中读入主机B的高速存储介质中进行缓存,同时在预读的过程中生成对应的缓存记录并加入第二LRU队列中;当虚拟机在主机B上正常运行时,将当前的第二LRU队列保存到低速存储介质中,而在主机B发生故障后,虚拟机者在主机C上重新启动时,从低速存储介质中读取第二LRU队列,并根据该第二LRU队列中的缓存记录,预先将对应的数据从低速存储介质中读入主机C的高速存储介质中进行缓存,同时在预读的过程中生成对应的缓存记录并加入第三LRU队列中,依此类推。
参照图2,图2为本发明超融合系统的缓存数据管理装置一实施例的功能模块示意图。
本实施例中,超融合系统采用低速存储介质存储原始数据以及采用高速存储介质存储缓存数据。同时,本实施例中对于存储介质的类型不限,例如低速存储介质采用HDD(Hard Disk Drive),而高速存储介质则采用SDD(Solid State Drives)。
在基于分布式架构的超融合系统中,为让读性能达到最好,所采用的最佳方式就是虚拟机运行在哪个主机上,读缓存就在哪个主机上缓存这个虚拟机的数据。因此,在基于混合存储介质的超融合系统中,低速存储介质(也即各主机的物理磁盘)通常被虚拟成存储资源池,再向虚拟化管理软件提供存储服务,也即低速存储介质作为超融合系统中各主机的公共存储资源以保存原始数据,而高速存储介质则作为主机的本地存储资源以保存虚拟机在主机上运行时所需的缓存数据。
此外,为解决虚拟机重新启动后,读性能出现断崖式下降的问题,本实施例中,所述超融合系统的缓存数据管理装置包括:
保存模块10,用于当虚拟机所在主机正常运行时,对LRU队列进行动态保存,其中,一个LRU队列元素对应一条缓存记录,所述缓存记录为在将原始数据从低速存储介质缓存到高速存储介质时所生成;
LRU(Least Recently Used,最近最少使用)是一种缓存淘汰算法,具体根据数据的历史访问记录来进行数据淘汰,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。而在基于混合存储介质的系统中,通常采用读缓存的方式,将存储在低速存储介质中且需要经常读取的原始数据缓存到高速存储介质(读缓存空间)中,因而当下次再读取相同的原始数据时,只需直接从高速存储介质读取对应的缓存数据即可,进而可大大提升数据的读取速度。
因此,基于读缓存操作的特点而采用LRU队列以描述和记录缓存数据的冷热情况。读缓存操作具体是把高速存储介质存储缓存数据的缓存空间切分成固定大小的块,如4K、8K、16K、32K、64K、128K大小的块,以供存储对应大小的数据块。当上层应用(超融合系统中的虚拟化管理软件)读取数据的时候,读缓存操作先把原始数据从低速存储介质中读入内存并提交给上层引用后,同时还把数据缓存到缓存空间对应大小的块中,然后生成表示这块数据的一条缓存记录放入到LRU队列中,也即一个LRU队列元素对应一条缓存记录。
可选的,所述缓存记录至少包括:对象字段、偏移字段、长度字段与缓存位置字段;其中,所述对象字段表示缓存的数据块所属文件,所述偏移字段与长度字段表示缓存的数据块在所属文件中的偏移起始位置与对应的数据长度,所述缓存位置表示缓存的数据块缓存到高速存储介质中的位置。如下表4所示的LRU队列结构。
表4
对象 | 偏移 | 长度 | 缓存位置 |
File1 | 0x0300 | 4KB | 0x3000 |
File1 | 0x0200 | 16KB | 0x4000 |
File2 | 0x0700 | 4KB | 0x1000 |
… | … | … | … |
例如,上层应用首次读取了存储在低速存储介质中File1文件偏移启示位置为0x0300、长度为4KB的数据块,同时,该数据块保存在当前主机的高速存储介质的0x3000位置,而当上层应用再次访问该数据块时,由于该数据块已经被缓存到主机的本地高速存储介质中了,因此,读缓存操作可直接从本地的高速存储介质中将该数据块读入内存以提交给上层应用,也即读缓存操作缓存了上层应用所经常访问的热数据,从而大大提升了数据的读性能。
本实施例中对于LRU队列进行动态保存的方式不限,比如每隔设定时间保存一次;或者在设定的时间点进行保存;或者根据当前虚拟机的运行状况,采用对应的保存方式进行保存,比如虚拟机运行频繁时进行LRU队列的动态保存,而在虚拟机空闲时不进行保存。优选的,保存模块10具体用于:当虚拟机所在主机正常运行时,每隔设定时间将所述LRU队列保存到低速存储介质中。比如每隔10分钟保存一次。
预读取模块20,用于当虚拟机所在主机发生故障后而在新主机上重新启动时,获取动态保存的所述LRU队列,并依次取出动态保存的所述LRU队列中的所述缓存记录,以根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中。
当虚拟机所在主机发生故障后而在新主机上重新运行时,由于虚拟机之前所使用的缓存数据存储在故障主机上,因而虚拟机此时在新主机上运行后将不存在缓存数据。例如,虚拟机在主机A上运行,当主机A发生故障后,虚拟机者在主机B重新启动,由于该虚拟机的缓存数据缓存在主机A的读缓存空间中,因而此时虚拟机就没有了缓存,若重新生成则需要从低速存储介质读取大量的数据到高速存储介质中,从而让读性能出现断崖式的下降,并且这需要较长一段时间才能逐渐恢复之前的读性能。
因此,为解决上述问题,本实施例中,在虚拟机在新主机上重新启动并在读取数据之前,预先在新主机上缓存上层应用所要访问的数据,并且该预先缓存的数据为上层应用之前所经常访问的热数据,从而不仅避免了需要从低速存储介质读取大量的数据到高速存储介质所耗费的时间,同时,直接缓存上层应用之前所经常访问的热数据还可进一步提升系统的读性能。
本实施例中,由于在虚拟机正常运行时所保存的LRU队列的数据量非常小,因此,在虚拟机在新的主机上重新启动时,可以快速完成该LRU队列的获取而不影响到虚拟主机的启动。同时,在虚拟机在新的主机上重新启动并在读取数据之前的时间段内,在该新的主机上主动预先存储缓存数据同样不会对虚拟机的运行造成影响。具体根据依次读取的LRU队列中所有的缓存记录,并依次完成与缓存记录对应的数据块从低速存储介质到新主机的高速存储介质中的存储过程。
本实施例中,通过将读缓存的LRU队列进行动态保存,进而当主机故障或者异常情况关机后并且虚拟机重新启动时,根据保存的LRU队列,通过读缓存预读主动把之前缓存过的数据重新读入缓存空间中缓存起来,进而使得虚拟机重新启动后即可直接读取当前新主机上所缓存的缓存数据,从而解决了虚拟机重新启动后,读性能出现断崖式下降的问题,实现了在超融合系统中,即使虚拟机重新启动后也能快速提升数据读性能的有益效果。
参照图3,图3为本发明超融合系统的缓存数据管理装置另一实施例的功能模块示意图,本实施例中,所述超融合系统的缓存数据管理装置还包括:
更新模块30,用于当虚拟机所在主机正常运行时,对所述LRU队列进行动态更新,其中,所述更新的方式至少包括:在所述LRU队列中加入新的缓存记录、调整所述缓存记录在所述LRU队列中的排序、删除所述缓存记录。
本实施例中,当虚拟机所在主机正常运行时,不仅对LRU队列进行动态保存,同时还对LRU队列进行动态更新,从而始终保持LRU队列中缓存记录所对应的缓存数据为热数据(相对于低速存储介质中的原始数据而言)。
本实施中,对于LRU队列的动态更新方式不限。优选包括以下方式中的一种或多种:
(1)在LRU队列中加入新的缓存记录;
本实施例中,由于LRU队列保存的是热数据,而LRU队列中每一条缓存记录的热度从队首到对尾依次降低,也即对首存入的是最热的热数据记录,而对尾则是相对最冷的热数据记录,因此,当LRU队列中加入新的缓存记录时,该新的缓存记录优选添加到LRU队列的队首位置。
例如,当前LRU队列如表4所示,则当上层应用访问了File3文件中的数据后,LRU队列将变成如下表5所示。
表5
对象 | 偏移 | 长度 | 缓存位置 |
File3 | 0x0600 | 12KB | 0x8000 |
File1 | 0x0300 | 4KB | 0x3000 |
File1 | 0x0200 | 16KB | 0x4000 |
File2 | 0x0700 | 4KB | 0x1000 |
… | … | … | … |
(2)调整缓存记录在LRU队列中的排序;
本实施例中,如果主机访问的缓存数据在LRU队列中存在相应的缓存记录,则为体现LRU队列中各条缓存记录之间的热度大小,因而需要相应调整被访问的缓存数据所对应缓存记录在LRU队列中的排序,优选将当前访问的已缓存记录的队列位置调整到LRU队列的队首。
例如,当前LRU队列如表5所示,则当上层应用再次访问了File2文件中的数据后,LRU队列将变成如下表6所示。
表6
(3)删除缓存记录中的一条或多条记录。
本实施例中,由于LRU队列的存储空间大小有限,因此当LRU队列满空间时,如若当前需要添加新的缓存记录,则需要对原有缓存记录进行删除。由于LRU队列的对尾存储的是比较冷的热数据,因而,优选从对尾开始删除原有缓存记录直至预留出的存储空间可以存储新的缓存记录。
例如,当前LRU队列存储了N条缓存记录,同时LRU队列的容量也同样为N条,则当上层应用访问了新的数据块时,则当前LRU队列的第N条记录将被删除,同时将当前上层应用访问的新的数据块所生成的缓存记录放入第一条记录中。
可选的,为实现LRU队列的上述更新,优选LRU队列采用双向链表数据结构。其中,当存在新数据时,则直接插入到链表头部;而当缓存命中(即缓存数据被访问),则将数据移到链表头部;而当链表满的时候,则将链表尾部的数据丢弃。
本实施例中,LRU队列记录了数据的冷热情况,位于队首的缓存记录所对应的数据是最近访问过的,代表最热的数据,新加入的缓存记录放到队首,队列中的缓存记录所对应的数据再次被访问过后,也将其缓存记录取出来插入到队首的位置。队尾的缓存记录所对应的数据是最冷的数据,随着数据不再被访问,该数据对应的缓存记录会逐渐被其他热数据所对应的缓存记录挤到队尾,如果缓存空间满了,就淘汰掉队尾的缓存记录所对应的数据,清出来的空间用来保存更热的缓存数据。也即LRU队列末尾的缓存记录被淘汰掉后则表示对应的缓存数据已经不再被缓存了。
进一步地,在本发明超融合系统的缓存数据管理装置另一实施例中,所述预读取模块20还用于:
当根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中时,依次生成虚拟机所在新主机所对应的缓存记录,并将当前生成的缓存记录加入新的LRU队列中。
本实施例中,在通过预读方式在虚拟机所在新主机上存储缓存数据的同时,每存储一块缓存数据,则对应生成一条缓存记录,并将缓存记录保存到新的LRU队列中。此时,虚拟机在新主机上已经能够正常运行了,也即此时虚拟机恢复到了正常运行状态,因此,当虚拟机在新主机上正常运行时,为避免该新主机也出现故障,因此,同样需要对该新的LRU队列进行动态保存。
例如,当虚拟机在主机A上正常运行时,将当前的第一LRU队列保存到低速存储介质中,而在主机A发生故障后,虚拟机者在主机B上重新启动时,从低速存储介质中读取第一LRU队列,并根据该第一LRU队列中的缓存记录,预先将对应的数据从低速存储介质中读入主机B的高速存储介质中进行缓存,同时在预读的过程中生成对应的缓存记录并加入第二LRU队列中;当虚拟机在主机B上正常运行时,将当前的第二LRU队列保存到低速存储介质中,而在主机B发生故障后,虚拟机者在主机C上重新启动时,从低速存储介质中读取第二LRU队列,并根据该第二LRU队列中的缓存记录,预先将对应的数据从低速存储介质中读入主机C的高速存储介质中进行缓存,同时在预读的过程中生成对应的缓存记录并加入第三LRU队列中,依此类推。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种超融合系统的缓存数据管理方法,所述超融合系统采用低速存储介质存储原始数据以及采用高速存储介质存储缓存数据,其特征在于,所述超融合系统的缓存数据管理方法包括:
当虚拟机所在主机正常运行时,对LRU队列进行动态保存,其中,一个LRU队列元素对应一条缓存记录,所述缓存记录为在将原始数据从低速存储介质缓存到高速存储介质时所生成;
当虚拟机所在主机发生故障后而在新主机上重新启动时,获取动态保存的所述LRU队列,并依次取出动态保存的所述LRU队列中的所述缓存记录,以根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中。
2.如权利要求1所述的超融合系统的缓存数据管理方法,其特征在于,所述超融合系统的缓存数据管理方法还包括:
当虚拟机所在主机正常运行时,对所述LRU队列进行动态更新,其中,所述更新的方式至少包括:在所述LRU队列中加入新的缓存记录、调整所述缓存记录在所述LRU队列中的排序、删除所述缓存记录中的一条或多条记录。
3.如权利要求2所述的超融合系统的缓存数据管理方法,其特征在于,所述当虚拟机所在主机正常运行时,对LRU队列进行动态保存包括:
当虚拟机所在主机正常运行时,每隔设定时间将所述LRU队列保存到低速存储介质中。
4.如权利要求1所述的超融合系统的缓存数据管理方法,其特征在于,所述根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中之后,所述超融合系统的缓存数据管理方法还包括:
依次生成虚拟机所在新主机所对应的缓存记录,并将当前生成的缓存记录加入新的LRU队列中。
5.如权利要求1至4中任一项所述的超融合系统的缓存数据管理方法,其特征在于,所述缓存记录至少包括:对象字段、偏移字段、长度字段与缓存位置字段;
其中,所述对象字段表示缓存的数据块所属文件,所述偏移字段与长度字段表示缓存的数据块在所属文件中的偏移起始位置与对应的数据长度,所述缓存位置表示缓存的数据块缓存到高速存储介质中的位置。
6.一种超融合系统的缓存数据管理装置,所述超融合系统采用低速存储介质存储原始数据以及采用高速存储介质存储缓存数据,其特征在于,所述超融合系统的缓存数据管理装置包括:
保存模块,用于当虚拟机所在主机正常运行时,对LRU队列进行动态保存,其中,一个LRU队列元素对应一条缓存记录,所述缓存记录为在将原始数据从低速存储介质缓存到高速存储介质时所生成;
预读取模块,用于当虚拟机所在主机发生故障后而在新主机上重新启动时,获取动态保存的所述LRU队列,并依次取出动态保存的所述LRU队列中的所述缓存记录,以根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中。
7.如权利要求6所述的超融合系统的缓存数据管理装置,其特征在于,所述超融合系统的缓存数据管理装置还包括:
更新模块,用于当虚拟机所在主机正常运行时,对所述LRU队列进行动态更新,其中,所述更新的方式至少包括:在所述LRU队列中加入新的缓存记录、调整所述缓存记录在所述LRU队列中的排序、删除所述缓存记录中的一条或多条记录。
8.如权利要求7所述的超融合系统的缓存数据管理装置,其特征在于,所述保存模块还用于:
当虚拟机所在主机正常运行时,每隔设定时间将所述LRU队列保存到低速存储介质中。
9.如权利要求6所述的超融合系统的缓存数据管理装置,其特征在于,所述预读取模块还用于:
当根据所述缓存记录,依次将对应原始数据从低速存储介质中读取出来并缓存到新主机的高速存储介质中时,依次生成虚拟机所在新主机所对应的缓存记录,并将当前生成的缓存记录加入新的LRU队列中。
10.如权利要求6至9中任一项所述的超融合系统的缓存数据管理装置,其特征在于,所述缓存记录至少包括:对象字段、偏移字段、长度字段与缓存位置字段;
其中,所述对象字段表示缓存的数据块所属文件,所述偏移字段与长度字段表示缓存的数据块在所属文件中的偏移起始位置与对应的数据长度,所述缓存位置表示缓存的数据块缓存到高速存储介质中的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611040703.2A CN106610793B (zh) | 2016-11-11 | 2016-11-11 | 超融合系统的缓存数据管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611040703.2A CN106610793B (zh) | 2016-11-11 | 2016-11-11 | 超融合系统的缓存数据管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106610793A CN106610793A (zh) | 2017-05-03 |
CN106610793B true CN106610793B (zh) | 2019-09-17 |
Family
ID=58636009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611040703.2A Active CN106610793B (zh) | 2016-11-11 | 2016-11-11 | 超融合系统的缓存数据管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106610793B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729070B (zh) * | 2017-10-16 | 2020-11-06 | 燕山大学 | 基于双速率和工作休眠的虚拟机调度系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1790294A (zh) * | 2004-12-17 | 2006-06-21 | 国际商业机器公司 | 保留虚拟机的高速缓存的系统和方法 |
CN103257935A (zh) * | 2013-04-19 | 2013-08-21 | 华中科技大学 | 一种缓存管理方法及其应用 |
CN103823786A (zh) * | 2012-11-19 | 2014-05-28 | 威睿公司 | 外部高速缓存设备上的管理程序i/o分级 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135173B2 (en) * | 2013-01-22 | 2015-09-15 | International Business Machines Corporation | Thinly provisioned flash cache with shared storage pool |
-
2016
- 2016-11-11 CN CN201611040703.2A patent/CN106610793B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1790294A (zh) * | 2004-12-17 | 2006-06-21 | 国际商业机器公司 | 保留虚拟机的高速缓存的系统和方法 |
CN103823786A (zh) * | 2012-11-19 | 2014-05-28 | 威睿公司 | 外部高速缓存设备上的管理程序i/o分级 |
CN103257935A (zh) * | 2013-04-19 | 2013-08-21 | 华中科技大学 | 一种缓存管理方法及其应用 |
Also Published As
Publication number | Publication date |
---|---|
CN106610793A (zh) | 2017-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103885728B (zh) | 一种基于固态盘的磁盘缓存系统 | |
CN102760101B (zh) | 一种基于ssd 的缓存管理方法及系统 | |
CN108021511B (zh) | 一种ssd性能提升的方法及ssd | |
CN103473150B (zh) | 一种用于数据去重系统中的碎片重写方法 | |
US8930624B2 (en) | Adaptive cache promotions in a two level caching system | |
CN101252589B (zh) | 数据缓存装置和采用该装置的网络存储系统及缓存方法 | |
CN103246616B (zh) | 一种长短周期访问频度的全局共享缓存替换方法 | |
US20070168754A1 (en) | Method and apparatus for ensuring writing integrity in mass storage systems | |
CN105549905A (zh) | 一种多虚拟机访问分布式对象存储系统的方法 | |
CN103942157A (zh) | 用于计算存储环境中的数据处理的方法和系统 | |
CN104503703B (zh) | 缓存的处理方法和装置 | |
US20130297969A1 (en) | File management method and apparatus for hybrid storage system | |
CN104503923B (zh) | 一种非对称磁盘阵列高速缓存调度方法 | |
CN111488125B (zh) | 一种基于Ceph集群的Cache Tier缓存优化方法 | |
CN108762671A (zh) | 基于pcm和dram的混合内存系统及其管理方法 | |
CN110413211B (zh) | 存储管理方法、电子设备以及计算机可读介质 | |
CN107368608A (zh) | 基于arc替换算法的hdfs小文件缓存管理方法 | |
CN107888687B (zh) | 一种基于分布式存储系统的代理客户端存储加速方法及系统 | |
CN107729268A (zh) | 一种基于capi接口的内存扩展装置与方法 | |
CN107957962A (zh) | 一种面向大图计算高效图划分方法与系统 | |
CN109478164B (zh) | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 | |
JP2012523642A (ja) | キャッシュおよびディスク管理方法およびその方法を用いるコントローラ | |
CN106610793B (zh) | 超融合系统的缓存数据管理方法及装置 | |
CN108958667A (zh) | 一种基于分布式存储系统的数据读取方法、系统及装置 | |
CN111124297B (zh) | 一种堆叠dram缓存的性能提升方法 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Nanshan District Xueyuan Road in Shenzhen city of Guangdong province 518000 No. 1001 Nanshan Chi Park building A1 layer Applicant after: SINFOR Polytron Technologies Inc Address before: Nanshan District Xueyuan Road in Shenzhen city of Guangdong province 518052 No. 1001 Nanshan Chi Park building A1 layer Applicant before: Shenxinfu Electronics Science and Technology Co., Ltd., Shenzhen |
|
GR01 | Patent grant | ||
GR01 | Patent grant |