虚拟机环境中的虚拟双控制模块之间的通信的制作方法

文档序号:16628078发布日期:2019-01-16 06:18阅读:116来源:国知局
虚拟机环境中的虚拟双控制模块之间的通信的制作方法

本公开的实施例总体上涉及存储技术领域,并且更具体地涉及在虚拟机环境中实现虚拟双控制模块之间的通信。



背景技术:

存储系统是指由盘设备、控制模块以及管理信息调度的设备和程序等组成的系统,其通常能够存储大量数据。为了保证数据存储的可靠性,存储系统通常设置两个对等控制模块来互为冗余,这两个控制模块之间保持数据同步。虚拟存储装置是指在物理设备上使用软件创建虚拟的存储装置,其能向用户提供尽逻辑存储空间,使得用户实现与物理存储系统类似功能。

外围设备互连(pci)是一种并行的计算机总线标准,其用于把外围组件连接到计算机。pciexpress(pcie)是一种总线和接口标准,与pci总线不同,pcie采用点对点的串行通信方式,pcie可以把数据传输率提高到一个很高的频率。通常,存储系统中的两个对等控制模块采用pcie进行通信,以进行数据同步和备份。



技术实现要素:

本公开的实施例提供了一种虚拟机环境中的虚拟双控制模块之间的通信的方法和设备。本公开的实施例在虚拟机环境中设置虚拟双控制模块,并通过软件仿真物理pcie来实现虚拟双控制模块之间的虚拟pcie通信,从而能够在虚拟存储装置中实现虚拟双控制模块之间的低延时通信。

在本公开的一个方面,提供了一种计算机实现的方法。该方法包括:在虚拟存储装置中部署第一虚拟控制模块和第二虚拟控制模块,其中第一虚拟控制模块和第二虚拟控制模块互为冗余;创建对物理外围设备互连express(pcie)交换机进行仿真的虚拟pcie交换机;以及经由虚拟pcie交换机来在第一虚拟控制模块与第二虚拟控制模块之间同步高速缓存数据。

在本公开的另一方面,提供了一种电子设备。该电子设备包括处理单元以及存储器,其中存储器被耦合至处理单元并且存储有指令。指令在由处理单元执行时执行以下动作:在虚拟存储装置中部署第一虚拟控制模块和第二虚拟控制模块,其中第一虚拟控制模块和第二虚拟控制模块互为冗余;创建对物理外围设备互连express(pcie)交换机进行仿真的虚拟pcie交换机;以及经由虚拟pcie交换机来在第一虚拟控制模块与第二虚拟控制模块之间同步高速缓存数据。

在本公开的又一方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括计算机可执行指令,所述计算机可执行指令在被执行时使计算机执行根据本公开的实施例的方法。

提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的各个实施例的范围。

附图说明

通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。

图1示出了根据本公开的实施例的具有双控制模块的存储环境的示意图;

图2示出了根据本公开的实施例的pcie接口组件的架构的示意图;

图3示出了根据本公开的实施例的具有虚拟双控制模块的存储环境的示意图;

图4示出了根据本公开的实施例的虚拟pcie接口组件的架构的示意图;

图5示出了根据本公开的实施例的用于实现虚拟双控制模块之间的通信的方法的流程图;

图6示出了根据本公开的实施例的虚拟pcie交换机的架构的示意图;

图7示出了可以用来实施本公开的实施例的设备的示意性框图。

具体实施例

下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。

传统地,在具有双控制模块的物理存储装置或系统中,通过pcie总线来在这两个对等控制模块之间传输数据,使得每个控制模块能够与其对等控制模块进行低延时通信。两个控制模块使用pcie总线来进行通信,因而需要物理的pcie交换机。然而,在一些场景中,需要提供虚拟的存储装置供实验、测试等用途,由于虚拟环境中不存在物理的pcie交换机,因而无法设置两个虚拟控制模块。

为了提高虚拟存储装置的高可靠性,针对传统方法的一种改进是尝试在虚拟存储装置中也设置虚拟双控制模块,并且通过以太网实现虚拟双控制模块之间的通信,例如使用虚拟网络接口卡(vnic)。然而,以太网是以tcp/ip协议作为通信方式,而与pcie通信相比,以太网存在高延迟和低吞吐率等缺点,无法满足虚拟双控制模块之间的高速低延迟的通信要求。其他的改进涉及基于共享存储的通信或基于投票设备的第三个节点的通信等,然而,这些改进方式同样存在较高的延迟,因而也还是无法满足虚拟双控制模块之间的高速低延迟的通信要求。

本公开的实施例提出了一种在虚拟机环境中实现虚拟双控制模块之间的通信的新方式。本公开的实施例在虚拟机环境中设置虚拟双控制模块,创建对物理pcie交换机进行仿真的虚拟pcie交换机,以及经由虚拟pcie交换机来在两个虚拟控制模块之间同步高速缓存数据。因此,本公开的实施例能够在虚拟存储装置中实现虚拟双控制模块之间的低延时通信,同时不会导致虚拟机环境中的其他性能降低。此外,本公开的实施例通过仿真物理pcie的各种功能,能够实现不同虚拟控制模块的地址空间之间的地址转换。本公开的实施例通过使用物理抽象层,使得不需要修改传统的上层传输,因而能够与现有的虚拟存储装置或系统相兼容。另外,本公开的实施例还能通过自动协商机制实现虚拟pcie交换机的控制流自动调整,由此提高虚拟存储装置的存储性能。

以下参考图1至图7来说明本公开的基本原理和若干示例实现方式。图1示出了根据本公开的实施例的具有双控制模块的存储环境100的示意图。稳定性和高可用性是存储装置或系统的基本需求,这就要求提供冗余的备份机制,例如通过多个磁盘组成独立冗余磁盘阵列(raid)来保证数据持久存储的可靠性,以及通过设置两个冗余的控制器来控制存储装置的存储操作,以减少丢失高速缓存的数据的可能性。

如图1所示,存储环境100包括控制模块110(也被称为“控制器”)、控制模块120、pcie交换机130以及存储设备140(例如存储设备阵列)。控制模块110通过pcie交换机130与控制模块120互连,而控制模块110和120分别又连接到存储设备140。

在一些实施例中,存储环境100还可以包括主机设备(未示出),主机设备可以从存储系统中的盘读取数据或者向盘写入数据。例如,主机设备可以为服务器(例如应用服务器、流媒体服务器等)或计算设备(例如台式计算机、膝上型计算机、手持式计算机、智能手机、平板电脑、可穿戴设备等)。

控制模块110和120是指对存储环境100中的数据存储进行存储控制的设备。如图1所示,控制模块110包括处理单元113(单核或多核处理器)、pcie接口组件116、高速缓存119(例如动态随机存取存储器(dram)高速缓存),而控制模块120包括处理单元123、pcie接口组件126、高速缓存129。例如,高速缓存119和129可以为多核高速缓存(mcc)、多核快速高速缓存(mcf)等。

控制模块110中的pcie接口组件116可以通过pcie交换机130与控制模块120中的pcie接口组件126进行通信,例如同步高速缓存数据。在一些实施例中,pcie接口可以被封装成共同消息接口(cmi),其用于实现双控制模块之间的控制信息传输和数据镜像链路,例如直接存储器访问(dma)。由于pcie交换机130是支持pcie的物理交换机,而pcie通信协议能够实现低延时、高吞吐和高功耗,因而控制模块110和120能够保证存储系统的可靠高效运行。

在一些实施例中,pcie交换机130支持dma操作(例如rdma),rdma是一种支持远程存储器直接到存储器通信的技术,不需要涉及处理器或处理单元。利用支持rdma的网络适配器,用于通信的所有的分组和协议处理均能由网络适配器硬件上实现,由此提高访问性能。

存储设备140包括多个盘145。盘145的示例包括但不限于磁盘、光盘等。存储设备140可以是由多块独立的物理盘按不同的方式组合形成一个盘的阵列(即,逻辑盘),其能够提供比单个盘更高的存储性能和更高的可靠性能。为了在存储设备140中的某个盘发生故障时对数据进行恢复,通常设置一个或多个奇偶校验信息块。

图2示出了根据本公开的实施例的pcie接口组件的架构200的示意图。如图2所示,pcie接口组件116包括事务层210、数据链路层220、以及硬件抽象层230。事务层210包括多个虚拟电路213、216、219,作为与pcie接口组件116中的其他部件通信的主接口。数据链路层220包括pcie传输模块225,用于实现pcie总线上的链路层的数据通信,并且在pcie总线上实现与对等控制模块的通信。硬件抽象层230用于对硬件进行抽象,以便向上层(例如事务层210、数据链路层220)提供硬件无差别的相同操作接口(例如作为单个设备对象)。硬件抽象层230包括dma模块235,其用于通过pcie交换机130实现控制模块110与其他控制模块(如控制模块120)或其他设备之间的dma操作。

图3示出了根据本公开的实施例的具有虚拟双控制模块的存储环境300的示意图。与图1中所示出的物理的存储环境100不同之处在于,存储环境300是虚拟化的存储场景。例如,可以通过在物理硬件上部署或配置虚拟化器来通过软件实现虚拟存储装置。一般来说,虚拟存储装置可以通过在本地计算设备上安装软件来实现,并且能够用于测试或者实验与物理存储装置类似的功能。与物理存储装置不同,虚拟存储装置具有便捷性、移动性以及轻量级等优势。此外,由于不需要购买物理硬件设备,成本也通常较低。

如图3所示,存储环境300包括虚拟控制模块310(也被称为“第一虚拟控制模块”)、虚拟控制模块320(也被称为“第二虚拟控制模块”)、虚拟机管理程序330以及物理硬件设备340。由于单个虚拟控制器无法保证虚拟存储装置的高可靠性,因而需要配置虚拟双控制模块。在存储环境300中,虚拟控制模块310与虚拟控制模块320彼此互为冗余。在正常工作模式中,两个虚拟控制模块之间可以实时地同步高速缓存数据。当其中的一个虚拟控制模块发生故障时,另一个虚拟控制模块继续运行以保证系统正常运行。

如图3所示,虚拟控制模块310包括虚拟处理单元313、虚拟高速缓存316以及虚拟pcie接口组件319,而虚拟控制模块320包括虚拟处理单元323、虚拟高速缓存326以及虚拟pcie接口组件329。pcie规范中已经定义了单根i/o虚拟化(sr-iov),其使得虚拟机环境中的多个虚拟机能够共享单个pcie硬件接口。

如图3所示,虚拟控制模块310通过虚拟机管理程序330与虚拟控制模块320互连,虚拟机管理程序330充当虚拟中介并且包括虚拟pcie交换机335,其通过对物理pcie交换机(例如图1中所示出的pcie交换机130)进行仿真而被实现。在存储环境300中,由于仿真了具有与物理pcie交换机类似功能的虚拟pcie交换机335,因而虚拟控制模块310与虚拟控制模块320之间能够实现低延时且高吞吐率的通信。例如,虚拟控制模块310可以通过虚拟pcie交换机335向虚拟控制模块320发送高速缓存数据,同时将高速缓存数据写入到虚拟存储装置中的虚拟盘阵列中。

物理硬件设备340包括虚拟化存储环境中的虚拟存储装置所依托的物理设备,其例如包括处理器343、存储器346以及存储设备349等。在一些实施例中,物理硬件设备340可以是基于云的设备或者分布式布置的多个设备。因此,本公开的实施例通过软件仿真物理pcie来实现虚拟双控制模块之间的虚拟pcie通信,能够在虚拟存储装置中实现虚拟双控制模块之间的低延时通信。

图4示出了根据本公开的实施例的虚拟pcie接口组件的架构400的示意图。如图4所示,虚拟pcie接口组件319包括事务层410、数据链路层420、硬件抽象层430。事务层410包括多个虚拟电路413、416、419,作为与pcie接口组件319中的其他部件通信的主接口。数据链路层420包括pcie传输模块425,用于实现链路层的数据通信。硬件抽象层430用于对硬件进行抽象,以便向上层(例如事务层410、数据链路层420)提供硬件或虚拟硬件无差别的相同操作接口,其包括dma模块433,用于通过虚拟pcie交换机335实现虚拟控制模块310与其他控制模块(如控制模块320)或其他设备之间的dma操作。例如,可以通过虚拟pcie交换机来执行两个虚拟控制模块的硬件抽象层之间的dma操作。

与以上参考图2所描述pcie接口组件116的不同之处在于,图4中的虚拟pcie接口组件319中的硬件抽象层430还包括仿真模块435,其使用软件来对物理pcie的功能进行仿真,并且实现虚拟控制模块之间的通信。如图4所示,仿真模块435可以包括用于在虚拟机与物理设备之间转换pcie地址的地址转换模块436、用于解析i/o命令的i/o解析模块437、用于将i/o路由到虚拟机或物理设备的i/o路由模块438、以及用于隔离i/o的i/o隔离模块439。在一些实施例中,

在一些实施例中,仿真模块435可以定义虚拟pcie交换机的标识,并且还可以定义其他功能,例如dma控制模块支持、dma突发数据传输模式、dma中止、邮箱服务、强制链接以及断开链接等。

在一些实施例中,可以基于从pcie物理设备接收到的消息反馈来动态调整虚拟pcie交换机处的缓冲区的大小,由此实现自动协商机制。事务层410支持多个链路,其分别对应于多个虚拟电路。一旦开始处理接收到的通信,就进行缓冲控制。如果事务层410发现在一个链路上的慢消息确认,则其将尝试在其他链路上重新传输消息。在虚拟pcie交换机335中,将序列化重传以避免已经收到的数据上的dma。在一些实施例中,可以限制虚拟pcie环境中的缓冲环长度以避免过载,并且根据慢消息确认来调整环长度,例如,当消息确认变慢时,环长度将被减小以减小负载。因此,通过引入自动协商机制,可以避免虚拟pcie交换机的过负载。

图5示出了根据本公开的实施例的用于实现虚拟双控制模块之间的通信的方法500的流程图。应当理解,方法500可以由参考以上图3所描述处理器343执行。

在502,在虚拟存储装置中部署第一虚拟控制模块(例如图3中的虚拟控制模块310)和第二虚拟控制模块(例如图3中的虚拟控制模块320),第一虚拟控制模块和第二虚拟控制模块互为冗余,当一个虚拟控制模块发生故障时,另一个虚拟控制模块继续运行,以便实现虚拟存储装置的高可靠运行。

在504,创建对物理pcie交换机(例如图1中的pcie交换机130)进行仿真的虚拟pcie交换机(例如图3中的虚拟pcie交换机335)。例如可以仿真物理pcie交换机的以下各种功能中的至少一种:pcie地址转换、i/o路由、i/o解析、以及i/o隔离,等等。

在506,经由虚拟pcie交换机来在第一虚拟控制模块与第二虚拟控制模块之间同步高速缓存数据。例如,虚拟控制模块310通过虚拟pcie交换机335与虚拟控制模块320同步高速缓存数据。因此,本公开的实施例通过仿真物理pcie来实现虚拟双控制模块之间的虚拟pcie通信,能够在虚拟存储装置中实现虚拟双控制模块之间的低延时通信。

图6示出了根据本公开的实施例的虚拟pcie交换机的架构600的示意图。如图6所示,架构600包括处理器343、存储器346、虚拟pcie交换机335以及pcie设备630,其中虚拟pcie交换机335包括根控制模块610和交换模块620。

虚拟pcie交换机可以具有上游端口和多个下游端口,每个端口可以为具有pcie配置控制的桥接器,每个配置描述其连接的设备地址空间范围。可以针对上游端口,描述针对所有下游设备的配置;并且针对任一个下游设备,由与其连接的端口配置来描述地址。

在基于虚拟双控制模块的虚拟存储装置中,通过箭头631、632、633、634以及635顺序组成的通信链路,可以实现不同虚拟控制模块中的数据在存储器346中的存储位置的变更。因此,使用根据本公开的实施例的虚拟pcie交换机,不同虚拟控制模块之间的分组传输可以在存储器的内部被实现。

此外,还可以实现与存储器与pcie设备630的通信,例如由箭头631、632、636、637、638、639、634以及635顺序组成的通信链路。存储器346发出的读写请求(其携带目的地的地址)被传递到虚拟pcie交换机中的根控制模块610,其通过端口配置空间中的地址比较然后被传递到交换模块620,并且被传递到pcie设备630。

在一些实施例中,可以通过虚拟非透明桥来实现虚拟控制模块之间的通信,虚拟非透明桥可以连接两个pcie地址空间。例如,可以生成第一虚拟控制模块所处的第一pcie地址空间与第二虚拟控制模块所处的第二pcie地址空间之间的地址转换。虚拟非透明桥基于该地址转换将第一pcie地址空间中的第一地址转换成第二pcie地址空间中的第二地址。例如,第一地址可以为基地址,而第二地址可以为转换地址。此外,还可以将第一地址和第二地址中的低位地址设置相同的偏移值,而虚拟非透明桥仅需转换第一地址与第二地址中的高位地址。

在一些实施例中,可以根据pcie基础规范中的默认机制,向每个虚拟控制模块分配路由标识(id),并且向pcie物理设备中的物理功能(pf)和每个虚拟功能(vf)分配标识,其中每个虚拟功能与pcie物理设备的一部分物理资源相关联。在一些实施例中,基于sr-iov的备选路由标识符(ari),可以将路由标识扩展成最多支持256个对象。

图7示出了一个可以用来实施本公开的实施例的设备700的示意性框图。如图所示,设备700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的计算机程序指令或者从存储单元708加载到随机访问存储器(ram)703中的计算机程序指令,来执行各种适当的动作和处理。在ram703中,还可存储设备700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

设备700中的多个部件连接至i/o接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

上文所描述的各个过程和处理可由处理单元701执行。例如,在一些实施例中,方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由rom702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序被加载到ram703并由cpu701执行时,可以执行上文描述的方法中的一个或多个步骤。

在一些实施例中,以上所描述的方法500可以被实现为计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

本文所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本公开的多个实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1