一种高效的虚拟机数据在线去冗余方法与流程

文档序号:16692852发布日期:2019-01-22 19:05阅读:774来源:国知局
本发明涉及数据处理领域,尤其涉及一种高效的虚拟机数据在线去冗余方法。
背景技术
::随着云计算和虚拟化技术的快速发展,越来越多的电力应用程序以虚拟机形式封装并部署到云平台上。多个虚拟机之间通过虚拟网络相连,共享底层资源,为应用程序提供隔离的运行环境的同时,也提升了资源利用率,节约了用户的it成本。与此同时,由于虚拟机具有可迁移性和可复制性,这为应用程序的动态部署和迁移提供了极大的便利。当应用的资源需求增大时,可以通过虚拟机扩容技术进行横向扩展,极大的提升了it基础设施的灵活性和可扩展性。此外,由于虚拟机具有可复制特性,也有效提升了应用和数据的可靠性和可用性。其中,虚拟机快照作为一项核心技术为保障云平台中应用和数据的可靠性提供了重要支撑。虚拟机快照技术通过定期保存虚拟机状态和数据,使得当虚拟机发生故障或崩溃时,可以回滚到之前保存的状态和数据,并从当前状态继续运行。这一技术极大地提升了虚拟机及应用程序的可靠性。然后,由于需要定期的对虚拟机数据和状态进行备份,长时间运行会占用大量的存储空间和网络带宽。特别对于云计算环境中大量虚拟机定期做快照的场景下,将产生海量快照数据。例如,对于32台具有2gb内存虚拟机,按每小时做一次快照计算,一天消耗的存储空间达1.5tb。另一方面,我们观察到,云环境中的大量虚拟机通常仅安装几种类型的操作系统(如windowsxp,win8,linuxubuntu等),大量虚拟机都采用相同的操作系统,因此多个虚拟机的快照中包含了大量的冗余数据和状态,造成了磁盘空间和网络带宽的巨大浪费。技术实现要素:为了解决上述问题,本发明提出了一种高效的虚拟机数据在线去冗余方法。所述方法为针对虚拟机采用本地存储、全局对比的分布式去冗余,使需要备份的虚拟机数据仅在本地存储一次,通过全局对比,发现该数据块是否已经在其它服务器磁盘上备份,然后通过索引定位其它虚拟机的相同数据块。本发明的所述在线去冗余的架构设置方法为,本地去冗余组件采用分布式部署模式,每台物理服务器之上部署一个;全局去冗余组件在整个系统中仅有1个,部署于全局服务器上。在本地去冗余组件中包含本地哈希表(localhashtable)模块,负责记录在这台物理服务器上的数据指纹信息;在全局去冗余组件中包含全局哈希表(globalhashtable)模块,负责记录整个系统中全局数据的指纹信息。快照执行组件(snapdaemon)负责执行虚拟机快照操作,同时获取虚拟机数据指纹值,并传递给本地去冗余组件。本发明支持在多个虚拟机快照过程中在线进行去冗余操作,确保多个虚拟机间相同的快照数据仅被存储一次,有效降低了存储消耗;同时仅在网络中传输快照数据的指纹值,而无需传输快照数据本身,有效降低了网络带宽消耗;此外,本发明对虚拟机和应用程序具有透明性,无需在虚拟机中安装代理程序,可支持不同类型的虚拟机操作系统。附图说明图1为本发明的在线去冗余架构设置图;图2为在线去冗余方法的流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。本发明提出一种高效的虚拟机数据在线去冗余方法,针对虚拟机采用本地存储、全局对比的分布式去冗余,使需要备份的虚拟机数据仅在本地存储一次,通过全局对比,发现该数据块是否已经在其它服务器磁盘上备份,然后通过索引定位其它虚拟机的相同数据块。其架构核心组件为本地去冗余组件(localde-dup)和全局去冗余组件(globalde-dup),本地去冗余组件采用分布式部署模式,每台物理服务器之上部署一个;全局去冗余组件在整个系统中仅有1个,部署于全局服务器上。在本地去冗余组件中包含本地哈希表(localhashtable)模块,负责记录在这台物理服务器上的数据指纹信息;在全局去冗余组件中包含全局哈希表(globalhashtable)模块,负责记录整个系统中全局数据的指纹信息。快照执行组件(snapdaemon)负责执行虚拟机快照操作,同时获取虚拟机数据指纹值,并传递给本地去冗余组件。本发明对多虚拟机快照进行分布式去冗余的处理方法具体如下:步骤1:快照开始后,快照执行组件首先计算被保存的虚拟机数据的指纹值(即哈希值),接着将指纹值、虚拟机id和数据地址传递给本地去冗余组件。步骤2:本地去冗余组件首先检查该指纹值是否存在于本地哈希表中。如果存在,则本地去冗余组件将该虚拟机数据块的虚拟机id和数据地址作为索引,存储于位于本地的快照文件中;如果不存在,则本地去冗余组件将请求全局去冗余组件去搜索该指纹值是否存在于全局去冗余组件的全局哈希表中。步骤3:如果在全局哈希表中搜索到该指纹值,则全局去冗余组件将返回代表该数据块的索引id给本地去冗余组件。如果在全局哈希表中未搜索到该指纹值,则证明此数据块尚未全局保存,将全局去冗余组件将新建索引id,并记录该指纹值,并返回“新建索引id”给本地去冗余组件。步骤4:本地去冗余组件根据全局去冗余组件返回的消息,确定该数据块是否已经被备份。如果尚未备份,则通知快照执行组件将数据块写入快照文件,同时更新本地哈希表;如果已经备份,则更新本地哈希表索引,指向该数据块的全局索引id。本发明使用重复数据搜索方法进行搜索,具体步骤如下:步骤1,当对一个数据块执行快照操作时,首先使用sha128算法计算该数据块的128位的哈希值,其中前20位作为哈希桶的索引,而剩余的108位用于定位该哈希桶内二叉树节点。步骤2,当该数据块的哈希值的前20位作为索引的哈希桶不存在时,则建立该哈希桶,同时新建该哈希桶内的二叉树,并根据后108位将该数据块插入该二叉树。当该数据块的哈希值的前20位作为索引的哈希桶存在时,搜索该哈希桶内的二叉树,如果存在二叉树节点,则范围该节点索引;如果不存在二叉树节点,则根据后108位将该数据块插入该二叉树。步骤3,考虑到哈希碰撞的概率极低,本策略在绝大部分情况下是安全的。当出现哈希碰撞时,本策略将虚拟机回滚到上一个快照点,从而确保数据和状态的一致性。本发明通过在线去冗余可有效降低快照的磁盘存储开销和网络传输开销。本发明支持在多个虚拟机快照过程中在线进行去冗余操作,无需停止虚拟机的运行;本发明通过对多虚拟机快照局部保存、全局比较的处理,确保多个虚拟机间相同的快照数据仅被存储一次,有效降低了存储消耗;同时仅在网络中传输快照数据的指纹值,而无需传输快照数据本身,有效降低了网络带宽消耗;此外,本发明对虚拟机和应用程序具有透明性,无需在虚拟机中安装代理程序,可支持不同类型的虚拟机操作系统。与其它虚拟机数据去冗余方法相比,本发明具有不影响虚拟机运行、最优快照效用比和降低网络带宽消耗的优势,有助于降低云环境中虚拟机快照的磁盘存储消耗和网络带宽消耗,从而提升云环境的整体资源利用率。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1