本发明涉及虚拟化技术领域,特别涉及一种适用于设备侧的虚拟化方法。
背景技术:
随着我国计算机技术的飞速发展,企业级的部门业务系统建设需求将不断增多,传统的it基础架构模式,应用系统专有服务器的数量也将不断增加。另外,采购新的服务器和部署业务系统经常导致业务部署流程环节多、上线周期较长,难以满足快速应对业务应用的需要。根据对全国it系统相关服务器使用情况进行调研分析,发现大多数应用系统采用每一个应用系统配备专属服务器的模式,大部分服务器资源利用率十分低下,资源闲置严重。而服务器、配件、软件的不断购买,机房扩建,制冷系统改造,电费持续升高,it运维管理成本不断增长,对提倡绿色环保、低碳经济、运维管理成本控制是一个巨大的挑战。
因此,发展虚拟计算、虚拟存储、虚拟网络技术,对这些虚拟资源进行集中的调度和管理具有重大的现实意义。
技术实现要素:
本公开实施例提供了一种适用于设备侧的虚拟化方法。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
在一些可选地实施例中,一种适用于设备侧的虚拟化方法,包括:
根据qemu网络和容器化机制,形成适用于设备侧的虚拟化架构;
根据适用于设备侧的虚拟化架构,实现适用于设备侧的虚拟化方法;
验证适用于设备侧的虚拟化方法的可靠性和安全性。
进一步地,虚拟化架构,包括:
hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块。
进一步地,根据适用于设备侧的虚拟化架构,实现适用于设备侧的虚拟化方法,包括:
确定虚拟化架构中的hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块,从而实现适用于设备侧的虚拟化方法。
进一步地,确定虚拟化架构中的tcg模块,包括:
分析tcg模块运行时的状态,获取针对不同指令集的优化方案;
构造简单翻译状态机;
编写用于内存访问和跳转的c语言程序。
进一步地,分析tcg模块运行时的状态,获取针对不同指令集的优化方案,包括:
分析tcg模块运行时的状态,确定tcg模块运行时的安全性;
计算不同指令集的复杂度,将复杂度最低的方案作为优化方案。
进一步地,根据qemu网络和容器化机制,形成适用于设备侧的虚拟化架构之前,还包括:
确定基于qemu的虚拟化模式;
确定linux操作系统。
进一步地,确定基于qemu的虚拟化模式,包括:
确定基于qemu的计算虚拟化所采用的虚拟化模式;
确定基于qemu的存储虚拟化所采用的虚拟化模式;
确定基于qemu的网络虚拟化所采用的虚拟化模式。
进一步地,验证适用于设备侧的虚拟化方法的可靠性和安全性,包括:
验证适用于设备侧的虚拟化方法的存储可靠性;
验证适用于设备侧的虚拟化方法的网络可靠性;
验证适用于设备侧的虚拟化方法的虚拟化主机的可靠性;
验证适用于设备侧的虚拟化方法的管理可靠性;
验证适用于设备侧的虚拟化方法的虚拟化安全性。
本公开实施例还提供了一种适用于设备侧的虚拟化系统,包括:
虚拟化架构确定模块,用于根据qemu网络和容器化机制,形成适用于设备侧的虚拟化架构;
虚拟化方法实现模块,用于根据适用于设备侧的虚拟化架构,实现适用于设备侧的虚拟化方法;
验证模块,用于验证适用于设备侧的虚拟化方法的可靠性和安全性。
进一步地,虚拟化架构,包括:
hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块。
进一步地,虚拟化架构确定模块,包括:
虚拟化架构确定单元,用于确定虚拟化架构中的hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块,从而实现适用于设备侧的虚拟化方法。
进一步地,用于确定虚拟化架构中的tcg模块,包括:
用于分析tcg模块运行时的状态,获取针对不同指令集的优化方案;
用于构造简单翻译状态机;
用于编写用于内存访问和跳转的c语言程序。
进一步地,用于分析tcg模块运行时的状态,获取针对不同指令集的优化方案,包括:
用于分析tcg模块运行时的状态,确定tcg模块运行时的安全性;
用于计算不同指令集的复杂度,将复杂度最低的方案作为优化方案。
进一步地,还包括:
qemu网络确定模块,用于确定基于qemu的虚拟化模式,用于确定linux操作系统。
进一步地,用于确定基于qemu的虚拟化模式,包括:
用于确定基于qemu的计算虚拟化所采用的虚拟化模式;
用于确定基于qemu的存储虚拟化所采用的虚拟化模式;
用于确定基于qemu的网络虚拟化所采用的虚拟化模式。
进一步地,验证模块,包括:
存储可靠性验证单元,用于验证适用于设备侧的虚拟化方法的存储可靠性;
网络可靠性验证单元,用于验证适用于设备侧的虚拟化方法的网络可靠性;
虚拟化主机的可靠性验证单元,用于验证适用于设备侧的虚拟化方法的虚拟化主机的可靠性;
管理可靠性验证单元,用于验证适用于设备侧的虚拟化方法的管理可靠性;
虚拟化安全性验证单元,用于验证适用于设备侧的虚拟化方法的虚拟化安全性。
本公开实施例提供的技术方案可以包括以下有益效果:
本发明提供了一种适用于设备侧的虚拟化方法,通过根据qemu网络和容器化机制,形成适用于设备侧的虚拟化架构;根据适用于设备侧的虚拟化架构,实现适用于设备侧的虚拟化方法;验证适用于设备侧的虚拟化方法的可靠性和安全性。通过上述适用于设备侧的虚拟化方法,不仅可以完成计算资源、存储资源、网络资源的虚拟化,而且通过统一的接口,可以对这些虚拟资源进行集中调度和管理,从而降低业务的运行成本,保证系统的安全性和可靠性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种适用于设备侧的虚拟化方法的流程示意图;
图2是根据一示例性实施例示出的一种适用于设备侧的虚拟化方法的结构示意图;
图3是根据一示例性实施例示出的一种适用于设备侧虚拟化架构的示意图;
图4是根据一示例性实施例示出的一种tcg模块的工作原理的示意图;
图5是根据一示例性实施例示出的一种适用于设备侧的虚拟化平台整体架构框图。
图6是根据一示例性实施例提出的一种适用于设备侧的虚拟化系统的结构图。
具体实施方式
为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或一个以上实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
实施例一;
本公开实施例提供了一种适用于设备侧的虚拟化方法,图1是根据一示例性实施例示出的一种适用于设备侧的虚拟化方法的流程示意图。
如图1所示,一种适用于设备侧的虚拟化方法,包括:
步骤s101、根据qemu网络和容器化机制,形成适用于设备侧的虚拟化架构;
其中,qemu(quickemulator,虚拟操作系统模拟器)可以用来模拟操作系统,在本公开实施例中,利用qemu虚拟操作系统进行设备侧轻量级虚拟化方案的设计。
在执行步骤s101之前,还包括,确定面向设备侧平台的qemu网络。
其中,确定面向设备侧平台的qemu网络包括确定基于qemu的虚拟化模式,以及确定linux操作系统。
具体地,确定基于qemu的虚拟化模式包括,确定基于qemu的计算虚拟化所采用的虚拟化模式、确定基于qemu的存储虚拟化所采用的虚拟化模式、确定基于qemu的网络虚拟化所采用的虚拟化模式。在使用基于内核的虚拟机执行x86处理器硬件虚拟化时,以几乎比拟硬件本机的速度执行运算任务,其次,通过机器代码的实时转换来模拟其他处理器以用于虚拟机运行不同平台的操作系统。
具体地,根据确定的linux操作系统的功能模块,打开并初始化vmx功能,提供相应的接口以支持虚拟机的运行,即可调用对应功能模块并运行虚拟机,例如,调用linux本身内核功能,实现对cpu的底层虚拟化和内存的虚拟化,使linux内核成为虚拟化层,最后,设计管理虚拟硬件设备的驱动,主要负责vcpu的创建、虚拟内存的分配、vcpu寄存器的读写以及vcpu的运行。
将qemu网络和管理调度技术与容器化机制相结合,形成适用于容器的轻量级虚拟化架构。
其中,容器化机制让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到确定的linux操作系统上,实现虚拟化,在本公开实施例中,将linux操作系统与容器化机制相结合,在管理调度技术的调度下,实现适用于容器的轻量级虚拟化架构。
图3是根据一示例性实施例示出的一种适用于设备侧的虚拟化架构的示意图。
如图3所示,适用于设备侧轻量级虚拟化架构包括hypervisor模块、tcg模块、mmu模块、磁盘子系统模块、设备子系统模块、硬件设备模块、二进制翻译缓存模块。
其中,hypervisor模块从磁盘映像加载二进制机器代码,使用tcg模块将其转换为本机机器代码,连接到虚拟或实际设备,并启动mmu模块,从而可在磁盘映像中模拟操作系统。
tcg模块可以将源处理器机器代码转换为虚拟机运行所需的机器代码块,对不同的处理器指令集架构进行翻译和转换,将已经翻译的代码块放在转换缓存中,并通过跳转指令将源处理器的指令集和目标处理器的指令集链接在一起,对不同的处理器指令集架构进行翻译和转换是实现虚拟化通用性的技术途径和解决方案。
若源处理器机器代码与虚拟机运行所需的机器代码块为相同的指令集架构编译的机器代码,则直接将代码块放在转换缓存中,并通过跳转指令将源处理器的指令集链接在一起,在不同的已翻译代码块上运行。
若源处理器机器代码与虚拟机运行所需的机器代码块为不同的指令集架构编译的机器代码,从物理硬件的架构和角度上来说,不可能在一个处理器上运行为另一个处理器的指令集架构编译的机器代码,例如,在x86处理器上执行arm机器代码。因此,引入中间环节对不同的处理器指令集架构进行翻译和转换是实现虚拟化通用性的技术途径和解决方案。在tcg中,这些已经翻译的代码块放在转换缓存中,并通过跳转指令将源处理器的指令集和目标处理器的指令集链接在一起。
例如,当hypervisor模块在执行代码时,按照图3所示的示例的组件关系,存放于转换缓存中的链接指令可以跳转到指定的代码块,并且执行可以在不同的已翻译代码块上运行,直到需要翻译新的代码块为止。在执行的过程中,如果遇到了需要翻译的代码块,执行动作就会暂停并跳回到hypervisor模块,hypervisor模块就会使用和协调tcg模块对需要进行二进制翻译的源处理器指令集进行转换和翻译并存储到转换缓存中。
mmu模块处理内存访问,磁盘子系统处理不同的磁盘映像格式,设备子系统处理网卡和其他硬件设备等,二进制翻译缓存模块缓存翻译的代码。
硬件设备包括:连接主机中的实际物理设备和通过qemu虚拟操作系统中的硬件设备。例如,通过直接连接主机中的实际物理设备或通过qemu虚拟操作系统中的硬件设备仿真来实现虚拟机的硬件设备。设计如下两种使用硬件设备的方式处理虚拟机和硬件设备之间的输入/输出,一是使用主机实际物理设备和qemu的设备,驱动仿真实现的模拟虚拟设备的直通模式;二是使用连接到linux内核中的“virtio”半虚拟化驱动程序,利用linux内核处理虚拟机和硬件设备之间的输入/输出。
可选地,在本公开实施例中,在原有的用户模式和内核模式中,新增加了客户模式。
通过上述方法,将linux操作系统与容器化机制相结合,在管理调度技术的调度下,实现适用于设备侧的虚拟化架构。
步骤s102、根据适用于设备侧的虚拟化架构,实现适用于设备侧的虚拟化方法;
其中,虚拟化架构包括hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块,确定虚拟化架构中的hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块,从而实现适用于设备侧的虚拟化方法。
其中,hypervisor模块从磁盘映像加载二进制机器代码,使用tcg模块将其转换为本机机器代码,连接到虚拟或实际设备,并启动mmu模块,从而可在磁盘映像中模拟操作系统,mmu模块处理内存访问,磁盘子系统处理不同的磁盘映像格式,设备子系统处理网卡和其他硬件设备等,二进制翻译缓存模块缓存翻译的代码。
其中,tcg模块可以将源处理器机器代码转换为虚拟机运行所需的机器代码块,对不同的处理器指令集架构进行翻译和转换,将已经翻译的代码块放在转换缓存中,并通过跳转指令将源处理器的指令集和目标处理器的指令集链接在一起,对不同的处理器指令集架构进行翻译和转换是实现虚拟化通用性的技术途径和解决方案。
通常,实现上述tcg模块,包括:
分析tcg模块运行时的状态,获取针对不同指令集的优化方案;
具体地,分析tcg模块运行时的状态,确定tcg模块运行的安全性,tcg模块在运行的过程中存在一个小缺点,即它无法正确运行自修改代码,因为它没有将修改后的代码页进行标记,再次运行时需要重新翻译。自修改代码在软件世界中容易被漏洞利用,特别是缓冲区易出现攻击等内存损坏的漏洞,这些漏洞利用威胁代理提供的特殊代码覆盖易受攻击的应用程序代码,如果已经被覆盖的代码已经被运行,除了正常运行的会导致漏洞攻击利用外,更多的时候则会导致tcg模块运行和翻译失败,从而导致程序出现异常或崩溃。
tcg模块没有将修改后的代码页进行标记,再次运行时需要重新翻译,虽然这影响了qemu虚拟操作系统的二进制运行效率,但是从另外一个角度来说,这也增加了一定的安全性。
确定tcg模块在安全状态下运行后,计算不同指令集的复杂度,将复杂度最低的方案作为优化方案。
通常,通过软件度量来评估一个软件的质量情况,而软件复杂度是软件度量的重要组成部分,它是评估软件产品质量的重要指标,软件的规模越大,其复杂程度也随之增加,产生错误和违背设计原则的可能性也越大。通过计算各方案对应的重构复杂度,以通过该重构复杂度确定最优方案。
qemu虚拟系统所支持的大部分处理器都拥有部分相同的指令集。例如“mov”指令几乎存在于所有处理器中,并且可以简单地复制,除非cpu寄存器中存在一些位大小差异,例如,在32位处理器上模拟64位处理器可能需要许多额外的指令,这也需要更多时间在tcg转换器中进行编程。
在本公开实施例中,将组成各重复合组件的子复合组件和/或各原子组件均称为相应复合组件的组成成员,在计算tcg模块重复合组件的重构复杂度时,将hypervisor重复合组件的重构复杂度,作为整个工作原理图的复杂度。
构造翻译状态机;
在qemu虚拟系统的源代码中,有一个名为“tcg”的子目录,该子目录为用c语言编写的翻译状态机,用于将机器指令转换为相应的x86机器指令。
编写用于内存访问和跳转的c语言程序。
利用c语言编写用于内存访问和跳转的程序,通过该程序调用软件内存管理单元。
图4是根据一示例性实施例示出的一种tcg模块的工作原理的示意图;
如图4所示,非本地源机器码通过tcg模块转换为虚拟机运行所需的机器代码,并在二进制翻译缓存模块中缓存,hypervisor模块从二进制翻译缓存模块中加载缓存的虚拟机运行所需的二进制机器代码。
具体地,将虚拟化封装与迁移技术结合,可以实现虚拟机与底层物理设备的解耦,使得多个物理设备可以组成虚拟机集群平台,构成虚拟机资源池,实现资源池化技术,实现底层物理资源对上层用户和应用透明。
具体地,通过linux操作系统中的namespaces模块实现进程组的文件系统、网络等资源的逻辑隔离,通过linux操作系统中的controlgroups模块实现容器宿主系统中cpu、内存、磁盘i/o和网络带宽的资源划分,从而实现上层任务进程的容器化管理。同时,根据容器中服务的发现、资源管理、监视和部署,实现容器在服务器物理机与虚拟机之间弹性伸缩与迁移,从而为端边云协同动态负载均衡与高效任务调度提供基础能力支撑。
根据上述适用于设备侧的轻量级虚拟化技术、资源池化技术与容器化技术,实现适用于设备侧的轻量级虚拟化方法。
图2是根据一示例性实施例示出的一种适用于设备侧的虚拟化方法的结构示意图。
如图2所示,根据虚拟化技术、资源池化技术和容器化技术,实现适用于设备侧的虚拟化方法,其中,虚拟化技术包括计算虚拟化、存储虚拟化、网络虚拟化,资源池化技术包括计算资源池化、存储资源池化、网络资源池化,容器技术包括容器化封装技术、资源隔离技术、容器编排技术。
步骤s103、验证适用于设备侧的虚拟化方法的可靠性和安全性。
根据实现的适用于设备侧的虚拟化方法,构建虚拟化平台,进行可靠性和安全性验证。
图5是根据一示例性实施例提供的一种适用于设备侧的虚拟化平台整体架构框图。
如图5所示,虚拟化平台整体架构框图包括虚拟化平台、处理器、内存、存储、网络、应用程序、操作系统、虚拟机。
具体地,验证适用于设备侧的虚拟化方法的可靠性和安全性,包括:验证适用于设备侧的虚拟化方法的存储可靠性;验证适用于设备侧的虚拟化方法的网络可靠性;验证适用于设备侧的虚拟化方法的虚拟化主机的可靠性;验证适用于设备侧的虚拟化方法的管理可靠性;验证适用于设备侧的虚拟化方法的虚拟化安全性。
其中,验证适用于设备侧的虚拟化方法的存储可靠性,包括:
在本实施例中,每个计算节点与存储集群之间,至少配置两个完全冗余的路径,从而提供存储的多路径访问功能。多条路径间的故障切换由软件自动提供,从而避免单点故障带来的存储访问问题。
其中,验证适用于设备侧的虚拟化方法的网络可靠性,包括:
在本实施例中,虚拟网络层通过采用多网卡绑定等技术避免单个网卡故障引发的业务中断。
其中,验证适用于设备侧的虚拟化方法的虚拟化主机的可靠性,包括:
在本实施例中,提供虚拟机的自动迁移和手动迁移方案,当前计算节点出现故障或者计算节点负载过高时,可以把虚拟机迁移到正常的计算节点或者负载相对较低的计算节点上,保证虚拟机的正常运行。系统提供虚拟机、卷快照功能,系统正常状态下,可以触发一个系统快照,用于在系统出现故障的时候还原系统。
其中,验证适用于设备侧的虚拟化方法的管理可靠性,包括:
在本实施例中,通过采用计算集群和存储集群相分离的架构,提升系统的可靠性。计算集群完成虚拟机的按需分配以及集群内的热迁移,存储集群完成虚拟机的系统卷和用户卷的按需分配以及跨磁盘的存放。
其中,验证适用于设备侧的虚拟化方法的虚拟化安全性,包括:
云计算运维管理系统支持操作管理员账户周期管理,提供一个缺省的超级管理员账户,使用该账户可创建其他账户并授予相应的权限。
通过上述方法,采用虚拟计算、虚拟存储、虚拟网络等技术,不仅可以完成计算资源、存储资源、网络资源的虚拟化,而且通过统一的接口,可以对这些虚拟资源进行集中调度和管理,从而降低业务的运行成本,保证系统的安全性和可靠性。
进一步地,虚拟化架构,包括:
hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块。
图3是根据一示例性实施例示出的一种适用于设备侧的虚拟化架构的示意图。
如图3所示,适用于设备侧轻量级虚拟化架构包括hypervisor模块、tcg模块、mmu模块、磁盘子系统模块、设备子系统模块、硬件设备模块、二进制翻译缓存模块。
其中,hypervisor模块从磁盘映像加载二进制机器代码,使用tcg模块将其转换为本机机器代码,连接到虚拟或实际设备,并启动mmu模块,从而可在磁盘映像中模拟操作系统,mmu模块处理内存访问,磁盘子系统处理不同的磁盘映像格式,设备子系统处理网卡和其他硬件设备等,二进制翻译缓存模块缓存翻译的代码。
进一步地,根据适用于设备侧的虚拟化架构,实现适用于设备侧的虚拟化方法,包括:
确定虚拟化架构中的hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块,从而实现适用于设备侧的虚拟化方法。
其中,虚拟化架构包括hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块,确定虚拟化架构中的hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块,从而实现适用于设备侧的虚拟化方法。
其中,hypervisor模块从磁盘映像加载二进制机器代码,使用tcg模块将其转换为本机机器代码,连接到虚拟或实际设备,并启动mmu模块,从而可在磁盘映像中模拟操作系统,mmu模块处理内存访问,磁盘子系统处理不同的磁盘映像格式,设备子系统处理网卡和其他硬件设备等,二进制翻译缓存模块缓存翻译的代码。
其中,tcg模块可以将源处理器机器代码转换为虚拟机运行所需的机器代码块,对不同的处理器指令集架构进行翻译和转换,将已经翻译的代码块放在转换缓存中,并通过跳转指令将源处理器的指令集和目标处理器的指令集链接在一起,对不同的处理器指令集架构进行翻译和转换是实现虚拟化通用性的技术途径和解决方案。
具体地,将虚拟化封装与迁移技术结合,可以实现虚拟机与底层物理设备的解耦,使得多个物理设备可以组成虚拟机集群平台,构成虚拟机资源池,实现资源池化技术,实现底层物理资源对上层用户和应用透明。
具体地,通过linux操作系统中的namespaces模块实现进程组的文件系统、网络等资源的逻辑隔离,通过linux操作系统中的controlgroups模块实现容器宿主系统中cpu、内存、磁盘i/o和网络带宽的资源划分,从而实现上层任务进程的容器化管理。同时,根据容器中服务的发现、资源管理、监视和部署,实现容器在服务器物理机与虚拟机之间弹性伸缩与迁移,从而为端边云协同动态负载均衡与高效任务调度提供基础能力支撑。
根据上述适用于设备侧的轻量级虚拟化技术、资源池化技术与容器化技术,实现适用于设备侧的轻量级虚拟化方法。
进一步地,确定虚拟化架构中的tcg模块,包括:
分析tcg模块运行时的状态,获取针对不同指令集的优化方案;
构造简单翻译状态机;
编写用于内存访问和跳转的c语言程序。
通常,实现上述tcg模块,包括:
分析tcg模块运行时的状态,获取针对不同指令集的优化方案;
具体地,分析tcg模块运行时的状态,确定tcg模块运行的安全性,tcg模块在运行的过程中存在一个小缺点,即它无法正确运行自修改代码,因为它没有将修改后的代码页进行标记,再次运行时需要重新翻译。自修改代码在软件世界中容易被漏洞利用,特别是缓冲区易出现攻击等内存损坏的漏洞,这些漏洞利用威胁代理提供的特殊代码覆盖易受攻击的应用程序代码,如果已经被覆盖的代码已经被运行,除了正常运行的会导致漏洞攻击利用外,更多的时候则会导致tcg模块运行和翻译失败,从而导致程序出现异常或崩溃。
tcg模块没有将修改后的代码页进行标记,再次运行时需要重新翻译,虽然这影响了qemu虚拟操作系统的二进制运行效率,但是从另外一个角度来说,这也增加了一定的安全性。
确定tcg模块在安全状态下运行后,计算不同指令集的复杂度,将复杂度最低的方案作为优化方案。
通常,通过软件度量来评估一个软件的质量情况,而软件复杂度是软件度量的重要组成部分,它是评估软件产品质量的重要指标,软件的规模越大,其复杂程度也随之增加,产生错误和违背设计原则的可能性也越大。通过计算各方案对应的重构复杂度,以通过该重构复杂度确定最优方案。
qemu虚拟系统所支持的大部分处理器都拥有部分相同的指令集。例如“mov”指令几乎存在于所有处理器中,并且可以简单地复制,除非cpu寄存器中存在一些位大小差异,例如,在32位处理器上模拟64位处理器可能需要许多额外的指令,这也需要更多时间在tcg转换器中进行编程。
在本公开实施例中,将组成各重复合组件的子复合组件和/或各原子组件均称为相应复合组件的组成成员,在计算tcg模块重复合组件的重构复杂度时,将hypervisor重复合组件的重构复杂度,作为整个工作原理图的复杂度。
构造翻译状态机;
在qemu虚拟系统的源代码中,有一个名为“tcg”的子目录,该子目录为用c语言编写的翻译状态机,用于将机器指令转换为相应的x86机器指令。
编写用于内存访问和跳转的c语言程序。
利用c语言编写用于内存访问和跳转的程序,通过该程序调用软件内存管理单元。
进一步地,分析tcg模块运行时的状态,获取针对不同指令集的优化方案,包括:
分析tcg模块运行时的状态,确定tcg模块运行时的安全性;
计算不同指令集的复杂度,将复杂度最低的方案作为优化方案。
进一步地,根据qemu网络和容器化机制,形成适用于设备侧的虚拟化架构之前,还包括:
确定基于qemu的虚拟化模式;
确定linux操作系统。
其中,确定面向设备侧平台的qemu网络包括确定基于qemu的虚拟化模式,以及确定linux操作系统。
具体地,确定基于qemu的虚拟化模式包括,确定基于qemu的计算虚拟化所采用的虚拟化模式、确定基于qemu的存储虚拟化所采用的虚拟化模式、确定基于qemu的网络虚拟化所采用的虚拟化模式。在使用基于内核的虚拟机执行x86处理器硬件虚拟化时,以几乎比拟硬件本机的速度执行运算任务,其次,通过机器代码的实时转换来模拟其他处理器以用于虚拟机运行不同平台的操作系统。
具体地,根据确定的linux操作系统的功能模块,打开并初始化vmx功能,提供相应的接口以支持虚拟机的运行,即可调用对应功能模块并运行虚拟机,例如,调用linux本身内核功能,实现对cpu的底层虚拟化和内存的虚拟化,使linux内核成为虚拟化层,最后,设计管理虚拟硬件设备的驱动,主要负责vcpu的创建、虚拟内存的分配、vcpu寄存器的读写以及vcpu的运行。
将qemu网络和管理调度技术与容器化机制相结合,形成适用于容器的轻量级虚拟化架构。
进一步地,确定基于qemu的虚拟化模式,包括:确定基于qemu的计算虚拟化所采用的虚拟化模式;确定基于qemu的存储虚拟化所采用的虚拟化模式;确定基于qemu的网络虚拟化所采用的虚拟化模式。
进一步地,验证适用于设备侧的虚拟化方法的可靠性和安全性,包括:验证适用于设备侧的虚拟化方法的存储可靠性;验证适用于设备侧的虚拟化方法的网络可靠性;验证适用于设备侧的虚拟化方法的虚拟化主机的可靠性;验证适用于设备侧的虚拟化方法的管理可靠性;验证适用于设备侧的虚拟化方法的虚拟化安全性。
其中,验证适用于设备侧的虚拟化方法的存储可靠性,包括:
在本实施例中,每个计算节点与存储集群之间,至少配置两个完全冗余的路径,从而提供存储的多路径访问功能。多条路径间的故障切换由软件自动提供,从而避免单点故障带来的存储访问问题。
其中,验证适用于设备侧的虚拟化方法的网络可靠性,包括:
在本实施例中,虚拟网络层通过采用多网卡绑定等技术避免单个网卡故障引发的业务中断。
其中,验证适用于设备侧的虚拟化方法的虚拟化主机的可靠性,包括:
在本实施例中,提供虚拟机的自动迁移和手动迁移方案,当前计算节点出现故障或者计算节点负载过高时,可以把虚拟机迁移到正常的计算节点或者负载相对较低的计算节点上,保证虚拟机的正常运行。系统提供虚拟机、卷快照功能,系统正常状态下,可以触发一个系统快照,用于在系统出现故障的时候还原系统。
其中,验证适用于设备侧的虚拟化方法的管理可靠性,包括:
在本实施例中,通过采用计算集群和存储集群相分离的架构,提升系统的可靠性。计算集群完成虚拟机的按需分配以及集群内的热迁移,存储集群完成虚拟机的系统卷和用户卷的按需分配以及跨磁盘的存放。
其中,验证适用于设备侧的虚拟化方法的虚拟化安全性,包括:
云计算运维管理系统支持操作管理员账户周期管理,提供一个缺省的超级管理员账户,使用该账户可创建其他账户并授予相应的权限。
通过上述方法,采用虚拟计算、虚拟存储、虚拟网络等技术,不仅可以完成计算资源、存储资源、网络资源的虚拟化,而且通过统一的接口,可以对这些虚拟资源进行集中调度和管理,从而降低业务的运行成本,保证系统的安全性和可靠性。
实施例二
本公开实施例提供了一种适用于设备侧的虚拟化系统,图6是根据一示例性实施例提出的一种适用于设备侧的虚拟化系统的结构图。
如图6所示,一种适用于设备侧的虚拟化系统,包括:
s601虚拟化架构确定模块,用于根据qemu网络和容器化机制,形成适用于设备侧的虚拟化架构;
s602虚拟化方法实现模块,用于根据适用于设备侧的虚拟化架构,实现适用于设备侧的虚拟化方法;
s603验证模块,用于验证适用于设备侧的虚拟化方法的可靠性和安全性。
进一步地,虚拟化架构,包括:
hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块。
进一步地,虚拟化架构确定模块,包括:
虚拟化架构确定单元,用于确定虚拟化架构中的hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块,从而实现适用于设备侧的虚拟化方法。
进一步地,用于确定虚拟化架构中的tcg模块,包括:
用于分析tcg模块运行时的状态,获取针对不同指令集的优化方案;
用于构造简单翻译状态机;
用于编写用于内存访问和跳转的c语言程序。
进一步地,用于分析tcg模块运行时的状态,获取针对不同指令集的优化方案,包括:
用于分析tcg模块运行时的状态,确定tcg模块运行时的安全性;
用于计算不同指令集的复杂度,将复杂度最低的方案作为优化方案。
进一步地,还包括:
qemu网络确定模块,用于确定基于qemu的虚拟化模式,用于确定linux操作系统。
进一步地,用于确定基于qemu的虚拟化模式,包括:
用于确定基于qemu的计算虚拟化所采用的虚拟化模式;
用于确定基于qemu的存储虚拟化所采用的虚拟化模式;
用于确定基于qemu的网络虚拟化所采用的虚拟化模式。
进一步地,验证模块,包括:
存储可靠性验证单元,用于验证适用于设备侧的虚拟化方法的存储可靠性;
网络可靠性验证单元,用于验证适用于设备侧的虚拟化方法的网络可靠性;
虚拟化主机的可靠性验证单元,用于验证适用于设备侧的虚拟化方法的虚拟化主机的可靠性;
管理可靠性验证单元,用于验证适用于设备侧的虚拟化方法的管理可靠性;
虚拟化安全性验证单元,用于验证适用于设备侧的虚拟化方法的虚拟化安全性。
本公开实施例提供的一种适用于设备侧的虚拟化系统,执行上述实施例提供的一种适用于设备侧的虚拟化方法,在此不再详细阐述。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的系统、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一根或多根,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的系统解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的步骤进行自适应性地改变并且把它们设置在与该实施例不同的一根或多根设备中。可以把实施例中的步骤或步骤或组件组合成一个步骤或步骤或组件,以及此外可以把它们分成多个步骤或子步骤或子组件。除了这样的特征和/或过程或者步骤中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何系统或者设备的所有过程或步骤进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件步骤实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的虚拟机的创建装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的系统的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的步骤权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
1.一种适用于设备侧的虚拟化方法,其特征在于,包括:
根据qemu网络和容器化机制,形成适用于设备侧的虚拟化架构;
根据所述适用于设备侧的虚拟化架构,实现适用于设备侧的虚拟化方法;
验证所述适用于设备侧的虚拟化方法的可靠性和安全性。
2.根据权利要求1所述的方法,其特征在于,所述虚拟化架构,包括:
hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块。
3.根据权利要求1所述的方法,其特征在于,所述根据所述适用于设备侧的虚拟化架构,实现适用于设备侧的虚拟化方法,包括:
确定所述虚拟化架构中的hypervisor模块、tcg模块、mmu模块、二进制翻译缓存模块、磁盘子系统模块和硬件设备模块,从而实现适用于设备侧的虚拟化方法。
4.根据权利要求3所述的方法,其特征在于,确定所述虚拟化架构中的tcg模块,包括:
分析所述tcg模块运行时的状态,获取针对不同指令集的优化方案;
构造简单翻译状态机;
编写用于内存访问和跳转的c语言程序。
5.根据权利要求4所述的方法,其特征在于,所述分析所述tcg模块运行时的状态,获取针对不同指令集的优化方案,包括:
分析所述tcg模块运行时的状态,确定所述tcg模块运行时的安全性;
计算不同指令集的复杂度,将复杂度最低的方案作为优化方案。
6.根据权利要求1所述的方法,其特征在于,所述根据qemu网络和容器化机制,形成适用于设备侧的虚拟化架构之前,还包括:
确定基于qemu的虚拟化模式;
确定linux操作系统。
7.根据权利要求6所述的方法,其特征在于,所述确定基于qemu的虚拟化模式,包括:
确定基于qemu的计算虚拟化所采用的虚拟化模式;
确定基于qemu的存储虚拟化所采用的虚拟化模式;
确定基于qemu的网络虚拟化所采用的虚拟化模式。
8.根据权利要求1所述的方法,其特征在于,所述验证所述适用于设备侧的虚拟化方法的可靠性和安全性,包括:
验证所述适用于设备侧的虚拟化方法的存储可靠性;
验证所述适用于设备侧的虚拟化方法的网络可靠性;
验证所述适用于设备侧的虚拟化方法的虚拟化主机的可靠性;
验证所述适用于设备侧的虚拟化方法的管理可靠性;
验证所述适用于设备侧的虚拟化方法的虚拟化安全性。
技术总结