zoukankan      html  css  js  c++  java
  • 虚拟化的概念

    题注:最近在学习虚拟化技术,这是自己的一些笔记。

    虚拟化的概念


    虚 拟化技术的产生是计算机技术发展道路上的一个趋势和必然现象,在计算机发展道路上起到了重要的作用,虚拟化的技术早在20世纪50年代就已经提出,第一次 将虚拟化的技术应用到商业应用中还是20世纪的60年代,并且将虚拟化技术提出并应用到商业中的第一个公司就是IBM,IBM可以说是在虚拟化技术方面一 直是领导者,现在虚拟化的技术用到的地方太多了,随便举例吧,无论是操作系统的虚拟内存,还是说是虚拟机或者目前的服务器的虚拟化或者是PC的虚拟化等都 是离不开虚拟化技术。随着虚拟化技术的广泛使用,为数据中心和应用部署带来了新的管理与部署方式,虚拟化技术的使用,提高了高效便捷的管理,提高了资源的 利用率,虚拟化技术目前以成为多家商业巨头的重要企业战略。

    虚拟化就是将原本运行在真实环境上的计算机系统或组件运行在虚拟出来的环境 中。一般来说,计算机系统分为若干层次,从下至上包括底层硬件资源、操作系统、 操作系统提供的应用程序编程接口,以及运行在操作系统之上的应用程序。虚拟化技术可以在这些不同层次之间构建虚拟化层,向上提供与真实层次相同或类似的功 能,使得上层系统可以运行在该中间层之上。这个中间层可以解除其上下两层间原本存在的耦合关系,使上层的运行不依赖于下层的具体实现。由于引入了中间层, 虚拟化不可避免地会带来一定的性能影响,但是随着虚拟化技术的发展,这样的开销在不断地减少。根据所处具体层次的不同,“虚拟化”这个概念也具有不同的内 涵,为“虚拟化”加上不同的定语,就形成不同的虚拟化技术。目前,应用比较广泛的虚拟化技术有基础设施虚拟化、系统虚拟化和软件虚拟化等类型。

    操 作系统中的虚拟内存技术是计算机业内认知度最广的虚拟化技术。在操作系统中的虚拟内存的的思想就是操作系统在硬盘的某个区域内,将内存中不使用的状态数据 IO到硬盘上,等到某个程序需要使用的数据不在内存中的时候,通过IO操作,将应聘的数据IO到内存中,就算我们的本身的内存很小,但是我们却能运行数据 量很大的程序,原因就是因为,我们在把数据装入内存的过程中,并不是一次性的全部加载。虚拟内存技术屏蔽了程序所需内存空间的存储位置和访问方式等实现细 节,使程序看到的是一个统一的地址空间。可以说,虚拟内存技术向上提供透明的服务时,不论是程序开发人员还是普通用户都感觉不到它的存在。这也体现了虚拟 化的核心理念,以一种透明的方式提供抽象了的底层资源。

    关于虚拟化的概念,没有一个标准的定义。

    • 维基百科:“虚拟化是表示计算机资源的抽象方法,通过虚拟化可以用与访问抽象前资源一致的方法访问抽象后的资源。这种资源的抽象方法并不受实现、地理位置或底层资源的物理配置的限制。”
    • 信息技术术语库:“虚拟化是为某些事物创造的虚拟(相对于真实)版本,比如操作系统、计算机系统、存储设备和网络资源等。”
    • “虚拟化是为一组类似资源提供一个通用的抽象接口集,从而隐藏属性和操作之间的差异,并允许通过一种通用的方式来查看并维护资源。”——Open Grid Services Architecture

    尽管以上几种定义表述方式不尽相同,但仔细分析一下,不难发现它们都阐述了三层含义:

    • 虚拟化的对象是各种各样的资源;
    • 经过虚拟化后的逻辑资源对用户隐藏了不必要的细节;
    • 用户可以在虚拟环境中实现其在真实环境中的部分或者全部功能。

    虚 拟化的主要目标是对包括基础设施、系统和软件等IT资源的表示、访问和管理进行简化,并为这些资源提供标准的接口来接收输入和提供输出。虚拟化的使用者可 以是最终用户、应用程序或者是服务。通过标准接口,虚拟化可以在IT基础设施发生变化时将对使用者的影响降到最低。最终用户可以重用原有的接口,因为他们 与虚拟资源进行交互的方式并没有发生变化,即使底层资源的实现方式已经发生了改变,他们也不会受到影响。

    虚拟化技术降低了资源使用者与资源具体实现之间的耦合程度,让使用者不再依赖于资源的某种特定实现。利用这种松耦合关系,系统管理员在对IT资源进行维护与升级时,可以降低对使用者的影响。

    虚拟化的分类


    可 虚拟化的资源有多种多样,我们前面也是给出了按照软硬件方面的内容,来分析的,一般都是软硬件相结合的形式,下面我们来按照虚拟化的分类来讲述下,虚拟化 资源的不同类型,针对每个类型虚拟化的具体的作用和功效是什么,我们来简单的分析下。我们先看下可虚拟化资源的整体结构。

    Image(2)

    1. 基础设施虚拟化

    由于网络、存储和文件系统同为支撑数据中心运行的重要基础设施,因此本书将网络虚拟化、存储虚拟化归类为基础设施虚拟化。

    网 络虚拟化是指将网络的硬件和软件资源整合,向用户提供虚拟网络连接的虚拟化技术。网络虚拟化可以分为局域网络虚拟化和广域网络虚拟化两种形式。在 局域网络虚拟化中,多个本地网络被组合成为一个逻辑网络,或者一个本地网络被分割为多个逻辑网络,并用这样的方法来提高大型企业自用网络或者数据中心内部 网络的使用效率。该技术的典型代表是虚拟局域网(Virtual LAN, VLAN)。对于广域网络虚拟化,目前最普遍的应用是虚拟专用网(Virtual Private Network, VPN)。虚拟专用网抽象化了网络连接,使得远程用户可以随时随地访问公司的内部网络,并且感觉不到物理连接和虚拟连接的差异性。同时,VPN保证这种外 部网络连接的安全性与私密性。

    存储虚拟化是指为物理的存储设备提供一个抽象的逻辑视图,用户可以通过这个视图中的统一逻辑接口来访问被整合的存储资源。存储虚拟化主要有基于存储设备的存储虚拟化和基于网络的存储虚拟化两种主要形
    式。 磁盘阵列技术(Redundant Array of Inexpensive Disks, RAID)是基于存储设备的存储虚拟化的典型代表,该技术通过将多块物理磁盘组合成为磁盘阵列,用廉价的磁盘设备实现了一个统一的、高性能的容错存储空 间。网络附加存储(Network Attached Storage, NAS)和存储区域网(StorageArea Network, SAN)则是基于网络的存储虚拟化技术的典型代表。

    存储虚拟化是指把物理上分散存储的众多文件整合为一个统一的逻辑视图,方便用户访问,提高文件管理的效率。存储设备和系统通过网络连接起来,用户在访问数据时并不知道真实的物理位置。它还使管理员能够在一个控制台上管理分散在不同位置的异构设备上的数据。

    2. 系统虚拟化

    正 如上文所述,目前对于大多数熟悉或从事IT工作的人来说,“虚拟化”这个词在脑海里的第一印象就是在同一台物理机上运行多个独立的操作系统,即所 谓的系统虚拟化。系统虚拟化是被最广泛接受和认识的一种虚拟化技术。系统虚拟化实现了操作系统与物理计算机的分离,使得在一台物理计算机上可以同时安装和 运行一个或多个虚拟的操作系统。在操作系统内部的应用程序看来,与使用直接安装在物理计算机上的操作系统没有显著差异。

    系统虚拟化的 核心思想是使用虚拟化软件在一台物理机上虚拟出一台或多台虚拟机(Virtual Machine, VM)。虚拟机是指使用系统虚拟化技术,运行在一个隔离环境中、具有完整硬件功能的逻辑计算机系统,包括客户操作系统和其中的应用程序。在系统虚拟化中, 多个操作系统可以互不影响地在同一台物理机上同时运行,复用物理机资源。

    Image

    系统虚拟化

    系 统虚拟化更大的价值在于服务器虚拟化。目前,数据中心大量使用x86服务器,一个大型的数据中心中往往托管了数以万计的x86服务器。出于安全、 可靠和性能的考虑,这些服务器基本只运行着一个应用服务,导致了服务器利用率低下。由于服务器通常具有很强的硬件能力,如果在同一台物理服务器上虚拟出多 个虚拟服务器,每个虚拟服务器运行不同的服务,这样便可提高服务器的利用率,减少机器数量,降低运营成本,节省物理存储空间及电能,从而达到既经济又环保 的目的。

    除了在个人电脑和服务器上采用虚拟机进行系统虚拟化以外,桌面虚拟化同样可以达到在同一个终端环境运行多个不同系统的目的。 桌面虚拟化解除了个人电 脑的桌面环境(包括应用程序和文件等)与物理机之间的耦合关系。经过虚拟化后的桌面环境被保存在远程的服务器上,而不是在个人电脑的本地硬盘上。这意味着 当用户在其桌面环境上工作时,所有的程序与数据都运行和最终被保存在这个远程的服务器上,用户可以使用任何具有足够显示能力的兼容设备来访问和使用自己的 桌面环境,如个人电脑、智能手机等。

    3. 软件虚拟化

    除了针对基础设施和系统的虚拟化技术,还有另一种针对软件的虚拟化环境,如用户所使用的应用程序和编程语言,都存在着相对应的虚拟化概念。目前,业界公认的这类虚拟化技术主要包括应用虚拟化和高级语言虚拟化。

    应 用虚拟化将应用程序与操作系统解耦合,为应用程序提供了一个虚拟的运行环境。在这个环境中,不仅包括应用程序的可执行文件,还包括它所需要的运行 时环境。当用户需要使用某款软件时,应用虚拟化服务器可以实时地将用户所需的程序组件推送到客户端的应用虚拟化运行环境。当用户完成操作关闭应用程序后, 他所做的更改和数据将被上传到服务器集中管理。这样,用户将不再局限于单一的客户端,可以在不同的终端上使用自己的应用。

    高级语言虚 拟化解决的是可执行程序在不同体系结构计算机间迁移的问题。在高级语言虚拟化中,由高级语言编写的程序被编译为标准的中间指令。这些中间 指令在解释执行或动态翻译环境中被执行,因而可以运行在不同的体系结构之上。例如,被广泛应用的Java虚拟机技术,它解除下层的系统平台(包括硬件与操 作系统)与上层的可执行代码之间的耦合,来实现代码的跨平台执行。用户编写的Java源程序通过JDK提供的编译器被编译成为平台中立的字节码,作为 Java虚拟机的输入。Java虚拟机将字节码转换为在特定平台上可执行的二进制机器代码,从而达到了“一次编译,处处执行”的效果。

    当然,根据分类依据的不同,也存在着一些其他类型的虚拟化,如硬件虚拟化(VMWare、KVM、Xen等)、操作系统虚拟化(OpenVZ、LWVM等)、指令级虚拟化(模拟器,QEMU等)。

    参考:

    http://www.cnblogs.com/hegezhou_hot/archive/2011/01/09/1931477.html

    http://book.51cto.com/art/201005/198362.htm

  • 相关阅读:
    洛谷P3747 [六省联考2017]相逢是问候
    染色(dye)
    BZOJ1426: 收集邮票
    消息队列RabbitMQ
    CRM
    BBS
    版本控制
    RESTful API
    Luffy
    axios使用
  • 原文地址:https://www.cnblogs.com/feisky/p/2054830.html
Copyright © 2011-2022 走看看