一种基于区块链的虚拟机迁移行为的自我感知方法及系统与流程

文档序号:20009114发布日期:2020-02-22 03:53阅读:138来源:国知局
一种基于区块链的虚拟机迁移行为的自我感知方法及系统与流程

本发明涉及云平台和云用户的信任领域,具体为一种云平台中虚拟机迁移行为的自我感知方法和系统。



背景技术:

云计算技术近十年来的飞速发展,逐渐形成了十分完善的商业模式。最常见的商业模式便是云服务提供商给云用户提供云服务,云用户享用服务的同时支付相应报酬。如今,大部分云服务提供商都会提供一种虚拟机的租用服务,云服务提供商在提供这种服务的过程中,为了节能、保证数据中心的负载均衡或者防止侧信道攻击,经常会主动迁移用户的虚拟机。对于云服务提供商而言,虚拟机迁移既可以对抗侧信道攻击也可以节省电力成本;而对于用户而言,虚拟机迁移则会造成部署在虚拟机上的服务中断或者虚拟机性能降低等问题。在用户对虚拟机磁盘、cpu和网络资源要求非常严格的场景下,用户并不希望自己的虚拟机被迁移。为了让用户感知自己的虚拟机是否发生了迁移,本文提出了一种基于区块链的虚拟机迁移行为的自我感知方法,并且设计了一套自动化系统。在该系统的帮助下,云服务提供商无法篡改感知结果,同时用户也可以随时验证自己的虚拟机是否发生迁移。

虚拟机迁移

众所周知,云中的每一台虚拟机都运行在某个计算节点上。虚拟机迁移,顾名思义,就是将目标虚拟机在不同的计算节点之间转移。对于云服务提供商而言,虚拟机迁移是一种功能强大的工具,因为虚拟机不需要与物理机一起绑定在云环境中,所以给云计算引入了更大的灵活性。由于虚拟机在宿主机器上是以镜像文件的形式存在的,因此可以通过网络传输的方式,轻而易举的将虚拟机的镜像文件从源宿主机拷贝到目标宿主机上。虚拟机迁移分为冷迁移和热迁移两大类:冷迁移,迁移虚拟机之前必须要关闭虚拟机,然后在目标机器上进行传输和重新启动,所以这自然会导致大量停机时间;热迁移,虚拟机在迁移过程中虚拟机一直在运行,这样使停机时间尽可能小。

用户虚拟机想要感知自己是否发生迁移,通常情况下的唯一办法是访问云服务提供商的数据库,但是本文出发点是用户不信任云服务提供商,所以不能通过询问云服务提供商或者对宿主机数据库发起攻击来判断虚拟机是否发生迁移,需要探索新的方法来检测虚拟机迁移行为。本发明所提出的方法和设计的系统能够成功感知用户虚拟机的冷迁移或热迁移。

区块链技术

在本发明中,自我感知的最终结果将是一份虚拟机的完整监控数据。如果仅仅是简单的将该监控数据作为一份文件保存在用户虚拟机中,云平台的超级管理员可以轻而易举的以root账号访问任意一台虚拟机,所以理论上他可以毫无阻拦的修改甚至删除该份文件数据。本发明的初衷是用户并不信任云服务提供商,所以监控数据不能存储在云服务提供商的文件系统上。

在2017年,以太坊首先将智能合约应用于区块链网络中,并发明了一种专门编写智能合约的语言solidity。众所周知,区块链是一个价值传输网络,智能合约程序则是部署在区块链上的自动化程序,它接受有价值的信息并向外发送有价值的信息。智能合约会严格执行事先写在合约上的逻辑,所以让它看起来就像一个永远不会背叛的第三方,也像一个永远公正的法庭。本发明希望能将虚拟机的监控数据存放在一个不受云服务提供商控制的位置,所以引入了区块链中的智能合约技术,用智能合约来记录虚拟机的监控数据。

但是,当虚拟机监控数据日益增长,监控文件越来越大,如果所有用户将监控数据上传到智能合约中,那么将会造成如下后果:用户消耗大量时间去同步节点,同步过程消耗大量的网络流量,同步完成后用户的磁盘资源被大量占用。所以,为了构建更加高效可持续发展的区块链网络,各个区块链网络都只把更有价值的简短信息记录在区块链中,区块链不允许把图片、视频等大型文件上传到区块链网络。



技术实现要素:

在现有的云计算的商业模式下,用户在租用云服务提供商的虚拟机之后,对自己的虚拟机拥有知情权,本发明的目的是当云服务提供商迁移用户虚拟机时,用户能够实现迁移行为的自我感知(不询问云服务提供商),并且能够查看迁移发生的时间和虚拟机迁移类型。

为了实现大型监控文件的不可篡改和可信验证,本发明用开源项目ipfs(interplanetaryfilesystem,星际文件系统)作为文件存储系统。所有上传到ipfs网络中的文件都会被永久的去中心化保存。对于网络中的每一份文件,只要有文件的完整无误的哈希值,就能够下载并查看此文件。本发明利用区块链智能合约的不可篡改的特性和ipfs存储文件大小无限制的特性,将虚拟机监控文件存储在ipfs中,并将文件哈希值存储在智能合约中。

本发明的技术方案为:

一种基于区块链的虚拟机迁移行为的自我感知方法,其步骤包括:

1)在用户虚拟机a上运行虚拟机监控程序a,该虚拟机监控程序a用于监控所在用户虚拟机a的迁移特征;

2)该虚拟机监控程序a将监控数据上传至区块链中;其中,区块链中的智能合约用来存储结构化的监控数据,区块链中的文件存储系统用来存储监控文件;

3)根据虚拟机监控程序a上传的监控数据判断虚拟机a是否发生迁移。

进一步的,所述迁移特征包括虚拟机所在物理机的磁盘读写速度、虚拟机所在物理机的内存读写速度、虚拟机所在物理机的cpu版本信息和虚拟机的操作系统中断。

进一步的,触发所述操作系统中断的触发中断源包括:edge触发方式的io计时器,轮询机器检查,virtio配置和virtio消息队列。

进一步的,根据虚拟机监控程序a上传的监控数据判断虚拟机a是否发生迁移的方法为:

31)数据上链模块从区块链中获取虚拟机监控程序a上传的监控数据;

32)迁移检测模块检查所述监控数据中是否存在断点,如果存在断点则记录下断点产生时间;

33)迁移检测模块检查cpu版本信息是否发生改变,如果改变则进行步骤35);如果未发生改变,则进行步骤34);

34)迁移检测模块检查虚拟机的中断是否符合迁移特征,如果符合,则进行步骤35);如果不符合,则判定未发生迁移;

35)迁移检测模块检查虚拟机的内存磁盘读写速度在迁移期间是否变化,如果降低超过设定阈值,则判定发生了非共享存储的热迁移,如果未降低,则判定为共享存储热迁移;

36)迁移检测模块将检测结果推送给数据上链模块并记录在区块链中。

进一步的,所述结构化的监控数据包括监控文件的文件名、哈希值和上传时间;所述文件存储系统为星际文件系统。

一种基于区块链的虚拟机迁移行为的自我感知系统,其特征在于,包括虚拟机监控模块,数据上链模块,虚拟机迁移检测模块和用户可信验证模块;其中,

虚拟机监控模块,负责监控虚拟机的迁移特征并将监控数据发送给数据上链模块;

数据上链模块,用于将接收到的监控数据存储在区块链的智能合约和文件存储系统中;

迁移检测模块,用于读取区块链中的虚拟机监控数据并检测虚拟机是否发生过迁移,并将检测结果存储在区块链的智能合约中;

用户可信验证模块,负责与用户交互并实现用户对虚拟机迁移行为的可信验证。

本发明的虚拟机监控程序运行在用户虚拟机上,当用户下载并运行此虚拟机监控程序,监控用户虚拟机获取虚拟机迁移特征。该虚拟机监控程序将会监控如下四种迁移特征:磁盘读写速度,内存读写速度,cpu版本信息和操作系统中断。

(1)虚拟机所在物理机的磁盘读写速度:在虚拟机非共享存储热迁移过程中,当云主机发起迁移请求之后,云平台会频繁操作虚拟机宿主机的磁盘,所以虚拟机的磁盘读写速度将会明显降低;

(2)虚拟机所在物理机的内存读写速度:虚拟机热迁移过程中,先拷贝磁盘镜像,再拷贝内存脏页,拷贝内存脏页将会直接导致用户虚拟机的内存读写速度降低;

(3)虚拟机所在物理机的cpu版本信息:当用户虚拟机发生迁移时,源宿主机和目的宿主机的cpu版本发生改变,也可以被用户虚拟机感知;

(4)虚拟机的操作系统中断:当云平台发起迁移请求之后时,宿主机会和用户虚拟机通信,宿主机会向虚拟机的虚拟cpu(vcpu)注入中断,而这些中断则会记录在用户虚拟机的操作系统中,本发明首先提取了虚拟机迁移时的独有的四种中断特征(中断特征为触发中断的次数,触发中断源由以下四种组成):edge触发方式的io计时器(io-api-edgetimer),轮询机器检查(machinecheckpoll),virtio配置(virtio-config)和virtio消息队列(virtio-virrtqueue),然后通过此中断特征去检测用户虚拟机是否发生迁移。如表1所示的四种中断特征,在虚拟机发生热迁移时,io-api-edgetimer,machinecheckpoll,virtio-config和virtio-virrtqueue四种中断在迁移前后都会增加固定数量。

表1为中断特征增长数值

然后,将监控数据上传至区块链中。为了防止云服务提供商篡改数据,所有数据上链都是自动完成。其中,监控数据分为结构化数据(文件名,哈希值,文件上传时间等)和监控文件,结构化的监控数据存储在智能合约中,大型监控文件存储在ipfs中。

最后,通过对监控数据的分析判断虚拟机是否发生迁移,分析方法见后续的“虚拟机迁移检测”。将上述监控的四种虚拟机迁移特征作为依据,本发明能够检测的迁移类型为:冷迁移,共享存储的热迁移和非共享存储的热迁移。

本发明的有益效果:

基于上述的虚拟机监控,数据上链和迁移检测方案,本发明公开了一种基于区块链的虚拟机迁移行为的自我感知方法和系统。

本发明通过对虚拟机的资源监控,总结了虚拟机操作系统中断,内存和磁盘读写速度和cpu版本信息在迁移过程中呈现的规律。验证阶段,本文对三种操作系统做了443次迁移实验,三种迁移的平均准确率为96.4%,实验表明监控特征在迁移过程中的变化并不是偶然现象,完全可以根据监控特征来检测虚拟机的迁移行为。

测试阶段,测试阶段,本文总共随机做了90次迁移,最终成功检测出了83次迁移,检测成功率达到92.2%,所以,本文提出的方案能够成功让用户检测虚拟机的迁移行为。不仅如此,本文也将具有很强的实用价值,只要您在任何一家云服务提供商租用了操作系统为ubuntu,centos或rhel的虚拟机,当您不希望云服务提供商迁移您的虚拟机时,本文都可以帮助您检测虚拟机是否被迁移。

附图说明

图1为将数据上传至区块链流程图。

图2为检测用户虚拟机是否发生迁移的流程图。

具体实施方式

本系统分为三层:用户层,云平台层和区块链层。用户在云平台上租用虚拟机,然后将本系统运行在自己的虚拟机中,检测自己的虚拟机是否发生迁移的同时会启动一个区块链全节点来存储数据。该区块链节点连接外部的区块链网络,共同构成一个可信存储环境,云服务提供商无法篡改已经上链的数据。

在云平台中的虚拟机中运行的系统程序包含四个模块:虚拟机监控模块,数据上链模块,虚拟机迁移检测模块,用户可信验证模块。四个模块中,虚拟机监控模块负责监控虚拟机的迁移特征并将数据发送给数据上链模块,数据上链模块将接收到的数据自动化存储在智能合约和ipfs中,迁移检测模块将读取区块链中的虚拟机监控数据并检测虚拟机是否发生过迁移,也将结果存储在区块链的智能合约中,用户可信验证模块负责与用户交互并实现用户对虚拟机迁移行为的查看与检测(可信验证),智能合约和ipfs是运行在用户虚拟机的区块链节点,所有的数据将会不经过文件系统直接上传到区块链中。

数据上链

数据上链流程如图1所示。当数据上链的js接口接收到其他模块发起的upload请求之后,首先会将文件内容转换成buffer类型,然后将文件buffer作为参数,调用js-ipfs-api的add接口将文件的buffer上传到本地或者远程的ipfs节点,ipfs节点则会将生成的文件的哈希值返回给js接口。然后,后端js代码将文件哈希值,发送者地址和当前时间一起拼接成一个字符串或者json(智能合约中不能存储二维数组,所以必须拼接成一个string类型),最后再向qtum区块链节点发送sendto请求,将数据记录在智能合约中,当交易确认之后,刷新浏览器页面即可在浏览器中查看此记录。

虚拟机迁移检测

判断用户虚拟机是否发生迁移的流程图如图2所示,具体步骤如下:

步骤1,从数据上链模块的get接口从区块链中获取某段时间的虚拟机监控数据;

步骤2,解析监控数据,检查虚拟机的监控数据中是否存在断点,如果存在断点则说明发生过宕机或者冷迁移,记录下断点产生时间;

步骤3检查cpu版本信息是否发生改变,如果改变则说明该虚拟机肯定发生热迁移,直接跳到步骤5判断虚拟机发生的热迁移类型,如果未发生改变,则继续步骤4;

步骤4检查虚拟机的中断是否符合迁移特征(见表1),如果符合,则继续进行步骤5;如果不符合,则说明未发生迁移,检测结束;

步骤5,检查虚拟机的内存磁盘读写速度是否在迁移期间降低超过10%(可根据真实运行环境调节阈值),如果超过10%,则说明发生了非共享存储的热迁移,如果未超过,则是共享存储热迁移;

步骤6,最终将检测结果推送给数据上链模块并记录在区块链中。

虚拟机监控

虚拟机监控模块主要分为四个子模块,监控主程序,内存和磁盘读写速度监控程序,监控操作系统中断程序和监控cpu版本程序。在启动虚拟机监控主程序之后,在主进程中开启了三个线程,分别监控三种类型的虚拟机特征。

在监控虚拟机内存磁盘特征时,本发明选用linux操作系统的time命令和dd命令。time命令用于量测特定指令执行时所需消耗的时间及系统资源等资讯;dd命令从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。通过time和dd命令的组合来测量虚拟机的内存磁盘读写速度。

在监控虚拟机的操作系统中断和cpu版本信息时,本文都可以通过cat命令实现,在linux文件系统中,/proc/interrupts和/proc/cpuinfo分别记录着操作系统中的中断信息和操作系统信息。

主程序在监控数据获取完成之后,通过rpc调用将监控数据推送给数据上链模块的node.js接口,最终由数据上链模块上传到区块链中。

实施例

用户在云平台a租用了虚拟机b,虚拟机b部署在宿主机c上。经过一段时间运行,宿主c上的虚拟机都是cpu占用型机器导致宿主机的cpu资源紧张,于是云平台a将虚拟机b迁移到cpu较为空闲的宿主机d上。但是此次迁移并没有通知用户,虚拟机b在迁移过程中的短暂停机,直接导致用户部署在b上的服务产生中断。

为了保证用户对虚拟机的知情权,用户可以部署本系统。通过本系统的监控和检测,用户选择想要检测的时间段,系统会将监控数据和检测结果展示一起给用户,检测结果中包含虚拟机迁移的总次数,迁移时间和迁移类型。

尽管前面公开的内容示出了本发明的示例性实施例,但应注意,在不背离权利要求限定的本发明的范围的前提下,可以进行多种改变和修改。根据这里描述的发明实施例的结构,权利要求的组成元件可以用任何功能等效的元件替代。因此,本发明的保护范围应当由所附的权利要求书的内容确定。

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