用于支持对数据的非易失性随机访问的方法和设备的制造方法
【技术领域】
[0001]本发明的实施例总体上涉及数据存储,并且更具体地,涉及用于支持对数据的非易失性随机访问的方法和设备。
【背景技术】
[0002]在数据存储领域,随机访问存储器(RAM)是一种常用的数据存储器。然而,通常存储在RAM中的数据在RAM断电之后会丢失,这是一种不希望的情况。与此相对,非易失性随机存取存储器(NVRAM)是一种在断电之后,所存储的数据不丢失的随机访问存储器。NVRAM具有如下优点:运行速度快,例如当来自客户端的数据到达NVRAM即向客户端做出确认,而无需等待向磁盘进行存储;数据稳定性高,例如当系统掉电时可以降低数据丢失风险;等等。因此,NVRAM正在得到日益广泛的应用。
[0003]然而,对于虚拟架构中的虚拟机而言,由于NVRAM是不可用的,所以不利于虚拟架构下的数据的高速和稳定存储。为了解决上述问题,现有技术中已经提出了一些解决方案,例如基于磁盘的NVRAM方案和基于闪存(flash)的NVRAM方案。由于基于磁盘的NVRAM方案要将数据存储在物理存储设备上,所以运行速度较慢,具有较大的延迟,从而降低了系统性能。对于基于flash的NVRAM方案而言,由于其可擦写次数是有限的,所以读写寿命低,降低了其实用性。
[0004]综上所述,在现有技术的虚拟架构中的数据存储方面存在着有待改进的问题和缺陷。
【发明内容】
[0005]鉴于上述以及其他潜在问题,本领域中需要一种支持对数据的非易失性随机访问的方案。
[0006]在本发明的一个方面,提供一种用于支持对数据的非易失性随机访问的方法,该方法包括:响应于接收到来自客户端的数据,使得所述数据被分别写入主虚拟机的存储器和镜像虚拟机的存储器中;以及响应于所述主虚拟机丢失所述数据,基于所述镜像虚拟机的所述存储器中的数据来恢复所述数据。
[0007]根据本发明的另一方面,提供一种用于支持对数据的非易失性随机访问的设备。所述设备包括:数据存储单元,被配置为响应于接收到来自客户端的数据,使得所述数据被分别写入主虚拟机的存储器和镜像虚拟机的存储器中;以及数据恢复单元,被配置为响应于所述主虚拟机丢失所述数据,基于所述镜像虚拟机的所述存储器中的数据来恢复所述数据。
[0008]通过下文描述将会理解,根据本发明的实施例,可以基于软件的来低成本、高性能和高可靠性地实现物理NVRAM设备的优点。具体而言,与现有技术相比,本发明的实施例利用了虚拟架构下的虚拟机,从而不需要采用特定的硬件设备,这有效降低了实现成本。此夕卜,本发明的实施例利用了虚拟机的RAM来存储数据,并在主虚拟机和镜像虚拟机之间采用高速网络连接来提高存储速度,从而实现了高性能。另外,本发明的实施例通过多个虚拟机带来的冗余性实现了高可靠性。
【附图说明】
[0009]通过参考附图阅读下文的详细描述,本发明实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施例,其中:
[0010]图1示出了根据本发明一个示例性实施例的支持对数据的非易失性随机访问的虚拟架构环境的框图;
[0011]图2示出了根据本发明一个示例性实施例的用于支持对数据的非易失性随机访问的方法的流程图;
[0012]图3示出了根据本发明一个示例性实施例的用于支持对数据的非易失性随机访问的方法的流程图;
[0013]图4示出了根据本发明一个示例性实施例的用于支持对数据的非易失性随机访问的设备的框图;以及
[0014]图5示出了可与本发明的示例性实施例结合使用的计算机系统的框图。
[0015]在各个附图中,相同或对应的标号表TJK相同或对应的部分。
【具体实施方式】
[0016]下面将参考附图中示出的若干示例性实施例来描述本发明的原理和精神。给出这些实施例仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
[0017]首先参考图1,其示出了根据本发明一个示例性实施例的支持对数据的非易失性随机访问的虚拟架构环境100的框图。如图所示,在环境100中包括两个虚拟机110和120,分别位于不同的物理主机130和140上,这些主机通过网络进行高速连接并且分别连接到相同或不同的电源上。根据本发明的实施例,虚拟机110称为“主虚拟机”,而用于与主虚拟机110协作从而支持对数据的非易失性随机访问的其他虚拟机120称为“镜像虚拟机”或者“备份虚拟机”。如图1所示,主虚拟机110被主机A 130服务,镜像虚拟机120被主机B140服务,主机A 130与主机B 140之间通过高速网络连接。
[0018]在环境100中,主虚拟机110可以与镜像虚拟机120进行通信进而进行协作。举例而言,主虚拟机110可以将数据写入到本地存储器中,并可以通过高速网络(例如,利用1Gbps无限带宽技术(InfiniBand))将这些数据复制到镜像虚拟机120的存储器(例如,RAM)中,以便降低虚拟机之间数据交换的延时。当电源断电或者系统崩溃时,主虚拟机110可以基于镜像虚拟机的存储器中存储的数据来在本地恢复数据。通过这种方式,主虚拟机和镜像虚拟机的易失性存储器共同被用作虚拟机的中间存储设备,从而可以在不需要物理NVRAM设备的情况下实现NVRAM功能。
[0019]注意,环境100中所示的各个组成部分的数目仅仅是示意性的,并非意在限制本发明的范围。例如,可以存在任意数目的镜像虚拟机120,相应地也可以存在任意数目的用于服务镜像虚拟机的主机B140。
[0020]另外,应当注意的是,环境100中所示的用于服务主虚拟机110的主机A 130和用于服务镜像虚拟机120的主机B 140可以是不同的主机,也可以是同一主机。在主机A 130和主机B 140是同一主机的情况下,主虚拟机110和镜像虚拟机120被相同的主机进行服务,这并不影响二者之间的通信和协作,同样可以实现NVRAM功能。
[0021]另外,应当注意的是,主机A 130和主机B 140可以位于相同的电源域中,也可以位于不同的电源域中。在主机A 130和主机B 140位于不同的电源域中的情况下,当其中一个主机的电源突然断电时,不会影响另一个主机的正常运行,从而可以提供更高的稳定性。
[0022]根据本发明的实施例,主机A 130和主机B 140可以各自具有不间断电源UPS。根据本发明的实施例,主虚拟机110和镜像虚拟机120可以具有由高性能存储阵列支持的虚拟磁盘,以异步地将要存储的数据从存储器存入磁盘中。
[0023]下面参考图2,其示出了根据本发明一个示例性实施例的用于支持对数据的非易失性随机访问的方法200的流程图。方法200可以由主虚拟机110或以其他方式与之关联的设备来执行。
[0024]方法200开始之后,在步骤S201,响应于接收到来自客户端的数据,使得数据被分别写入主虚拟机的存储器和镜像虚拟机的存储器中。
[0025]根据本发明的实施例,可以通过多种方式来使得数据被分别写入主虚拟机的存储器和镜像虚拟机的存储器中。在一个实施例中,可以响应于接收到来自客户端的数据,从主虚拟机向镜像虚拟机传输数据,以便数据被写入镜像虚拟机的存储器中。然后,可以响应于来自镜像虚拟机的对成功写入数据的确认消息,将数据写入主虚拟机的存储器。根据本发明的实施例,主虚拟机的存储器和镜像虚拟机的存储器分别可以包括RAM或者其他适当的存储器。
[0026]在另一个实施例中,可以响应于接收到来自客户端的数据,将数据写入主虚拟机的存储器;以及从主虚拟机向镜像虚拟机传输数据,以便数据被写入镜像虚拟机的存储器中。
[0027]根据本发明的实施例,在数据被成功写入主虚拟机的存储器和镜像虚拟机的存储器后,可以向客户端发送数据写入成功确认消息,从而指示该数据被写入成功。通过这种方式,避免了由于数据仅写入主虚拟机和镜像虚拟机之一,而导致的无法对数据进行非易失性随机访问。
[0028]根据本发明的实施例,在某些情况下,例如网络连接断开一段时间,有可能镜像虚拟机对于主虚拟机是不可达的。在这些情况下,在步骤