精华内容
下载资源
问答
  • 虚拟化运用什么原理
    千次阅读
    2020-06-16 00:31:27

    半虚拟化:用软件接口来代替实际的硬件的功能。比如,半虚拟化提供一组虚拟化调用,当在虚拟操作系统中的进程需要使用系统调用时,这个时候进程就会向虚拟机管理程序请求这组虚拟化的调用,来达到类似于系统调用的效果。

    半虚拟化的缺点:安装在半虚拟化的环境中的操作系统需要了解虚拟机的API,实际运行的时候,需要知道哪个API能够实现自己的要求,这就需要操作系统为这个半虚拟化定制相应的功能,才能正常的在半虚拟化环境中使用,这就给操作系统的编写增加了工作量

    另外需要指出的是,有时候的虚拟化并不需要虚拟整个操作系统,比如进程级别的虚拟化。
    因为有时候我们仅仅想让某个程序运行起来,不必为这个程序单独创建一个虚拟的操作系统,就可以使用进程级别的虚拟化功能,例子有:WINE兼容层,允许WINDOWS程序允许运行在POSIX系统兼容的系统上,它的做法就是运用API转换技术做出Linux对应到Windows相对应的函数来调用DLL(动态链接库)以运行Windows程序。

    更多相关内容
  • 数据中心成本节约的主要技术之一就是服务器虚拟化,它将适用于70%的工作负载。现在只有12%的x86服务器工作负载是在虚拟机上运行的。到2013年,这个数字将增长到61%。在2008年配置或者重新配置的x86服务器工作负载中...
  • 这里写目录标题一,什么虚拟化技术二,虚拟化技术发展1,雏形:2,虚拟化类型3,虚拟化特性:优势劣势4, 虚拟化应用场景案例:三,KVM简介:1,如何理解KVM广义KVM:2,KVM架构及原理2.1KVM 虚拟化架构/三种模式...

    前言:为什么使用虚拟化?

    
    是为了提高机器的利用率,在企业生产过程中,如果正常使用一台电脑的话,
    其实利用率并不会很高,正常百分之四十五,五十,当然为了提升利用率可
    以多开应用,但是随之而来的的问题就是电脑蓝屏,且同时开多个应用随之
    而来的不安全,不兼容,以及应用服务之间产生冲突,这时候虚拟化技术的
    出现就可以完全解决这些问题,虚拟化通过资源整合来调用底层硬件资源也
    就是资源池来运行不同的应用服务,来提高资源利用率,以及安全性,隔离性,
    并进行集中化管理,实现高可靠利用。这也就是虚拟化前与虚拟化后的一个差别。
    

    一,什么是虚拟化技术

    从上面可以总结出虚拟化的概念: 虚拟化技术是通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的工作效率

    二,虚拟化技术发展

    1,雏形:

    • 1961年,IBM709机器实现了分时系统,将CPU占用切分为多个极短的时间片(1/100sec)每一个时间片执行不同的工作,通过对这些时间片进行轮询
      从而将一个CPU伪装成多个CPU
    • 1972年, IBM正式将system370机的分时系统命名为虚拟机
    • 1990年, IBM推出的system390机支持逻辑分区(将一个CPU分为多份,相互独立,也就是逻辑分割)
      Xen 2003年问世,是一个外部的hypervisor程序(虚拟机管理程序),能够控制虚拟机和给多个客户机分配资源
      KVM:2007年问世,现已内置在kernel内核中的
      Xen 支持的虚拟化技术:全虚拟化,半虚拟化
      KVM:支持的虚拟化技术:全虚拟化

    2,虚拟化类型

    • 1、全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用
      使用的方法: 使用hypervisor(VMM)软件,其原理是在底层硬件和服务器之间建立一个抽象层,而基于核心的虚拟机是面向Linux系统的开源产品hypervisor(VMM)可以捕捉CPU的指令,为指令访问硬件控制器和外设充当中介。
    • 2、半虚拟化:需要修改操作系统
    • 3、直通:直接使用物理硬件资源(需要支持,还不完善)

    3,虚拟化特性:

    3.1 优势
    • ① 集中化管理(远程管理、维护)
    • ② 提高硬件利用率(物理资源利用率低-例如峰值,虚拟化解决了“空闲”容量)
    • ③ 动态调整机器/资源配置(虚拟化把系统的应用程序和服务硬件分离、提高了灵活性)
    • ④ 高可靠(可部署额外的功能和方案,可提高透明负载均衡、迁移、恢复复制等应用环境)
    3.2劣势
    • ① 前期高额费用(初期的硬件支持)
    • ② 降低硬件利用率(特定场景-例如极度吃资源的应用不一定适合虚拟化)
    • ③ 更大的错误影响面(本地物理机down机会导致虚拟机均不可用,同时可能虚拟机中文件全部损坏)
    • ④ 实施配置复杂、管理复杂(管理人员运维、排障困难)
    • ⑤ 一定的限制性(虚拟化技术涉及各种限制,必须与支持/兼容虚拟化的服务器、应用程序及供应商结合使用)
    • ⑥ 安全性(虚拟化技术自身的安全隐患)

    4,虚拟化使用的具体场景,例如以下几方面:

    • VMwareWorkstation:使用软件达到虚拟多操作系统
    • VirtualBox:使用软件虚拟出多物理设备功能
    4.1软硬件结合

    因为硬件和操作系统不兼容或者不支持,导致有些软、硬件功能无法正常使用(也是最难的问题)
    使用虚拟化,软硬件之间是会通过虚拟化层驱动进行隔离(调配)的,只要虚拟化层可以识别软/硬件应用,就可以将软硬件结合使用

    4.2Apache和Nginx服务

    在同一个主机上运行多个应用程序通常会产生冲突
    Apache和Nginx 定位相同(80端口)
    只能使用反向代理的方式进行分离,而同时如果在同一台机器使用这种方式,Apache和Nginx中重要的数据文件如果同时被泄露出去…而虚拟化可以隔离服务

    这里以VMwareworkstation为例来做一解释说明,workstation支持intel公司和AMD公司的虚拟化技术硬件辅助虚拟化技术Intel-VT-x AMD-V, Intel VT-x技术主要包含CPU、内存和I/O三方面的虚拟化技术,同时提供优化处理(早期为弥补X86架构虚拟化的缺陷),AMD-V 是对x86处理器系统架构的一组硬件扩展和硬件辅助虚拟化技术,可以简化纯软件的虚拟化解决方案,改进VMM(虚拟机监视器)的设计,更充分地利用硬件资源,提高服务器和数据中心的虚拟化效率

    什么是VMM?

    • VMM(虚拟机监视器/管理程序)
    • VMM是一个系统软件,可以维护多个高效、隔离的程序环境(虚拟机),同时可以管理计算机系统的真实资源、为虚拟机提供接口

    三,KVM简介:

    1,如何理解KVM

    从广义上;理解KVM:

    KVM(Kernel-based Vritual Machine)–基于内核的虚拟机
    KVM 是基于虚拟化扩展的X86硬件的开源Linux原生的全虚拟化方案(要求cpu支持Intel-VT-x或AMD-V),KVM内嵌于内核模块中,模拟处理器和内存以支持虚拟机运行虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚拟机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KVM 能够使用 Linux 内核的已有功能,但KVM本身不执行任何模拟。需要客户空间程序(虚拟机)通过/dev/kvm(此虚拟设备需要开起硬件辅助虚拟化才能看到)接口设置一个客户机虚拟服务器的地址空间,并且由Qemu模拟I/O(ioctl)进行调度资源和维护管理

    • Libvirt:KVM的管理工具,除了可以管理KVM这类VMM,还可以管理Xen,VirtualBox,甚至OpenStack底层
    • Libvirt包含3个组件:后台daemon程序libvirtd、API库、命令行工具virsh

    2,KVM架构及原理

    2.1KVM 虚拟化架构/三种模式

    • 1、客户模式(guestOS):VM中的OS为GuestOS
      客户机在操作系统中运行的模式,客户机分为内核模式和用户模式,作用如下:
    • 2、用户模式:
      为用户提供虚拟机管理的用户空间工具以及代表用户执行I/O,Qemu工作在此模式下(Qemu的主要功能)
    • 3、linux内核模式
      模拟CPU、内存,实现客户模式切换,处理从客户模式的推出,KVM即运行在此模式下

    2.2 KVM原理

    • 1、Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),
      被KVM 置于一种受限制的CPU 模式下运行。
    • 2、KVM 内核模块模拟处理器和内存以支持虚拟机运行
    • 3、Qemu 主要处理I/O以及为客户提供一个用户空间/dev/kvm 工具libvirt 来进行虚拟机管理
      + ioctl(定义) 专用于设备输入输出操作的系统调用
      + libvirt:KVM管理工具
      以上构成一个完整的虚拟化平台
    简单概括理解:

    KVM驱动提供处理器、内存的虚拟化,以及客户机I/O的拦截,guest的I/O被拦截后,交由Qemu处理
    Qemu利用接口libkvm调用(ioctl)虚拟机设备接口/dev/kvm来分配资源、管理、维护虚拟机

    3,KVM工作流程

    用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。 KVM驱动为虚拟机创建虚拟 CPU 和虚拟内存,然后执行 VMLAU·NCH 指令进入客户模式,装载 Guest OS 并运行。Guest OS 运行过程中如果发生异常,则暂停Guest OS的运行并保存当前状态同时退出到内核模式来处理这些异常。
    内核模式处理这些异常时如果不需要 I/O则处理完成后重新进入客户模式。如果需要 I/O 则进入到用户模式,
    则由 Qemu 来处理 I/O,处理完成后进入内核模式,再进入客户模式

    4,虚拟化前后环境对比

    4.1虚拟化前
    • ① 每台主机拥有一个操作系统
    • ② 软硬件紧密结合
    • ③ 在同一个主机上运行多个应用程序通常会产生冲突
    • ④ 系统资源利用率低(例如:5%)
    • ⑤ 硬件成本高昂并且不够灵活
    4.2虚拟化后
    • ① 打破了操作系统和硬件的互相依赖
    • ② 通过封装到虚拟机的技术,管理操作系统和应用程序为单一的个体
    • ③ 强大的安全和故障隔离
    • ④ 虚拟机时独立于硬件的,它们可以在任何硬件上运行
    4.3对比:

    操作系统方面(虚拟化前):
    LAMP 架构中(以一台主机实现)
    LINUX + Apache + MySQL + PHP ,其中Apache 与 MySQL资源是共享的,如果架构要求服务间的安全性隔离比较高的话,Apache的页面和MySQL数据库的目录一定是不能互相碰面,如果Apache漏洞暴露出来,攻击者就可以Apache的进程访问到MySQL的数据目录,从而获取MySQL中的数据,这种就是严重的安全隐患而想解决这种潜在危险,可以通过实现内核级别的隔离(使用虚拟化技术)

    展开全文
  • 一、虚拟化技术的概念 什么虚拟化技术?虚拟化是一种方法,本质上讲是指从逻辑角度而不是物理角度来 对资源进行配置,是从单一的逻辑角度来看待不同的物理资源的方法。 这个定义首要说明的是,虚拟化是一种逻辑...
  • KVM虚拟化技术 随着云计算、大数据和分布式技术的发展和演进,我们需要在一台服务器上虚拟化出更多的虚拟机,还要让这些虚拟机能够弹性伸缩,实现跨主机的迁移。 而虚拟化技术正是这些能力的基石。这一节课,就让...

    KVM虚拟化技术

    随着云计算、大数据和分布式技术的发展和演进,我们需要在一台服务器上虚拟化出更多的虚拟机,还要让这些虚拟机能够弹性伸缩,实现跨主机的迁移。

    而虚拟化技术正是这些能力的基石。这一节课,就让我们一起探索一下,亚马逊、阿里、腾讯等知名公司用到的云虚拟主机,看看其中的核心技术——KVM 虚拟化技术。

    虚拟化技术是微内核的产物,在计算机层级中加上了一个中间层。

    微内核和宏内核区别和类似于集群和分布式,可自行了解,此处不作概述。

    虚拟机是运行在真实硬件上的产物,因此对于虚拟机的使用,无疑是要使用硬件资源的,比如CPU、RAM和I/O设备,这就是硬件虚拟化。

    软件虚拟化此处不作概述。

    软件虚拟化的思想是把虚拟机看成一个运行在真实硬件上的进程,而其中客户端对于硬件资源的使用可以看成是一个个进程中的线程,而该中间层就负责把这些线程映射到真实的硬件上去,这个中间层我们一般叫做Hypervisor/Virtual Machine Monitor(VMM)。

    在这里插入图片描述
    CPU虚拟化

    Intel 定义了 Virtual Machine Extension(VMX)这个处理器特性,也就是传说中的 VT-x 指令集,开启了这个特性之后,就会存在两种操作模式。它们分别是:根操作(VMX root operation)和非根操作(VMX non-root operation)。

    虚拟机中的操作系统和应用程序一般运行在非根操作中,当使用到一些类似于中断的指令时,切换到根指令,根指令对处理器和平台硬件具有完全的控制权限。

    内存虚拟化

    其中不得不提内存虚拟化,内存虚拟化核心目的是“骗”客户机,给每个虚拟客户机都提供一个从0开始的连续的物理内存空间地址,同时又要保障各个虚拟机之间内存的隔离和调度能力。

    是不是有点像虚拟内存地址?其实VMM就是借鉴了该思想,因此其中对于地址转换的机制映射关系表是必不可少的

    • 客户机虚拟地址 GVA(Guest Virtual Address)
    • 客户机物理地址 GPA(Guest Physical Address)
    • 宿主机虚拟地址 HVA(Host Virtual Address)
    • 宿主机物理地址 HPA(Host Physical Address)

    I/O虚拟化

    I/O 虚拟化是基于 Intel 的 VT-d 指令集来实现的,这是一种基于 North Bridge 北桥芯片(或 MCH)的硬件辅助虚拟化技术。

    运用 VT-d 技术,虚拟机得以使用基于直接 I/O 设备分配方式,或者用 I/O 设备共享方式来代替传统的设备模拟 / 额外设备接口方式,不需要硬件改动,还省去了中间通道和 VMM 的开销,从而大大提升了虚拟化的 I/O 性能,让虚拟机性能更接近于真实主机。

    提到虚拟化技术,不得不提到现在比较火热的docker容器技术。

    docker容器技术的实现机制

    容器:轻量、拥有一个模具(镜像),既可以规模生产出多个相同集装箱(运行实例),又可以和外部环境(宿主机)隔离,最终实现对“内容”的打包隔离,方便其运输传送。

    容器和虚拟机的对比

    在这里插入图片描述
    为了让虚拟机的应用程序达到和物理机相近的效果,使用了KVM,他允许多个操作系统共用一个CPU,但是却带来了极大的开销,由于虚拟机带着全套的OS,调度和资源占用都非常重。

    容器是一种更加轻量级的操作系统虚拟化技术,他将应用程序,依赖包,库文件等允许依赖环境打包到标准化的镜像中,通过容器引擎提供进程隔离、资源可限制的运行环境,实现应用于OS平台及底层硬件的解耦。

    此处要注意虚拟机和容器的区别:虚拟化技术是模拟出了一个虚拟机,而容器技术只是在与原宿主机的架构中加入一块新的空间,该空间对于硬件资源的使用还是得靠底层硬件,不过不是虚拟化的操作系统了,而是容器引擎技术。

    以docker为例,docker是一种C/S架构,主要包括三部分

    • 容器客户端(client)
    • 容器镜像仓库(register)
    • 容器管理引擎进程(host)

    其中最值得关注的是容器管理引擎进程,他是docker架构的核心,包括运行docker daemon(守护进程)、image(镜像)、驱动(driver)、libcontainer(容器管理)等。

    • daemon:是一个常驻后台的的进程。负责监听客户端请求,然后执行后续的对应逻辑,还能管理docker对象。
    • docker driver:docker中的驱动。设计驱动这一层依旧是解耦,将容器管理的镜像、网络和隔离执行逻辑从 Docker Daemon 的逻辑中剥离。
    • libcontainer:libcontainer 提供了访问内核中和容器相关的 API,负责对容器进行具体操作。

    宿主机对于容器内以及客户机对于宿主机资源的使用已经满足了,但是除了对于硬件资源的使用,为何每个容器内里面能够有独立的资源呢?

    容器隔离技术:Linux NameSpace

    容器的一大特点就是创造出一个相对隔离的环境。在 Linux 内核中,实现各种资源隔离功能的技术就叫 Linux Namespace,它可以隔离一系列的系统资源,比如 PID(进程 ID)、UID(用户 ID)、Network 等。

    有点类似于chroot,把当前目录变成被隔离出的根目录,使得当前目录无法访问到外部的内容,Namespace 在基于 chroot 扩展升级的基础上,也可以分别将一些资源隔离起来,限制每个进程能够访问的资源

    展开全文
  • 虚拟化技术

    千次阅读 2020-12-26 11:38:28
    虚拟化技术前言一、虚拟化技术简介二、虚拟化技术原理三、常见的虚拟化技术解决方案四、常见虚拟化技术的应用实践总结参考文献 前言 近年来,计算机硬件与软件的性能比以往有了极大的发展与进步,计算机硬件的发展为来...

    前言

    近年来,计算机硬件与软件的性能比以往有了极大的发展与进步,计算机硬件的发展为来人们提供了极其强大的计算能力和极其丰富的计算资源,如不加以有效利用将会造成资源浪费。同时,随着计算机软件的发展,用户使用计算机的场合越来越多,这又导致用户对计算机的需求与要求越来越多,网络安全、数据灾备、系统移植、系统升级、软硬件成本等都成了使用计算机过程中要考虑和解决的问题。而虚拟化技术的出现与应用,为用户提供了解决这些问题的完美方案。本章就将介绍云计算与大数据技术紧密相关的虚拟化技术。

    一、虚拟化技术简介

    什么是虚拟化?

    云计算的核心技术之一就是虚拟化技术。所谓虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

    虚拟化的核心软件VMM,是一种运行在物理服务器和操作系统之间的中间层软件。VMM是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括CPU、内存、磁盘、网卡在内的所有物理设备。VMM不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行VMM时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。

    虚拟化方式

    虚拟化技术有很多实现方式,比如根据虚拟化的程度和级别,有软件虚拟化和硬件虚拟化,全虚拟化和半虚拟化。

    软件虚拟化:顾名思义,就是采用纯软件的方法在在现有的物理平台上实现物理平台访问的截获和模拟,该物理平台往往不支持硬件虚拟化。

    硬件虚拟化:简单来说,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持,新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化,从而提升性能。

    全虚拟化:完全虚拟化技术又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(VM)和硬件之间加了一个软件层Hypervisor,或者叫做虚拟机管理程序或虚拟机监视器(VMM)。

    半虚拟化:半虚拟化技术是后来才出现的技术,也叫做准虚拟化技术,现在比较热门,它就是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这个API可以将客户操作系统发出的指令进行最优化,即不需要VMM耗费一定的资源进行翻译操作。

    二、虚拟化技术原理

    虚拟化概念很早就已出现。简bai单来说,虚拟化就是使用某些程序,并使其看起来类似于其他程序的过程。
    将这个概念应用到计算机系统中可以让不同用户看到不同的单个系统(例如,一台计算机可以同时运行Linux 和 Microsoft? Windows?)。这通常称为全虚拟化(full virtualization)。
    虚拟化也可以使用更加复杂的格式,其中单个计算机看上去具有多个架构(对于一个用户来说,它是一个标准的 x86 平台;对于另外一个用户来说,它是 IBM Power PC? 平台)。这种虚拟化形式通常被称为 硬件仿真。
    最后,更加简单的一种虚拟化是操作系统虚拟化,其中一台计算机可以运行相同类型的多个操作系统。这种虚拟化可以将一个操作系统的多个服务器隔离开来(这意味着全都必须使用相同类型和版本的操作系统)。
    虚拟化技术的工作原理:
    虚拟化解决方案的底部是要进行虚拟化的机器。这台机器可能直接支持虚拟化,也可能不会直接支持虚拟化;那么就需要系统管理程序 层的支持。系统管理程序,或称为 VMM,可以看作是平台硬件和操作系统的抽象化。在某些情况中,这个系统管理程序就是一个操作系统;此时,它就称为主机操作系统.
    系统管理程序之上是客户机操作系统,也称为虚拟机(VM)。这些 VM 都是一些相互隔离的操作系统,将底层硬件平台视为自己所有。但是实际上,是系统管理程序为它们制造了这种假象。
    目前使用虚拟化解决方案的问题是,并非所有硬件都可以很好地支持虚拟化。较老的 x86 处理器根据执行范围对特定指令会产生不同结果。这就产生了一个问题,因为系统管理程序应该只能在一个最受保护的范围中执行。由于这个原因,诸如 VMWare 之类的虚拟化解决方案会提前扫描要执行的代码,从而将这些指令替换为一些陷阱指令(trap instruction),这样系统管理程序就可以正确地处理它们。Xen 可以支持一种协作的虚拟化方法,它不需要任何修改,因为客户机知道自己正在进行虚拟化,并已经进行了修改。KVM 会简单地忽略这个问题,如果您希望进行虚拟化,就强制必须在更新的硬件上运行。
    一、 虚拟化技术
    虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。
    物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)
    1、虚拟化技术的分类:
    (1) 模拟:Emulation
    Qemu, PearPC, Bochs, …

    (2) 完全虚拟化:Full Virtualization,Native Virtualization
    完全虚拟化提供底层物理系统的全部抽象化,且创建一个新的虚拟系统,客户机操作系统可以在里面运行。不需要对客户机操作系统或者应用程序进行修改(客户机操作系统或者应用程序像往常一样运行,意识不到虚拟环境的存在)。
    VMware是一款完全虚拟化软件。完全虚拟的弱点是效率不如半虚拟化的高
    半虚拟化系统性能可以接近在裸机上的性能。
    VMWare Workstation, VirtualBox, VMWare Server, Parallels Desktop, KVM(hvm), XEN(hvm)

    (3) 半虚拟化:Para-Virutalization
    半虚拟化需要对运行在虚拟机上的客户机操作系统
    进行修改(这些客户机操作系统会意识到它们运行在虚拟环境里)并提供相近的性能,但半虚拟化的性能要比完全虚拟化更优越。

    特点:GuestOS明确知道自己运行虚拟机之上;
    xen, UML(user-mode linux)

    (4) 容器级虚拟化:
    LXC, OpenVZ, libcontainer, runC, rkt, Linux V Servers, Virtuozzo, …

    (5) 库级别虚拟化:
    wine

    (6) 程序级虚拟化
    jvm, pvm, …

    2、主机虚拟化:Emulation, Full Virtualization, Para-Virutalization
    Type-I:Hypervisor直接运行于硬件;
    Type-II:Hypervisor运行主机OS之上;

    3、云栈的类别:
    IaaS(Infrastructure-as-a-Service)基础设施服务
    PaaS(Platform-as-a-Service)系统平台服务
    SaaS(Software-as-a-Service)软件服务
    FWaaS(FireWall as a Service)防火墙服务
    DBaaS(DataBase-as-a-Service)数据库服务
    LBaas (load-balancer-as-a-service)负载均衡服务
    二、主机虚拟化:
    1、cpu的虚拟化:
    模拟类型:emulation,虚拟机的arch与物理平台的arch可以不同;qemu
    虚拟类型:virtualization
    完全虚拟化(full-virt)

    • BT:通过软件二进制转换
    • HVM:硬件辅助的虚拟化
      半虚拟化: (pare-virt)
    • GuestOS明确知道自己运行于虚拟技术中
      硬件级物理cup虚拟化技术
      英特尔硬件虚拟化技术interl-VT
      AMD硬件虚拟化技术AMD-V
      2、内存虚拟化管理
      早期,虚拟机中的内存到物理内存地址机制,用软件实现, shadowmmu很低效
      硬件内存中添加了,标识虚拟机标签机制tagged TLB。

    MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。

    硬件级内存虚拟化:
    硬件级物理内存映射到虚拟机

    英特尔硬件虚拟化技术EPT,Extended Page Table
    AMD硬件虚拟化技术NTP,Nested Page Table
    3、硬盘的虚拟化:
    虚拟机如何使用硬盘的空间:虚拟机在物理硬盘上划分一个文件来使用,此文件也是靠宿主机通过文件系统将磁盘分区后,并创建文件系统后,分给虚拟机一个文件的大小的空间。在宿主机上表现的就是一个文件,而在虚拟机上表现的就是一块硬盘。所以还需要用软件的方式模拟一个适配器,将此文件,模拟成硬盘。
    4、网络虚拟化
    用软件的方式给每个虚拟机虚拟一块网卡和MAC地址,当通信时使用同一块物理网卡,网卡通讯有排队方式,在同一台物理网卡上,排队执行任务。(将物理网卡设为混杂模式;无论是不是发向本机物理网卡的内容都给与接收);此时将物理网卡也虚拟化一个MAC地址,把物理网卡当作交换机来使用。
    5、IO虚拟化
    I/O全虚拟化技术
    通过VMM模拟I/O设备(磁盘和网卡等)实现虚拟化。
    Guest OS所能看到就是一组统一的I/O设备。VMM截获Guest OS对I/O设备的访问请求,然后通过软件模拟真实的硬件。这种方式对Guest而言非常透明,无需考虑底层硬件的情况。
    I/O半虚拟化技术
    通过前端(Front-End)/后端(Back-End)模拟实现虚拟化。
    Guest OS中的驱动程序为前端,VMM提供的与Guest通信的驱动程序为后端。前端驱动将Guest OS的请求通过与VMM间的特殊通信机制发送给VMM的后端驱动,后端驱动在处理完请求后再发送给物理驱动。
    I/O透传技术
    设备透传就是向一个特定客户操作系统提供一种设备隔离,对于性能而言,使用设备透传可以获得近乎本机的性能。对于某些网络应用程序(或那些拥有高磁盘 I/O 的应用程序)来说,这种技术简直是完美的。这些网络应用程序没有采用虚拟化,原因是穿过管理程序(达到管理程序中的驱动程序或从管理程序到用户空间模拟)会导致竞争和性能降低。但是,当这些设备不能被共享时,也可以将它们分配到特定的客户机中。例如,如果一个系统包含多个视频适配器,则那些适配器可以被传递到特定的客户域中。
    6、一型虚拟化type-1
    特点:于硬件级别直接运行hypervisor虚拟机管理控制
    xen,vmware ESX/ESXI
    在这里插入图片描述
    7、二型虚拟化type-2
    特点:host主机上建立guest虚拟系统,有宿主机
    在硬件级别运行一个os(host os),而此上运行一个vmm监视器,用于管理guest虚拟系统
    vmwarworkstations, kvm,virtualbox
    三、容器级级虚拟化
    缺点:相较于主机级虚拟化隔离的不彻底
    方案:lxc, libcontainer, runC, openvz

    Linux内核运行在物理设备上;在内核上运行多个操作系统如:centos,wubantu;susan;等,因为他们都是基于linux内核来开发的不同界面的操作系统而已,底层运行的内核是相同的。在每个操作系统上在运行每个应用。在内核上运行一个软件来创建和管理容器,是一个很小的软件,基本不消耗性能。

    由于多个操作系统使用的是同一个内核,当在操作系统上执行关机命令,就会将内核关闭,所以需要将每个操作系统隔离开来,关掉的只是自身容器 本身而已。各个操作系统之间的操作互补干扰。(共享内核)

    四、KVM虚拟技术
    1、KVM概述
    以色列qumranet公司研发,后被RedHad公司收购
    (1)kvm只支持x86平台
    (2)依赖于 HVM,inter VT AMD-v
    KVM是(Kernel-based Virtual Machine)的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。
    KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。
    工作原理
    KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。
    但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。

    在这里插入图片描述
    2、KVM的核心组件:
    (1)、 kvm.ko内核模块
    (kvm.ko)/dev/kvm:工作为hypervisor,在用户空间可通过系统调用ioctl()与内核中的kvm模块交互,从而完成虚拟机的创建、启动、停止、删除等各种管理功能;
    (2)、 qemu-kvm:用户空间的工具程序
    qemu-kvm进程:工作于用户空间,用于实现IO设备模拟;用于实现一个虚拟机实例;
    (3)libvirt:工具箱用于与主流操作系统虚拟化进行交互工具
    libvirt是cs架构应用:
    客户端:libvirt-client
    virt-manager
    daemon:图像化工具
    libvirt-deaemon
    3、KVM运行模式
    KVM模块load进内存之后,系统的运行模式:

    内核模式:GuestOS执行IO类的操作时,或其它的特殊指令操作时的模式;它也被称为“Guest-Kernel”模式;
    用户模式:Host OS的用户空间,用于代为GuestOS发出IO请求;
    来宾模式:GuestOS的用户模式;所有的非IO类请求;
    4、KSM机制
    扫描物理内存,发现多个虚拟机实例有相同的内存空间,合并成为一个共享内存空间,节省内存。

    5、kvm工具集:
    在这里插入图片描述
    qemu工具

    qemu-kvm:用户空间的工具程序,创建管理虚拟机

    qemu-img:是 QEMU 的磁盘管理工具

    libvirt工具

    GUI:virt-manager, virt-viewer:图形化管理
    CLI: virsh, virt-install:创建管理虚拟机
    集群工具:
    libvirtd:管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。Libvirt是一个C工具包的虚拟化功能与最新版本的Linux(以及其他操作系统)。主包包含libvirtd服务器虚拟化支持出口

    三、常见的虚拟化技术解决方案

    虚拟机技术
    在虚拟机技术(Virtual Machine Monitor)中,不再对底层的硬件资源进行划分,而是部署一个统一的Host系统。在Host系统上,加装了Virtual Machine Monitor,虚拟层作为应用级别的软件而存在,不涉及操作系统内核。虚拟层会给每个虚拟机模拟一套独立的硬件设备,包含CPU、内存、主板、显卡、网卡等硬件资源,在其上安装所谓的Guest操作系统。最终用户的应用程序,运行在Guest操作系统中。这种虚拟机运行的方式有一定的优点,比如能在一个节点上安装多个不同类型的操作系统;但缺点也非常明显,虚拟硬件设备要消耗资源,大量代码需要被翻译执行,造成了性能的损耗,使其更合适用于实验室等特殊环境。其代表产品有EMC旗下的VMware系列、微软旗下的Virtual PC/Server系列等。
    准虚拟机技术
    为了改善虚拟机技术(Virtual Machine Monitor)的性能,一种新的准虚拟化技术(Para-Virtualizion)技术诞生了。这种虚拟技术以Xen为代表,其特点是修改操作系统的内核,加入一个Xen Hypervisor层。它允许安装在同一硬件设备上的多个系统可以同时启动,由Xen Hypervisor来进行资源调配。在这种虚拟环境下,依然需要模拟硬件设备,安装Guest操作系统,并且还需要修改操作系统的内核。Xen相对于传统的Virtual Machine Monitor,性能稍有提高,但并不十分显著。为了进一步提高性能,Intel和AMD分别开发了
    操作系统虚拟化技术
    最新的虚拟化技术已经发展到了操作系统虚拟化,以SWsoft的Virtuozzo/OpenVZ和Sun基于Solaris平台的Container技术为代表,其中Virtuozzo是商业解决方案,而OpenVZ是以Virtuozzo为基础的开源项目。他们的特点是一个单一的节点运行着唯一的操作系统实例,通过在这个系统上加装虚拟化平台,可以将系统划分成多个独立隔离的容器,每个容器是一个虚拟的操作系统,被称为虚拟环境(即VE,Virtual Environment),也被称为虚拟专用服务器(即VPS,Virtual Private Server)。在操作系统虚拟化技术中,每个节点上只有唯一的系统内核,不虚拟任何硬件设备。此外,多个虚拟环境以模板的方式共享一个文件系统,性能得以大幅度提升。在生产环境中,一台服务器可根据环境需要,运行一个VE/VPS,或者运行上百个VE/VPS。所以,操作系统虚拟化技术是面向生产环境、商业运行环境的技术。从最早的硬件分区到现阶段的虚拟机和虚拟操作系统,虚拟化技术已经发展了好几代,不同的技术路线也带来了不同的优劣势。选择什么样的技术和产品,用户还是应该结合自身的预算和应用实践来决策。

    优势
    虚拟机虚拟化技术所能提供的优势取决于客户的目标、所选择的特殊虚拟技术以及现有的IT基础架构。并非所有的客户都能够从实现某一特殊虚拟化解决方案中获得同样的利益。现在,即使是使用虚拟化进行简单的服务器整合,客户们也经常可以在某种程度上获得以下很多利益:更高的资源利用率——虚拟可支持实现物理资源和资源池的动态共享,提高资源利用率,特别是针对那些平均需求远低于需要为其提供专用资源的不同负载。
    降低管理成本
    虚拟可通过以下途径提高工作人员的效率:减少必须进行管理的物理资源的数量;隐藏物理资源的部分复杂性;通过实现自动化、获得更好的信息和实现中央管理来简化公共管理任务;实现负载管理自动化。另外,虚拟还可以支持在多个平台上使用公共的工具。
    提高使用灵活性
    通过虚拟可实现动态的资源部署和重配置,满足不断变化的业务需求。
    提高安全性
    虚拟可实现较简单的共享机制无法实现的隔离和划分,这些特性可实现对数据和服务进行可控和安全的访问。
    更高的可用性
    虚拟可在不影响用户的情况下对物理资源进行删除、升级或改变。
    在这里插入图片描述
    更高的可扩展性
    根据不同的产品,资源分区和汇聚可支持实现比个体物理资源小得多或大得多的虚拟资源,这意味着您可以在不改变物理资源配置的情况下进行规模调整。
    互操作性和投资保护
    虚拟资源可提供底层物理资源无法提供的与各种接口和协议的兼容性。
    改进资源供应
    与个体物理资源单位相比,虚拟能够以更小的单位进行资源分配。与物理资源相比,虚拟资源因其不存在硬件和操作系统方面的问题而能够在出现崩溃后更快地恢复。
    AMD虚拟化技术
    简言之,AMD Virtualization技术是一项基于硬件的技术,该技术支持虚拟软件在一台基于AMD皓龙处理器的物理服务器上运行多个操作系统和应用,有助于服务器实现更高的效率和利用率。你无需再采用“一个操作系统、一个应用和一台服务器”这种运行模式。AMD的Virtualization技术使你能更好地利用自己的资源,你的服务器和工作站将变得更加高效,数据中心的运转也更加有效。例如,当今的服务器在以不足15%的容量运行时,其能耗和散热仍保持在24×7的水平。AMD Virtualization技术具有快速虚拟化索引的功能,这就意味着AMD四核皓龙处理器能够简化数据中心,实现更高的利用率。AMD的片内安全和虚拟技术代号分别称作Presidio和Pacifica,据其官员表示将出现在明年的Opteron处理器中。“每个人都预见到虚拟和安全技术能解决到数据中心的某些问题,”AMD的微处理器业务部总经理Marty Seyer说。
    在安全方面,Presidio将利用到微软即将推出的Windows Vista中某些功能。但AMD更吸引人的一项举措是让其内存控制器更“虚拟智能化”——让芯片在一台虚拟机的不同虚拟地址之间建起一道坚固的壁垒。另外,这样还能让Presidio阻止某些黑客攻击。这类攻击通常会强迫机器借某张CD或某个分区上的操作系统启动并使用特别工具读取机器内存中的内容。
    AMD称Presidio会不断改进以包含其他保护技术,例如加固键鼠等输入设备与操作系统之间通讯通道等。由于这种保护技术需要操作系统的帮助,微软为此已经计划为Vista添加多种类型的安全技术。AMD的官员还表示将在明年的处理器中添加对信用平台模块(Trusted Platform Module) 1.2等Windows机器以外技术的支持。事实上,AMD正和开放信任运算机构合作开发Linux平台上的可信赖运算标准,预计集成TPM的服务器将在2007年上市。至于用于减轻VMware等虚拟软件部分工作负担的Pacifica技术,AMD称也会不断改善并最终包含输入/输出虚拟技术。AMD已经开始这项Xen计划的研究工作,不过他们不愿透露相应产品何时上市。
    AMD的Presidio和Pacifica技术和Intel的虚拟技术及"LaGrande"安全技术十分相似。虽然Intel一直称到明年首季才会向系统厂商推广使用新的双核奔腾D处理器"resler",但其实他们已经开始供货部分集成虚拟技术的奔腾四处理器,而LaGrande安全功能也会在明年出现于Intel处理器中。比较值得我们关注的应该是Pacifica虚拟技术,这将可以大大提高台式处理器的运行能力。Pacifica技术最突出的地方在于对内存控制器的改进方面 。
    “Pacifica”通过Direct Connect Architecture(直接互连架构)和在处理器和内存控制器中引入一个新模型和功能来提高CPU的虚拟应用。
    与过去的方法来进行虚拟应用不同,这项新的技术能够减少程序的复杂性,提高虚拟系统的安全性,并通过兼容现有的虚拟系统管理软件来减少花费在虚拟管理系统上的费用。例如,用户能在一部机器上轻易地创建多个独立且互相隔离的分区,从而减少了分区之间病毒传播的危险。不过,AMD在虚拟化技术方面仍比Intel慢了一步。AMD表示其IO虚拟化技术规范已经成型,且技术授权完全免费,并将鼓励软硬件厂商采纳该技术并集成进PC中。
    目前AMD已经和VMware、Xensource以及微软等公司结盟推广其虚拟化技术。AMD的虚拟化技术之前的开发代号为Pacifica,这种技术将在AMD今年的64位CPU核心逻辑以及芯片组两个层面得以实现。
    英特尔虚拟化技术
    在前不久的IDF春季论坛上,Intel向人们展示了代号为“Vanderpool”的虚拟化技术。这项技术将运用在Intel今年迟些时候推出的桌面CPU、64位ItaniumCPU以及明年推出Xeon服务器芯片和移动CPU上,届时Intel的CPU将拥有硬件层次的虚拟化技术。
    提到虚拟化技术,大家并不陌生。这项技术在传统的大型机和Unix系统上早已是很普及了,但因为桌面CPU大都使用的是X86架构,这决定了在其之上使用硬件级虚拟化技术的难度。Intel可谓创造先河,誓将该技术运用到桌面级产品上,用以提高CPU的性能和降低系统组建开销。这也在一定程度上符合Intel目前的策略,不再一味追求CPU的速度,而把焦点集中在CPU的效率上来。本文就将为读者详细介绍Vanderpool Technology技术(以下简称VT),它是什么、做些什么事、存在的问题及解决方法,还有在技术层面上它是如何运作的。
    应用虚拟化平台
    通过和信应用虚拟化来发布企业应用系统,能够为用户带来更好的体验。不需要改变现在网络结构和修改任何应用程序,就能实现快速、灵活地部署,而且内置的安全、负载均衡机制保证了企业不间断业务的进行,同时大大简化系统管理员管理和维护工作量。
    使用和信应用虚拟化有什么好处?
    使用和信应用虚拟化能够做到:

    • 软件应用的集中管理;
    • 远程安全接入与应用访问控制;
    • 应用加速;
    • 企业应用平台从局域网向互联网迁移。
      和信应用虚拟化客户端环境要求
      操作系统:Windows XP、2003、Vista、Win7 32位及64位系统
      和信应用虚拟化客户端无特殊要求,只要能顺利安装以上操作系统,均可无障碍使用和信应用虚拟化。
      什么是虚拟化
      虚拟化能使用户在一台服务器上同时运行多个操作系统,这与“多重任务处理”技术有些类似。不过“多重任务处理”技术只允许用户在同一机器设备的同一操作系统中运行多个程序,而虚拟化则可让用户在同一机器设备中运行多个操作系统。这样用户能更灵活高效地配用计算机资源,并且有助于提高安全性能。
      想象一下,一个操作系统几乎不需花任何时间就可被启动,即使它崩溃了,你只需简单地将它剔除出去,同时立即装载一个新的。如果你正在同时运行几个操作系统,当你准备给其中一个载入新的映像时,你可马上将它关闭,并把该系统正在处理的工作分流给其他系统运行。如果你有5个RedHat的副本正在运行Apache服务器软件,而其中一个因满负荷而停止响应,没问题,你只需简单地将响应请求转交给其他4个系统处理,同时重启那个停止工作的系统就行了。
      如果你已为你正在运行的操作系统存储了一份“快照”,那么每当有一些不愉快的事情发生时你都可重新启动它,例如被黑客攻击、感染病毒。从一个安全的分区载入映像并修复好它就行了。虚拟化还可让用户毫不费时地重新安装操作系统而不需像以往使用Ghost那样去安装设备驱动。你可简单地就像使用普通程序那样去载入、卸载和存储操作系统。
      同样,它也允许你在同一台机器上使用多个不同的操作系统。如果你是一名程序员,需要编写代码使它们在Windows 95/98/Me/2000/XP上都能运行,你可在你的办公桌上准备5台机器或是1台运行了5种虚拟化操作系统的电脑。同时,作为程序员的你需在每个浏览器的每个版本上校验这些代码,很明显微软不会让你在一个已拥有高版本IE的情况下去安装更低版本的IE去做这些事,但你可一个个地安装旧的操作系统或采取更好一些的解决方法——让它们同时运行。
      现有虚拟化技术及缺陷
      是不是一切都很简单和完美?然而在虚拟化世界并非一切都是尽善尽美的。最显而易见的就是那么多的副本操作系统(上面例子中的操作系统副本多吗?你可以想象一个网络主机公司,20个、50个都是有可能的)同时运行在一台计算机上需要占据很多的资源并导致更昂贵的服务器开销。数据传输在任何情况下都变得更难,因为越多东西被载入,需要的存储器容量也就越多。
      是的,真正的杀手就是系统开销。目前在计算机虚拟化方面有几项技术,但它们都伴有不同程度降低系统性能方面的问题。单就CPU而言,其占用率可以从10%到超过40%。
      很显然,我们需要新的技术来解决这些问题。Intel所要采用的VT技术背后的思想就是降低虚拟化时的系统开销。在我们深入了解它如何工作之前,我们有必要了解一下虚拟化技术到底是如何实现不同的操作系统工作在同一CPU上的。
      目前主要存在有3种类型的虚拟化技术:Paravirtualisation、二元码转译和模拟器。大家最为熟悉可能就是模拟器了。你可以让一个超级任天堂的模拟器在Windows XP的一个窗口中运行,同时还可有另一个PS模拟器。这些都可看作是虚拟化的最基本形式。模拟器需耗费巨大的CPU开销,如果你非要去模拟硬件装置的每一个Bit位,你将花费大量的时间和精力。比较好的方法是跳过其中的某些部分,我们使用的模拟器就是这样,它工作得也还过的去。
      这个领域的另一端就是目前较流行的并被业界认可的“Paravirtualisation”(以下简称PV)技术。按字面意思理解,是编程序模拟的意思。它让主机操作系统知道它们正工作在一个虚拟化的环境中,通过修改它们以使之工作得更好。因此操作系统需针对这种方法进行修改和调整,它们必须来回于操作系统的编写人员和编写虚拟化软件人员之间。从这个角度来看,它并非是完全的虚拟化,因为存在这种合作的关系。
      PV技术在开源代码的操作系统中工作得不错,Linux,、xBSD都是很合适的PV工作平台的候选者,你可在这些系统中任意调整所需调整的地方,使PV能工作得更好。而Windows则不行,这大概能解释最近为什么众多IT巨头吹捧开源虚拟化技术Xen了。
      而“二元码转译”(以下简称BT)技术可说是较折衷的方法了。它所要做的取决于操作系统将要做些什么,并在不知不觉中改变它。假如操作系统试图去执行指令A,但该指令A会给虚拟化引擎带来某些问题,那么BT将把它转换成某些更合适的指令并伪造指令A应该返回的结果。这是一项欺骗工作,且占用大量CPU资源,另外用许多代码取代一条代码也不会使事情运作得快些。
      当你了解这些后,你会感到头痛。纯粹致命的缺陷的确没有,但都没有一个简单的解决方案。这些虚拟化的技术仍在继续运用,只是人们都在尽量使其处在一个较低程度的缺陷范围内工作罢了。是什么造成这样的呢?
      什么问题困扰着我们
      对于X86系统架构的CPU而言,至少在32位领域,有太多让人头痛的条条框框,但作为一条总则,它们都包含有环转换器(Ring Transitions)和有关指令。从概念意义上说,环是一种划分系统特权级别的方法(因此“Ring”也称作特权环)。你可让操作系统运行在一个特权级别上而不会使之被用户程序更改。这样即使你的程序出了问题,它也不会导致系统崩溃,而操作系统能取得控制权,关闭出毛病的程序。这些环强行控制系统的不同部分。
      Intel公司的X86系列CPU(包括80386、80486、Pentium、Pentium Pro、Pentium Ⅱ、Pentium Ⅲ以及现在的Pentium 4CPU),提供4个特权级别R0、R1、R2和R3。较大的数字表示较低的特权,我们可简单理解为运行在某一级别的程序无法改变运行在较小数字级别上的程序,但较低数字级别上的程序可干扰甚至控制运行在较高数字级别的程序。
      在实际运用中,被经常用到的只有R0和R3,即最高级别和最低级别。操作系统运行在R0上,而用户程序运行在R3上。X86架构在向64位扩展时,采用的方法之一就是通过去掉中间的特权级别——R1和R2。几乎没有人注意到它们消失了,除了那些使用虚拟化技术的特定人群。
      像VMware这类软件模式的虚拟化机(Virtual Machines,以下简称VM)显然必须运行在R0级别上,但如它们要想保持完全控制权,就必须使操作系统在这个级别之外。最显而易见的解决办法是强迫主机操作系统运行在一个较低级别的环中,如R1。它们的部分代码原先被设定为从R0到R3,而不是R1到R3。虽然在PV环境中,你能修改操作系统从而使它工作得很好,但如果你要找到一个圆满的解决方法,就必须使操作系统工作在R1级别中。
      可如此一来又出现问题了,有些指令只有当它们从R0级里发出或发往R0级时才会工作,如果不在正确的环中,这些指令会运作得很古怪。如果你试图这么去做,会有很不好的后果。让代码在正确的环中执行确实能防止操作系统破坏VM,同时也防止运行在主机操作系统上的软件破坏操作系统自身。这就是所谓的“0/1/3”模式。
      还有一种模式被称为“0/3”模式。这种模式将VM放入R0级别中运行,而将操作系统和用户程序都放入R3级别中。但从本质上而言,它还是像“0/1/3”模式一样去处理其他事情。在R3级别里,有特权的操作系统能更轻松地执行用户程序,由于不存在环的阻隔,也使它运行的更快一些,但系统稳定性不佳。
      另外一个方式去使用“0/3”模式,就是让CPU保有两份运行于R0级别中的事物的页表。一份为操作系统,另一份为运行在R3级别中的老程序。这样可拥有一份完整的存储器保护集,用来把用户程序隔离到操作系统空间之外。当然,这同样需要消耗性能,只是以不同的方式罢了。
      概括来说,在“0/1/3”模式中,系统安全性更高一些,但从R3到R1、R3到R0或R1到R0转换时性能会受到一些影响,反过来也是。在“0/3”模式中,只存在R0与R3之间的转换,所以它潜在的比一个非主机操作系统运行得更快一些。但如你碰到一个问题,“0/3”模式比“0/1/3”模式更容易出现蓝屏。尽管未来将广泛使用“0/3”模式,主要是因为上文我们提到向在64位扩展时已去掉了R1和R2,所以你必须被迫使用“0/3”模式。对计算机而言,这被称作是进步,同样,毁灭性的崩溃被认为是“古怪”行为。
      理论上,如果你可忍受一点不稳定性,或者在“0/1/3”模式中牺牲一点速度,那么应该说的很完美的。可它们在某些方面确实还存在一些缺陷,主要存在以下4点。首先是那些检验指令自己所在环的指令,另外是那些处在错误的环中却没有正确保护CPU现场的指令。最后两点是截然相反的,就是那些应引发错误却没有导致错误的指令,以及那些本不该导致错误却引发许多错误的指令。所有这些都让编写VM的天才程序员们活得不轻松。
      其中第一点是显而易见的。如果你给予操作系统R1级别的特权,当它检验自己运行所处的环时,它会返回1而不是0。如果此时运行于该系统的一段程序期望自己应该处在R0环时,那么它会因为得到的是R1而导致错误。这会导致蓝屏的出现,存储器清除或另一些不理想的后果。二元码转译技术可捕捉到这种错误,并把返回值伪装成0,但这意味着需要几十上百条指令来完成这一工作,显然速度受到极大影响。
      保护现场是一个潜在的更糟糕的问题,有些CPU里的东西在上下文开关程序中并不是很容易被保存的。那些隐藏的段寄存器状态就是一个很好的例子。一旦它们被载入主存,其中一部分无法被保存,导致内存常驻部分和CPU中实际值间的不同而引起意外中断。当然我们可为它们设立工作区,但这样做极为复杂且需付出很高的代价使之表现得聪明一些。
      那些本该引起某些问题却没有导致这些问题的指令也是摆在我们眼前的一道难题。如果你期望一条指令应在你后面的设计的中断陷阱中造成错误,但却没有,这一点也不会让人因为没有错误而高兴。与此相反的情况也极为常见,如果不在正确的环中向CR0和CR4写入,则会产生错误,导致系统崩溃。虽然这两种错误在你不注意时可被修正,但却造成很多性能损失。
      整个所涉及到的虚拟化技术就是要将操作系统放在一个它本不应该在的地方,不断地运转去尝试解决所有扑来的问题。存在许多问题,这些问题也不断的发生,所以性能损失也就没什么奇怪的了。
      解决之道
      Intel的VT技术能解决这些困扰。VT的目的是在尽可能最小化程序员痛苦的同时尽可能多的增加“virtualization holes”(虚拟化孔)。这种解决方案中,VT-X针对X86而VT-i针对Itanium,分别引入了一种新的模式针对不同的CPU。这里我们主要来看看VT-X,实际上VT-i的功能与VT-X有很多相同的地方。
      这种新的模式被称为VMX,并且引入了一个虚拟化机监控器VMM运行于其中。它被设定在R0级别下,你可以认为是R-1级或者看成是在环的旁边运行。主机操作系统和所有的程序在VMX模式中运行,与此同时VMM运行在VMX根模式中。
      任何一个运行在VMX模式下的操作系统,都拥有所有运行于非VT系统中的一般操作系统的功能和特性。它也处在R0级别中,与平常一样有权利处理每一件事情,而且并不知道有什么东西正在它的旁边运行。当情况得到授权,CPU进入VMX根模式,VMM就可以切换到其他一个运行在另一VMX实例的操作系统。这些切换被称做VM登录和VM退出。
      VT技术所表现出来的不可思议的地方就在于它将从VMX模式到VMX根模式(或从VMX根模式到VMX模式)的登录和退出处理易于操作。一旦主机操作系统被涉及到,那它一定是独自处在自己的世界里的,你必须保存虚拟化世界的完整状态并当你返回时重新载入它。虽然在VT里还有很多事物要去处理,但它被设计为一项任务,所以客观地说它实际是一个简单而并不费力的进程。
      因为每一个操作系统实例都在正确的位置运行,所以前面所提到的4个问题也就不存在了。相关联的工作区也不再需要,与此有关的系统开销没有了。这些能有效提高速度。但这些并非免费,只是付出的代价要少很多。
      启动一个新的主机操作系统,你需为其留出一块4kB的存储区并将它传递给一个VMPTLRD指令。这块区域将用来存储该系统实例不被激活时的所有状态和重要Bit位。只要该操作系统实例存在,则这块区域一直有效,直到在其上运行一条VMCLEAR指令。这样就设立了一个虚拟化机实例。
      如果你想要把控制权交给虚拟化机,你要么登录VMX非根模式或简单一点,运行VMX模式即可。这些提到的VM登录指令就是VMLAUNCH和VMRESUME,两者并没有太大的区别。VMRESUME指令只是简单地从刚开始已经初始化的4kB存储区里载入CPU状态,并把控制权交给主机操作系统。VMLAUNCH做的也是同样的工作,但它会启动一个虚拟化机控制构件VMCS,它包含一些设立VM的现场背后的记录,因为这需花费一些时间,所以人们尽量避免在并发登录时使用VMLAUNCH。
      从这一点来看,主机操作系统开始了它的愉快之旅,尽可能地运转,毫无察觉是否有其他东西正在它的一旁运行。正如过去所计划的一样,它存在于自己的世界里,全速运行,或接近全速。唯一的问题是你如何打破这一切美好的景象而将它关闭到一边,以使得机器里的其他操作系统能真正运行。这就是VT技术所体现出来的复杂的一面——VMCS中一些特别的位映像。
      这些位映像是一些32位的字段,每一个Bit位标志一个事件。如果某个事件被触发,则对应的Bit位被置位,CPU触发一条VM退出指令,并将控制权返还给运行在VMX根模式下的VMM。VMM可做任何想做的事,然后将VMRESUME指令传递给下一个操作系统,或刚离开的那个操作系统。这个被启动的操作系统同样很好地运行着,直到触发另一条VM退出指令。如此这样以每秒上千次的速度重复着。
      什么能触发这些指令呢?它们可以是引脚信号、CPU、异常和页面错误这些平台事件,所有这些都会触发VM退出指令。VT技术的完美之处在于它有很强的适应性,另一个与此类似之处就是在调试程序中设置断点,你可在每个事件上都设置一个,或者一个也不设置,这都取决于你自己。
      引脚信号事件要做的是当有一个内部中断或一个不可屏蔽中断发生时,则触发退出指令。而CPU事件,则是当你设置任意Bit位在某一字段,当相应的CPU状态接收到它时,则触发退出指令。虽然大多数指令需要去设置,但也有一些指令无条件地引发VM退出指令。这是在一个非常细小的层面上控制VM,允许每当你需要时登录和退出。
      异常位映像也是一些32位的字段,每个Bit位标志每个32位指令地址的异常情况。如果Bit位被设定并有一个异常被抛出,它就会引发VM退出指令。如果Bit位是空的或没有异常,那么主机操作系统则继续它的快乐之旅,与平常一样。这是一种从VMX模式退出而进入VMX根模式的系统开销非常低的方法。
      最后还有页面错误退出,它与异常退出十分相像,只不过它用两个32位字段来控制。这些字段内的Bit位对每一个可能出问题的页面错误代码进行映像,因此你可细心地从中挑选从哪里退出。同样,它也是基于很细小的层面,系统开销也很低。
      在计算机里,VT工作在一个比传统的R0环更有特权的级别中。任何一个主机操作系统都可在没有改变的旧有架构下运行,并且不知道一个控制程序在控制它们。当遭遇到某些用户设置的触发器,控制权将被转交给运行在更高级别的VMX根模式上的VMM。因为这是一种被动触发事件,而不需被积极监视,因此系统开销降到了最低限。
      VT技术使得安装和卸载那些比以往VM模式更稳定的运行环境变得简单。如果你需运行虚拟化系统,没有理由不用一个拥有Vanderpool功能的CPU去实现它,而软件虚拟化机会逐渐不被人关注。
      这也许不错,但必须记得,这必须付出代价。每一次登录意味着建立4kB的存储区域,每一次退出要向这4kB存储区内写入数据。这看上去有些耗费过多,可与那些较老的方式比较,它的速度惊人地快。
      在这里插入图片描述

    四、常见虚拟化技术的应用实践

    虚拟化,正以革命者的姿态,冲上了信息化时代的前沿。应用是王道的终极目标,加速着应用程序虚拟化技术的快速发展,中外两大厂商都在积极研发,推动着技术革新。市面上,一些远程接入厂商和应用接入厂商也积极在转型,加入应用虚拟化大军,诸多迹象表明,远程接入技术和应用接入技术必将过渡到应用虚拟化技术领域。  在IT应用高度发展的当前,应用虚拟化技术,以崭新的架构和强大的功能,突破了应用瓶颈问题,满足了巨大而迫切的市场需求。但是,作为一个刚出道不久的“新军”,其产品和技术上的成熟度有待考量。有专家认为,应用虚拟化这项前瞻性技术,要继续深入企业并最终形成成熟的信息化基础平台,性能优化、本地化输入、安全策略和虚拟打印四大参数将成为衡量这一技术的决定性因素。

    在这里插入图片描述
    从企业应用的需求来看,已经不再是单独的解决方案能够满足的了,而是需要是一种组合式的解决方案,形象的说就是需要“组合拳”。特别针对于企业的信息化建设,不再是单纯的技术能够解决了,而是需要多种技术组合的一个基础平台。要得最好的体验和应用,单纯的远程接入技术已经远远不能满足了,而是需要一种崭新的应用虚拟化技术来满足。这项技术已经为部分企业带来了前所未有的应用和体验。从行业发展的长远角度看,“应用虚拟化”理念得以成熟,技术上得到提高,应用实践上获得检验,标示着企业应用已经大脚步迈向应用虚拟化时代。 当然,任何一个领域的发展都不是一项技术突破或者产品研发所能主导的,它是一个长期不断的过程,必将需要整个行业共同的努力。基于市场需求,立足用户利益,以不断优化的产品积淀品牌价值,极通科技的这种发展理念或许也值得关注一番。同时也希望更多企业和有志之士投入到这份事业当中,积极探寻,使这个领域得到更为广阔的发展,为社会、为国家、为企业,为我们每一个人带来价值和贡献。
    随着虚拟化应用的加速,各种应用已经不能简单的满足到远程接入这个基础作用,而是全面的从虚拟化的应用、虚拟化的管理等角度来实现。

    虚拟化作为一种优化资源的方法,是将应用程序和操作系统从物理硬件中抽象出来。
    戴尔提供针对特定用途设计的解决方案,可最大限度地减少通常由虚拟化带来的高成本和复杂性。DellPowerEdge服务器和EqualLogic存储的性能可满足苛刻的CPU、内存和I/O需求,能够在一个虚拟化环境中运行多个应用程序,包括I/O密集型数据库应用程序。戴尔尖端的FlexMem网桥技术(应用于PowerEdgeR810和M910服务器)可为虚拟化环境提供两倍的内存和更好的性能。因此,使用相同的软件许可成本可以获得高达两倍的内存容量,无需额外的处理器成本。
    通过融合服务器管理、灾难恢复和存储配置,戴尔将所有业务就绪型配置(全面的虚拟化解决方案,包括服务器、存储、联网和软件)作为符合条件的单一、全面的解决方案予以支持,可消除虚拟化的复杂性。
    这意味着您可以放心并且安全地获得所有虚拟化优势并推动企业发展。
    与部署物理服务器相比,虚拟化使企业可以更快并且更高效地为用户提供新应用程序。戴尔正在申请专利的FlexMem网桥技术提供切实可行的解决方案,能够满足当今应用程序需要每个处理器核心利用更多内存的需求,从而减少在虚拟化环境中运行多个I/O密集型应用程序的性能障碍。
    用户可以选择2插槽DellPowerEdge刀片式服务器和机架式服务器,同时使用多达32个DIMM插槽,从而获得一流的内存可扩展性,以及相当于每个处理器通常可用的两倍的插槽数

    总结

    Intel的VT技术给人们带来了惊喜,它让我们可在硬件级别上完成计算机的虚拟化工作。目前时机成熟了,Intel将首先在其桌面CPU中引入该技术,最新的Pentium 4 6系列CPU就支持VT,这让更多的用户都能涉足到新技术的应用,大大提高了用户使用CPU的效率,编写VMM不再那么困难了。
    不过我们也要清醒地认识到,现有的虚拟化技术不会马上消失,相反它们会变得更为普遍且系统开销问题也正得到改善,而大型服务器提供商们也不会在现有的技术上发生巨大的变化,毕竟目前还用得过去。加上AMD公司也发布了在其64位CPU上使用Pacifica虚拟化技术,因此VT想要取代现有的计算机虚拟化技术或得到人们的认同还需一段时间。可我们相信硬件级别的虚拟化技术毋庸置疑的是未来计算机发展的方向,有着灿烂的前途。

    参考文献

    任总,链接:https://www.jianshu.com/p/40b44441aeb5
    应用虚拟化 .云百科[引用日期2013-05-04]
    益和应用接入系统(EAA)
    天极网[引用日期2015-11-20] CIO
    应用虚拟化五大问题亟待解决 .51cto[引用日期2012-08-20]

    展开全文
  • 二、虚拟化

    千次阅读 2018-05-11 17:18:20
    一、虚拟化技术的发展虚拟化技术和并行计算、分布式计算、网格计算等的发展促进了云计算技术的产生和发展,通过云计算技术,我们将大量的计算机资源组成资源池来创建高度虚拟化的资源提供给用户,即云计算技术解决...
  • 第二章GPU虚拟化方案之——GPU直通模式 目前流行的商用GPU虚拟化方案可以分为以下几类:GPU 直通模式,GPU SRIOV 模式,GPU 半虚拟化(mediated passthrough:包括Intel GVT-g和Nvidia GRID vGPU),VMWare的GPU全...
  • 云计算是一个平台,而搭建云计算时候,使用了虚拟化和没有使用虚拟化的基础设施层有着非常大的区别,前者的资源部署更多是对虚拟机的部署和配置的过程,而后者的资源部署的主要过程则涉及的是从操作系统至上层应用...
  • 虚拟化特性(一)通用虚拟化特性

    千次阅读 多人点赞 2020-03-03 16:18:19
    前面我们说过,云计算是一种模式,而虚拟化是一种技术,我们也说过,云计算1.0时代是以虚拟化为主的,那么虚拟化究竟有什么特性可以使其成为云计算中很重要的部分呢? 回顾 在介绍虚拟化特性之前,我们先回...
  • 关于虚拟化在云计算的应用论文,写的不错,如果有人喜欢云计算的话,可以看看
  •  通过HCIA-Cloud认证,将证明您能够运用云计算IT基础、云计算原理、SingleCLOUD平台基础知识及VDesktop6000系统基础知识等进行基本的操作和维护。拥有通过HCIA-Cloud认证的工程师,意味着运营商或企业有能力完成...
  • 该系统通过建立虚拟栅格和模拟计算机的“象素点”,运用了交互控制技术,动态演示的可视技术,开发出了一套全新的计算机图形学可视教学演示系统.实验表明,直观的动态演示和强烈的视觉效果使学习者真正掌握了图形的...
  • 物理机到虚拟机的迁移(Physical-to-Virtual)P2V 指迁移物理服务器上的操作系统及其上的应用软件和数据到 VMM(Virtual Machine Monitor)管理的虚拟服务器中。这种迁移方式,主要是使用各种工具软件,把物理服务器...
  • 下面我们就来回收这部分:未使用、却占用着的内存 这里吐槽一下VMware的内存回收机制,这就是一个被动技能,只有宿主机内存使用率达到100%左右,才会触发宿主机去回收空闲虚拟机上的占用内存 下面我们开启第三台压测...
  • 云计算和虚拟化 - 虚拟化的介绍

    千次阅读 2013-01-08 10:42:30
    虚拟化(Virtualization)技术是云计算系统的核心组成部分之一,是将各种计算及存储资源充分整合和高效利用的关键技术。  虚拟化的定义:虚拟化是为某些对象创造的虚拟(相对于真实)版本,比如操作系统、计算机系统、...
  • 笔者研究过的虚拟化软件有IBM PowerVM,VMware vSphere,还有Red Hat RHEV。其中,IBM是最早做虚拟化的;vSphere是虚拟化市场最大市场份额的占有者;RHEV则是开源虚拟化软件最好的选择。关于开源和商业软件...
  • 虚拟试衣 原理与应用

    千次阅读 2021-06-29 17:27:54
    它基于用户身体的三维数据,运用计算机图形学原理建立用户自己的三维人体模型,同时大量的服装效果图存储在计算机中,用户可以选择自己喜欢的服装,将选择的服装“穿”到自己的三维人体模型上,最终得到用户三维人体...
  • 它不仅具有具有和其他EDA工具一样的原理图编辑、印刷电路板(PCB)设计及电路仿真功能,的特色是其电路仿真的交互和可视。通过Proteus软件的VSM(虚拟仿真模式),用户可以对模拟电路、数字电路、模数混合电路、...
  • 腾讯云虚拟化:坚定的开源主义者

    千次阅读 2020-11-05 16:02:19
    腾讯云虚拟化技术团队正在思考,采用什么样的技术栈,能够保障好更大规模云上用户业务安全性、连续性和稳定性。 业界当时最主流的虚拟化技术是Xen,由剑桥大学开发。不管其他云服务商,还是腾讯内部,Xen都是计算...
  • 虚拟化与云计算中提到云计算最重要的就是服务器虚拟化和调度(Scheduler),本文将简单介绍服务器虚拟化原理。 服务器虚拟化是指将一台计算机(称为物理机、物理服务器)通过hypervisor虚拟为多台逻辑计算机的技术,...
  • 虚拟化技术笔记

    千次阅读 2014-06-18 11:25:48
    虚拟化技术理解 Created Wednesday 05 March 2014 虚拟机监控程序 : Virtual Machine Monitor 简称VMM虚拟化最大优势: 将不同的应用程序或者服务器运行在不同的虚拟机中, 可以不同不同程序间的相互干扰...
  • 网络作为边缘虚机的底层基础设施之一,其重要性也是不言而喻,它承担着虚拟机实例南北向、东西向的流量连通性职能,而 tun/tap 设备正是 qemu 连通 vm 内外网络的重要虚拟设备。
  • 大数据技术原理运用习题总结

    千次阅读 2021-11-05 22:18:17
    A、虚拟化 B、分布式存储 C、分布式计算 D、多租户 答案:ABCD 7. 【多选题】按照服务对象划分,云计算包括________。 A、定向云 B、公有云 C、私有云 D、混合云 答案:BCD 8 .【填空题】第三次信息化浪潮的标志...
  • 它不仅具有具有和其他EDA工具一样的原理图编辑、印刷电路板(PCB)设计及电路仿真功能,最大的特色是其电路仿真的交互和可视。通过Proteus软件的VSM(虚拟仿真模式),用户可以对模拟电路、数字电路、模数混合...
  • “软件正在吞噬世界,所有过去特定硬件实现的功能,现在都会通过软件实现”,传统封闭的... 6叁、PLC的虚拟化和软件定义... 11零、前言互联网是一个颇具颠覆性和侵略性的思想和体系,从它的诞生之日起短短十多年时间...
  • 日前,Force10网络公司在业界率先推出“开放式自动化”(Open Automation)解决方案。... Force10公司新推的“开放式自动化”方案以其成熟的、久经市场验证的虚拟化框架为基础,通过利用Force10操作系统(FTOS)模
  • USB虚拟化和虚拟桌面USB重定向

    千次阅读 2016-04-04 11:46:17
    随着虚拟化技术的盛行和发展,在虚拟化中引入对USB技术的支持,是必须的必然的结果,同时,由于传统桌面使用USB技术和大量的外设进行交互,因而在使用和实现虚拟桌面的时候,必须引入对USB技术的支持,以达到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,022
精华内容 12,008
关键字:

虚拟化运用什么原理

友情链接: RG-Perl-IRC-Bot.zip