CN105531678A - 虚拟机数据的同步方法和装置 - Google Patents

虚拟机数据的同步方法和装置 Download PDF

Info

Publication number
CN105531678A
CN105531678A CN201480038268.2A CN201480038268A CN105531678A CN 105531678 A CN105531678 A CN 105531678A CN 201480038268 A CN201480038268 A CN 201480038268A CN 105531678 A CN105531678 A CN 105531678A
Authority
CN
China
Prior art keywords
virtual machine
output stream
data
standby
comparison data
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
CN201480038268.2A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN105531678A publication Critical patent/CN105531678A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种虚拟机数据的同步方法和装置,包括:在同步时间到达时,分别从主输出数据流和备输出数据流中读取长度相等的比较数据进行比较,根据比较数据确定主虚拟机的数据与备虚拟机的数据是否同步,若不同步,则先将主虚拟机的数据和备虚拟机的数据进行同步,然后输出结果。上述方法中,通过从主输出数据流和备输出数据流中读取长度相等的比较数据进行比较,实现了对主、备虚拟机的输出数据流直接进行比较,不需要对虚拟机的协议栈进行修改和定制化。并且,只在主输出数据流的比较数据与备输出数据流的比较数据不相等时,才进行数据同步,减少了同步次数,减轻了数据同步引起的系统性能降级。

Description

虚拟机数据的同步方法和装置
技术领域
本发明实施例涉及计算机技术, 尤其涉及一种虚拟机数据的同歩方法和 装置。 背景技术
虚拟化技术允许多个虚拟机 (Virtual Machine , 简称 VM) 同时运行在 一个物理机器上, 分享计算机底层物理资源, 极大的提高了物理资源利用率。 现有技术中, 采用通用硬件加软件的方式实现虚拟化技术, 在采用通用硬件 加软件的方式实现虚拟化技术时要考虑虚拟机的可靠性问题。 为了保证虚拟 机的可靠性, 采用主、 备虚拟机的方式, 当主虚拟机故障时, 马上切换到备 虚拟机, 以保证服务的不间断, 要实现主、 备虚拟机的切换, 需要保证主、 备虚拟机的全部状态一致, 诸如中央处理器 (Central Processing Unit, 简称
CPU) 状态、 内存状态等设备状态, 以及软件状态等完全一致。
为了保证主、 备虚拟机的状态一致, 现有技术中采用以下方法确定主、 备虚拟机的状态一致: 主、 备虚拟机接收相同的输入报文, 各自独立并行运 行处理该输入报文, 比较主、 备虚拟机的输出报文是否相同, 若主、 备虚拟 机的输出报文相同, 则认为主、 备虚拟机的状态一致, 选择主虚拟的输出报 文作为系统的输出, 若主、 备虚拟机的输出报文不相同, 则认为主备虚拟机 的状态不一致, 先将主、 备虚拟机的状态同歩, 再将主虚拟机的输出报文作 为系统的输出, 通过上述方法保证主、 备虚拟机的状态一致。 现有技术的方 法只能适用于基于报文协议的网络服务,并不适用于基于流协议的数据报文, 对于基于流协议的数据流来说, 经过虚拟机的协议栈处理后, 每条数据流中 包括的多个数据报文的长度可能不同, 因此, 无法直接比较输出数据流中的 报文。 现有技术中, 通过修改虚拟机协议栈的方式, 使得主、 备输出数据流的 每个报文长度相等, 因此, 能够直接比较主、 备输出数据流中的报文。 但是 修改主、 备虚拟机协议栈的方式, 一方面是破坏了标准协议, 另外在很多情 况下修改虚拟机内部实现是不实际的, 例如虚拟机和物理资源分属不同的商 业实体。 所以, 现有技术中, 不能很好地实现对基于流协议的虚拟机数据的 同歩。 发明内容 本发明实施例提供一种虚拟机数据的同歩方法和装置, 在不对虚拟机的 协议栈进行修改和定制化的情况下实现了对基于流协议的输出数据流的同 本发明第一方面提供一种虚拟机数据的同歩方法, 包括:
获取待同歩的主虚拟机的主输出数据流和备虚拟机的备输出数据流, 在同歩时间到达时, 按照数据流的顺序分别从所述主输出数据流和所述备 输出数据流中读取长度相等的比较数据进行比较, 确定所述主虚拟机的数 据与所述备虚拟机的数据是否同歩;
若所述主虚拟机的数据与所述备虚拟机的数据同歩, 则将所述主输出 数据流的比较数据或所述备输出数据流的比较数据作为输出结果输出; 若所述主虚拟机的数据与所述备虚拟机的数据不同歩, 则将所述主输 出数据流的比较数据和所述备输出数据流的比较数据进行同歩, 将所述同 歩后的比较数据作为输出结果输出。
结合本发明第一方面, 在本发明第一方面的第一种可能的实现方式 中, 所述按照数据流的顺序分别从所述主输出数据流和所述备输出数据流 中读取长度相等的比较数据进行比较, 确定所述主虚拟机的数据与所述备 虚拟机的数据是否同歩, 包括:
按照数据流的顺序分别从所述主输出数据流和所述备输出数据流中 读取长度相等的比较数据;
分别计算所述主输出数据流的比较数据的哈希值和所述备输出数据 流的比较数据的哈希值;
判断所述主输出数据流的比较数据的哈希值与所述备输出数据流的 比较数据的哈希值是否相同;
若所述主输出数据流的比较数据的哈希值与所述备输出数据流的比 较数据的哈希值相同, 则所述主虚拟机的数据与所述备虚拟机的数据同 歩, 若所述主输出数据流的比较数据的哈希值与所述备输出数据流的比较 数据的哈希值不相同, 则所述主虚拟机的数据与所述备虚拟机的数据不同 结合本发明第一方面, 在本发明第一方面的第二种可能的实现方式 中, 所述按照数据流的顺序分别从所述主输出数据流和所述备输出数据流 中读取长度相等的比较数据进行比较, 确定所述主虚拟机的数据与所述备 虚拟机的数据是否同歩, 包括:
按照数据流的顺序分别从所述主输出数据流和所述备输出数据流中 读取长度相等的比较数据;
根据所述主虚拟机的初始哈希值和所述主输出数据流的比较数据计 算所述主虚拟机的历史数据的哈希值, 以及根据所述备虚拟机的初始哈希 值和所述备输出数据流的比较数据计算所述备虚拟机的历史数据的哈希 值, 其中, 所述主虚拟机的初始哈希值为上次所述主虚拟机与所述备虚拟 机进行数据同歩后的哈希值, 所述备虚拟机的初始哈希值为上次所述主虚 拟机与所述备虚拟机进行数据同歩后的哈希值, 在每次所述主虚拟机与所 述备虚拟机进行数据同歩后所述主虚拟机的初始哈希值与所述备虚拟机 的初始哈希值相同;
判断所述主虚拟机的历史数据的哈希值与所述备虚拟机的历史数据 的哈希值是否相同;
若所述主虚拟机的历史数据的哈希值与所述备虚拟机的历史数据的 哈希值相同, 则所述主虚拟机的数据与所述备虚拟机的数据同歩, 若所述 主虚拟机的历史数据的哈希值与所述备虚拟机的历史数据的哈希值不相 同, 则所述主虚拟机的数据与所述备虚拟机的数据不同歩。
结合本发明第一方面的第一种和第二种可能的实现方式, 在本发明第 一方面的第三种可能的实现方式中, 所述比较数据的长度为预先设置的, 则所述按照数据流的顺序分别从所述主输出数据流和所述备输出数据流 中读取长度相等的比较数据, 包括:
按照数据流的顺序分别从所述主输出数据流和所述备输出数据流中 读取预设长度的比较数据。
结合本发明第一方面的第一种和第二种可能的实现方式, 在本发明第 一方面的第四种可能的实现方式中, 所述按照数据流的顺序分别从所述主 输出数据流和所述备输出数据流中读取长度相等的比较数据, 包括: 将所述主虚拟机接收到的所述主输出数据流的数据作为所述主输出 数据流的比较数据, 确定所述主输出数据流的比较数据的长度;
按照数据流的顺序从所述备输出数据流中读取与所述主输出数据流 的比较数据长度相等的所述备输出数据流的比较数据。
结合本发明第一方面的第一种和第二种可能的实现方式, 在本发明第 一方面的第五种可能的实现方式中, 所述按照数据流的顺序分别从所述主 输出数据流和所述备输出数据流中读取长度相等的比较数据, 包括: 将所述备虚拟机接收到的所述备输出数据流的数据作为所述备输出 数据流的比较数据, 确定所述备输出数据流的比较数据的长度;
按照数据流的顺序从所述主输出数据流中读取与所述备输出数据流 的比较数据长度相等的所述主输出数据流的比较数据。
结合本发明第一方面的第二种可能的实现方式, 在本发明第一方面的 第六种可能的实现方式中, 在输出所述输出结果后, 所述方法还包括: 更新所述主虚拟机的初始哈希值和所述备虚拟机的初始哈希值。 结合本发明第一方面以及本发明第一方面的第一种至第六种可能的 实现方式, 在本发明第一方面的第七种可能的实现方式中, 所述获取待同 歩的主虚拟机的主输出数据流和备虚拟机的备输出数据流, 包括:
获取所述主虚拟机的多条输出数据流和所述备虚拟机的多条输出数 据流;
解析所述主虚拟机的所述多条输出数据流获取所述主虚拟机的每条 输出数据流的识别参数, 以及解析所述备虚拟机的所述多条输出数据流获 取所述备虚拟机的每条输出数据流的识别参数;
根据所述主虚拟机的每条输出数据流的识别参数和所述备虚拟机的 每条输出数据流的识别参数识别出待处理的所述主输出数据流和所述备 输出数据流。
结合本发明第一方面的第七种可能的实现方式, 在本发明第一方面的 第八种可能的实现方式中, 当所述主虚拟机的多条输出数据流和所述备虚 拟机的多条输出数据流为传输控制协议 TCP数据流时,所述识别参数为输 出数据流的五元组信息;
则所述根据所述主虚拟机的每条输出数据流的识别参数和所述备虚 拟机的每条输出数据流的识别参数识别出待处理的所述主输出数据流和 所述备输出数据流, 包括:
比较所述主虚拟机的每条输出数据流的五元组信息与所述备虚拟机 的每条数据流的五元组信息, 当所述主虚拟机的输出数据流的五元组信息 与所述备虚拟机的输出数据流的五元组信息相同时, 将所述主虚拟机的输 出数据流作为待同歩的所述主输出数据流, 将所述备虚拟机的输出数据流 作为待同歩的所述备输出数据流。
结合本发明第一方面以及本发明第一方面的第一种至第八种可能的 实现方式, 在本发明第一方面的第九种可能的实现方式中, 所述将所述主 输出数据流的比较数据和所述备输出数据流的比较数据进行同歩, 包括: 将所述备输出数据流的比较数据赋值给所述主输出数据流的比较数 据;
则所述将所述同歩后的比较数据作为输出结果输出, 包括:
将所述主输出数据流的比较数据作为输出结果输出。
结合本发明第一方面以及本发明第一方面的第一种至第八种可能的 实现方式, 在本发明第一方面的第十种可能的实现方式中, 所述将所述主 输出数据流的比较数据和所述备输出数据流的比较数据进行同歩, 包括: 将所述主输出数据流的比较数据赋值给所述备输出数据流的比较数 据;
贝 |J, 所述将所述同歩后的比较数据作为输出结果输出, 包括: 将所述备输出数据流的比较数据作为输出结果输出。
结合本发明第一方面, 在本发明第一方面的第十一种可能的实现方式 中, 所述获取待同歩的主虚拟机的主输出数据流和备虚拟机的备输出数据 流之前, 所述方法还包括:
接收输入数据流, 将所述输入数据流分发给所述主虚拟机和所述备虚 拟机, 以使所述主虚拟机和所述备虚拟机分别对所述输入数据流进行处 理, 得到输出数据流。
本发明第二方面提供一种虚拟机数据的同歩装置, 包括: 获取模块, 用于获取待同歩的主虚拟机的主输出数据流和备虚拟机的 备输出数据流;
比较模块, 用于在同歩时间到达时, 按照数据流的顺序分别从所述主 输出数据流和所述备输出数据流中读取长度相等的比较数据进行比较, 确 定所述主虚拟机的数据与所述备虚拟机的数据是否同歩;
输出模块, 用于若所述主虚拟机的数据与所述备虚拟机的数据同歩, 则将所述主输出数据流的比较数据或所述备输出数据流的比较数据作为 输出结果输出;
同歩模块, 用于若所述主虚拟机的数据与所述备虚拟机的数据不同 歩, 则将所述主输出数据流的比较数据和所述备输出数据流的比较数据进 行同歩;
所述输出模块还用于: 将所述同歩后的比较数据作为输出结果输出。 结合本发明第二方面, 在本发明第一方面的第一种可能的实现方式 中, 所述比较模块包括:
读取单元, 用于按照数据流的顺序分别从所述主输出数据流和所述备 输出数据流中读取长度相等的比较数据;
计算单元, 用于分别计算所述主输出数据流的比较数据的哈希值和所 述备输出数据流的比较数据的哈希值;
判断单元, 用于判断所述主输出数据流的比较数据的哈希值与所述备 输出数据流的比较数据的哈希值是否相同, 若所述主输出数据流的比较数 据的哈希值与所述备输出数据流的比较数据的哈希值相同, 则所述主虚拟 机的数据与所述备虚拟机的数据同歩, 若所述主输出数据流的比较数据的 哈希值与所述备输出数据流的比较数据的哈希值不相同, 则所述主虚拟机 的数据与所述备虚拟机的数据不同歩。
结合本发明第二方面, 在本发明第二方面的第二种可能的实现方式 中, 所述比较模块包括:
读取单元, 用于按照数据流的顺序分别从所述主输出数据流和所述备 输出数据流中读取长度相等的比较数据;
计算单元, 用于根据所述主虚拟机的初始哈希值和所述主输出数据流 的比较数据计算所述主虚拟机的历史数据的哈希值, 以及根据所述备虚拟 机的初始哈希值和所述备输出数据流的比较数据计算所述备虚拟机的历 史数据的哈希值, 其中, 所述主虚拟机的初始哈希值为上次所述主虚拟机 与所述备虚拟机进行数据同歩后的哈希值, 所述备虚拟机的初始哈希值为 上次所述主虚拟机与所述备虚拟机进行数据同歩后的哈希值, 在每次所述 主虚拟机与所述备虚拟机进行数据同歩后所述主虚拟机的初始哈希值与 所述备虚拟机的初始哈希值相同;
判断单元, 用于判断所述主虚拟机的历史数据的哈希值与所述备虚拟 机的历史数据的哈希值是否相同, 若所述主虚拟机的历史数据的哈希值与 所述备虚拟机的历史数据的哈希值相同, 则所述主虚拟机的数据与所述备 虚拟机的数据同歩, 若所述主虚拟机的历史数据的哈希值与所述备虚拟机 的历史数据的哈希值不相同, 则所述主虚拟机的数据与所述备虚拟机的数 据不同歩。
结合本发明第二方面的第一种和第二种可能的实现方式, 在本发明第 二方面的第三种可能的实现方式中, 所述比较数据的长度为预先设置的, 则所述读取单元具体用于:
按照数据流的顺序分别从所述主输出数据流和所述备输出数据流中 读取预设长度的比较数据。
结合本发明第二方面的第一种和第二种可能的实现方式, 在本发明第 二方面的第四种可能的实现方式中, 所述读取单元具体用于:
将所述主虚拟机接收到的所述主输出数据流的数据作为所述主输出 数据流的比较数据, 确定所述主输出数据流的比较数据的长度;
按照数据流的顺序从所述备输出数据流中读取与所述主输出数据流 的比较数据长度相等的所述备输出数据流的比较数据。
结合本发明第二方面的第一种和第二种可能的实现方式, 在本发明第 二方面的第五种可能的实现方式中, 所述读取单元具体用于:
将所述备虚拟机接收到的所述备输出数据流的数据作为所述备输出 数据流的比较数据, 确定所述备输出数据流的比较数据的长度;
按照数据流的顺序从所述主输出数据流中读取与所述备输出数据流 的比较数据长度相等的所述主输出数据流的比较数据。
结合本发明第二方面的第二种可能的实现方式, 在本发明第二方面的 第六种可能的实现方式中, 还包括:
更新模块, 用于更新所述主虚拟机的初始哈希值和所述备虚拟机的初 始哈希值。
结合本发明第二方面以及本发明第二方面的第一种至第六种可能的 实现方式, 在本发明第二方面的第七种可能的实现方式中, 所述获取模块 包括:
获取单元, 用于获取所述主虚拟机的多条输出数据流和所述备虚拟机 的多条输出数据流;
解析单元, 用于解析所述主虚拟机的所述多条输出数据流获取所述主 虚拟机的每条输出数据流的识别参数, 以及解析所述备虚拟机的所述多条 输出数据流获取所述备虚拟机的每条输出数据流的识别参数;
识别单元, 用于根据所述主虚拟机的每条输出数据流的识别参数和所 述备虚拟机的每条输出数据流的识别参数识别出待处理的所述主输出数 据流和所述备输出数据流。
结合本发明第二方面的第七种可能的实现方式, 在本发明第二方面的 第八种可能的实现方式中, 当所述主虚拟机的多条输出数据流和所述备虚 拟机的多条输出数据流为传输控制协议 TCP数据流时,所述识别参数为输 出数据流的五元组信息;
则所述识别单元具体用于:
比较所述主虚拟机的每条输出数据流的五元组信息与所述备虚拟机 的每条数据流的五元组信息, 当所述主虚拟机的输出数据流的五元组信息 与所述备虚拟机的输出数据流的五元组信息相同时, 将所述主虚拟机的输 出数据流作为待同歩的所述主输出数据流, 将所述备虚拟机的输出数据流 作为待同歩的所述备输出数据流。
结合本发明第二方面以及本发明第二方面的第一种至第八种可能的 实现方式, 在本发明第二方面的第九种可能的实现方式中, 所述同歩模块 具体用于:
将所述备输出数据流的比较数据赋值给所述主输出数据流的比较数 据;
则所述输出模块具体用于: 将所述主输出数据流的比较数据作为输出结果输出。
结合本发明第二方面以及本发明第二方面的第一种至第八种可能的 实现方式, 在本发明第二方面的第十种可能的实现方式中, 所述同歩模块 具体用于:
将所述主输出数据流的比较数据赋值给所述备输出数据流的比较数 据;
则所述输出模块具体用于:
将所述备输出数据流的比较数据作为输出结果输出。
结合本发明第二方面, 在本发明第二方面的第十一种可能的实现方式 中, 还包括:
输入模块, 用于接收输入数据流, 将所述输入数据流分发给所述主虚 拟机和所述备虚拟机, 以使所述主虚拟机和所述备虚拟机分别对所述输入 数据流进行处理, 得到输出数据流。
本发明第三方面提供一种虚拟机数据的同歩装置, 包括:
处理器、 存储器和系统总线, 所述处理器和所述存储器之间通过所述 系统总线连接并完成相互间的通信;
所述存储器, 用于存储计算机执行指令;
所述处理器, 用于运行所述计算机执行指令, 使所述同歩装置执行如 本发明第一方面以及本发明第一方面的第一种至第十一种可能的实现方 式提供的任一所述的方法。
本发明实施例提供虚拟机数据的同歩方法和装置, 虚拟机数据的同歩装 置通过在同歩时间到达时, 按照数据流的顺序分别从主输出数据流和备输 出数据流中读取长度相等的比较数据进行比较, 确定主虚拟机的数据与备 虚拟机的数据是否同歩, 若同歩则不执行同歩操作, 直接输出结果, 若不 同歩,则先将主虚拟机的数据和备虚拟机的数据进行同歩,然后输出结果。 上述方法中, 通过从主输出数据流和备输出数据流中读取长度相等的比较 数据进行比较, 实现了对主、 备虚拟机的输出数据流直接进行比较, 不需 要对虚拟机的协议栈进行修改和定制化。 并且, 只在主输出数据流的比较 数据与备输出数据流的比较数据不相等时, 才进行数据同歩, 减少了同歩 次数, 减轻了数据同歩引起的系统性能降级。 附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对 实施例或现有技术描述中所需要使用的附图作一简单地介绍, 显而易见 地, 下面描述中的附图是本发明的一些实施例, 对于本领域普通技术人员 来讲, 在不付出创造性劳动性的前提下, 还可以根据这些附图获得其他的 附图。
图 1为本发明实施例所适用的一种系统架构示意图;
图 2为本发明实施例所适用的另一种系统架构的示意图;
图 3为本发明实施例一提供的虚拟机数据的同歩方法的流程图; 图 4为一种主输出数据流和备输出数据流的示意图;
图 5为本发明实施例二提供的虚拟机数据的同歩方法的流程图; 图 6为另一种主输出数据流和备输出数据流的示意图;
图 7为本发明实施例三提供的虚拟机数据的同歩方法的流程图; 图 8为又一种主输出数据流和备输出数据流的示意图;
图 9为本发明实施例四提供的虚拟机数据的同歩装置的结构示意图; 图 10为本发明实施例五提供的虚拟机数据的同歩装置的结构示意图; 图 11为本发明实施例六提供的虚拟机数据的同歩装置的结构示意图。 具体实施方式 为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本 发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描 述, 显然,所描述的实施例是本发明一部分实施例, 而不是全部的实施例。 基于本发明中的实施例, 本领域普通技术人员在没有作出创造性劳动前提 下所获得的所有其他实施例, 都属于本发明保护的范围。
本发明各实施例中采用主虚拟机和备虚拟机构成系统对外提供服务, 主虚拟机和备虚拟机的初始配置完全相同。 为了实现虚拟机和备虚拟机在 切换时服务不间断, 需要保证主虚拟机和备虚拟机的全部状态一致, 这些状 态包括: 内部状态和输出数据的状态, 内部状态主要包括: CPU状态、 内存 状态等设备状态和软件状态, 输出数据的状态一致即对相同的输入数据处理 后输出的数据需要保持一致。 主虚拟机和备虚拟机的内部状态的同歩为现有 技术, 这里不做过多的描述, 本实施例主要介绍主虚拟机和备虚拟机的输出 数据的同歩。
本发明实施例中, 虚拟机数据同歩装置接收到输入数据流后, 将输入 数据流复制为两份, 分别提交给主虚拟机和备虚拟机独立并行处理。 在主 虚拟机健康正常工作时, 由主虚拟机对系统外部提供服务, 将主虚拟机的 输出结果作为系统输出; 在主虚拟机发生故障时, 由备虚拟机对系统外部 提供服务, 将备虚拟机的输出结果作为系统输出。 为了保证主虚拟机和备 虚拟机切换时服务不中断, 本发明实施例中采用比较主虚拟机和备虚拟机 输出数据流的方式, 适时同歩主虚拟机和备虚拟机的数据, 保证在切换时 主虚拟机和备虚拟机的数据一致。 本实施例中的, 主虚拟机和备虚拟机是 相对的, 不应看作绝对的虚拟机角色分配, 比如对某些客户端来说虚拟机 A是主虚拟机, 虚拟机 B是备虚拟机, 而对另外一些客户端来说虚拟机 A 是备虚拟机, 虚拟机 B是主虚拟机。 另外, 一个主虚拟机可以有多个备虚 拟机, 本发明实施例并不对主虚拟机对应的备虚拟机的个数进行限制, 为 了描述方便以下各实施例中都以一个备虚拟机为例进行说明。
本发明各实施例的方法由虚拟机数据的同歩装置执行, 该虚拟机数据 的同歩装置可以作为一个独立的设备实现, 如图 1所示, 图 1为本发明实 施例所适用的一种系统架构示意图, 主虚拟机 11和备虚拟机 21分别位于 两个不同的物理服务器 100和服务器 200中, 本领域技术人员可以理解的 是, 主虚拟机 11和备虚拟机 21也可以位于同一个物理服务器上, 主虚拟 机 11和备虚拟机 21的输出数据流分别发送到虚拟机数据的同歩装置 300, 由虚拟机数据的同歩装置 300从主输出数据流和备输出数据流中读取长度 相等的比较数据进行比较, 确定主虚拟机 11的数据与备虚拟机 21的数据 是否同歩。 虚拟机数据的同歩装置 300也可以集成在其他网络设备中, 例 如交换机中。
图 2为本发明实施例所适用的另一种系统架构的示意图,如图 2所示, 主虚拟机 41和备虚拟机 51分别位于两个不同的物理服务器 400和服务器 500中, 虚拟机数据的同歩装置 600由服务器 400上的虚拟机监视器
( Hypervisor)42和服务器 500上的虚拟机监视器 52以分布式的方式实现, 现有技术中, Hypervisor通常用来分配、 管理和调度计算机的物理资源, 通过封装或者模拟物理硬件来提供多个完整的虚拟计算机资源。 本发明实 施例的方案中, 主虚拟机 41的虚拟机监视器 42和备虚拟机 51的虚拟机 监视器 52分别独立的从主输出数据流和备输出数据流中读取长度相等的 比较数据进行哈希运算, 然后, 虚拟机监视器 52将哈希计算结果发送给 虚拟机监视器 42, 由虚拟机监视器 42根据哈希计算结果确定主虚拟机 41 的数据与所述备虚拟机 51的数据是否同歩。 或者, 虚拟机监视器 42将哈 希计算结果发送给虚拟机监视器 52, 由虚拟机监视器 52根据哈希计算结 果确定主虚拟机 41的数据与备虚拟机 51的数据是否同歩。在上述两种架 构中, 虚拟机数据同歩装置可以以硬件的方式实现, 或者以软件的方式实 现, 或者软硬件结合的方式实现。
图 3为本发明实施例一提供的虚拟机数据的同歩方法的流程图, 本实 施例的方法由虚拟机数据同歩装置执行, 如图 3所示, 本实施例的方法可 以包括以下歩骤:
歩骤 101、 获取待同歩的主虚拟机的主输出数据流和备虚拟机的备输 出数据流, 在同歩时间到达时, 按照数据流的顺序分别从主输出数据流和 备输出数据流中读取长度相等的比较数据进行比较, 确定主虚拟机的数据 与备虚拟机的数据是否同歩。
主输出数据流和备输出数据流可以是任何基于流协议的数据, 例如传 输控制协议 (Transmission Control Protocol, 简称 TCP ) 或实时传输协议 ( Real-time Transport Protocol, 简称 RTP) 。 主虚拟机和备虚拟机可能输 出多条输出数据流, 这些输出数据流中有些是互为主备关系, 而有些是独 立的输出数据流, 因此, 需要识别出互为主备关系的输出数据流。具体地: 首先, 获取主虚拟机的多条输出数据流和备虚拟机的多条输出数据流; 然 后, 解析主虚拟的多条输出数据流获取主虚拟机的每条输出数据流的识别 参数, 以及解析备虚拟机的多条输出数据流获取备虚拟机的每条输出数据 流的识别参数; 最后, 根据主虚拟机的每条输出数据流的识别参数和备虚 拟机的每条输出数据流的识别参数识别出待处理的主输出数据流和备输 出数据流。
解析输出数据流可以获得每条输出数据流的包头信息, 可以将输出数 据流的包头信息中的某些参数作为识别参数, 例如, 当主虚拟机的多条输 出数据流和备虚拟机的多条输出数据流为 TCP数据流时,可以将输出数据 流的五元组信息作为识别参数, 五元组信息具体为: 源网络互联协议
( Internet Protocol, 简称 IP ) 地址, 源端口, 目的 IP地址, 目的端口, 和传输层协议号。
根据识别参数识别主输出数据流和备输出数据流, 具体为: 将主虚拟 机的每条输出数据流的识别参数和备虚拟机的每条输出数据流的识别参 数进行比较, 当主虚拟机的某一条输出数据流的识别参数与备虚拟机的某 一条输出数据流的识别参数相同时, 则将主虚拟机的该条输出数据流作为 主输出数据流, 将与主虚拟机的该条输出数据流的识别参数相等的备虚拟 机的输出数据流作为备输出数据流。 以 TCP数据流为例, 比较虚拟机的每 条输出数据流的五元组信息与备虚拟机的每条数据流的五元组信息, 当主 虚拟机的输出数据流的五元组信息与备虚拟机的输出数据流的五元组信 息相同时, 将主虚拟机的输出数据流作为待处理同歩的主输出数据流, 将 备虚拟机的输出数据流作为待处理同歩的备输出数据流。
在获取主输出数据流和备输出数据流之后, 当同歩时间到达时, 按照 数据流的顺序分别从主输出数据流和备输出数据流中读取长度相等的比 较数据进行比较, 从主输出数据流中读取的比较数据称为主输出数据流的 比较数据, 从备输出数据流中读取的比较数据称为备输出数据流的比较数 据。 当主输出数据流的比较数据与备输出数据流的比较数据相同时, 则确 定主虚拟机的数据与备虚拟机的数据同歩, 当主输出数据流的比较数据与 备输出数据流的比较数据不相同时, 则确定主虚拟机的数据与备虚拟机的 数据不同歩。 当主虚拟机的数据与备虚拟机的数据同歩时, 执行歩骤 102, 当主虚拟机的数据与备虚拟机的数据不同歩时, 执行歩骤 103。 本专利中 所说的按照数据流的顺序读取比较数据, 是指按照该数据流中报文的先后 顺序来读取顺序。
基于报文协议的数据是保护边界的, 即传输协议把数据当作一条独立 的消息在网上传输, 接收端只能接收独立的消息, 也就是说存在保护消息 边界, 接收端一次只能接收发送端发出的一个数据报文。 对于基于流协议 的数据流来说, 是不保护消息边界的, 发送端连续发送数据, 接收端有可 能在一次接收动作中, 会接收两个或者更多的数据报文, 而且每个数据报 文的长度可能不相同。 对于主虚拟机和备虚拟机来说, 在对相同的输入数 据流进行处理后, 主虚拟机和备虚拟机在同一时刻输出的输出数据流的长 度可能不同, 主输出数据流中可能包括两个报文, 而备输出数据流中可能 包括三个报文, 并且每个报文的长度可能不同, 因此, 不能直接将主虚拟 机输出的报文与备虚拟机输出的报文进行比较。 本实施例中, 从主输出数 据流中和备输出数据流中读取长度相等的比较数据进行比较, 从而保证比 较粒度相同。
在确定主虚拟机的数据与备虚拟机的数据是否同歩时, 可以有多种方 法, 以下将列举两种常用的方法:
第一种方法, 首先, 按照数据流的顺序分别从主输出数据流和备输出 数据流中读取长度相等的比较数据; 然后, 分别计算主输出数据流的比较 数据的哈希值和备输出数据流的比较数据的哈希值; 最后, 判断主输出数 据流的比较数据的哈希值与备输出数据流的比较数据的哈希值是否相同。 若主输出数据流的比较数据的哈希值与备输出数据流的比较数据的哈希 值相同, 则说明主输出数据流的比较数据与备输出数据流的比较数据相 同, 那么主虚拟机的数据与备虚拟机的数据同歩, 若主输出数据流的比较 数据的哈希值与备输出数据流的比较数据的哈希值不相同, 说明主输出数 据流的比较数据与备输出数据流的比较数据不相同, 那么主虚拟机的数据 与备虚拟机的数据不同歩。
第二种方法, 首先, 按照数据流的顺序分别从主输出数据流和备输出 数据流中读取长度相等的比较数据; 然后, 根据主虚拟机的初始哈希值和 主输出数据流的比较数据计算主虚拟机的历史数据的哈希值, 以及根据备 虚拟机的初始哈希值和备输出数据流的比较数据计算备虚拟机的历史数 据的哈希值, 其中, 主虚拟机的初始哈希值为上次主虚拟机和备虚拟机进 行数据同歩后的哈希值, 备虚拟机的初始哈希值为上次主虚拟机和备虚拟 机进行数据同歩后的哈希值, 在每次主虚拟机和备虚拟机进行数据同歩后 主虚拟机的初始哈希值与备虚拟机的初始哈希值相同; 最后, 判断主虚拟 机的历史数据的哈希值与备虚拟机的历史数据的哈希值是否相同。 若主虚 拟机的历史数据的哈希值与备虚拟机的历史数据的哈希值相同, 说明主输 出数据流的比较数据与备输出数据流的比较数据相同, 那么主虚拟机的数 据与备虚拟机的数据同歩, 若主虚拟机的历史数据的哈希值与备虚拟机的 历史数据的哈希值不相同, 说明主输出数据流的比较数据与备输出数据流 的比较数据不相同, 那么主虚拟机的数据与备虚拟机的数据不同歩。
第一种方法中, 通过比较主输出数据流的比较数据的哈希值和备输出 数据流的比较数据的哈希值, 确定主虚拟机的数据与备虚拟机的数据是否 同歩,第二种方法中,根据初始哈希值和比较数据计算历史数据的哈希值, 比较主虚拟机的历史数据的哈希值和备虚拟机的历史数据的哈希值, 这里 历史数据指本次同歩之前的所有数据与本次同歩的比较数据之和。
需说明的是, 在第二种方式中, 哈希算法应该满足以下条件: h H^ ^h h H^P^P , 其中, HQ表示初始哈希值, Pl , p2分别表示两个 报文, #表示顺序拼接两个报文。 举例说明哈希计算的效果: 图 4为一种 主输出数据流和备输出数据流的示意图, 如图 4所示, 主虚拟机的输出的 主输出数据流与备虚拟机输出的备输出数据流的数据总量和内容完全一 致, 但是主输出数据流和备输出数据流包括的报文个数和报文长度不相 同。 图 4中, 主输出数据流包含三个报文: Ρι、 ρ^Π ρ3, 备输出数据流包 含两个报文: 和 , 主输出数据流和备输出数据流包含的数据内容相同 均为 ABCDEFGH, 主输出数据流中报文 Pl包含 ABC, 报文 p2包含 DE, 报 文 包含 FGH, 备输出数据流中报文 ¾包含 ABCD, 报文 r2包含 EFGH。
假设 tl时刻主虚拟机和备虚拟机的初始哈希值相等均为 , 则在 t2时 亥 IJ , 主虚拟机的历史数据的哈希值 =1 (1 (1 (^^ ) ,p2) ,p3), 备虚拟机的历 史数据的哈希值^^^!^, ri,),r2), 由哈希算法的特性容易证明
Η^Η Η,,ρ^ρ^ρ^ΐ!^,!^!· ), 即正确判断出主虚拟机的历史数据和备虚 拟机的历史数据是一致的。
歩骤 102、 将主输出数据流的比较数据或备输出数据流的比较数据作 为输出结果输出。
当主虚拟机的数据与备虚拟机的数据同歩时, 执行本歩骤, 将主输出 数据流的比较数据或备输出数据流的比较数据作为输出结果输出。
歩骤 103、 将主输出数据流的比较数据和备输出数据流的比较数据进 行同歩, 将同歩后的比较数据作为输出结果输出。 当主虚拟机的数据与备虚拟机的数据不同歩时, 执行本歩骤。 在将主 输出数据流的比较数据和备输出数据流的比较数据进行同歩时, 具体可以 为: 将备输出数据流的比较数据赋值给主输出数据流的比较数据, 或者, 将主输出数据流的比较数据赋值给备输出数据流的比较数据。 若将备输出 数据流的比较数据赋值给主输出数据流的比较数据, 那么将同歩后的比较 数据作为输出结果输出, 具体为: 将主输出数据流的比较数据作为输出结 果输出。 若将主输出数据流的比较数据赋值给备输出数据流的比较数据, 那么将同歩后的比较数据作为输出结果输出, 具体为: 将备输出数据流的 比较数据作为输出结果输出。
本实施例中, 在同歩时间到达时, 按照数据流的顺序分别从主输出数 据流和备输出数据流中读取长度相等的比较数据进行比较, 确定主虚拟机 的数据与备虚拟机的数据是否同歩, 若主虚拟机的数据与备虚拟机的数据 同歩, 则不执行同歩操作, 直接将主输出数据流的比较数据或备输出数据 流的比较数据作为输出结果输出, 若主输出数据流的数据与备输出数据流 的数据不同歩, 则先将主虚拟机的数据和备虚拟机的数据进行同歩, 将同 歩后的比较数据作为输出结果输出。 上述方法中, 通过从主输出数据流和 备输出数据流中读取长度相等的比较数据进行比较, 实现了对主、 备虚拟 机的输出数据流直接进行比较, 不需要对虚拟机的协议栈进行修改和定制 化。 并且, 只在主输出数据流的比较数据与备输出数据流的比较数据不相 等时, 才进行数据同歩, 减少了同歩次数, 减轻了保持主虚拟机和备虚拟 机数据同歩引起的系统性能降级。
在实施例一中, 执行歩骤 101之前, 虚拟机数据同歩装置还要执行以 下操作: 接收输入数据流, 将输入数据流分发给主虚拟机和备虚拟机, 以 使主虚拟机和备虚拟机分别对输入数据流进行处理, 得到输出数据流。
本发明实施例中的, 输入数据流和虚拟机数据同歩装置将接收到的输 入数据流复制为两份, 分别提交给主虚拟机和备虚拟机, 保证主虚拟机和 备虚拟机的输入数据流相同, 主虚拟机和备虚拟机各自独立运行, 对输入 数据流进行处理, 然后, 主虚拟机和备虚拟机分别输出各自处理后的输出 数据流。
下面采用几个具体的实施例, 对实施例一的技术方案进行详细说明。 本发明实施例二对实施例一中歩骤 101进行详细说明, 本实施例中, 比较数据的长度为预先设置的, 所述按照数据流的顺序分别从主输出数据 流和备输出数据流中读取长度相等的比较数据, 具体为: 按照数据流的顺 序分别从主输出数据流和备输出数据流中读取预设长度的比较数据。 并 且, 在确定主输出数据流的比较数据与备输出数据流的比较数据是否相等 时, 通过计算主虚拟机和备虚拟机的历史数据的哈希值确定。 图 5为本发 明实施例二提供的虚拟机数据的同歩方法的流程图, 如图 5所示, 本实施 例的方法可以包括以下歩骤:
歩骤 201、 按照数据流的顺序分别从主输出数据流和备输出数据流中 读取预设长度的比较数据。
歩骤 202、 根据主虚拟机的初始哈希值和主输出数据流的比较数据计 算主虚拟机的历史数据的哈希值, 以及根据备虚拟机的初始哈希值和备输 出数据流的比较数据计算备虚拟机的历史数据的哈希值。
其中, 主虚拟机的初始哈希值为上次主虚拟机和备虚拟机进行数据同 歩后的哈希值, 备虚拟机的初始哈希值为上次主虚拟机和备虚拟机进行数 据同歩后的哈希值, 在每次主虚拟机和备虚拟机进行数据同歩后所述主虚 拟机的初始哈希值与所述备虚拟机的初始哈希值相同, 因此, 主虚拟机的 初始哈希值和备虚拟机的初始哈希值相同。
歩骤 203、 判断主虚拟机的历史数据的哈希值与备虚拟机的历史数据 的哈希值是否相同。
若主虚拟机的历史数据的哈希值与备虚拟机的历史数据的哈希值相 同, 则执行歩骤 204, 若主虚拟机的历史数据的哈希值与备虚拟机的历史 数据的哈希值不相同, 则执行歩骤 205。
歩骤 204、 确定主虚拟机的数据与备虚拟机的数据同歩。
歩骤 205、 确定主虚拟机的数据与备虚拟机的数据不同歩。
以下通过具体的例子说明, 如图 6所示, 图 6为另一种主输出数据流 和备输出数据流的示意图, 图 6中的主输出数据流和备输出数据流为 TCP 数据流, 在 TCP 流发送前需要通过三次握手建立一个 TCP 连接, SYN ( synchronous ) 报文是 TCP连接建立后发送的第一个报文, SYN报文非 常短, 在 SYN报文之后开始发送用户数据报文。 本实施例中, 假设主虚 拟机和备初始哈希值均为 H。, 比较数据的预设长度为 512字节 (Bite ) , 除 SYN报文外, 每隔 512字节计算一次。
如图 6所示, 在 时刻并行地计算备虚拟机的历史数据的哈希值
H;=h(HQ,备 SYN)和主虚拟机的历史数据的哈希值 ,主 SYN) , HQ为主虚 拟机和备虚拟机在 时刻的初始哈希值, 并比较 Η Π Η;是否相同, 若 和 相同, 则将主 SYN报文或备 SYN报文作为输出结果输出, 若 Η Π Η;不 相同, 则将主 SYN赋值给备 SYN, 或将备 SYN赋值给主 SYN, 实现主 虚拟机的数据和备虚拟机的数据同歩, 然后, 将主 SYN报文或备 SYN报 文作为输出结果输出。
^时刻继续并行地计算备虚拟机的历史数据的哈希值
H2=h(H;,b^512字节)和主虚拟机的历史数据的哈希值 Η^ΜΗ,,ρ,),其中, Η;为 备虚拟机在 t2时刻的初始哈希值, 为主虚拟机在 t2时刻的初始哈希值, H|=Hl 0本实施例中, 比较数据的预设长度为 512字节, 因此, 在计算 ^时 读取主输出数据流的!^报文的前 512字节, 在计算 H2时也要读取备输出数 据流的 512字节, Pl报文的长度刚好为 512字节,在计算得到 和 之后, 比较 和 是否相同, 若 和 相同, 则将报文^或报文 的前 512字 节作为输出结果输出, 若 和 不相同, 则将报文^赋值给 的前 512字 节, 或将 的前 512字节赋值给报文^,的 hash值, 实现主虚拟机的数据 和备虚拟机的数据同歩, 然后, 将报文 或1^的前 512字节作为输出结果 输出。
t3时刻备虚拟机的历史数据的哈希值为!!^^!^,!^^^^字节), 主虚拟机 的历史数据的哈希值为 =1 ( ^2# 前384字节),其中, H2为主虚拟机在 13时 刻的初始哈希值, H2为备虚拟机在 t3时刻的初始哈希值, H2=H2, #表示拼 接操作, 22# 前 384字节表示将报文22和报文 p3的前 384字节拼接在一起。 在计算得到 和 之后, 比较 和 是否相同, 若 和 相同, 则直接 输出结果, 若 和 不相同, 则先同歩然后输出结果, 用同样的方式继续 处理后续输出数据流。
本实施例中, 将 SYN报文单独出来计算虚拟机的历史数据的哈希值, 当然也可以将 SYN报文和用户数据报文一起作为输出数据流计算虚拟机 的历史数据的哈希值。 另外, 本实施例中, 每次同歩时采用的比较数据的 预设长度都相同, 可选地, 每次同歩采用的比较数据的预设长度也可以不 同, 例如, 在 ^时刻预设长度为 512字节, 在^时刻的预设长度为 256字 节, t3时刻的预设长度为 1024字节。
本发明实施例三对实施例一中歩骤 101进行详细说明, 本实施例中, 比较数据的长度为实时确定的, 共有以下两种确定方式:
第一种方式, 将主虚拟机接收到的主输出数据流的数据作为比较数 据, 确定主输出数据流的比较数据的长度; 然后, 按照数据流的顺序从备 输出数据流中读取与所述主输出数据流的比较数据长度相等的备输出数 据流的比较数据。
第二种方式, 将备虚拟机接收到的备输出数据流的数据作为比较数 据, 确定备输出数据流的比较数据的长度; 然后, 按照数据流的顺序从主 输出数据流中读取与备输出数据流的比较数据长度相等的主输出数据流 的比较数据。
本实施例中, 以上述第二种方式为例进行说明, 并且, 在确定主输出 数据流的比较数据与备输出数据流的比较数据是否相等时, 通过计算主虚 拟机和备虚拟机的历史数据的哈希值确定。 图 7为本发明实施例三提供的 虚拟机数据的同歩方法的流程图, 如图 7所示, 本实施例的方法可以包括 以下歩骤:
歩骤 301、 将备虚拟机接收到的备输出数据流的数据作为备输出数据 流的比较数据, 确定备输出数据流的比较数据的长度。
歩骤 302、 按照数据流的顺序从主输出数据流中读取与备虚拟机的比 较数据长度相等的主输出数据流的比较数据。
歩骤 303、 根据主虚拟机的初始哈希值和主输出数据流的比较数据计 算主虚拟机的历史数据的哈希值, 以及根据备虚拟机的初始哈希值和备输 出数据流的比较数据计算备虚拟机的历史数据的哈希值。
其中, 主虚拟机的初始哈希值为上次主虚拟机和备虚拟机进行数据同 歩后的哈希值, 备虚拟机的初始哈希值为上次主虚拟机和备虚拟机进行数 据同歩后的哈希值, 在每次主虚拟机和备虚拟机进行数据同歩后所述主虚 拟机的初始哈希值与所述备虚拟机的初始哈希值相同, 因此, 主虚拟机的 初始哈希值和备虚拟机的初始哈希值相同。 歩骤 304、 判断主虚拟机的历史数据的哈希值与备虚拟机的历史数据 的哈希值是否相同。
若主虚拟机的历史数据的哈希值与备虚拟机的历史数据的哈希值相 同, 则执行歩骤 305, 若主虚拟机的历史数据的哈希值与备虚拟机的历史 数据的哈希值不相同, 则执行歩骤 306。
歩骤 305、 确定主虚拟机的数据与备虚拟机的数据同歩。
歩骤 306、 确定主虚拟机的数据与备虚拟机的数据不同歩。
以下通过具体的例子说明, 如图 8所示, 图 8为又一种主输出数据流 和备输出数据流的示意图, 在 时刻并行地计算备虚拟机的历史数据的哈 希值 H;=h(HQ,备 SYN)和主虚拟机的历史数据的哈希值 ,主 SYN), HQ主 虚拟机和备虚拟机在 时刻的初始哈希值, 然后, 比较 Η Π Η;是否相同, 根据比较结果进行数据同歩或直接输出结果。
12时刻首先计算备虚拟机的历史数据的哈希值 H^IKH ,) , 为备虚拟 机在 t2时刻的初始哈希值, 为备虚拟机在 tl时刻到 t2时刻内接收到的数 据, 将备虚拟机在 tl时刻到 t2时刻内接收到的数据作为备输出数据的比较 数据, !^的长度为 1024字节, 然后, 根据备输出数据流的比较数据的长 度(1024字节)计算主虚拟机的历史数据的哈希值, 主输出数据流的比较 数据包括报文 Pl , p2以及 的前半部分总共 1024字节数据, 主虚拟机的历 史数据的哈希值^=1^1^ 2# 前384字节), 为主虚拟机在 t2时刻的初始哈 希值, H;=Hl, 比较 Η^Π Η2是否相同, 根据比较结果进行数据同歩或直接 输出结果。
t3时刻先计算备虚拟机的历史数据的哈希值 H3=h(H2,b2), 为备虚拟 机的初始哈希值, 报文 b2为备虚拟机从 t2时刻到 t3时刻内接收到比较数据, 报文!^的长度为 1440字节, 然后, 根据备虚拟机已经计算长度的长度计 算主虚拟机的历史数据的哈希值, 主输出数据流的比较数据包括报文 的 后半部分和报文 P4, 因此, 主虚拟机的历史数据的哈希值
H3=h(H2,p^384字节 #p4), H2为主虚拟机的初始哈希值, H2=H2,比较 H;和 H3是 否相同, 根据比较结果进行数据同歩或直接输出结果。
用同样的方式处理后续输出数据流, 本实施例中, 在第二种方式中, 将上次同歩时间到本次同歩时间内备虚拟机接收到的数据的作为备输出 数据流的比较数据, 然后, 从主输出数据流中读取相等长度的数据作为主 输出数据流的比较数据。 若主虚拟机在本次同歩时间到达时接收到的数据 总量小于备虚拟机的接收到的比较数据的长度, 那么, 在计算主虚拟机的 历史数据的哈希值时, 可以有多少数据计算多少, 但是, 在计算完成之后, 并不直接将主虚拟机的计算结果与备虚拟机的历史数据的哈希值进行比 较, 而是等待接收到相等长度的数据, 计算等量的比较数据之后, 再比较 主虚拟机的历史数据的哈希值与备虚拟机的历史数据的哈希值。
同理, 在第一种方式中, 将上次同歩时间到本次同歩时间内主虚拟机 接收到的数据的主输出数据流的比较数据, 然后, 从备输出数据流中读取 相等长度的数据作为备输出数据流的比较数据。 若备虚拟机在本次同歩时 间到达时接收到的数据总量小于主输出数据流的比较数据的长度, 那么, 在计算备虚拟机的历史数据的哈希值时,可以有多少数据计算多少,但是, 在计算完成之后, 并不直接将备虚拟机的计算结果与主虚拟机的历史数据 的哈希值进行比较, 而是等待接收到相等长度的数据, 计算等量的比较数 据之后, 再比较主虚拟机的历史数据的哈希值与备虚拟机的历史数据的哈 希值。
实施例二和实施例三中, 在输出结果后, 还需要更新主虚拟机的初始 哈希值和备虚拟机的初始哈希值, 每次更新后主虚拟机的哈希值和备虚拟 机的哈希值相同。
图 9为本发明实施例四提供的虚拟机数据的同歩装置的结构示意图,如 图 9所示, 本实施提供的虚拟机数据的同歩装置可以包括: 获取模块 61、 比 较模块 62、 同歩模块 63和输出模块 64。
其中, 获取模块 61, 用于获取待同歩的主虚拟机的主输出数据流和备 虚拟机的备输出数据流;
比较模块 62, 用于在同歩时间到达时, 按照数据流的顺序分别从所述 主输出数据流和所述备输出数据流中读取长度相等的比较数据进行比较, 确定所述主虚拟机的数据与所述备虚拟机的数据是否同歩;
输出模块 64, 用于若所述主虚拟机的数据与所述备虚拟机的数据同 歩, 则将所述主输出数据流的比较数据或所述备输出数据流的比较数据作 为输出结果输出; 同歩模块 63,用于若所述主虚拟机的数据与所述备虚拟机的数据不同 歩, 则将所述主输出数据流的比较数据和所述备输出数据流的比较数据进 行同歩;
所述输出模块 64还用于: 将所述同歩后的比较数据作为输出结果输 出。
同歩模块 63 具体可以通过以下两种方式进行数据同歩: 第一种方式 将所述备输出数据流的比较数据赋值给所述主输出数据流的比较数据; 第 二种方式, 将所述主输出数据流的比较数据赋值给所述备输出数据流的比 较数据。 若同歩模块 63以第一种方式进行同歩, 则输出模块 64将所述主 输出数据流的比较数据作为输出结果输出。 若同歩模块 63 以第二种方式 进行同歩, 则输出模块 64将所述备输出数据流的比较数据作为输出结果 输出。
本实施例的虚拟机数据的同歩装置可用于执行实施例一至实施例三的技 术方案, 具体实现方式和技术效果类似, 这里不再赘述。
图 10为本发明实施例五提供的虚拟机数据的同歩装置的结构示意图, 如图 10所示, 本实施例的装置在图 9所示装置的基础上还包括: 输入模块 65, 用于接收输入数据流, 将所述输入数据流分发给所述主虚拟机和所述 备虚拟机, 以使所述主虚拟机和所述备虚拟机分别对所述输入数据流进行 处理, 得到输出数据流。
本实施例中, 获取模块 61包括: 获取单元 611、 解析单元 612和识别 单元 613。 其中, 获取单元 611, 用于获取所述主虚拟机的多条输出数据 流和所述备虚拟机的多条输出数据流。 解析单元 612, 用于解析所述主虚 拟机的所述多条输出数据流获取所述主虚拟机的每条输出数据流的识别 参数, 以及解析所述备虚拟机的所述多条输出数据流获取所述备虚拟机的 每条输出数据流的识别参数。 识别单元 613, 用于根据所述主虚拟机的每 条输出数据流的识别参数和所述备虚拟机的每条输出数据流的识别参数 识别出待处理的所述主输出数据流和所述备输出数据流。
当所述主虚拟机的多条输出数据流和所述备虚拟机的多条输出数据 流为传输控制协议 TCP数据流时,所述识别参数为输出数据流的五元组信 息。 则所述识别单元 613具体用于: 比较所述主虚拟机的每条输出数据流 的五元组信息与所述备虚拟机的每条数据流的五元组信息, 当所述主虚拟 机的输出数据流的五元组信息与所述备虚拟机的输出数据流的五元组信 息相同时, 将所述主虚拟机的输出数据流作为待同歩的所述主输出数据 流, 将所述备虚拟机的输出数据流作为待同歩的所述备输出数据流。
本实施例中, 比较模块 62包括: 读取单元 621、 计算单元 622和判断 单元 623。
其中, 读取单元 621, 用于按照数据流的顺序分别从所述主输出数据 流和所述备输出数据流中读取长度相等的比较数据。
计算单元 622, 用于分别计算所述主输出数据流的比较数据的哈希值 和所述备输出数据流的比较数据的哈希值; 或者, 用于根据所述主虚拟机 的初始哈希值和所述主输出数据流的比较数据计算所述主虚拟机的历史 数据的哈希值, 以及根据所述备虚拟机的初始哈希值和所述备输出数据流 的比较数据计算所述备虚拟机的历史数据的哈希值, 其中, 所述主虚拟机 的初始哈希值为上次所述主虚拟机与所述备虚拟机进行数据同歩后的哈 希值, 所述备虚拟机的初始哈希值为上次所述主虚拟机与所述备虚拟机进 行数据同歩后的哈希值, 在每次所述主虚拟机与所述备虚拟机进行数据同 歩后所述主虚拟机的初始哈希值与所述备虚拟机的初始哈希值相同。
当计算单元 622计算结果为主输出数据流的比较数据的哈希值和备输 出数据流的哈希值时, 判断单元 623, 用于判断所述主输出数据流的比较 数据的哈希值与所述备输出数据流的比较数据的哈希值是否相同, 若所述 主输出数据流的比较数据的哈希值与所述备输出数据流的比较数据的哈 希值相同, 则所述主虚拟机的数据与所述备虚拟机的数据同歩, 若所述主 输出数据流的比较数据的哈希值与所述备输出数据流的比较数据的哈希 值不相同, 则所述主虚拟机的数据与所述备虚拟机的数据不同歩。
当计算单元 622的计算结果为主虚拟机的历史数据的哈希值和备虚拟 机的历史数据的哈希值时, 判断单元 623, 用于判断所述主虚拟机的历史 数据的哈希值与所述备虚拟机的历史数据的哈希值是否相同, 若所述主虚 拟机的历史数据的哈希值与所述备虚拟机的历史数据的哈希值相同, 则所 述主虚拟机的数据与所述备虚拟机的数据同歩, 若所述主虚拟机的历史数 据的哈希值与所述备虚拟机的历史数据的哈希值不相同, 则所述主虚拟机 的数据与所述备虚拟机的数据不同歩。
本实施例中, 比较数据的长度有三种确定方法:
( 1 ) 比较数据的长度为预先设置的, 则读取单元 621 具体用于: 按 照数据流的顺序分别从所述主输出数据流和所述备输出数据流中读取预 设长度的比较数据。
( 2 ) 比较数据的长度根据主虚拟机接收到的数据的长度确定, 则读 取单元 121具体用于: 将所述主虚拟机接收到的所述主输出数据流的数据 作为所述主输出数据流的比较数据, 确定所述主输出数据流的比较数据的 长度; 然后, 按照数据流的顺序从所述备输出数据流中读取与所述主输出 数据流的比较数据长度相等的所述备输出数据流的比较数据。
( 3 ) 比较数据的长度根据备虚拟机接收到的数据的长度确定, 则读 取单元 121具体用于: 将所述备虚拟机接收到的所述备输出数据流的数据 作为所述备输出数据流的比较数据, 确定所述备输出数据流的比较数据的 长度; 然后, 按照数据流的顺序从所述主输出数据流中读取与所述备输出 数据流的比较数据长度相等的所述主输出数据流的比较数据。
进一歩地, 本实施例的虚拟机数据的同歩装置还包括: 更新模块, 用 于更新所述主虚拟机的初始哈希值和所述备虚拟机的初始哈希值。
本实施例的虚拟机数据的同歩装置可用于执行实施例一至实施例三 的技术方案, 具体实现方式和技术效果类似, 这里不再赘述。
图 11为本发明实施例六提供的虚拟机数据的同歩装置的结构示意图, 如图 11所示, 本实施例的虚拟机数据的同歩装置 700包括: 处理器 71、 存储器 72和系统总线 73, 所述处理器 71和所述存储器 72之间通过所述 系统总线 23连接并完成相互间的通信; 所述存储器 72, 用于存储计算机 执行指令 721 ; 所述处理器 71, 用于运行所述计算机执行指令 721, 使所 述虚拟机数据的同歩装置 700执行如下所述的方法:
获取待同歩的主虚拟机的主输出数据流和备虚拟机的备输出数据流, 在同歩时间到达时, 按照数据流的顺序分别从所述主输出数据流和所述备 输出数据流中读取长度相等的比较数据进行比较, 确定所述主虚拟机的数 据与所述备虚拟机的数据是否同歩;
若所述主虚拟机的数据与所述备虚拟机的数据同歩, 则将所述主输出 数据流的比较数据或所述备输出数据流的比较数据作为输出结果输出; 若所述主虚拟机的数据与所述备虚拟机的数据不同歩, 则将所述主输 出数据流的比较数据和所述备输出数据流的比较数据进行同歩, 将所述同 歩后的比较数据作为输出结果输出。
处理器 71 可以通过以下两种方式确定所述主虚拟机的数据与所述备 虚拟机的数据是否同歩:
( 1 ) 首先, 按照数据流的顺序分别从所述主输出数据流和所述备输 出数据流中读取长度相等的比较数据。 然后, 分别计算所述主输出数据流 的比较数据的哈希值和所述备输出数据流的比较数据的哈希值。 最后, 判 断所述主输出数据流的比较数据的哈希值与所述备输出数据流的比较数 据的哈希值是否相同; 若所述主输出数据流的比较数据的哈希值与所述备 输出数据流的比较数据的哈希值相同, 则所述主虚拟机的数据与所述备虚 拟机的数据同歩, 若所述主输出数据流的比较数据的哈希值与所述备输出 数据流的比较数据的哈希值不相同, 则所述主虚拟机的数据与所述备虚拟 机的数据不同歩。
( 2 ) 首先, 按照数据流的顺序分别从所述主输出数据流和所述备输 出数据流中读取长度相等的比较数据。 然后, 根据所述主虚拟机的初始哈 希值和所述主输出数据流的比较数据计算所述主虚拟机的历史数据的哈 希值, 以及根据所述备虚拟机的初始哈希值和所述备输出数据流的比较数 据计算所述备虚拟机的历史数据的哈希值, 其中, 所述主虚拟机的初始哈 希值为上次所述主虚拟机与所述备虚拟机进行数据同歩后的哈希值, 所述 备虚拟机的初始哈希值为上次所述主虚拟机与所述备虚拟机进行数据同 歩后的哈希值, 在每次所述主虚拟机与所述备虚拟机进行数据同歩后所述 主虚拟机的初始哈希值与所述备虚拟机的初始哈希值相同。 最后, 判断所 述主虚拟机的历史数据的哈希值与所述备虚拟机的历史数据的哈希值是 否相同; 若所述主虚拟机的历史数据的哈希值与所述备虚拟机的历史数据 的哈希值相同, 则所述主虚拟机的数据与所述备虚拟机的数据同歩, 若所 述主虚拟机的历史数据的哈希值与所述备虚拟机的历史数据的哈希值不 相同, 则所述主虚拟机的数据与所述备虚拟机的数据不同歩。 相应地, 处 理器 71 在输出所述输出结果后, 还用于: 更新所述主虚拟机的初始哈希 值和所述备虚拟机的初始哈希值。
本实施例中, 比较数据的确定方式有以下三种:
( 1 ) 比较数据的长度为预先设置的, 则处理器 71按照数据流的顺序 分别从所述主输出数据流和所述备输出数据流中读取长度相等的比较数 据, 具体为: 按照数据流的顺序分别从所述主输出数据流和所述备输出数 据流中读取预设长度的比较数据。
( 2 ) 比较数据的长度根据主虚拟机接收到的数据的长度确定, 则处 理器 71 按照数据流的顺序分别从所述主输出数据流和所述备输出数据流 中读取长度相等的比较数据, 具体为: 将所述主虚拟机接收到的所述主输 出数据流的数据作为所述主输出数据流的比较数据, 确定所述主输出数据 流的比较数据的长度; 按照数据流的顺序从所述备输出数据流中读取与所 述主输出数据流的比较数据长度相等的所述备输出数据流的比较数据。
( 3 ) 比较数据的长度根据备虚拟机接收到的数据的长度确定, 则处 理器 71 按照数据流的顺序分别从所述主输出数据流和所述备输出数据流 中读取长度相等的比较数据, 具体为: 将所述备虚拟机接收到的所述备输 出数据流的数据作为所述备输出数据流的比较数据, 确定所述备输出数据 流的比较数据的长度; 按照数据流的顺序从所述主输出数据流中读取与所 述备输出数据流的比较数据长度相等的所述主输出数据流的比较数据。
可选地, 处理器 71 获取待同歩的主虚拟机的主输出数据流和备虚拟 机的备输出数据流, 具体为: 首先, 获取所述主虚拟机的多条输出数据流 和所述备虚拟机的多条输出数据流; 然后, 解析所述主虚拟机的所述多条 输出数据流获取所述主虚拟机的每条输出数据流的识别参数, 以及解析所 述备虚拟机的所述多条输出数据流获取所述备虚拟机的每条输出数据流 的识别参数; 最后, 根据所述主虚拟机的每条输出数据流的识别参数和所 述备虚拟机的每条输出数据流的识别参数识别出待处理的所述主输出数 据流和所述备输出数据流。
当所述主虚拟机的多条输出数据流和所述备虚拟机的多条输出数据 流为传输控制协议 TCP数据流时,所述识别参数为输出数据流的五元组信 息。 则处理器 71 具体用于: 比较所述主虚拟机的每条输出数据流的五元 组信息与所述备虚拟机的每条数据流的五元组信息, 当所述主虚拟机的输 出数据流的五元组信息与所述备虚拟机的输出数据流的五元组信息相同 时, 将所述主虚拟机的输出数据流作为待同歩的所述主输出数据流, 将所 述备虚拟机的输出数据流作为待同歩的所述备输出数据流。
本实施例中, 处理器 71 将所述主输出数据流的比较数据和所述备输 出数据流的比较数据进行同歩可以采用如下两种方式:
( 1 ) 将所述备输出数据流的比较数据赋值给所述主输出数据流的比 较数据。 相应地, 处理器 71 将所述主输出数据流的比较数据作为输出结 果输出。
( 2 ) 将所述主输出数据流的比较数据赋值给所述备输出数据流的比 较数据; 相应地, 处理器 71 将所述备输出数据流的比较数据作为输出结 果输出。
本实施例中, 处理器 71 在获取待同歩的主虚拟机的主输出数据流和 备虚拟机的备输出数据流之前, 还用于: 接收输入数据流, 将所述输入数 据流分发给所述主虚拟机和所述备虚拟机, 以使所述主虚拟机和所述备虚 拟机分别对所述输入数据流进行处理, 得到输出数据流。
本实施例提供的虚拟机数据的同歩装置, 可用于执行实施例一至实施例 三的技术方案, 具体实现方式和技术效果类似, 这里不再赘述。
本领域普通技术人员可以理解: 实现上述方法实施例的全部或部分歩骤 可以通过程序指令相关的硬件来完成, 前述的程序可以存储于一计算机可读 取存储介质中, 该程序在执行时, 执行包括上述方法实施例的歩骤; 而前述 的存储介质包括: ROM、 RAM,磁碟或者光盘等各种可以存储程序代码的介 质。
最后应说明的是: 以上各实施例仅用以说明本发明的技术方案, 而非对 其限制; 尽管参照前述各实施例对本发明进行了详细的说明, 本领域的普通 技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替换; 而这些修改或者替换, 并 不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (24)

  1. 权 利 要 求 书
    1、 一种虚拟机数据的同歩方法, 其特征在于, 包括:
    获取待同歩的主虚拟机的主输出数据流和备虚拟机的备输出数据流, 在同歩时间到达时, 按照数据流的顺序分别从所述主输出数据流和所述备 输出数据流中读取长度相等的比较数据进行比较, 确定所述主虚拟机的数 据与所述备虚拟机的数据是否同歩;
    若所述主虚拟机的数据与所述备虚拟机的数据同歩, 则将所述主输出 数据流的比较数据或所述备输出数据流的比较数据作为输出结果输出; 若所述主虚拟机的数据与所述备虚拟机的数据不同歩, 则将所述主输 出数据流的比较数据和所述备输出数据流的比较数据进行同歩, 将所述同 歩后的比较数据作为输出结果输出。
  2. 2、 根据权利要求 1 所述的方法, 其特征在于, 所述按照数据流的顺 序分别从所述主输出数据流和所述备输出数据流中读取长度相等的比较 数据进行比较, 确定所述主虚拟机的数据与所述备虚拟机的数据是否同 歩, 包括:
    按照数据流的顺序分别从所述主输出数据流和所述备输出数据流中 读取长度相等的比较数据;
    分别计算所述主输出数据流的比较数据的哈希值和所述备输出数据 流的比较数据的哈希值;
    判断所述主输出数据流的比较数据的哈希值与所述备输出数据流的 比较数据的哈希值是否相同;
    若所述主输出数据流的比较数据的哈希值与所述备输出数据流的比 较数据的哈希值相同, 则所述主虚拟机的数据与所述备虚拟机的数据同 歩, 若所述主输出数据流的比较数据的哈希值与所述备输出数据流的比较 数据的哈希值不相同, 则所述主虚拟机的数据与所述备虚拟机的数据不同
  3. 3、 根据权利要求 1 所述的方法, 其特征在于, 所述按照数据流的顺 序分别从所述主输出数据流和所述备输出数据流中读取长度相等的比较 数据进行比较, 确定所述主虚拟机的数据与所述备虚拟机的数据是否同 歩, 包括: 按照数据流的顺序分别从所述主输出数据流和所述备输出数据流中 读取长度相等的比较数据;
    根据所述主虚拟机的初始哈希值和所述主输出数据流的比较数据计 算所述主虚拟机的历史数据的哈希值, 以及根据所述备虚拟机的初始哈希 值和所述备输出数据流的比较数据计算所述备虚拟机的历史数据的哈希 值, 其中, 所述主虚拟机的初始哈希值为上次所述主虚拟机与所述备虚拟 机进行数据同歩后的哈希值, 所述备虚拟机的初始哈希值为上次所述主虚 拟机与所述备虚拟机进行数据同歩后的哈希值, 在每次所述主虚拟机与所 述备虚拟机进行数据同歩后所述主虚拟机的初始哈希值与所述备虚拟机 的初始哈希值相同;
    判断所述主虚拟机的历史数据的哈希值与所述备虚拟机的历史数据 的哈希值是否相同;
    若所述主虚拟机的历史数据的哈希值与所述备虚拟机的历史数据的 哈希值相同, 则所述主虚拟机的数据与所述备虚拟机的数据同歩, 若所述 主虚拟机的历史数据的哈希值与所述备虚拟机的历史数据的哈希值不相 同, 则所述主虚拟机的数据与所述备虚拟机的数据不同歩。
  4. 4、 根据权利要求 2或 3所述的方法, 其特征在于, 所述比较数据的 长度为预先设置的, 则所述按照数据流的顺序分别从所述主输出数据流和 所述备输出数据流中读取长度相等的比较数据, 包括:
    按照数据流的顺序分别从所述主输出数据流和所述备输出数据流中 读取预设长度的比较数据。
  5. 5、 根据权利要求 2或 3所述的方法, 其特征在于, 所述按照数据流 的顺序分别从所述主输出数据流和所述备输出数据流中读取长度相等的 比较数据, 包括:
    将所述主虚拟机接收到的所述主输出数据流的数据作为所述主输出 数据流的比较数据, 确定所述主输出数据流的比较数据的长度;
    按照数据流的顺序从所述备输出数据流中读取与所述主输出数据流 的比较数据长度相等的所述备输出数据流的比较数据。
  6. 6、 根据权利要求 2或 3所述的方法, 其特征在于, 所述按照数据流 的顺序分别从所述主输出数据流和所述备输出数据流中读取长度相等的 比较数据, 包括:
    将所述备虚拟机接收到的所述备输出数据流的数据作为所述备输出 数据流的比较数据, 确定所述备输出数据流的比较数据的长度;
    按照数据流的顺序从所述主输出数据流中读取与所述备输出数据流 的比较数据长度相等的所述主输出数据流的比较数据。
  7. 7、 根据权利要求 3 所述的方法, 其特征在于, 在输出所述输出结果 后, 所述方法还包括:
    更新所述主虚拟机的初始哈希值和所述备虚拟机的初始哈希值。
  8. 8、 根据权利要求 1-7中任一项所述的方法, 其特征在于, 所述获取待 同歩的主虚拟机的主输出数据流和备虚拟机的备输出数据流, 包括: 获取所述主虚拟机的多条输出数据流和所述备虚拟机的多条输出数 据流;
    解析所述主虚拟机的所述多条输出数据流获取所述主虚拟机的每条 输出数据流的识别参数, 以及解析所述备虚拟机的所述多条输出数据流获 取所述备虚拟机的每条输出数据流的识别参数;
    根据所述主虚拟机的每条输出数据流的识别参数和所述备虚拟机的 每条输出数据流的识别参数识别出待处理的所述主输出数据流和所述备 输出数据流。
  9. 9、 根据权利要求 8所述的方法, 其特征在于, 当所述主虚拟机的多 条输出数据流和所述备虚拟机的多条输出数据流为传输控制协议 TCP 数 据流时, 所述识别参数为输出数据流的五元组信息;
    则所述根据所述主虚拟机的每条输出数据流的识别参数和所述备虚 拟机的每条输出数据流的识别参数识别出待处理的所述主输出数据流和 所述备输出数据流, 包括:
    比较所述主虚拟机的每条输出数据流的五元组信息与所述备虚拟机 的每条数据流的五元组信息, 当所述主虚拟机的输出数据流的五元组信息 与所述备虚拟机的输出数据流的五元组信息相同时, 将所述主虚拟机的输 出数据流作为待同歩的所述主输出数据流, 将所述备虚拟机的输出数据流 作为待同歩的所述备输出数据流。
  10. 10、 根据权利要求 1-9中任一项所述的方法, 其特征在于, 所述将所 述主输出数据流的比较数据和所述备输出数据流的比较数据进行同歩, 包 括:
    将所述备输出数据流的比较数据赋值给所述主输出数据流的比较数 据;
    则所述将所述同歩后的比较数据作为输出结果输出, 包括:
    将所述主输出数据流的比较数据作为输出结果输出。
  11. 11、 根据权利要求 1-9中任一项所述的方法, 其特征在于, 所述将所 述主输出数据流的比较数据和所述备输出数据流的比较数据进行同歩, 包 括:
    将所述主输出数据流的比较数据赋值给所述备输出数据流的比较数 据;
    贝 |J, 所述将所述同歩后的比较数据作为输出结果输出, 包括: 将所述备输出数据流的比较数据作为输出结果输出。
  12. 12、 根据权利要求 1所述的方法, 其特征在于, 所述获取待同歩的主 虚拟机的主输出数据流和备虚拟机的备输出数据流之前, 所述方法还包 括:
    接收输入数据流, 将所述输入数据流分发给所述主虚拟机和所述备虚 拟机, 以使所述主虚拟机和所述备虚拟机分别对所述输入数据流进行处 理, 得到输出数据流。
  13. 13、 一种虚拟机数据的同歩装置, 其特征在于, 包括:
    获取模块, 用于获取待同歩的主虚拟机的主输出数据流和备虚拟机的 备输出数据流;
    比较模块, 用于在同歩时间到达时, 按照数据流的顺序分别从所述主 输出数据流和所述备输出数据流中读取长度相等的比较数据进行比较, 确 定所述主虚拟机的数据与所述备虚拟机的数据是否同歩;
    输出模块, 用于若所述主虚拟机的数据与所述备虚拟机的数据同歩, 则将所述主输出数据流的比较数据或所述备输出数据流的比较数据作为 输出结果输出;
    同歩模块, 用于若所述主虚拟机的数据与所述备虚拟机的数据不同 歩, 则将所述主输出数据流的比较数据和所述备输出数据流的比较数据进 所述输出模块还用于: 将所述同歩后的比较数据作为输出结果输出。
  14. 14、 根据权利要求 13所述的装置, 其特征在于, 所述比较模块包括: 读取单元, 用于按照数据流的顺序分别从所述主输出数据流和所述备 输出数据流中读取长度相等的比较数据;
    计算单元, 用于分别计算所述主输出数据流的比较数据的哈希值和所 述备输出数据流的比较数据的哈希值;
    判断单元, 用于判断所述主输出数据流的比较数据的哈希值与所述备 输出数据流的比较数据的哈希值是否相同, 若所述主输出数据流的比较数 据的哈希值与所述备输出数据流的比较数据的哈希值相同, 则所述主虚拟 机的数据与所述备虚拟机的数据同歩, 若所述主输出数据流的比较数据的 哈希值与所述备输出数据流的比较数据的哈希值不相同, 则所述主虚拟机 的数据与所述备虚拟机的数据不同歩。
  15. 15、 根据权利要求 13所述的装置, 其特征在于, 所述比较模块包括: 读取单元, 用于按照数据流的顺序分别从所述主输出数据流和所述备 输出数据流中读取长度相等的比较数据;
    计算单元, 用于根据所述主虚拟机的初始哈希值和所述主输出数据流 的比较数据计算所述主虚拟机的历史数据的哈希值, 以及根据所述备虚拟 机的初始哈希值和所述备输出数据流的比较数据计算所述备虚拟机的历 史数据的哈希值, 其中, 所述主虚拟机的初始哈希值为上次所述主虚拟机 与所述备虚拟机进行数据同歩后的哈希值, 所述备虚拟机的初始哈希值为 上次所述主虚拟机与所述备虚拟机进行数据同歩后的哈希值, 在每次所述 主虚拟机与所述备虚拟机进行数据同歩后所述主虚拟机的初始哈希值与 所述备虚拟机的初始哈希值相同;
    判断单元, 用于判断所述主虚拟机的历史数据的哈希值与所述备虚拟 机的历史数据的哈希值是否相同, 若所述主虚拟机的历史数据的哈希值与 所述备虚拟机的历史数据的哈希值相同, 则所述主虚拟机的数据与所述备 虚拟机的数据同歩, 若所述主虚拟机的历史数据的哈希值与所述备虚拟机 的历史数据的哈希值不相同, 则所述主虚拟机的数据与所述备虚拟机的数 据不同歩。 16、 根据权利要求 14或 15所述的装置, 其特征在于, 所述比较数据 的长度为预先设置的, 则所述读取单元具体用于:
    按照数据流的顺序分别从所述主输出数据流和所述备输出数据流中 读取预设长度的比较数据。
  16. 17、 根据权利要求 14或 15所述的装置, 其特征在于, 所述读取单元 具体用于:
    将所述主虚拟机接收到的所述主输出数据流的数据作为所述主输出 数据流的比较数据, 确定所述主输出数据流的比较数据的长度;
    按照数据流的顺序从所述备输出数据流中读取与所述主输出数据流 的比较数据长度相等的所述备输出数据流的比较数据。
  17. 18、 根据权利要求 14或 15所述的装置, 其特征在于, 所述读取单元 具体用于:
    将所述备虚拟机接收到的所述备输出数据流的数据作为所述备输出 数据流的比较数据, 确定所述备输出数据流的比较数据的长度;
    按照数据流的顺序从所述主输出数据流中读取与所述备输出数据流 的比较数据长度相等的所述主输出数据流的比较数据。
  18. 19、 根据权利要求 15所述的装置, 其特征在于, 所述装置还包括: 更新模块, 用于更新所述主虚拟机的初始哈希值和所述备虚拟机的初 始哈希值。
  19. 20、 根据权利要求 13-19中任一项所述的装置, 其特征在于, 所述获 取模块包括:
    获取单元, 用于获取所述主虚拟机的多条输出数据流和所述备虚拟机 的多条输出数据流;
    解析单元, 用于解析所述主虚拟机的所述多条输出数据流获取所述主 虚拟机的每条输出数据流的识别参数, 以及解析所述备虚拟机的所述多条 输出数据流获取所述备虚拟机的每条输出数据流的识别参数;
    识别单元, 用于根据所述主虚拟机的每条输出数据流的识别参数和所 述备虚拟机的每条输出数据流的识别参数识别出待处理的所述主输出数 据流和所述备输出数据流。
  20. 21、 根据权利要求 20所述的装置, 其特征在于, 当所述主虚拟机的 多条输出数据流和所述备虚拟机的多条输出数据流为传输控制协议 TCP 数据流时, 所述识别参数为输出数据流的五元组信息;
    则所述识别单元具体用于:
    比较所述主虚拟机的每条输出数据流的五元组信息与所述备虚拟机 的每条数据流的五元组信息, 当所述主虚拟机的输出数据流的五元组信息 与所述备虚拟机的输出数据流的五元组信息相同时, 将所述主虚拟机的输 出数据流作为待同歩的所述主输出数据流, 将所述备虚拟机的输出数据流 作为待同歩的所述备输出数据流。
  21. 22、 根据权利要求 13-21中任一项所述的装置, 其特征在于, 所述同 歩模块具体用于:
    将所述备输出数据流的比较数据赋值给所述主输出数据流的比较数 据;
    则所述输出模块具体用于:
    将所述主输出数据流的比较数据作为输出结果输出。
  22. 23、 根据权利要求 13-21中任一项所述的装置, 其特征在于, 所述同 歩模块具体用于:
    将所述主输出数据流的比较数据赋值给所述备输出数据流的比较数 据;
    则所述输出模块具体用于:
    将所述备输出数据流的比较数据作为输出结果输出。
  23. 24、 根据权利要求 13所述的装置, 其特征在于, 还包括:
    输入模块, 用于接收输入数据流, 将所述输入数据流分发给所述主虚 拟机和所述备虚拟机, 以使所述主虚拟机和所述备虚拟机分别对所述输入 数据流进行处理, 得到输出数据流。
  24. 25、 一种虚拟机数据的同歩装置, 其特征在于, 包括:
    处理器、 存储器和系统总线, 所述处理器和所述存储器之间通过所述 系统总线连接并完成相互间的通信;
    所述存储器, 用于存储计算机执行指令;
    所述处理器, 用于运行所述计算机执行指令, 使所述同歩装置执行如 权利要求 1至 12任一所述的方法。
CN201480038268.2A 2014-08-18 2014-08-18 虚拟机数据的同步方法和装置 Pending CN105531678A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/084651 WO2016026071A1 (zh) 2014-08-18 2014-08-18 虚拟机数据的同步方法和装置

Publications (1)

Publication Number Publication Date
CN105531678A true CN105531678A (zh) 2016-04-27

Family

ID=55350064

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480038268.2A Pending CN105531678A (zh) 2014-08-18 2014-08-18 虚拟机数据的同步方法和装置

Country Status (2)

Country Link
CN (1) CN105531678A (zh)
WO (1) WO2016026071A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112380069A (zh) * 2020-12-04 2021-02-19 海光信息技术股份有限公司 一种虚拟机容错系统及其容错方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130283092A1 (en) * 2012-04-24 2013-10-24 Microsoft Corporation Data consistency between virtual machines
CN103501290A (zh) * 2013-09-18 2014-01-08 万达信息股份有限公司 一种基于动态备份虚拟机的高可靠服务系统构建方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8504521B2 (en) * 2005-07-28 2013-08-06 Gopivotal, Inc. Distributed data management system
JP5756379B2 (ja) * 2011-09-20 2015-07-29 株式会社日立ソリューションズ データ転送システム、転送元システム及び転送先システム並びにプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130283092A1 (en) * 2012-04-24 2013-10-24 Microsoft Corporation Data consistency between virtual machines
CN103501290A (zh) * 2013-09-18 2014-01-08 万达信息股份有限公司 一种基于动态备份虚拟机的高可靠服务系统构建方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112380069A (zh) * 2020-12-04 2021-02-19 海光信息技术股份有限公司 一种虚拟机容错系统及其容错方法
CN112380069B (zh) * 2020-12-04 2022-05-17 海光信息技术股份有限公司 一种虚拟机容错系统及其容错方法

Also Published As

Publication number Publication date
WO2016026071A1 (zh) 2016-02-25

Similar Documents

Publication Publication Date Title
US10698717B2 (en) Accelerator virtualization method and apparatus, and centralized resource manager
US10915374B2 (en) Method of facilitating live migration of virtual machines
US20180102978A1 (en) Data transmission method and apparatus in optoelectronic hybrid network
US20240275724A1 (en) Offload of acknowledgements to a network device
US10127067B2 (en) Method and computing device for selecting protocol stack for virtual machines
WO2017020722A1 (zh) 基于虚拟机的数据传输方法、装置及系统
CN106790221B (zh) 一种英特网协议安全IPSec协议加密方法和网络设备
WO2016115831A1 (zh) 一种虚拟机容错的方法、装置及系统
CN109088820B (zh) 一种跨设备链路聚合方法、装置、计算装置和存储介质
US20170289040A1 (en) Throughput resilience during link failover
US20210126965A1 (en) Systems and methods for scaling down cloud-based servers handling secure connections
EP3142306A1 (en) Openflow communication method, system, controller, and service gateway
CN105207975A (zh) 一种vdi架构下的usb图像设备数据传输方法和系统
US9864856B2 (en) Efficient hardware trust verification in data communication systems that comprise network interface cards, central processing units, and data memory buffers
US9621633B2 (en) Flow director-based low latency networking
US20200059427A1 (en) Integrating a communication bridge into a data processing system
CN112887093B (zh) 用于实现密码算法的硬件加速系统和方法
CN105531678A (zh) 虚拟机数据的同步方法和装置
CN110753043B (zh) 一种通信方法、装置、服务器及介质
CN112737915B (zh) 基于智能网卡的内网隧道跨域网关转发方法、系统、设备和介质
US8751603B2 (en) Exploiting cluster awareness infrastructure through internet socket based applications
CN105591723B (zh) 一种vnf堆叠方法及装置
WO2023183066A1 (en) Intelligent controller for smart nics and hardware accelerators
CN117811785A (zh) 数据包的加密的方法、装置、存储介质以及电子设备
JP5423404B2 (ja) オフロード処理装置、および、通信システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160427