CN117348968A - 一种虚拟磁盘的缓存数据加速方法、装置和设备 - Google Patents

一种虚拟磁盘的缓存数据加速方法、装置和设备 Download PDF

Info

Publication number
CN117348968A
CN117348968A CN202311285434.6A CN202311285434A CN117348968A CN 117348968 A CN117348968 A CN 117348968A CN 202311285434 A CN202311285434 A CN 202311285434A CN 117348968 A CN117348968 A CN 117348968A
Authority
CN
China
Prior art keywords
lru
lru list
cache
host
list
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.)
Pending
Application number
CN202311285434.6A
Other languages
English (en)
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.)
New H3C Technologies Co Ltd
Original Assignee
New H3C Technologies 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 New H3C Technologies Co Ltd filed Critical New H3C Technologies Co Ltd
Priority to CN202311285434.6A priority Critical patent/CN117348968A/zh
Publication of CN117348968A publication Critical patent/CN117348968A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种虚拟磁盘的缓存数据加速方法、装置和设备,该方法包括:获取第一主机上本地缓存的第一LRU列表,在第一LRU列表中查询LRU缓存数据如果未命中,则生成一条LRU表项,并将LRU表项添加第一LRU列表,建立本地缓存的LRU缓存数据与共享文件系统的后备缓存之间的映射,将添加LRU表项的第一LRU列表持久化至第一主机所在集群的共享文件系统的后备缓存单元中,以使其他主机从该后备缓存单元中获取并恢复第二LRU列表中的缓存数据,本发明将LRU列表持久化在共享文件系统上,使得接收的其他宿主机同时恢复出LRU列表的表项数据,本方法提高了重构缓存数据的效率,并且在恢复过程中避免缓存表项数据丢失。

Description

一种虚拟磁盘的缓存数据加速方法、装置和设备
技术领域
本发明涉及存储技术领域,尤其是涉及一种虚拟磁盘的缓存数据加速方法、装置和设备。
背景技术
Open CAS(Open Caching Acceleration Software)是一种开源的缓存加速软件,用于提高存储系统的性能和效率。在Open CAS中需要对存储设备进行加速,比如后备存储(Backend storage)作为被加速存储设备,高速缓冲存储器(cache storage)作为高速存储设备。其中cache缓存数据的读加速原理是:通过LRU(Least Recently Used,最近最少使用)表记录输入输出(Input Output,IO)及访问频率判断;若cache LRU表被命中,则优先从cache存储设备中读数据;若cache LRU表不被命中,则将缓存数据添加到LRU表,并从Backend storage中加载该数据到cache storage中,以便后续这些输入输出IO有机会被命中,数据写加速原理与读加速原理类似。
在数据读/写加速过程中,为了提高虚拟磁盘的IO性能,使用虚拟化闪存加速技术,如图1所示,3个主机分别是主机A、主机B和主机C,使用共享文件系统,虚拟磁盘作为共享文件系统上的一个文件,将虚拟磁盘的缓存加速层放置在SSD(Solid State Drive,固态硬盘)上。
在数据缓存加速过程中,管理员可以选择使用vMotion功能迁移一个虚拟机VM到另一台主机上,或者迁移缓存数据,或者还可以放弃缓存数据,而是而在目的端重建。在vMotion过程中使用虚拟机缓存加速会有惩罚,表现在以下两方面。
一方面,因为使用vMotion功能迁移过程中会包括缓存数据,与不迁移缓存数据相比,会耗费更长的时间来迁移虚拟机,该迁移耗费的时间取决于缓存数据的大小和可用的网络带宽、存储带宽等。另一方面,使用vMotion功能迁移虚拟机过程中,若是放弃缓存数据,不复制缓存加速的数据,则在虚拟机迁移后,就失去了缓存加速的作用;当源主机宕机或硬件异常,由于缓存的数据不可访问,则会缓存数据全部丢失。
发明内容
有鉴于此,本发明提供了一种虚拟磁盘的缓存数据加速方法、装置和设备,以解决虚拟机迁移过程中加快缓存迁移的问题。
第一方面,本发明提供了一种虚拟磁盘的缓存数据加速方法,该方法应可用于第一主机,该第一主机为宿主机,该方法包括:
获取第一主机上本地缓存的第一最近最少使用LRU列表,第一LRU列表中包括N条缓存的LRU表项,N为正整数且N≥1,第一LRU列表用于在本地缓存中存储LRU缓存数据;
在第一LRU列表中查询缓存的LRU缓存数据如果未命中,则生成一条LRU表项,并将LRU表项添加至第一LRU列表,建立本地缓存的LRU缓存数据与共享文件系统的后备缓存之间的映射关系;
将添加所述LRU表项的第一LRU列表持久化至第一主机所在集群的共享文件系统的后备缓存单元中,生成第二LRU列表,以使其他主机从共享文件系统的后备缓存单元中获取第二LRU列表,并根据第二LRU列表中映射关系和所述LRU表项恢复所述LRU缓存数据。
结合第一方面,在一种可能的实施方式中,上述将添加所述LRU表项的第一LRU列表持久化至所述第一主机所在集群的共享文件系统的后备缓存单元中,包括:
当在第一LRU列表中添加LRU表项,以及新建映射关系时,将添加所述LRU表项的第一LRU列表持久化至后备缓存单元中;
或者,周期性地向共享文件系统的后备引擎处理模块发送至少一个第一命令,根据每个第一命令用于指示将添加所述LRU表项的第一LRU表项持久化至后备缓存单元中。
结合第一方面,在另一种可能的实施方式中,上述方法还包括:当需要淘汰第一LRU列表中末尾的LRU表项时,在本地缓存的至少一个映射关系中确定目标映射关系,目标映射关系为末尾的LRU表项的缓存数据与目标后备缓存之间的映射关系;将删除所述末尾LRU表项和目标映射关系的第一LRU列表,持久化至共享文件系统的后备缓存单元中,生成第三LRU列表;其中,第三LRU列表为淘汰末尾LRU表项数据后的列表,将第三LRU列表持久化至共享文件系统的后备缓存单元中。
可选的,第三LRU列表中包括N-1条LRU表项。
结合第一方面,在又一种可能的实施方式中,上述方法还包括:当检测到第一主机宕机时,向迁移处理模块发送第二命令,第二命令用于指示迁移处理模块将第一主机的磁盘文件迁移至第二主机;以使第二主机根据第二LRU列表生成第五LRU列表,第五LRU列表用于恢复第一虚拟磁盘文件的加速缓存数据。
结合第一方面,在又一种可能的实施方式中,将所述第二LRU列表加载至第二主机,包括:将所述第二LRU列表中的至少一个LRU表项和映射关系拆分成多个数据块;将多个数据块加载至第二主机,以使第二主机根据多个数据块整合恢复第一虚拟磁盘文件,并生成所述第五LRU列表。
第二方面,本发明还提供了一种虚拟磁盘的缓存数据加速方法,应用于共享文件系统中,方法包括:
响应于第一主机将添加有LRU表项的第一LRU列表持久化至所述共享文件系统的持久化操作,并生成第二LRU列表,第二LRU列表中包括映射关系和所述LRU表项,所述映射关系为第一主机本地缓存的LRU缓存数据与共享文件系统的后备缓存之间的映射关系,第一LRU列表为在第一主机的本地缓存中存储有N条LRU表项的LRU列表;
将第二LRU列表中的映射关系追加写入到后备缓存单元中,以使集群中其他主机从共享文件系统的后备缓存单元中获取第二LRU列表,并根据映射关系和LRU表项恢复所述LRU缓存数据。
结合第二方面,在一种可能的实施方式中,响应于第一主机将添加有LRU表项的第一LRU列表持久化至所述共享文件系统的操作,并生成第二LRU列表,包括:当在第一LRU列表中添加LRU表项时,响应于第一LRU列表的持久化操作,生成第二LRU列表;或者,周期性地接收第一主机发送的至少一个第一命令,根据每个第一命令执行所述第一主机的持久化操作,生成第二LRU列表。
结合第二方面,在另一种可能的实施方式中,上述方法还包括:当第一主机淘汰第一LRU列表中末尾的LRU表项时,响应于第一主机将删除所述末尾LRU表项和目标映射关系的第一LRU列表的持久化操作,生成第三LRU列表第三LRU列表,第三LRU列表为在第一LRU列表中淘汰末尾的LRU表项后生成的列表;将第三LRU列表追加写入至后备缓存单元中。
结合第二方面,在又一种可能的实施方式中,接收来自第一主机持久化操作的第二LRU列表之后,还包括:按照预设规则对第二LRU列表中的至少一个LRU表项进行整合,并生成第四LRU列表,预设规则包括按照追加写机制比较新追加的LRU表项与列表中已存储的LRU表项是否存在重复,如果是,则剔除重复的LRU表项;将所述第四LRU列表存储在后备缓存单元中。
其中,第四LRU列表中包括:后备缓存单元中每一个缓存单位与第一主机上本地缓存的每个缓存单位的映射关系。具体地,后备缓存单元中每个缓存单位为核心线coreline,第一主机上本地缓存的每个缓存单位为缓存线cache line;所述映射关系为核心线core line与缓存线cache line之间的映射关系。
结合第二方面,在又一种可能的实施方式中,上述方法还包括:当第一主机的发生宕机时,接收迁移处理模块发送的第二命令,第二命令用于指示将第一主机的虚拟磁盘文件迁移至第二主机,第二命令中包括指示信息;根据第二命令中的所述指示信息在后备缓存单元中获取第一主机的虚拟磁盘文件名所对应的第二LRU列表,并将第二LRU列表发送至第二主机。
结合第二方面,在又一种可能的实施方式中,将第二LRU列表发送至第二主机,包括:将上述第二LRU列表中的至少一个LRU表项和所述映射关系拆分成多个数据块;将多个数据块加载至第二主机,以使接收的第二主机根据多个数据块整合恢复出后备缓存单元中缓存数据,并生成第五LRU列表,所述第五LRU列表用于恢复第一虚拟磁盘文件的加速缓存数据。
第三方面,本发明提供了一种虚拟磁盘的缓存数据加速装置,该装置包括:
获取模块,用于获取第一主机上本地缓存的第一最近最少使用LRU列表,第一LRU列表中包括缓存的N条LRU表项,N为正整数且N≥1,第一LRU列表用于在所述本地缓存中存储LRU缓存数据;
处理模块,用于在第一LRU列表中查询LRU缓存数据未命中时,生成一条LRU表项,并将LRU表项添加至第一LRU列表,并建立本地缓存的LRU缓存数据与共享文件系统的后备缓存之间的映射关系;
持久化模块,用于将添加所述LRU表项的第二LRU列表持久化至第一主机所在集群的共享文件系统的后备缓存单元中,生成第二LRU列表,第二LRU列表中包括所述映射关系和所述LRU表项,以使集群中其他主机从后备缓存单元中获取第二LRU列表,并根据所述映射关系和所述LRU表项恢复所述LRU缓存数据。
其中,第二LRU列表中包含N+1条LRU表项。
第四方面,本发明还提供了一种虚拟磁盘的缓存数据加速装置,该装置包括:
生成模块,用于响应于第一主机将添加有LRU表项的第一LRU列表持久化至所述共享文件系统的操作,并生成第二LRU列表,第二LRU列表包括映射关系和LRU表项,所述映射关系为第一主机本地缓存的LRU缓存数据与共享文件系统的后备缓存之间的映射关系;
写入模块,用于将第二LRU列表追加写入到后备缓存单元中,以使其他主机从共享文件系统的后备缓存单元中获取第二LRU列表,并根据所述映射关系和LRU表项恢复LRU缓存数据。
第五方面,本发明提供了一种电子设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面、第二方面或其对应的任一实施方式所述的虚拟磁盘的缓存数据加速方法。
第六方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面、第二方面或其对应的任一实施方式所述的虚拟磁盘的缓存数据加速方法。
本实施例提供的方法,在宿主机的虚拟磁盘的缓存加速第一LRU列表,在有新增LRU表项时,更新本地缓存的第一LRU列表,并将该第一LRU列表持久化至虚拟磁盘所在的共享文件系统或共享存储上,生成第二LRU列表。由于该第二LRU列表被持久化至宿主机集群所配置的共享文件中,所以可以供其他宿主机加载并获取第二LRU列表的数据,使得接收的其他宿主机(多主机)同时恢复出LRU列表的表项数据,提高重构缓存数据的效率,并且在恢复过程中不会发生数据丢失,提高数据迁移的安全性。
此外,当需要淘汰第一LRU列表中末尾的LRU表项时,将删除该末尾的LRU表项后的LRU列表持久化至共享文件系统的后备缓存单元中生成第三LRU列表。当需要整合第一LRU列表中的至少一个LRU表项时,将去重整合后的LRU列表持久化至后备缓存单元中生成第四LRU列表;以及在发生数据迁移时,将后备缓存单元中持久化的第一LRU列表迁移至集群中的其他主机上,生成第五LRU列表,使得第一LRU列表中的任何变化都可以更新并持久化至后备缓存单元中,使得其他主机可通过共享文件系统的后备缓存单元中的LRU列表,从而恢复出虚拟磁盘文件的加速缓存数据,加快数据恢复效率,以及保证重构缓存数据的完整性和安全性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种虚拟磁盘缓存加速的结构示意图;
图2是本发明实施例提供的一种缓存存储与后备缓存之间的映射关系示意图;
图3是本发明实施例提供的一种虚拟磁盘的缓存数据加速方法的结构示意图;
图4是本发明实施例提供的一种虚拟磁盘的缓存数据加速方法的流程图;
图5是本发明实施例提供的一种缓存处理过程中LRU列表淘汰持久化的方法流程图;
图6是本发明实施例提供的一种LRU列表持久化数据写入的方法流程图;
图7是本发明实施例提供的一种虚拟机迁移过程的信令流程图;
图8是本发明实施例提供的另一种缓存数据加速装置的结构示意图;
图9是本发明实施例提供的一种缓存数据加速装置的结构示意图;
图10是本发明实施例提供的一种电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对本发明实施例的应用场景和相关技术术语进行介绍。
本发明实施提供的技术方案应用于缓存加速技术领域,基于Open-CAS架构的虚拟磁盘缓存加速重建方法。
(1)Open-CAS
Open-CAS是由Intel发起的开源缓存加速解决方案。通过将模块加载到内核中,用作高速缓存的高速磁盘设备将慢速磁盘设备“合并”到新的CAS设备中,从而提高了系统的整体设备读写性能。
(2)虚拟磁盘和虚拟磁盘文件
虚拟磁盘是一种在计算机虚拟化环境中使用的虚拟存储设备。它是在物理磁盘基础上创建的逻辑磁盘,用于存储虚拟机(VM)的操作系统、应用程序和数据。虚拟磁盘提供了一个虚拟的存储空间,它可以被虚拟机视为一个独立的硬盘驱动器。虚拟化软件(如VMware、Hyper-V等)可以为每个虚拟机创建一个或多个虚拟磁盘,并将其映射到物理磁盘上的特定位置。
虚拟磁盘可以是虚拟机独占的,也可以是多个虚拟机共享的。它可以通过在主机操作系统中创建一个虚拟磁盘文件来实现,也可以通过直接访问物理磁盘上的分区或逻辑卷来实现。
虚拟磁盘文件形态是指在计算机系统中,将磁盘的内容以文件的形式保存在主机的文件系统中。虚拟磁盘文件通常具有特定的格式和扩展名,可以模拟物理磁盘的功能,并在虚拟化环境中被虚拟机或其他虚拟化技术使用。通过虚拟磁盘文件,可以将磁盘的内容以文件的形式保存在宿主机上,实现对虚拟机的磁盘访问和管理。同时,虚拟磁盘文件也可以被复制、迁移和备份,提供了便捷的管理和维护方式。
(3)LRU
LRU(Least Recently Used,最近最少使用算法)是一种缓存淘汰策略,用于在缓存空间不足时确定要被移除的缓存项。在LRU策略中,当需要从缓存中移除一个元素时,会选择最近最少被使用的缓存项进行淘汰。
LRU策略的基本原理是,根据数据的访问时间来判断其被使用的频率。当一个数据被访问时,它会被移到最近被使用的位置,保持在最前面。当缓存空间满时,最后一个位置的数据(即最近最少被使用的)会被移除,以给新的数据腾出空间。
(4)后备存储Backend storage与缓存存储Cache storage
Cache storage(缓存存储)是一种用于暂时存储数据的高速存储设备或系统。它位于计算系统和主要存储介质(如硬盘或数据库)之间,用于缓存经常访问的数据,以提高数据访问的速度和效率。
Cache storage通常采用高速的硬件设备,如快速固态驱动器(SSD)或内存(RAM),以确保数据的快速读写。它可以存储最常用的数据块、文件或对象,以便在下一次访问时可以直接从缓存中获取,而不需要访问较慢的主存储器或磁盘。
Cache storage的主要特点包括:快速读写、小容量、高命中率(Cache storage通过缓存最经常访问的数据,以提高数据访问的命中率)等,进而广泛应用于各种计算系统和应用中。
在Cache storage中包括至少一个缓存线(Cache line),如图2所示,缓存存储中包括:Cache line 1至Cache line 4等,每条Cache line是可以映射到缓存中的最小数据部分。且多条Cache line形成cache LRU表,用于记录cache IO地址、访问频率,采用LRU算法淘汰。
后备存储(Backend storage)是指用于存储数据的系统或服务。它通常是一个存储设备或存储系统,用于长期保存和保护数据。后备存储可以包括硬盘驱动器、磁带库、网络存储设备等形式。后备存储通常用于存储备份副本、归档数据和长期保存的数据。
本方案中,后备缓存被划分成多个核心线(core line),core line通常指的是缓存中的一个数据行(或数据块)在缓存中的状态信息。它记录了该数据行是否被修改过以及最近的访问情况。在缓存系统中,数据通常按块(block)进行存储和管理。每个缓存块都有一个与之对应的核心线。
核心线包含一些元数据和标志位,用于跟踪该缓存块的状态和使用情况。这些信息可能包括:修改标志位(表示该缓存块是否被修改过)、访问计数器(记录该缓存块被访问的次数)、时间戳(记录最近一次访问该缓存块的时间)等。
在Cache storage和Backend storage之间预先建立缓存映射关系(Cachemappings),用于记录cache line到core line之间的映射关系。比如图2中,cache line 1与core line 5之间存在映射关系,cache line 2与core line 1之间、cache line 3与core line 6之间、cache line 4与core line 2之间都存在映射关系。缓存存储和后备存储都被拆分为一个个缓存行大小的块,所有缓存映射都与这些块对齐。
(4)vMotion和Vmware Flash Read Cache
vMotion是一种虚拟化技术,由VMware公司开发。它允许在物理服务器之间实时迁移运行中的虚拟机(VM),而不会中断虚拟机的正常运行。vMotion利用虚拟化技术和共享存储架构,将虚拟机的内存、CPU状态和设备状态从一个物理主机迁移到另一个物理主机上,使虚拟机能够在不停机的情况下在不同的主机之间进行迁移。
Vmware Flash Read Cache技术是一种虚拟化闪存读加速技术,其使用主机的闪存设备作为缓存来加速虚拟磁盘性能。
Flash Read Cache允许通过将主机所在的闪存设备用作缓存的方式来加快虚拟机的性能。可以为任何一个虚拟磁盘预留Flash Read Cache。Flash Read Cache仅在虚拟机打开电源时创建,当虚拟机挂起或关闭电源时,会将其删除。迁移虚拟机时,可以选择迁移缓存。如果源和目标主机上的虚拟闪存模块兼容,则默认迁移缓存。如果未迁移缓存,则会在目标主机上重新热启用缓存。可以在虚拟机电源打开的情况下更改缓存的大小。此时,系统将删除现有缓存,并将创建新的完全写入缓存,这将产生一个缓存预热过程。创建新缓存的优势是缓存大小可以更好地匹配应用程序的活动数据。
另外,Flash Read Cache支持完全写入或读取缓存。不支持回写或写入缓存。如果存在,则可以从缓存中获得满足条件的数据读取。数据写入分派到备份存储,例如SAN或NAS。从备份存储读取或写入到备份存储的所有数据将无条件地存储在缓存中。
VMware迁移组件用于实时将整台运行中虚拟机从一台物理服务器迁移到另一台,且不会停机。虚拟机可保留其网络身份和连接,确保迁移流程顺畅进行。
本发明实际所要解决的技术问题:在虚拟机迁移过程中,如是不复制缓存加速的数据(cache line),那么在虚拟机迁移后,就失去了缓存加速的作用;当源主机宕机或硬件异常,由于缓存的数据不可访问,则缓存数据全部丢失,不可能有迁移(复制)缓存数据的可能性。
如果复制缓存加速的数据采用简单的远程复制方法,由于数据量大,会大大降低虚拟机迁移的速度。
为了解决上述技术问题,本发明实施例设计一种虚拟磁盘的缓存数据加速方法,概括地,在虚拟磁盘的缓存加速的LRU表1,通过追加写IO引擎持久化到虚拟磁盘所在的共享文件系统(或共享存储)上,形成新的LRU表2,合并重整该LRU表2,以及在目的端恢复出LRU表3,并由集群中的多个主机同时恢复出Cache storage(缓存存储)数据,进而提高重构缓存数据的速度,达到缓存数据快速重建的有益效果。
下面对本实施例提供的技术方案进行详细说明。
根据本发明实施例,提供了一种虚拟磁盘的缓存数据加速方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
结合图1所示,本发明实施例的应用场景中涉及至少一个主机,共享文件系统和迁移处理模块,其中,每个主机中均包括缓存处理模块、内存RAM、固态硬盘(Solid StateDrive,SSD)和虚拟机。此外,在共享文件系统中还包括后备缓存单元(backend storage)、虚拟磁盘和后端存储引擎处理模块。
其中,至少一个主机包括主机A、主机B和主机C等。每个主机中包括设置的虚拟机,比如虚拟机A、虚拟机B和虚拟机C。每个虚拟机上设有IO输入输出接口,用于与主机上的其他模块通信。
如图3所示,各个模块之间的功能包括如下:
缓存处理模块,负责在IO缓存过程中,对主机A至主机C上的缓存cache LRU列表的表项数据进行维护更新,淘汰旧的表项(内存中处理);以及将cache LRU列表持久化到后端存储,比如共享文件系统或共享存储上。
后端存储引擎处理模块,用于持久化的cache LRU列表并维护,定期合并LRU表项,以及在目的端cache缓存空间占满时丢弃尾部LRU表项数据。
迁移处理模块,用于在将虚拟机从源主机迁移到目的主机时,从后端存储的cacheLRU列表中解析cache line内容(该内容中包括cache地址和访问频率等),并在目的主机中恢复出新的cache LRU列表,进而重建缓存数据。
更进一步地,参见图4,是本发明实施例的一种虚拟磁盘的缓存数据加速方法的流程图,该方法可应用于缓存处理模块,所述缓存处理模块所在的宿主机为第一主机,比如主机A,如图4所示,该流程包括如下步骤:
步骤S101:获取第一主机在本地缓存的第一LRU列表,所述第一LRU列表用于在本地缓存中存储LRU缓存数据。
其中,第一LRU列表中包括N条缓存的LRU表项,N为正整数且N≥1。第一LRU列表缓存在本地RAM中,每个LRU表项中包括表项数据,比如包括存储键值映射和数据块,可选的,用map来存储键值映射。每个LRU表项用于记录cache数据,N个LRU表项用于记录第一主机本地缓存的LRU缓存数据,换言之,在第一主机本地存储的数据为LRU缓存数据,这些LRU缓存数据以LRU表项的形式存储和记录。所述cache数据可以由用户自定义或是预设格式的缓存数据。
步骤S102:在所述第一LRU列表中查询所述LRU缓存数据如果未命中,则生成一条LRU表项,并将所述LRU表项添加至第一LRU列表,建立本地缓存的LRU缓存数据与共享文件系统的后备缓存之间的映射关系。
具体地,将新生成的LRU表项添加至第一LRU列表的N条LRU表项之后。
其中,所述映射关系中包括与N+1条所述LRU表项对应的LRU表项数据。进一步地,所述建立的映射关系为LRU缓存数据cache line和后备缓存中至少一个core line之间的映射,并将该映射存储至第二LRU列表中。
步骤S102的一种实施方式是,当用户触发IO请求时,即存在数据写入操作时,根据源主机(比如第一主机)的IP地址,触发在第一LRU列表查找过程。
步骤S103:将添加所述LRU表项的第一LRU列表持久化至所述第一主机所在集群的共享文件系统的后备缓存单元中,生成第二LRU列表。
其中,第二LRU列表中包括所述映射关系和所述LRU表项,用于使集群中其他主机从所述共享文件系统的后备缓存单元中获取第二LRU列表,并根据该第二LRU列表中映射关系和所述LRU表项恢复LRU缓存数据。
其中,每个主机根据自己的所在集群配置共享文件系统或共享存储上,本实施例中集群包括3个主机,分别是主机A、主机B和主机C,第一主机可以是其中任一主机。本步骤实际将更新的第二LRU列表(包括N+1条LRU表项)存储至后备缓存单元中,作为后备缓存的一部分,以便在共享文件系统中更新并存储新的LRU列表。
进一步地,上述步骤S103,将第二LRU列表持久化至所述共享文件系统的后备缓存单元中,即缓存处理模块将所述LRU a表存储在共享文件系统上,可以有以下两种实施方式:
方式一:当第一LRU列表中要新添加LRU表项时,将添加所述LRU表项的第一LRU列表持久化至所述后备缓存单元中。
具体地,在检测到所述缓存LRU a表(即所述第一LRU列表)有更新,或者有新建映射关系时,将该更新后的缓存LRU a表存储在所述共享文件系统上。
可选的,上述方式一,又称为强一致策略。所谓强一致策略是指,实时同步缓存处理模块将建立的第一cache map表保存在共享文件系统中(持久化到后备缓存单元);同步,缓存处理模块向后端存储引擎处理模块下发命令字set。比如地址addr cacheline x1,freq y1。其中,x1表示缓存线,y1表示频率。
方式二:周期性地向所述共享文件系统的后备引擎处理模块发送至少一个第一命令,根据每个所述第一命令将新建的LRU表项的第一LRU列表持久化写入并存储到后备缓存单元中。具体地,判断是否达到预设周期,每当达到一个预设周期,将所述缓存LRU a表存储在所述共享文件系统的后备缓存单元上。
本方式二又称为弱一致策略,所谓弱一致策略是指:每秒触发,异步持久化到后备缓存单元。异步向后端存储引擎处理模块下发命令字set,比如addr cacheline x1,freqy1;后端存储引擎处理模块:接收到该命令字set,x1,y1;使用append only IO引擎(写入方式),写入第一cache map映射关系,以便执行命令字set x1,y1的操作。
本实施例中采用上述两种方式可以实时地获取共享文件系统中后备缓存单元的LRU列表,进而获得LRU列表中的LRU缓存数据,避免在宿主机或硬件异常导致数据丢失。
且由于后备缓存单元存储并非一定是SSD存储介质,通常采用机械硬盘,其IO特点是顺序IO性能远大于随机IO性能,且LRU表持久化的IO特点是:多次写、少量读,apendonlyIO符合这两个IO特点,因此,使用append only IO引擎实现LRU列表持久化。
在一些实施例中,上述步骤S101:查询本地缓存的第一LRU列表之后,还包括:如果命中数据,则将所述第一LRU列表中的缓存数据返回给客户端。
本实施例提供的方法,在宿主机的虚拟磁盘的缓存加速第一LRU列表,在有新增LRU表项时,更新本地缓存的第一LRU列表,并将该第一LRU列表持久化到虚拟磁盘所在的共享文件系统或共享存储上,生成第二LRU列表。由于该第二LRU列表被持久化至宿主机集群所配置的共享文件中,所以可以供其他宿主机加载并获取第二LRU列表的数据,使得接收的其他宿主机(多主机)同时恢复出LRU列表的表项数据,提高重构缓存数据的效率,并且在数据恢复过程中不会发生数据丢失。
下面对上述实施例的方法步骤进行详细说明,首先,是始化过程阶段。
在初始化过程阶段需要先对后端存储进行配置,具体地,后端存储引擎处理模块为每个要加速的虚拟磁盘配置LRU持久化配置存储空间。其中,一种配置空间大小的方法是:根据空间大小计算确定,后端存储引擎处理模块为每个要加速的虚拟磁盘配置存储空间。
一种配置方式是:如cache line为64K,一条cache line以24字节存储,则如果要缓存1T数据,所需要的cache meta空间为1T/64K*24B=384MB,LRU列表的一条表项的数据结构为:序号8字节,cache line编号8字节,访问频率8字节;LRU表采用Hash哈希表存储。因为采用append only机制,频繁追加写会增加占用空间,最大空间限制为1536MB,384M*4=1536MB。
其中,“append only机制”是一种数据持久化策略,它主要用于将数据追加写入到持久化存储介质,如磁盘或日志文件中。在append only机制中,新的数据总是被追加到已有数据的末尾,而不会修改或删除已有的数据。这意味着,数据的写入是顺序进行的,而不会涉及随机写入。这种顺序写入的方式能够提供较高的性能,因为对于机械硬盘来说,顺序IO的吞吐量通常远高于随机IO。
另外,由于append only机制不会修改或删除已有数据,而是不断追加新的数据,所以它具有较好的数据安全性。即使在写入过程中出现异常或中断,已经持久化的数据也不会受到影响,因为新的数据写入并不会修改已有数据。
在实际应用中,append only机制常常被用于日志存储、数据库事务日志、消息队列等场景,以保证数据的完整性和持久化。
其次,是IO的缓存处理过程,该过程中包括将LRU列表持久化过程。
具体地,存储客户端访问存储系统,宿主机接收向存储IO引擎下发写IO请求。缓存处理模块接收该IO请求后查询本地缓存的cache LRU列表,若有缓存数据被cache命中,从直接获取cache缓存的数据,并返回给存储客户端;当进行查询操作时,当检查cache LRU表命中,表示需要的数据已经在cache中存在,因此可以直接从cache缓存中将数据返回给存储客户端。
若查询cache LRU列表不命中,即前述步骤S102:生成一条LRU表项,插入到尾部,从后端存储引擎中,加载数据到cache data,建立cache map表(meta data->cache data)。如果查询未命中,即需要的数据不在cache中,则缓存处理模块会生成一个新的LRU表项。这个表项包含了数据的元数据,用于标识和管理cache中的数据。
将LRU表项插入到尾部:新生成的LRU表项会被插入到LRU表的尾部,表示最近使用的数据。这样可以保持LRU表的顺序,按照数据的使用频率进行管理。
从后端存储引擎中加载数据:由于查询未命中,需要从后端的持久化存储引擎(如磁盘或共享存储)中加载数据。这样可以将数据读取到cache data中,以供后续的查询使用。
在持久化过程中,还包括建立cache map映射。为了方便查询和管理,会建立一个cache map表,用于将元数据(如索引、键值对等)与cache data进行关联,从而快速根据元数据定位到对应的cache数据,并进行数据的读取或更新操作。
当需要查询cache LRU列表时,如果命中则直接返回数据;如果不命中,则生成新的LRU表项并插入到尾部,然后从后端存储引擎中加载数据到cache中,并在cache map表中建立数据与元数据的关联。这样就可以在后续的查询中,快速从cache中获取数据,提高查询效率。
在本实施例的另一可能的实施方式中,还包括:IO的缓存处理过程中LRU列表淘汰持久化。如图5所示,上述方法还包括:
步骤S104:当需要淘汰所述第一LRU列表中末尾的LRU表项时,在本地缓存的至少一个映射中确定目标映射关系,所述目标映射关系为所述末尾的LRU表项的缓存数据与目标后备缓存之间的映射关系,目标后备缓存是前述后备缓存单元中的一部分,用于存储目标映射所对应的LRU表项。
步骤S105:将删除所述末尾LRU表项和所述目标映射关系的第一LRU列表,持久化至所述共享文件系统的后备缓存单元中,生成第三LRU列表。
其中,第三LRU列表为淘汰末尾LRU表项数据后的列表,与前述第一LRU列表相比,第三LRU列表中包含N-1条LRU表项。
具体地,主机上的缓存处理模块定期查询cache LRU,淘汰末尾LRU表项,从cache存储中删除相应的映射关系,删除后将新的LRU列表持久化到后备存储后备缓存单元中,生成第三LRU列表。
一种实施方式是,强一致策略:同步持久化到backend storage;同步,缓存处理模块向共享系统中的后端存储引擎处理模块下发命令字;比如delete、包括:地址addr、cacheline x3、freq y3,上述要删除的地址addr、x3,y3可由算法和应用特点共同决定。
另一种实施方式是,弱一致策略:每秒触发,异步持久化到backend storage;异同步向后端存储引擎处理模块下发命令字del,addr cacheline x3,freq y3;后端存储引擎处理模块:用于接收到命令del,x3,y3。
上述步骤S106后端存储引擎处理模块使用append only IO引擎并执行命令字delx3,y3。
此外,上述方法还包括:后端存储引擎处理模块定期优化后备缓存单元中的LRU列表。具体地后端存储引擎处理模块还定期启动以一定规则合并重整cache LRU列表,从而减少LRU表项体量,比如将64K表项合并后产生1M(兆)表项,整合后相比64K,后端文件的读取效率更高。
后端存储引擎处理模块合并处理具体过程为:因采用append only为追加写机制,从后向前解析每条LRU列表的表项,记录addr 1;若对于64K cache line按地址排序,则以64K为单位,以1M分组,cache地址编号为0,1,2,3,4,5,7,8,9,10,13,15;16,19,20……。
其中,1M=1024Kb,1024Kb/64kb=16个,进而合并规则为16个64K块,若有12个以上数据块,则合并为一条1M的缓存线cache line。这种情况下对于1536M cache LRU列表可以将表大小缩减到原来的1/16,即为96MB。
此外,合并后删除0,1,2,3,4,5,7,8,9,10,13,15,从而使得64k cache line LRU表项生成一条1M cache LRU表项,最终形成1m,64K混合的LRU表项,即生成一个新的LRU列表。
后端存储引擎处理模块由于采用append only追加写机制,重复地址的多次追加写,会增大存储的空间,因此需要优化重复写入的表项。一种可能实施方式是:从后向前解析每条LRU列表的LRU表项,记录addr 1,从后向前索引,如果发现重复64K的addr,则删除前面表项;在合并后,新生成1M表项,在下个迭代周期,从后向前索引,如果发现重复1M的addr,删除前面表项,从而减小LRU列表大小。
在又一实施例中,本申请还提供虚拟机迁移过程中的缓存处理方法,用于在主机上的虚拟机发生宕机或硬件发生故障时,缓存备份过程。具体地,如图7所示,所述方法还包括:
S301:检测到所述第一主机宕机是否发生宕机。
S302:当检测到第一主机宕机发生宕机时,向迁移处理模块发送第二命令,所述第二命令用于指示所述迁移处理模块将所述第一主机的虚拟机迁移至第二主机。
其中,所述第二命令中包括指示信息,用于指示第一主机的虚拟磁盘文件在所述共享文件系统的后备缓存单元中所对应的第二LRU列表。根据该指示信息可以确定后备缓存单元中的第二LRU列表,进而将该第二LRU列表迁移至其他主机。
迁移处理模块接收第二命令并将其转发给后端存储引擎处理模块,以使后端存储引擎处理模块将预先存储在备份缓存单元中的LRU列表传输至其他主机上。
步骤S303:后端存储引擎处理模块接收第二命令后,查找目标LRU列表,比如该目标LRU列表为第二LRU列表。
步骤S304:后端存储引擎处理模块接收来自第二主机的缓存处理模块发送的LRU命令。
步骤S305:后端存储引擎处理模块将所述目标LRU列表发送至第二主机。
步骤S306:第二主机的缓存处理模块接收后,持久化缓存目标LRU列表至数据缓存中。
在一具体示例中,当虚拟机a所在主机A宕机,虚拟机a从主机A迁移到主机B,主机A向迁移缓存处理模块,进入迁移缓存处理模块:源主机是主机A。
第二主机(B主机)的缓存处理模块向后端存储引擎模块发送命令,用于获取主机A要迁移的虚拟磁盘文件名a的LRU表;后端存储引擎模块接收命令后,根据该命令中的命令字获取LRU表;命令参数虚拟磁盘文件名a的LRU表。后端存储引擎处理模块从主机B缓存处理模块接收到获取LRU表命令。根据虚拟磁盘文件名a找到相应的cache LRU b表b1,返回给B主机缓存处理模块。
此外,还包括:第二主机的缓存处理模块向后端存储引擎模块发送命令裁剪LRU表,命令字裁剪LRU表,命令参数b1,最大空间;后端存储引擎处理模块从主机B缓存处理模块接收到裁剪LRU表命令。根据命令参数,最大空间计算LRU b1表最大数目。如对于1Tcache空间除以64K cache line得到64K,并记录索引LRU b表,当前LRU表项为64K+1000;裁剪超过64K数目的条目,删除尾部1000条数据表项,从而极大地节约存储资源。
第二主机上的缓存处理模块通过读取LRU b1表项信息,比如x和freq。第二主机的缓存理模块根据x确定是否是与前述计算得到的64K对齐。若是1M则确认对齐。
其中,如果是64K对齐,则在主机B的SSD缓存空间构造64K大小缓存线cacheline,如果是1M对齐,将1M大小的cache line展开成64K cache line,并在主机B的SSD缓存空间中构造64K大小的cacheline。
第二主机缓存处理模块还用于将地址段切分,并向集群其他主机发送至少一个命令,比如第三命令。比如主机A发送第三命令,该第三命令包括命令字和命令参数,其中,所述命令字用于确定从共享文件系统中执行加载数据的任务;所述命令参数用于在共享文件系统的至少一个虚拟磁盘中确定目标虚拟磁盘,以及从所述目标虚拟磁盘中加载缓存数据,并存储在本地缓存中。
举例说明,比如生成两个第三命令,分别发送给主机B和主机C,其中对于主机B而言,发送的第三命令中携带命令字1,用于指示加载cache数据,还包括命令参数1,内容addrx1,x2,x3,x4,用于指示根据该命令参数1查找在后备缓存单元中存储的虚拟机数据。同理地,对于主机C,发送第三命令携带命令字2,指示加载命令参数2,所述命令参数2的内容包括addr y1,y2,y3,y4。
类似地,集群其他主机,比如主机B和主机C中的缓存处理模块接收到第三命令后,根据命令字加载cache,以及根据命令参数addr xi/yi从共享文件系统的虚拟磁盘,加载xi数据至SSD缓存空间cache data。直至备份的数据被全部迁移完成,主机B启动虚拟机;存储客户端访问存储系统,向存储IO引擎下发写IO。
在另一实施例中,还提供了一种虚拟磁盘的缓存数据加速方法,应用于后端存储引擎处理模块,所述后端存储引擎处理模块位于共享文件系统中,如图6所示,所述方法包括:
步骤S201:响应于第一主机将添加有LRU表项的第一LRU列表持久化至所述共享文件系统的操作,并生成第二LRU列表。
其中,第二LRU列表包括映射关系和LRU表项,所述映射关系为第一主机的LRU缓存数据与所述共享文件系统的后备缓存之间的映射关系。
步骤S202:将第二LRU列表追加写入到所述后备缓存单元中,以使集群中的其他主机从所述共享文件系统的后备缓存单元中获取所述第二LRU列表,并根据所述映射关系和所述LRU表项恢复所述LRU缓存数据。
可选的,在一种实施方式中,所述步骤S201,具体包括:
方式一:基于所述第一主机的缓存处理模块的同步操作,即当第一LRU列表中新增LRU表项时,响应于所述第一主机的持久化操作,并生成第二LRU列表。
或者,方式二:根据来自所述第一主机的缓存处理模块发送的至少一个第一命令,根据每个所述第一命令执行所述第一主机的持久化操作,生成第二LRU列表。
此外,上述方法还包括:当第一主机淘汰第一LRU列表中末尾的LRU表项时,响应于所述第一主机将删除所述末尾LRU表项和目标映射关系的第一LRU列表的持久化操作,生成第三LRU列表,所述第三LRU列表是在所述第一LRU列表中淘汰末尾的LRU表项和目标映射关系后生成;将第三LRU列表持久化写入至所述共享文件系统的后备缓存单元中。
具体地过程可参见前述实施例的描述,本实施例此处不再赘述。
可选的,在一种实施方式中,接收来自第一主机持久化操作的第二LRU列表之后,还包括:按照预设规则对所述第二LRU列表中的至少一个表项进行整合,所述预设规则包括按照追加写机制比较新追加的LRU表项与列表中已存储的LRU表项是否存在重复,如果是,则剔除重复的LRU表项;将剔除后的剩余LRU表项合并生成第四LRU列表。
其中,第四LRU列表中包括所述后备缓存单元(backend storage)中每个缓存单位与所述第一主机上本地缓存(cache storage)的每个缓存单位的映射关系。进一步地,后备缓存单元中每个缓存单位为核心线core line,第一主机上本地缓存的每个缓存单位为缓存线cache line;所述映射关系为核心线core line与缓存线cache line之间的映射关系。
此外,方法还包括:将所述第四LRU列表存储在后备缓存单元中。
可选的,在另一种实施方式中,所述方法还包括:当第一主机的发生宕机时,接收第二主机发送的第二命令,第二命令用于指示将第一主机的虚拟磁盘文件迁移至第二主机,所述第二命令中包括指示信息,用于指示第一主机的虚拟磁盘文件名的命令参数;根据所述命令参数查找在所述后备缓存中的对应的第二LRU列表,所述第二LRU列表为第一主机持久化在所述后备缓存的LRU列表;将该第二LRU列表发送至所述第二主机,以使第二主机根据第二LRU列表恢复出第一主机的第一虚拟磁盘文件,即LRU缓存数据。
此外,所述将第二LRU列表发送至所述第二主机之前,还包括:当接收到来自所述第二主机的裁剪命令时,对所述第二LRU列表中的至少一条LRU表项进行条目裁剪,并将裁剪后的LRU列表发送至第二主机。
可选的,对应于上述虚拟机迁移过程中缓存处理过程,当接收到两个或两个以上主机的加载请求时,根据每个所述主机请求的数据资源,将所述后备缓存单元中的缓存数据拆分成多个数据块;将不同的所述数据块分别发送至所述两个或两个以上主机,以使接收的每个主机根据所述多个数据块整合后恢复出所述后备缓存单元中存储的LRU表项数据。本实施例中通过第二LRU列表在其他主机上恢复的LRU列表,称为第五LRU列表,第五LRU列表用于恢复第一虚拟磁盘文件的加速缓存数据。
比如,对于按照由主机A、主机B和主机C共3个主机组成的集群系统,集群系统中包括两个副本,迁移前数据块分布在主机A、主机B和主机C,其中主机A上存储有完整副本。若主机A发生故障,则利用共享文件系统进行数据迁移后,使得主机B和主机C上也都有完整副本,从而保证系统中依然是两个副本。
本实施例提供的方法当源主机宕机或硬件异常,因为LRU持久化在共享文件系统上,后端存储仍是可以访问的,不影响cache LRU表的读取,缓存表项不会丢失,保证系统中副本数量。
此外,采用追加写IO引擎,随机转顺序机制,将LRU表刷盘,性能好。
并且,缓存处理模块定期合并重整持久化LRU表,减少cache LRU表数据量,在虚拟机迁移过程中,多主机同时从共享文件系统里恢复出cache data,相对于现有方案,cache重构速度更快。
在本实施例中还提供了一种缓存数据加速装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种缓存数据加速装置,用于实现前述缓存处理模块的功能,如图8所示,该装置包括:
获取模块801,用于获取第一主机上本地缓存的第一LRU列表,第一LRU列表中包括缓存的N条LRU表项,N为正整数且N≥1,其中第一LRU列表用于在本地缓存中存储LRU缓存数据。
处理模块802,用于在所述第一LRU表中查询LRU缓存数据如果未命中时,生成一条LRU表项,并将LRU表项添加至第一LRU列表,建立本地缓存的LRU缓存数据与共享文件系统的后备缓存之间的映射关系。
持久化模块803,用于将添加所述LRU表项的第一LRU列表持久化至第一主机所在集群所配置的共享文件系统的后备缓存中,生成第二LRU列表,所述第二LRU列表中包括所述映射关系和所述LRU表项,以使其他主机从所述共享文件系统的后备缓存单元中获取所述第二LRU列表,并从所述第二LRU列表的映射关系和所述LRU表项中恢复所述LRU缓存数据。
此外,该装置还可以包括其他单元或模块,比如接收模块、存储模块等。
可选的,在一种可能的实施方式中,持久化模块803,具体用于当第一LRU列表中添加LRU表项时,将添加所述LRU表项的第一LRU列表持久化至后备缓存单元中。
或者,周期性地向共享文件系统的后备引擎处理模块发送至少一个第一命令,每个第一命令用于指示所述后端存储引擎处理模块将第一LRU列表持久化至后备缓存单元中。
可选的,在另一种可能的实施方式中,处理模块802,还用于当需要淘汰第一LRU列表中末尾的LRU表项时,在本地缓存的至少一个映射中确定目标映射,目标映射中为所述末尾的LRU表项的缓存数据与目标后备缓存之间的映射关系;将删除末尾LRU表项和所述目标映射关系的第一LRU列表,持久化至所述共享文件系统的后备缓存单元中生成第三LRU列表,其中,第三LRU列表为淘汰末尾LRU表项数据和所述目标映射关系后的列表。
可选的,在又一种可能的实施方式中,上述装置还包括发送模块,用于当检测到所述第一主机宕机时,向迁移处理模块发送第二命令,所述第二命令用于指示所述迁移处理模块将所述第一主机的虚拟磁盘文件迁移至第二主机。
其中,第二命令中包括指示信息,所述指示信息用于指示第一主机的虚拟磁盘文件在所述共享文件系统的后备缓存单元中所对应的所述第二LRU列表,并将所述第二LRU列表加载至其他机主,比如迁移至第二主机。
可选的,在又一种可能的实施方式中,上述装置还包括接收模块,用于接收来自第二主机的第三命令,所述第三命令中包括命令字和命令参数。
上述处理模块802,还用于根据所述命令字确定从共享文件系统中执行加载数据的任务;以及根据所述命令参数在所述共享文件系统的至少一个虚拟磁盘中确定第一虚拟磁盘,从所述第一虚拟磁盘中加载缓存数据,比如生成第五LRU列表,并将该第五LRU列表存储在本地缓存中。所述第五LRU列表用于恢复第一虚拟磁盘文件的加速缓存数据。
在另一实施例中,还提供了一种虚拟磁盘的缓存数据加速装置,用于实现前述后端存储引擎处理模块的功能作用,如图9所示,该装置包括:
生成模块901,用于响应于第一主机将添加有LRU表项的第一LRU列表持久化至共享文件系统的操作,并生成第二LRU列表,第二LRU列表中包括映射关系和所述LRU表项。
所述映射关系为第一主机本地缓存的LRU缓存数据与共享文件系统的后备缓存之间的映射关系。
写入模块902,用于将第二LRU列表追加写入到后备缓存单元中,以使集群中其他主机从所述共享文件系统的后备缓存单元中获取所述第二LRU列表,并根据所述映射关系和所述LRU表项中恢复LRU缓存数据。
可选的,在一种可能的实施方式中,生成模块901,具体用于当第一LRU列表更新时,响应于第一主机的持久化操作,并生成所述第二LRU列表;或者,根据来自所述第一主机的缓存处理模块发送的至少一个第一命令,根据每个所述第一命令执行所述第一主机的持久化操作,生成第二LRU列表。
可选的,在一种可能的实施方式中,上述装置还包括持久化模块。
生成模块901,还用于当第一主机淘汰所述第一LRU列表中末尾的LRU表项时,响应于所述第一主机将删除末尾LRU表项和目标映射关系的第一LRU列表的持久化操作,生成第三LRU列表。第三LRU列表是在所述第一LRU列表中淘汰末尾的LRU表项和目标映射关系后生成;将所述第三LRU列表通过所述持久化模块持久化写入至所述后备缓存单元中。
可选的,在另一种可能的实施方式中,上述装置还包括整合模块,用于按照预设规则对第二LRU列表中的至少一个LRU表项进行整合,生成第四LRU列表,所述预设规则包括按照追加写机制比较新追加的LRU表项与列表中已存储的LRU表项是否存在重复,如果是,则剔除重复的LRU表项;将所述第四LRU列表存储在后备缓存单元中。
其中,所述第四LRU列表中包括后备缓存单元中每个缓存单位与第一主机上本地缓存的每个缓存单位的映射关系。
可选的,在又一种可能的实施方式中,接收模块901,还用于当第一主机的发生宕机时,接收迁移处理模块发送的第二命令,第二命令用于指示将第一主机的虚拟磁盘文件迁移至第二主机,所述第二命令中包括指示信息。
所述整合模块还用于根据所述第二命令中的指示信息在后备缓存单元中获取第一主机的虚拟磁盘文件名所对应的第二LRU列表,并将第二LRU列表发送至第二主机,以使第二主机根据第二LRU列表生成第五LRU列表,第五LRU列表用于恢复第一虚拟磁盘文件加速的缓存数据。
可选的,在又一种可能的实施方式中,上述装置还包括拆分模块,用于当接收模块901接收到两个或两个以上主机的加载请求时,根据每个所述主机请求的数据资源,将第二LRU列表的至少一个LRU表项和所述映射关系拆分成多个数据块;并通过发送模块将所述多个数据块分别发送至两个或两个以上主机,以使接收的每个主机根据所述多个数据块整合恢复出所述后备缓存单元中存储的LRU缓存数据。
本实施例提供的装置,在宿主机的虚拟磁盘的缓存加速第一LRU列表,在有新增LRU表项时,更新本地缓存的第一LRU列表,并将该第一LRU列表通过追加写IO引擎持久化到虚拟磁盘所在的共享文件系统或共享存储上,生成第二LRU列表。由于该第二LRU列表被持久化至宿主机集群所配置的共享文件中,所以可以供其他宿主机加载并获取第二LRU列表的数据,使得接收的其他宿主机(多主机)同时恢复出LRU列表的表项数据,提高重构缓存数据的效率,并且在恢复过程中不会发生数据丢失。
本实施例中的缓存数据加速装置是以功能单元的形式来呈现,这里的单元是指ASIC电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本发明实施例还提供一种电子设备,具有上述图10所示的缓存数据加速装置。
请参阅图10,图10是本发明可选实施例提供的一种电子设备的结构示意图。
如图10所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图10中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,所述存储器20存储有可由至少一个处理器10执行的指令,以使所述至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据一种小程序落地页的展现的计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括输入装置和输出装置。处理器10、存储器20、输入装置和输出装置可以通过总线或者其他方式连接。其中,输入装置可接收输入的数字或字符信息,以及产生与该计算机设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等。输出装置可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。上述显示设备包括但不限于液晶显示器,发光二极管,显示器和等离子体显示器。在一些可选的实施方式中,显示设备可以是触摸屏。
该电子设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。
其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (14)

1.一种虚拟磁盘的缓存数据加速方法,其特征在于,应用于第一主机,所述方法包括:
获取第一主机上本地缓存的第一最近最少使用LRU列表,所述第一LRU列表用于在所述本地缓存中存储LRU缓存数据;
在所述第一LRU列表中查询所述LRU缓存数据如果未命中,则生成一条LRU表项,并将所述LRU表项添加至所述第一LRU列表,建立本地缓存的所述LRU缓存数据与共享文件系统的后备缓存之间的映射关系;
将添加所述LRU表项的第一LRU列表持久化至所述第一主机所在集群的共享文件系统的后备缓存单元中,生成第二LRU列表,所述第二LRU列表中包括所述映射关系和所述LRU表项,以使集群中其他主机从所述后备缓存单元中获取所述第二LRU列表,并根据所述映射关系和所述LRU表项恢复所述LRU缓存数据。
2.根据权利要求1所述的方法,其特征在于,所述将添加所述LRU表项的第一LRU列表持久化至所述第一主机所在集群的共享文件系统的后备缓存单元中,包括:
当在所述第一LRU列表中添加LRU表项时,将添加所述LRU表项的第一LRU列表持久化至所述后备缓存单元中;
或者,周期性地向所述共享文件系统发送至少一个第一命令,根据每个所述第一命令将添加所述LRU表项的第一LRU列表持久化至所述后备缓存单元中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当需要淘汰所述第一LRU列表中末尾的LRU表项时,在本地缓存的至少一个映射关系中确定目标映射关系,所述目标映射关系为所述末尾的LRU表项的缓存数据与目标后备缓存之间的映射关系;
将删除所述末尾LRU表项和所述目标映射关系的第一LRU列表,持久化至所述共享文件系统的后备缓存单元中生成第三LRU列表,所述第三LRU列表为淘汰末尾LRU表项和所述目标映射关系后的列表。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到所述第一主机宕机时,向迁移处理模块发送第二命令,所述第二命令用于指示将所述第一主机的虚拟磁盘文件迁移至第二主机;
其中,所述第二命令中包括指示信息,所述指示信息用于指示所述第一主机的虚拟磁盘文件在所述共享文件系统的后备缓存单元中所对应的所述第二LRU列表,并将所述第二LRU列表加载至其他机主。
5.一种虚拟磁盘的缓存数据加速方法,其特征在于,应用于共享文件系统中,所述方法包括:
响应于第一主机将添加有LRU表项的第一LRU列表持久化至所述共享文件系统的操作,并生成第二LRU列表,所述第二LRU列表中包括映射关系和所述LRU表项,所述映射关系为所述第一主机本地缓存的LRU缓存数据与所述共享文件系统的后备缓存之间的映射关系;
将所述第二LRU列表追加写入到所述后备缓存单元中,以使集群中其他主机从所述后备缓存单元中获取所述第二LRU列表,并根据所述映射关系和所述LRU表项恢复LRU缓存数据。
6.根据权利要求5所述的方法,其特征在于,所述响应于第一主机将添加有LRU表项的第一LRU列表持久化至所述共享文件系统的操作,并生成第二LRU列表,包括:
当在所述第一LRU列表中添加LRU表项时,响应于所述第一主机的持久化操作,并生成所述第二LRU列表;
或者,周期性地接收所述第一主机发送的至少一个第一命令,根据每个所述第一命令执行所述第一主机的持久化操作,生成所述第二LRU列表。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述第一主机淘汰所述第一LRU列表中末尾的LRU表项时,响应于所述第一主机将删除所述末尾LRU表项和目标映射关系的第一LRU列表的持久化操作,生成第三LRU列表,所述第三LRU列表为在所述第一LRU列表中淘汰末尾的LRU表项所述目标映射关系后的列表;
将所述第三LRU列表追加写入至所述后备缓存单元中。
8.根据权利要求5至7中任一项所述的方法,其特征在于,所述生成所述第二LRU列表之后,还包括:
按照预设规则对所述第二LRU列表中的至少一个LRU表项进行整合,并生成第四LRU列表,所述预设规则包括按照追加写机制比较新追加的LRU表项与列表中已存储的LRU表项是否存在重复,如果是,则剔除重复的LRU表项;
将所述第四LRU列表存储在所述后备缓存单元中。
9.根据权利要求5至7中任一项所述的方法,其特征在于,所述方法还包括:
当所述第一主机的发生宕机时,接收迁移处理模块发送的第二命令,所述第二命令用于指示将所述第一主机的虚拟磁盘文件迁移至第二主机,所述第二命令中包括指示信息;
根据所述第二命令中的所述指示信息在所述后备缓存单元中获取所述第一主机的第一虚拟磁盘文件名所对应的所述第二LRU列表,并将所述第二LRU列表发送至所述第二主机,以使所述第二主机根据第二LRU列表生成第五LRU列表,所述第五LRU列表用于恢复第一虚拟磁盘文件的加速缓存数据。
10.根据权利要求9所述的方法,其特征在于,所述将所述第二LRU列表加载至所述第二主机,包括:
将所述第二LRU列表中的至少一个LRU表项和所述映射关系拆分成多个数据块;
将所述多个数据块加载至所述第二主机,以使所述第二主机根据所述多个数据块整合恢复所述第一虚拟磁盘文件,并生成所述第五LRU列表。
11.一种虚拟磁盘的缓存数据加速装置,其特征在于,所述装置包括:
获取模块,用于获取第一主机上本地缓存的第一最近最少使用LRU列表,所述第一LRU列表用于在所述本地缓存中存储LRU缓存数据;
处理模块,用于在所述第一LRU列表中查询所述LRU缓存数据未命中时,生成一条LRU表项,并将所述LRU表项添加至所述第一LRU列表,并建立本地缓存的LRU缓存数据与共享文件系统的后备缓存之间的映射关系;
持久化模块,用于将添加所述LRU表项的第一LRU列表持久化至所述第一主机所在集群的共享文件系统的后备缓存单元中,生成第二LRU列表,所述第二LRU列表中包括所述映射关系和所述LRU表项,以使集群中其他主机从所述后备缓存单元中获取所述第二LRU列表,并根据所述映射关系和所述LRU表项恢复所述LRU缓存数据。
12.一种虚拟磁盘的缓存数据加速装置,其特征在于,所述装置包括:
生成模块,用于响应于第一主机将添加有LRU表项的第一LRU列表持久化至共享文件系统的操作,并生成第二LRU列表,所述第二LRU列表中包括映射关系和所述LRU表项,所述映射关系为所述第一主机本地缓存的LRU缓存数据与所述共享文件系统的后备缓存之间的映射关系;
写入模块,用于将所述第二LRU列表追加写入到所述后备缓存单元中,以使集群中其他主机从所述后备缓存单元中获取所述第二LRU列表,并根据所述映射关系和所述LRU表项恢复所述LRU缓存数据。
13.一种电子设备,其特征在于,包括存储器和处理器,所述存储器和所述处理器相连接,
所述存储器中存储有计算机指令;
所述处理器通过执行所述计算机指令,执行权利要求1至4,或权利要求5至10中任一项所述的虚拟磁盘的缓存数据加速方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,
所述计算机指令用于使计算机执行权利要求1至4,或权利要求5至10中任一项所述的虚拟磁盘的缓存数据加速方法。
CN202311285434.6A 2023-09-28 2023-09-28 一种虚拟磁盘的缓存数据加速方法、装置和设备 Pending CN117348968A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311285434.6A CN117348968A (zh) 2023-09-28 2023-09-28 一种虚拟磁盘的缓存数据加速方法、装置和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311285434.6A CN117348968A (zh) 2023-09-28 2023-09-28 一种虚拟磁盘的缓存数据加速方法、装置和设备

Publications (1)

Publication Number Publication Date
CN117348968A true CN117348968A (zh) 2024-01-05

Family

ID=89358771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311285434.6A Pending CN117348968A (zh) 2023-09-28 2023-09-28 一种虚拟磁盘的缓存数据加速方法、装置和设备

Country Status (1)

Country Link
CN (1) CN117348968A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117707437A (zh) * 2024-02-06 2024-03-15 济南浪潮数据技术有限公司 基于分布式存储系统的虚拟磁盘存储方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117707437A (zh) * 2024-02-06 2024-03-15 济南浪潮数据技术有限公司 基于分布式存储系统的虚拟磁盘存储方法及装置

Similar Documents

Publication Publication Date Title
US20200371883A1 (en) Remote Data Replication Method and System
CN107533507B (zh) 管理存储装置中的数据的方法和系统
US10152381B1 (en) Using storage defragmentation function to facilitate system checkpoint
US10013317B1 (en) Restoring a volume in a storage system
US10540279B2 (en) Server-based persistence management in user space
US8407448B1 (en) Shared storage I/O elimination through mapping client integration into a hypervisor
US10838829B2 (en) Method and apparatus for loading data from a mirror server and a non-transitory computer readable storage medium
US8930648B1 (en) Distributed deduplication using global chunk data structure and epochs
US9612749B2 (en) Opportunistic asynchronous deduplication using an in-memory cache
US20190250818A1 (en) System and methods for storage data deduplication
US9959074B1 (en) Asynchronous in-memory data backup system
US9122589B1 (en) Data storage system with unified system cache
EP3206128B1 (en) Data storage method, data storage apparatus, and storage device
EP3449351A1 (en) Inline deduplication
JP2021144748A (ja) 分散型ブロックストレージシステム、方法、装置、デバイス、及び媒体
CN117348968A (zh) 一种虚拟磁盘的缓存数据加速方法、装置和设备
US9218134B2 (en) Read based temporal locality compression
US11880584B2 (en) Reverse range lookup on a unified logical map data structure of snapshots
KR102403063B1 (ko) 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법
US8825970B1 (en) System and method for mounting a storage volume utilizing a block reference list
US11748014B2 (en) Intelligent deduplication in storage system based on application IO tagging
WO2022094895A1 (en) Virtual data copy supporting garbage collection in distributed file systems
US20230409530A1 (en) Grouping data to conserve storage capacity
Appuswamy et al. File-level, host-side flash caching with loris
JP2016212819A (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