在多个计算节点之间的存储资源共享的制作方法

文档序号:10617861阅读:486来源:国知局
在多个计算节点之间的存储资源共享的制作方法
【专利摘要】一种方法,包括:在多个计算节点(24)上运行相应的存储共享代理(48),存储共享代理在通信网络(28)上相互通信。访问存储页面的一个或多个本地虚拟机(VM?70)运行在给定的计算节点上。通过使用存储共享代理,将由本地VM访问的存储页面储存在计算节点中的至少两个计算节点上,并将所储存的存储页面供应给本地VM。
【专利说明】
在多个计算节点之间的存储资源共享发明领域[0001]本发明总体上涉及计算系统,尤其是涉及在计算节点之间共享资源的方法和系 统。[0002]发明背景[0003]机器虚拟化经常用于多种计算环境,诸如用于数据中心和云计算。在本领域中已 知多种虚拟化方案。例如,加利福尼亚州Palo Alto市的VMware,Inc.提供了用于各种环境 (诸如,数据中心、云计算、个人桌面和移动计算)的虚拟化软件。[0004]公开内容以引用的方式并入本文的美国专利8,266,238描述了一种装置,其包括 设置成储存数据的物理存储器以及设置成支持虚拟机监控器(VMM)的芯片组。VMM设置成将 虚拟机的虚拟存储器地址空间的区域内的虚拟存储器地址映射到网络地址,以便收集由客 操作系统做出的存储器读取或写入访问,以便确定针对大于装置的物理存储器上可用的物 理存储器地址范围的存储器地址,发生了存储器读取或写入访问,并从而将对应于存储器 读取或写入访问的数据读取或写入请求转发至与多个虚拟存储器地址之一对应的多个网 络地址之一相关的网络设备。[0005]公开内容以引用的方式并入本文的美国专利8,082,400描述了用于共享存储池的 固件,该存储池包括系统的多个计算节点中的至少一个计算节点中的至少一个物理存储 器。固件将存储池分区为多个存储器空间,该存储器空间被分配成给至少一些计算节点中 的一些对应的计算节点,并且固件将至少一个物理存储器的一部分映射到存储器空间。存 储空间中的至少一个包括来自多个计算节点中的另一个计算节点的物理存储器部分。[0006]公开内容以引用的方式并入本文的美国专利8,544,004描述了基于聚类的操作系 统-未知虚拟计算系统。在实施例中,使用常规的计算机硬件实现了节点的基于聚类的收 集。提供了一种软件,该软件使至少一个VM能够存在于客操作系统,其中采用虚拟机参与的 每个节点具有自身的模拟器或VMM。通过钩子(hook)提供了VM存储一致性和I/O—致性,这 导致对内部处理器结构的处理。专用网络提供了多个节点之间的通信。[0007]发明概述[0008]本文中描述的本发明的实施例提供了一种方法,包括:在多个计算节点上运行相 应的存储共享代理,所述存储共享代理在通信网络上相互通信。访问存储页面的一个或多 个本地虚拟机(VM)运行在给定的计算节点上。通过使用存储共享代理,将由本地VM访问的 存储页面储存在计算节点中的至少两个计算节点上,并将所储存的存储页面供应给本地 VM〇[0009]在一些实施例中,运行存储共享代理包括:根据预定义的准则,将由本地VM访问的 存储页面分类为经常访问的存储页面和很少访问的存储页面,并通过使用存储共享代理仅 仅处理很少访问的存储页面。在一些实施例中,运行存储共享代理包括:将储存在给定的计 算节点上的存储页面分类为主要由本地VM写入的并且很少由本地VM读取的存储页面、主要 由本地VM读取的并且很少由本地VM写入的存储页面、以及很少由本地VM写入并且很少由本 地VM读取的存储页面,并基于给定的存储页面的分类,决定是否从给定的计算节点输出给定的存储页面。[0010]在一个公开的实施例中,储存存储页面包括:将存储页面引入到存储共享代理,将 存储共享代理中的一个定义为拥有引入的存储页面,并通过使用存储共享代理中的所述一 个来储存引入的存储页面。在一个实施例中,运行所述存储共享代理包括:在多个计算节点 上保持给定的存储页面的不多于预定义数量的副本。[0011]在另一个实施例中,储存存储页面包括:响应于在给定的计算节点中的存储压力 状况,选择储存在给定的计算节点上的存储页面,并且在通过使用存储共享代理证实了在 多个计算节点中储存了至少预定数量的副本的所选择的存储页面的条件下,从给定的计算 节点删除所选择的存储页面。在又一个实施例中,储存存储页面包括:响应于在给定的计算 节点中的存储压力状况,选择储存在给定的计算节点上的存储页面,并通过使用存储共享 代理,将所选择的存储页面输出给另一个计算节点。[0012]在一个实施例中,供应存储页面包括:响应于本地VM访问没有储存在给定的计算 节点上的存储页面,通过使用存储共享代理提取存储页面。提取存储页面可包括:从给定的 计算节点的本地存储共享代理向被定义为拥有存储页面的第一计算节点的第一存储共享 代理发送针对其上储存有存储页面的第二计算节点的身份的查询,并向第二计算节点请求 存储页面。在一个实施例中,提取存储页面包括:与发送查询无关,向已知储存了存储页面 的副本的计算节点请求存储页面。[0013]根据本发明的实施例,另外提供了一种系统,包括:多个计算节点,其包括相应的 存储器和相应的处理器,其中,给定的计算节点的处理器被设置成运行访问存储页面的一 个或多个本地虚拟机(VM),且其中,处理器被设置成运行相应的在通信网络上相互通信的 存储共享代理,并且处理器被设置成通过使用存储共享代理,将由本地VM所访问的存储页 面储存在计算节点中的至少两个计算节点上,并将所储存的存储页面供应给本地VM。[0014]根据本发明的实施例,还提供了包括存储器和处理器的计算节点。处理器设置成: 运行访问存储页面的一个或多个本地虚拟机(VM),并运行存储共享代理,所述存储共享代 理在通信网络上与运行在相应的其他计算节点上的一个或多个其他存储共享代理进行通 信,从而将由所述本地VM访问的存储页面储存在所述计算节点的所述存储器中和在所述其 他计算节点中的至少一个计算节点上,以及从而将所储存的存储页面供应给所述本地VM。[0015]根据本发明的实施例,还提供了一种计算机软件产品,所述产品包括:在其中储存 了程序指令的有形非暂时性计算机可读介质,当由运行了访问存储页面的一个或多个本地 虚拟机(VM)的计算节点的处理器读取时,所述指令使得所述处理器运行存储共享代理,所 述存储共享代理在通信网络上与运行在相应的其他计算节点上的一个或多个其他存储共 享代理进行通信,从而将所述本地VM访问的存储页面储存在所述计算节点的存储器中和在 其他计算节点中的至少一个计算节点上,以及从而将所储存的存储页面供应给所述本地 VM〇[0016]从结合附图进行的本发明的实施例的以下详细描述,本发明将被更完全地理解, 其中:[0017]附图简述[0018]图1为根据本发明的实施例示意性示出计算节点的集群的方框图;[0019]图2是根据本发明的实施例,示意性示出用于保持或输出存储页面的准则的图示;[0020]图3是根据本发明的实施例,示意性示出分布式存储共享架构的图示;[0021]图4为根据本发明的实施例,示意性示出用于在计算节点的集群之间共享存储页 面的后台过程的流程图;[0022]图5是根据本发明的实施例,示意性示出用于减轻在计算节点中的存储压力的方 法的流程图;[0023]图6是根据本发明的实施例,示意性示出用于将存储页面提取到计算节点的方法 的流程图;并且[0024]图7为根据本发明的实施例,示意性示出存储页面的生命周期的状态图。
【具体实施方式】
[0〇25] 综述
[0026]多种计算系统(诸如,数据中心、计算系统和高性能计算(HPC)系统)在由通信网络连接的计算节点的集群上运行虚拟机(VM)。在很多实际情况中,限制VM性能的主要瓶颈是缺乏可用的存储器。当使用常规虚拟化方案时,节点的平均利用趋向于近似于10%或以下, 主要是因为存储器的低效使用。这样的低利用意味着节点的昂贵的计算资源很大程度上是空闲的或浪费的。
[0027]本文描述的本发明的实施例提供用于在集群范围中共享存储资源的方法和系统。 本文描述的方法和系统使得在给定的计算节点上运行的VM能够无缝地使用在集群中的其他节点的存储资源。特别是,经受存储压力的节点能够利用具有空闲存储器的其他节点的存储资源。
[0028]在一些实施例中,每个节点运行相应的存储器共享代理,本文中称之为分布式页面储存(DPS)代理。统称为DPS网络的DPS代理相互通信,以便协调存储页面的分布式储存。 通常,每个节点旨在使其本地存储器中仅保存有少量经常由本地VM访问的存储页面。其他存储页面可作为针对从节点可能的迀出的候补,而被引入到DPS网络。将存储页面引入到 DPS网络通常由本地管理程序(如后台进程)在每个节点中执行。
[0029]DPS网络可采用多种方式将之前引入的存储页面从本地节点迀出。例如,如果在集群范围中存在足够数量的页面的副本,则可从本地节点删除页面。这种处理被称为重复数据删除(de-duplicat1n)。如果页面的副本的数量不允许重复数据删除,则页面可被输出至另一个节点。后者的处理被称为远程交换。下面具体描述示例存储共享架构、示例重复数据删除和远程交换进程。还描述了示例“页面调入”过程,其提取远程储存页面供由本地VM 使用。
[0030]本文描述的方法和系统解决了限制集群节点利用的存储可用性瓶颈。当使用所公开的技术时,给定的计算强度中的一个集群可执行较重的工作负载。可选地,使用较小且较少的昂贵的集群可执行给定的工作负载。在任一情况中,集群的成本效益都得到相当大地改善。对于运行很多VM的较大的集群来说,所公开的技术的性能收益特别显著,但可采用任何合适的集群大小或环境,来使用本文描述的方法和系统。
[0031]系统描述
[0032]图1是根据本发明的实施例示意性示出计算系统20的方框图,计算系统20包括许多计算节点24的集群。例如,系统20可包括数据中心、云计算系统、高性能计算(HPC)系统、或任何其他合适的系统。
[0033]计算节点24(为了简洁,而简称为“节点”)通常包括服务器,但可以可选地包括任何其他合适类型的计算节点。系统20可包括任何合适数量的节点,这些节点或是相同类型, 或是不同类型。节点24由通常是局域网(LAN)的通信网络28连接。网络28可根据任何合适的网络协议(诸如以太网或Infiniband)运行。[〇〇34] 每个节点24均包括中央处理单元(CPU)32。取决于计算节点的类型,CPU32可包括多个处理核心和/或多个集成电路(1C)。无论具体的节点配置,节点的处理电路作为整体在本文中当作节点CPU。每个节点24还包括存储器36(通常是易失性存储器,诸如动态随机存取存储器-DRAM)以及用于与网络28进行通信的网络接口卡(NIC)44。节点24中的一些(而不必是全部节点)包括非易失性存储设备40(例如,磁性硬盘驱动-HDD-或固态驱动-SSD)。 [〇〇35] 节点24通常运行虚拟机(VM),其转而运行客户应用。在一些实施例中,在给定的节点上运行的VM访问储存在多个节点上的存储页面。出于在多个节点24之间共享存储资源的目的,每个节点的CPU运行分布式页面储存(DPS)代理48。在多个节点中的DPS代理48通过网络28相互通信,用于如以下将具体解释地协调存储页面的储存。在本文中,将多个DPS代理共同称为“DPS网络”。也将DPS代理48称为“DPS守护进程”、“存储共享守护进程”或简称为 “代理”或“守护进程”。在本文中,可互换地使用全部这些术语。
[0036]在图1中显示的系统和计算节点配置是示例配置,仅仅为了概念上清晰起见而被选择。在可选实施例中,可使用任何其他合适的系统和/或节点配置。可使用硬件/固件,诸如在一个或多个特定用途集成电路(ASIC)或现场可编程门阵列(FPGA)中实施设备20的多种组件,特别是实施节点24的组件。可选地,可在软件中,或使用硬件/固件与软件组件的组合,来实施一些系统或节点组件(例如CPU32)。在一些实施例中,CPU32包括通用处理器,所述通用处理器在软件中被编程以执行在本文中描述的功能。可经由网络以电子形式将软件下载到处理器,例如,或者所述软件可以可选地或附加地被提供和/或存储在非暂时性有形媒介上,诸如磁存储器、光学存储器或电子存储器。[〇〇37]系统概念和原理[〇〇38]在系统20的典型部署中,节点24运行VM,VM转而运行客户应用。并不是每个节点在任何给定时间都必须运行VM,给定的节点可运行单一 VM或多个VM。每个VM都消耗计算资源 (例如,CPU、存储器、储存器、和网络通信资源)。在很多实际场景中,限制系统性能的主要因素是缺乏存储器。换句话说,缺少可用的存储器经常限制系统运行更多的VM和应用。[〇〇39]在本发明的一些实施例中,在给定的节点24上运行的VM不限于仅使用该节点的存储器36,而是能够使用在其他节点中可用的存储资源。通过共享整个节点集群之中的存储资源,并通过随着时间调节存储器的共享,相当大地改善了全部存储利用。作为结果,给定大小的节点集群能够处理更多的VM和应用。可选地,给定工作负载可由较小的集群执行。
[0040]在一些情况中,相比于常规方案的在本地节点中由VM储存所有存储页面来说,所公开的技术可使得单独的VM的性能稍微退化。然而,在针对VM而定义的服务水平协议(SLA) 之内,这种退化经常是良好的,并且很值得资源利用的显著增长。换句话说,通过允许单独的VM的性能的稍微的可容忍的退化,所公开的技术使给定的计算节点集群能够运行数量大得多的VM,或者在小得多的集群上运行给定数量的VM。[0041 ]在系统20中的存储资源的共享由DPS网络(即,在多个节点中的DPS代理48)执行和协调。DPS网络使存储共享对于VM来说是透明的:VM访问存储页面,而与储存该存储页面的真实物理节点不相关。
[0042]在以下描述中,基本存储单元是存储页面。为了简洁,存储页面有时被简称为“页面”。在各个实施例中,存储页面的大小可以相互不同,例如,取决于所使用的操作系统 (0S)。典型的页面大小是4KB,然而可使用任何其他合适的页面大小(例如,2MB或4MB)。 [〇〇43]为了使系统性能最大化,系统20对由VM访问的多个存储页面进行分类,并且决定哪个存储器36(8卩,在节点24上)储存每个页面。管理这些决定的准则考虑到:例如,VM对页面的使用和访问概要,以及故障容限(即,在不同的节点上保存足够数量的页面的副本,以避免丢失数据)。[〇〇44] 在一些实施例中,并不是所有存储页面都由DPS网络处理,而是一些页面可由节点的0S在本地处理。通常由节点上运行的管理程序执行页面的分类,并决定是在本地处理页面还是共享页面,一以下将进一步描述。
[0045]在一个示例实施例中,根据一些预定义的准则,每个节点对由其本地VM访问的存储页面进行分类。通常,节点将页面分类为经常访问页面和很少访问页面。经常访问页面由 0S存储于节点上,并由0S在节点上进行本地处理。很少访问页面通过节点的本地DPS代理被引入到DPS网络,以用于对其他节点进行潜在的输出。在一些情况中,如以下将解释的,分类为用于读取而访问的页面以及用于写入而访问的页面,并进行有区分地处理。
[0046]在这种分类后面的原理是,在远程节点上储存经常访问页面代价很高(例如,依据延时和处理负载)。另一方面,在远程节点上储存很少使用页面,将对性能影响小。另外的或可选地,系统20可使用其他的、更细的粒度的准则。
[0047]图2是根据本发明的实施例,示意性示出用于保持或输出存储页面的示例准则的图示。在这个示例中,每个节点将存储页面分类为三类:类50包括由本地VM写入的页面(并且可能地由本地VM读取的页面),类54包括主要(例如,仅仅)由本地VM读取的、并且很少(例如,从不)由本地VM写入的页面,类58包括很少(例如,从不)由本地VM写入或读取的页面。随着时间推移,页面可根据它们的访问统计,从一类移动到另一类。[〇〇48] 节点有区分地处理每类的页面。例如,节点试图将类50中的页面(由本地VM写入的页面)本地地存储于节点上。类54中的页面(仅由本地VM从中读取的页面)可本地地保持,但也可输出给其他节点,并且若有必要的话,可被允许由运行在其他节点上的VM访问。根据需要,节点尝试将类58中的页面(本地VM既不写入、又不从中读取的页面)输出给其他节点。 [〇〇49]在大多数实际情况中,类50相对小,类54是中等大小,并且类58包括绝大多数的页面。因此,当使用以上的准则时,每个节点保存本地仅很少数量的、既从中读取又写入其中的经常访问页面。根据需要,其他页面可被移动到其他节点,而没有相当大的性能损害。
[0050]应注意的是,以上给定的页面分类和共享准则仅以示例的方式描绘。在可选实施例中,可使用任何其他合适的共享准则和/或分类。此外,将共享准则和/或分类当作目标或指导方针,系统根据需要可偏离共享准则和/或分类。
[0051]示例存储共享架构
[0052]图3是根据本发明的实施例,示意性示出在系统20中使用的分布式存储共享架构的图示。图的左手侧显示了在给定节点24的CPU上运行的组件,将其称为本地节点。系统20 中的每个节点24通常以相似的方式实施。图的右手侧显示了与本地节点相互作用的其他节点的组件。在本地节点(图中的左手侧)中,组件被划分为内核空间(图的下部)和用户空间 (图的上部)。后者的划分主要是实施驱动的,而不是强制性的。
[0053]在本示例中,每个节点运行在功能性上类似于以上图1中的DPS代理48的相应的用户空间DPS代理60,并运行内核空间节点页面管理器(NPM)64。节点运行管理程序68,管理程序被划分为用户空间管理程序组件72和内核空间管理程序组件76。在本示例中,虽然不是必须的,然而用户空间管理程序组件基于QEMU,并且内核空间管理程序组件基于Linux/ KVM。管理程序68运行一个或多个VM78,并为VM提供资源,诸如存储器、储存器、以及CHJ资源。[〇〇54] DPS代理60包括三个主要组件-页面储存器80、传输层84以及片段组件88。页面储存器80保持储存在节点上的存储器页面的真实内容(数据)。传输层84负责与其他节点的同级传输层84进行通信和交流。在DPS代理60中的管理应用程序编程接口(API)92与管理层96 进行通信。
[0055]片段88保持存储页面的元数据。例如,页面的元数据可包括页面的存储位置和对页面内容计算出的散列值。页面的散列值用作唯一的识别符,其识别集群范围中的页面(及其相同的副本)。散列值还被称作全球唯一内容ID(GUCID)。注意,散列仅是签名的示例形式,或者仅是可用于对页面内容进行索引的索引的示例形式。可选地,可使用任何其他合适的签名或索引方案。[〇〇56]连带地,所有节点24的片段88共同地保持在系统20中的所有存储页面的元数据。 每个片段88保持页面的子集的元数据,不必保持储存在相同节点上的页面的元数据。对于给定的页面,保持该页面的元数据的片段被定义为“拥有”该页面。很多技术可用于将页面分配给片段。在本示例中,每个片段88分配有相应范围的散列值,并拥有其散列值落入这个范围之中的页面。[〇〇57]从片段88的观点上,对于给定的所拥有的页面,每个节点24可以是三种角色之中的一种:
[0058]■“起源页面存储(可能以压缩的形式)在节点的存储器中,并由至少一个本地 VM使用。
[0059]■“存储页面存储(可能以压缩的形式)在节点的存储器中,但并不由任何本地 VM使用。
[0060]■“从属页面并不存储在节点的存储器中,但至少一个本地VM依赖于该页面,并可在任何时间访问该页面。
[0061]片段88通常是对每个所拥有的页面维持有三个列表的节点起源”角色的节点的列表、“存储”角色的节点的列表、以及“从属”角色的节点的列表。每个节点24可属于各个列表中的至多一个列表,但每个列表可包含多个节点。[〇〇62] NPM64包括内核空间本地页面追踪器90,其作为页面储存器80的内核侧组件。从逻辑上,页面追踪器90可视作属于DPS代理60 JPM还包括引入过程93和换出(swap-out)过程 94。引入过程93将页面引入到DPS网络。换出过程94处理针对输出给其他节点的候补的页面。以下进一步具体描述过程93和过程94的功能。虚拟存储管理模块96提供了对于管理程序和/或架构的潜在存储管理功能性(例如,将虚拟机的地址空间映射进来或映射出去的功能)的接口。
[0063]图3中显示的架构和功能性划分仅仅是通过示例的方式来描绘的。在可选的实施例中,可在很多节点中以任何其他合适的方式实施存储共享方案。
[0064]将页面选择性后台引入到DPS网络
[0065]在一些实施例中,每个节点24的管理程序68运行后台过程,该后台过程决定哪个存储页面将要由OS进行本地处理,以及哪个页面将使用DPS代理在集群范围中共享。
[0066]图4为根据本发明的实施例,示意性示出用于将页面引入到DPS网络的后台过程的流程图。在扫描步骤100,每个节点24的管理程序68连续地扫描由在节点上运行的本地VM所访问的存储页面。对于给定的页面,在使用检查步骤104,管理程序检查页面是经常访问是还是很少访问的。如果页面是经常使用的,管理程序继续将页面本地地储存在节点上。方法循环回到步骤100,在步骤100中,管理程序继续扫描存储页面。
[0067]另一方面,如果发现页面是很少使用的,则管理程序可决定将页面引入到DPS网络,以用于可能的共享。管理程序计算页面内容之上的散列值(可被称作散列键),并将页面和散列值提供给引入过程93。通过使用任何合适的散列功能(例如,使用产生160比特(20字节)的散列值的SHAl函数),页面内容可被散列化处理。
[0068]引入过程93将页面以及散列值一起经由本地DPS代理60引入到DPS网络。通常,页面内容被储存在本地节点的页面储存器80,并且被定义为拥有该页面的DPS代理(可能在另一个节点上)将页面元数据储存在其片段88中。从这个点,页面和其元数据对于其他节点的DPS代理来说是可访问的。然后,方法可循环回到以上的步骤100。
[0069]监管程序68通常在后台中连续地执行图4中的选择性引入过程,无论节点是否经受了存储压力。如此,当节点遭受到存储压力时,DPS网络已知道作为从节点迀出的候补的存储页面,并且DPS网络能快速反应以化解存储压力。
[0070]作为针对存储压力的方案的重复数据删除和远程交换
[0071]在一些实施例中,DPS代理60通过运行集群范围中的重复数据删除,化解了在节点24中的存储压力状况。在很多实际情况中,在不同的节点上运行的不同的VM使用具有相同内容的存储页面。例如,当运行在不同节点上的VM的多个实例时,包含VM内核代码的存储页面通常将通过节点集群被复制多次。
[0072]在一些场景中,保存这种页面的少量副本、使这些副本对于所有相关的VM可用并删除不必要的副本是有意义的。这种进程被称为重复数据删除。如能够理解的,重复数据删除使节点能够释放本地内存,从而释放存储压力。重复数据删除通常应用于已被引入到DPS网络的页面。同样地,重复数据删除经常被考虑仅用于并不经常访问的页面。
[0073]应在集群范围中保存的给定的存储页面的副本的最小数量取决于故障容限考虑因素。例如,为了免于单节点故障,有必要在不同节点上保存给定页面的至少两个副本,以使得如果其中之一出故障,则在其他节点上的副本仍可用。可使用更大的数量的副本,以便以存储效率为代价,提供较高程度的故障容限。在一些实施例中,这个最小数量是系统20中的可设置的系统参数。
[0074]由DPS代理60使用的另一个集群范围中的过程被称为远程交换,以便化解存储压力。在这个过程中,DPS网络将存储页面从第一节点的存储器36(经受存储压力)移动到第二节点的存储器36(具有可用的存储资源)。第二节点可以以压缩形式储存页面。如果存储压力是暂时的,所交换的页面可在晚些时候被归还给初始节点。
[0075]图5是根据本发明的实施例,示意性示出用于减轻在系统20的计算节点24中的存储压力的方法的流程图。当某个节点24的管理程序68检测到存储压力时,要么检测到一般在节点中的存储压力,要么在给定VM中的存储压力,方法开始。
[0076]在一些实施例中,管理程序68定义了要分配给VM的存储大小的阈值下限和阈值上限,例如,必须分配给VM的页面的最小数量,以及允许分配给VM的页面的最大数量。管理程序可检测存储压力,例如,通过识别VM使用的页面的数量太大(例如,因为数量接近阈值上限或是因为相同节点上的其他VM为存储而竞争)。
[0077]根据检测存储压力,在页面选择步骤120,管理程序选择在此前已被引入到DPS网络的存储页面。管理程序通过使用重复数据删除过程,检查是否有可能删除所选择的页面。如果不可能进行重复数据删除,则管理程序转而通过使用远程交换过程,将所选择的页面迀出到另一个节点。
[0078]在重复数据删除检查步骤124,管理程序检查是否可能进行重复数据删除。通常,管理程序查询本地DPS代理60在集群范围中所选择的页面的副本的数量是否多于N(N指的是要求用于故障容限的副本的最小数量)。本地DPS代理向其片段88被分配拥有所选择的页面的DPS代理60发送这个查询。
[0079]在重复数据删除步骤128,如果所述拥有的DPS代理报告在集群范围中存在页面的多于N个的副本,则本地DPS代理从其页面储存器88中删除本地副本的页面。在更新步骤136,本地DPS代理向所述拥有的DPS代理通知重复数据删除操作。所述拥有的DPS代理更新了片段88中的页面的元数据。
[0080]另一方面,在远程交换步骤132,如果所述拥有的DPS代理在步骤124报告在集群范围中有页面的N个或更少的副本,则本地DPS代理启动页面的远程交换。通常,本地DPS代理请求其他的DPS代理储存页面。作为响应,其他DPS代理中的一个DPS代理将页面储存在其页面储存器88中,并且本地DPS代理从其页面储存器删除页面。决定哪个节点应储存页面可取决于:例如,不同节点上当前可用的存储资源,节点之间的网络的相对速率和容量,不同节点上的当前CHJ负载,哪个节点在晚些时候可能需要这个页面的内容,或者任何其他合适的考虑因素。在步骤136,所述拥有的DPS代理更新了片段88中的页面的元数据。
[0081]在以上的示例中,如果不可能进行重复数据删除,则本地DPS代理转而进行远程交换。在一个可选的实施例中,如果对于所选择的页面不可能进行重复数据删除,则管理程序选择不同的(之前引入的)页面,并作为替代地,尝试对其进行重复数据删除。也可使用任何其他合适的逻辑,以便优先安排用于释放存储压力的可选的活动。
[0082]在任一情况中,图5中的方法的最终结果是本地VM使用的存储页面已从本地存储器36移除。当本地VM请求访问这个页面时,DPS网络运行“页面调入”过程,从其当前的储存位置检索页面,并使其对于发出请求的VM可用。
[0083]图6为根据本发明的实施例,示意性示出用于将远程储存的存储页面提取给计算节点24的示例页面调入过程的流程图。当某个节点24(被称为本地节点)上的VM访问存储页面时,该过程开始。在位置检查步骤140,本地节点的管理程序68检查所请求的页面是否本地地储存在节点中。在本地供应步骤144,如果页面储存在本地节点的存储器36中,则管理程序从本地存储器提取页面,并将页面供应给发出请求的VM。
[0084]另一方面,在页面调入请求步骤148,如果管理程序发现所请求的页面没有本地地储存,则管理程序向本地DPS代理60请求该页面。在拥有者询问步骤152,响应该请求,本地DPS代理查询DPS网络以便识别被分配拥有所请求的页面的DPS代理,并且本地DPS代理向所述拥有的DPS代理请求页面。
[0085]在远程供应步骤156,本地DPS代理从DPS网络接收页面,本地管理程序将页面恢复到本地存储器36中,并将页面供应给发出请求的VM。如果DPS网络针对故障容限存储页面的多个副本,则本地DPS代理负责基于由所述拥有的DPS代理提供的信息,检索并返回有效的副本。
[0086]在一些实施例中,本地DPS代理具有关于存储所请求的页面的节点(或多个节点)的身份的先验信息。在这种情况中,在直接请求步骤160,本地DPS代理可向已知节点(或多个节点)的DPS代理(或多个代理)直接请求页面。步骤160通常并行于步骤152执行。因此,本地DPS代理可不止一次地接收所请求的页面。通常,所述拥有的DPS代理负责确认保持页面的副本的任何节点将不会返回无效的或已删除的页面。例如,无论什么时候页面状态将要被改变(例如,当准备删除页面时),本地DPS代理都可与其他DPS代理运行多级协议。
[0087]图7为根据本发明的实施例,示意性示出存储页面的生命周期的状态图。当VM第一次写入页面时,页面的生命周期开始。因此,页面的初始状态是写入活跃状态170。只要该页面被写入达到频繁的间隔,该页面就保持在这种状态。
[0088]如果在一定时间周期中,页面没有被写入,则页面过渡到写入不活跃状态174。当页面被散列化处理并被引入到DPS网络时,页面状态改变为散列写入不活跃状态178。如果在处于状态174(写入不活跃)或178(散列写入不活跃)时页面被写入,则页面过渡回到写入活跃状态170,并且执行写入时复制(C0W)。如果页面的散列值与另一个本地页面的散列键冲突(即,一致),则冲突被化解,并且两个页面合并为单一的页面,从而节省了存储器。
[0089]当页面处于散列写入不活跃状态178时,如果在一定时间周期中没有发生读取访问,则页面过渡到散列不活跃状态182。从这种状态,VM的读取访问将使页面过渡到写入不活跃状态178(读取页面故障)的写入访问将使页面过渡到写入活跃状态170。在这种情况中,页面也从DPS网络移除(S卩,不被所述拥有的片段88引用)。
[0090]当页面处于散列不活跃状态182时,存储压力(或抢先迀出过程)可决定迀出页面(要么使用重复数据删除,要么使用远程交换)。因此,页面过渡到“不存在”状态186。从状态186,页面可过渡到写入活跃状态170(响应于写入访问,或响应于与写入相关的页面调入请求),或可过渡到写入不活跃状态178(响应于读取访问,或响应于与读取相关的页面调入请求)。
[0091 ]将要理解的是,以上描述的实施例是通过示例的方式引用的,并且本发明不限于上文中已经特别示出和描述的那些。相反,本发明的范围包括上文所描述的各种特征以及本领域技术人员在阅读以上描述之后将想到的且未在现有技术中公开的其变型和修改的组合和子组合。通过引用结合在本专利申请中的文档被视为本申请的组成部分,除了在这些结合的文档中定义的任何术语与本说明书中明确地或隐含地作出的定义冲突时,仅应考虑本说明书中的定义。
【主权项】
1.一种方法,包括:在多个计算节点上运行相应的存储共享代理,所述存储共享代理在通信网络上相互通f目;在给定的计算节点上运行一个或多个访问存储页面的本地虚拟机(VM);以及使用所述存储共享代理,将由所述本地VM访问的存储页面储存在所述计算节点中的至 少两个计算节点上,并将所储存的存储页面供应给所述本地VM。2.根据权利要求1所述的方法,其中,运行所述存储共享代理包括:根据预定义的准则, 将由所述本地VM访问的存储页面分类为经常访问的存储页面和很少访问的存储页面,并使 用所述存储共享代理仅仅处理所述很少访问的存储页面。3.根据权利要求1所述的方法,其中,运行所述存储共享代理包括:将储存在所述给定 的计算节点上的存储页面分类为主要由所述本地VM写入的并且很少由所述本地VM读取的 存储页面、主要由所述本地VM读取的并且很少由所述本地VM写入的存储页面、以及很少由 所述本地VM写入并且很少由所述本地VM读取的存储页面,并基于对来自所述给定的计算节 点的给定的存储页面的分类,决定是否输出所述给定的存储页面。4.根据权利要求1中任意一项所述的方法,其中,储存所述存储页面包括:将存储页面 引入到所述存储共享代理,将所述存储共享代理中的一个定义为拥有所引入的存储页面, 并使用所述存储共享代理中的所述一个储存所述引入的存储页面。5.根据权利要求1所述的方法,其中,运行所述存储共享代理包括:在所述多个计算节 点上保持给定的存储页面的不多于预定义数量的副本。6.根据权利要求1所述的方法,其中,储存所述存储页面包括:响应于在所述给定的计 算节点中的存储压力状况,选择储存在所述给定的计算节点上的存储页面,并且在通过使 用所述存储共享代理证实了在所述多个计算节点中储存了所选择的存储页面的至少预定 数量的副本的条件下,从所述给定的计算节点删除所述选择的存储页面。7.根据权利要求1所述的方法,其中,储存所述存储页面包括:响应于在所述给定的计 算节点中的存储压力状况,选择储存在所述给定的计算节点上的存储页面,并使用所述存 储共享代理将所选择的存储页面输出到另一个计算节点。8.根据权利要求1-7中任意一项所述的方法,其中,供应所述存储页面包括:响应于本 地VM访问没有储存在所述给定的计算节点上的存储页面,使用所述存储共享代理提取所述 存储页面。9.根据权利要求8所述的方法,其中,提取所述存储页面包括:从所述给定的计算节点 的本地存储共享代理向被定义为拥有所述存储页面的第一计算节点的第一存储共享代理 发送针对其上储存有所述存储页面的第二计算节点的身份的查询,并向所述第二计算节点 请求所述存储页面。10.根据权利要求9所述的方法,其中,提取所述存储页面包括:与发送所述查询无关, 向已知储存了所述存储页面的副本的计算节点请求所述存储页面。11.一种包括多个计算节点的系统,所述多个计算节点包括:相应的存储器和相应的处 理器,其中,给定的计算节点的处理器被设置成运行访问存储页面的一个或多个本地虚拟机 (VM),以及,其中,所述处理器被设置成运行相应的在通信网络上相互通信的存储共享代理, 并被设置成通过使用所述存储共享代理,将由所述本地VM访问的存储页面储存在所述计算 节点中的至少两个计算节点上,并将所储存的存储页面供应给所述本地VM。12.根据权利要求11所述的系统,其中,所述处理器被设置成:根据预定义的准则,将由 所述本地VM访问的存储页面分类为经常访问的存储页面和很少访问的存储页面,且其中, 所述处理器被设置成通过使用所述存储共享代理仅仅处理所述很少访问的存储页面。13.根据权利要求11所述的系统,其中,所述处理器被设置为:将储存在所述给定的计 算节点上的存储页面分类为主要由所述本地VM写入的并且很少由所述本地VM读取的存储 页面、主要由所述本地VM读取的并且很少由所述本地VM写入的存储页面、以及很少由所述 本地VM写入并且很少由所述本地VM读取的存储页面,并基于对来自所述给定的计算节点的 给定的存储页面的分类,决定是否输出所述给定的存储页面。14.根据权利要求11所述的系统,其中,所述处理器被设置为:将存储页面引入到所述 存储共享代理,且其中,所述处理器被设置成将所述存储共享代理中的一个定义为拥有所 引入的存储页面,并通过使用所述存储共享代理中的所述一个来储存所述引入的存储页 面。15.根据权利要求11所述的系统,其中,所述处理器被设置成:在所述多个计算节点上 保持给定的存储页面的不多于预定义数量的副本。16.根据权利要求11所述的系统,其中,响应于在所述给定的计算节点中的存储压力状 况,所述处理器被设置成:选择储存在所述给定的计算节点上的存储页面,并且在通过使用 所述存储共享代理证实了在所述多个计算节点中储存了所选择的存储页面的至少预定数 量的副本的条件下,从所述给定的计算节点删除所选择的存储页面。17.根据权利要求11所述的系统,其中,响应于在所述给定的计算节点中的存储压力状 况,所述处理器被设置成:选择储存在所述给定的计算节点上的存储页面,并通过使用所述 存储共享代理将所选择的存储页面输出给另一个计算节点。18.根据权利要求11-17中任意一项所述的系统,其中,响应于本地VM访问没有储存在 所述给定的计算节点上的存储页面,所述处理器被设置成通过使用所述存储共享代理,提 取所述存储页面。19.根据权利要求18所述的系统,其中,所述处理器被设置成通过以下操作来提取所述 存储页面:从所述给定的计算节点的本地存储共享代理向被定义为拥有所述存储页面的第 一计算节点的第一存储共享代理发送针对其上储存有所述存储页面的第二计算节点的身 份的查询,并向所述第二计算节点请求所述存储页面。20.根据权利要求19所述的系统,其中,所述处理器被设置成:通过向已知储存了所述 存储页面的副本的计算节点请求所述存储页面,来提取所述存储页面,而与发送所述查询 无关。21.—种计算节点,包括:存储器;以及处理器,其被设置成:运行访问存储页面的一个或多个本地虚拟机(VM),并运行存储共 享代理,所述存储共享代理在通信网络上与运行在相应的其他计算节点上的一个或多个其 他存储共享代理进行通信,从而将由所述本地VM访问的存储页面储存在所述计算节点的存储器中和所述其他计算节点中的至少一个计算节点上,以及从而将所储存的存储页面供应 给所述本地VM。22.—种计算机软件产品,所述产品包括在其中储存了程序指令的有形非暂时性计算 机可读介质,当由运行访问存储页面的一个或多个本地虚拟机(VM)的计算节点的处理器读 取时,所述指令使得所述处理器运行存储共享代理,所述存储共享代理在通信网络上与运 行在相应的其他计算节点上的一个或多个其他存储共享代理进行通信,从而将由所述本地 VM访问的存储页面储存在所述计算节点的存储器中和所述其他计算节点中的至少一个计 算节点上,以及从而将所储存的存储页面供应给所述本地VM。
【文档编号】G06F12/02GK105980991SQ201480075283
【公开日】2016年9月28日
【申请日】2014年12月25日
【发明人】穆利·本-耶胡达, 埃戴·博格纳, 阿里尔·麦斯罗斯, 沙洛莫·马蒂钦
【申请人】斯特拉托斯卡莱有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1