虚拟化技术

合集下载

什么是虚拟化技术

什么是虚拟化技术

什么是虚拟化技术虚拟化技术的崛起与应用虚拟化技术是当今信息技术领域中的一项重要技术,它不仅在企业领域广泛应用,而且在云计算、网络安全、数据中心管理等多个领域也发挥着关键作用。

本文将深入探讨什么是虚拟化技术以及它的应用,以帮助读者更好地理解这一重要概念。

虚拟化技术是一种通过软件或硬件实现的技术,它允许将物理资源(如服务器、存储和网络)划分为多个虚拟资源的过程。

这些虚拟资源可以独立运行,就像它们是物理资源一样。

虚拟化的主要目标是提高资源利用率、降低成本、提高灵活性和可扩展性。

虚拟化技术的关键概念包括:1. **虚拟机(VM):** 虚拟机是虚拟化的基本单位,它是一个独立的操作系统实例,可以在物理服务器上运行。

每个虚拟机都有自己的资源分配,包括处理器、内存、存储和网络。

2. **宿主机:** 宿主机是运行虚拟机的物理服务器。

它负责虚拟机的创建、管理和资源分配。

3. **Hypervisor:** Hypervisor是虚拟化软件或硬件,它允许多个虚拟机共享同一台物理服务器。

有两种主要类型的Hypervisor:Type 1(裸机Hypervisor)直接运行在物理硬件上,而Type 2(主机模式Hypervisor)运行在操作系统之上。

虚拟化技术的应用:1. **服务器虚拟化:** 服务器虚拟化是虚拟化技术的最常见应用之一。

它允许多个虚拟服务器在同一台物理服务器上运行,从而降低硬件成本,提高资源利用率,并简化管理。

知名的虚拟化平台包括VMware vSphere、Microsoft Hyper-V和KVM。

2. **桌面虚拟化:** 桌面虚拟化允许将多个虚拟桌面部署在单个服务器或云环境中。

这对于大型组织来说是一种管理桌面环境的有效方式,可以提高数据安全性,降低维护成本。

3. **存储虚拟化:** 存储虚拟化将多个存储设备抽象为一个单一的虚拟存储池,提供了更好的数据管理和可扩展性。

这有助于简化存储管理,并提高数据可用性。

什么是虚拟化技术

什么是虚拟化技术

什么是虚拟化技术虚拟化技术是一种将计算机资源进行抽象化的技术手段,通过软件或者硬件的虚拟化,将一台物理服务器分割成多个虚拟机,并使多个虚拟机能够独立运行不同的操作系统和应用程序。

通过虚拟化技术,可以更好地利用硬件资源,提升服务器的性能和灵活性。

本文将从虚拟化技术的基本原理、应用场景以及优势与挑战等方面来详细介绍什么是虚拟化技术。

一、虚拟化技术的基本原理虚拟化技术的基本原理是通过创建虚拟机管理器(VMM)来实现。

虚拟机管理器是一种软件或者硬件的抽象层,负责在物理服务器上创建、启动和管理多个虚拟机。

每个虚拟机拥有自己的独立的软件环境,包括操作系统、应用程序和虚拟硬件。

在虚拟化技术中,有两种主要的虚拟化方式:全虚拟化和半虚拟化。

全虚拟化方式通过在虚拟机中模拟全套的硬件,使得虚拟机能够完全独立运行。

而半虚拟化方式则是通过修改操作系统内核,使得虚拟机可以与宿主机共享硬件资源,提高性能的同时也减少了对硬件的要求。

二、虚拟化技术的应用场景虚拟化技术在各个领域都有广泛的应用。

以下是几个典型的应用场景:1. 服务器虚拟化:通过虚拟化技术,可以将一台物理服务器划分为多个虚拟机,提升服务器的利用率。

不同的虚拟机可以运行不同的操作系统和应用程序,实现不同的功能需求。

2. 桌面虚拟化:桌面虚拟化技术可以将用户的桌面环境从本地转移到远程服务器上,用户可以通过终端设备访问虚拟桌面,实现跨平台和远程办公。

3. 网络虚拟化:网络虚拟化技术可以将物理网络划分为多个逻辑网络,实现网络资源的灵活分配和管理。

通过虚拟化技术可以提供更好的网络性能和安全性。

4. 存储虚拟化:存储虚拟化技术将多个物理存储设备抽象为一个逻辑存储池,实现对存储资源的集中管理和分配。

三、虚拟化技术的优势虚拟化技术具有以下几个显著的优势:1. 提高硬件利用率:虚拟化技术可以将一台物理服务器划分为多个虚拟机,提高服务器的资源利用率,节约硬件成本。

2. 灵活性和可扩展性:通过虚拟化技术,可以根据实际需求快速创建、启动和停止虚拟机,实现资源的弹性分配和扩展。

虚拟化技术及其应用

虚拟化技术及其应用

虚拟化技术及其应用虚拟化技术(Virtualization Technology)是一种通过软件手段将一台物理计算机划分成多个虚拟计算环境的技术。

它提供了一种有效的方法,可以在一台服务器上同时运行多个虚拟操作系统,极大地提高了计算资源的利用效率。

虚拟化技术在云计算、数据中心、企业IT架构等领域得到广泛应用,并产生了深远的影响。

一、背景介绍随着信息技术的快速发展和应用需求的不断增加,传统的物理计算机资源利用率低下、资源浪费严重等问题日益凸显。

虚拟化技术的出现解决了这些问题,它通过将物理计算资源抽象为虚拟资源,实现了资源的灵活调度和共享利用。

二、虚拟化技术的分类1.服务器虚拟化服务器虚拟化是最常见和最早应用的虚拟化技术,它通过将一台物理服务器划分成多个虚拟机,从而实现资源的共享和隔离。

服务器虚拟化可以显著提高服务器的利用率,降低硬件成本和维护成本。

2.网络虚拟化网络虚拟化将网络资源进行抽象,使得多个虚拟网络可以在同一个物理网络上运行,实现了网络资源的灵活配置和管理。

网络虚拟化可以提高网络的可用性和性能,简化网络的管理和部署。

3.存储虚拟化存储虚拟化将存储资源进行抽象,使得多个虚拟存储池可以在同一个存储设备上运行。

存储虚拟化可以减少存储资源的浪费,提高存储的利用率和灵活性。

4.桌面虚拟化桌面虚拟化是将多个用户桌面环境运行在同一台物理计算机上的技术。

它可以将用户的桌面环境与应用程序隔离开来,提高数据安全性和管理效率。

三、虚拟化技术的应用1.云计算虚拟化技术是实现云计算的重要基础,它可以将物理计算资源虚拟化为云服务,提供灵活的计算能力、存储空间和网络资源。

云计算通过虚拟化技术可以实现资源的弹性扩展和按需分配,满足不同用户的需求。

2.数据中心虚拟化技术在数据中心中的应用非常广泛,它可以将多台服务器虚拟化为一个统一的资源池,实现资源的自动调度和管理。

同时,虚拟化技术可以提供高可用性和灾备能力,确保数据中心的稳定运行。

虚拟化技术概述

虚拟化技术概述

虚拟化技术概述虚拟化技术是一种将物理资源(如计算机、存储和网络)虚拟化为多个可供使用的虚拟资源的技术。

通过虚拟化,可以实现资源的有效管理、利用和共享,提高资源利用率,并同时提供更好的安全性和灵活性。

一、虚拟化技术的种类1. 服务器虚拟化:服务器虚拟化是将一台物理服务器划分为多个虚拟服务器的技术。

每个虚拟服务器可以运行不同的操作系统和应用程序,提供独立的计算资源,并且能够根据实际需求进行弹性扩展。

2. 桌面虚拟化:桌面虚拟化是将个人电脑的运算能力、操作系统和应用软件等虚拟化,使用户可以通过网络访问虚拟桌面,实现随时随地的使用。

3. 存储虚拟化:存储虚拟化可以将多个存储设备整合为一个虚拟的存储池,并为应用程序提供透明的存储访问。

通过存储虚拟化,可以提高存储资源的利用率和性能,并简化存储管理。

4. 网络虚拟化:网络虚拟化是将物理网络设备抽象为虚拟网络资源,使多个虚拟网络可以共享物理网络的带宽和资源。

通过网络虚拟化,可以提高网络资源的利用率和可管理性。

二、虚拟化技术的优势1. 资源利用率提升:虚拟化技术能够将物理资源划分为多个虚拟资源,并根据实际需求进行动态分配,从而提高资源的利用率。

2. 灵活性和可扩展性:虚拟化技术可以根据业务需求,动态调整虚拟资源的分配,实现快速部署和扩展,提供更好的服务响应能力。

3. 成本降低:通过虚拟化技术,可以减少物理设备的购买和维护成本,简化管理流程,同时降低能源消耗。

4. 安全性增强:虚拟化技术可以实现资源隔离,避免不同用户或应用之间的干扰,提高系统的安全性和稳定性。

5. 管理和维护简化:通过虚拟化管理平台,可以实现统一的资源管理、监控和故障排除,简化管理和维护工作,提高效率。

三、虚拟化技术的应用领域1. 数据中心:虚拟化技术可以在数据中心中实现服务器、存储和网络资源的虚拟化,提高资源利用率和灵活性,降低成本和维护工作量。

2. 云计算:云计算是基于虚拟化技术的一种计算模式,通过虚拟化技术,可以实现资源的弹性伸缩和按需使用,提供灵活的计算服务。

为什么需要虚拟化技术

为什么需要虚拟化技术

为什么需要虚拟化技术虚拟化技术是当今IT领域的一项关键技术,它在云计算、数据中心和企业应用等领域发挥着重要作用。

本文将探讨为什么需要虚拟化技术,并分析其在不同领域的应用。

一、什么是虚拟化技术虚拟化技术是通过软件或硬件手段将物理资源(如服务器、存储设备和网络设备)抽象为逻辑实体,从而使多个操作系统或应用程序可以共享这些资源的技术。

虚拟化技术为企业提供了更高的资源利用率、更灵活的部署方式和更好的可管理性。

二、虚拟化技术的优势1. 资源利用率高:虚拟化技术可以将一个物理服务器划分为多个虚拟机,每个虚拟机可以独立运行操作系统和应用程序,从而提高服务器的利用率。

通过虚拟化技术,企业可以更好地利用现有硬件资源,减少硬件投资成本。

2. 灵活性和可扩展性:虚拟化技术使得企业可以在不影响已有业务的情况下快速部署新的虚拟机。

虚拟机可以根据需要进行动态调整,提供更好的资源分配和负载均衡能力,使企业应对不断变化的业务需求更加灵活。

3. 容灾和可恢复性:虚拟化技术可以将虚拟机的磁盘、内存和配置信息保存为文件,这使得虚拟机可以很容易地进行备份和恢复。

在服务器故障或其他系统故障的情况下,虚拟机可以快速迁移到其他物理服务器上,提高了系统的可用性和容灾能力。

4. 硬件独立性:通过虚拟化技术,应用程序可以独立于底层硬件平台,从而实现应用程序和硬件之间的解耦。

这使得企业可以更灵活地进行硬件升级和替换,而不需要对应用程序进行修改和适配。

三、虚拟化技术在不同领域的应用1. 云计算:虚拟化技术是云计算实现的基础。

通过虚拟化技术,云服务提供商可以将物理服务器资源划分为多个虚拟机实例,为用户提供灵活、可扩展的云计算服务。

虚拟化技术使得云计算资源的使用更加高效和经济,提高了云服务的可用性和可管理性。

2. 数据中心:虚拟化技术可以帮助企业提高数据中心的资源利用率和运维效率。

通过虚拟化技术,企业可以将多个物理服务器整合为一个虚拟化集群,实现资源统一管理和动态调度。

虚拟化技术的理解

虚拟化技术的理解

虚拟化技术的理解什么是虚拟化技术虚拟化技术是一种将物理资源抽象为逻辑资源的技术,它可以通过软件层面的虚拟化实现多个独立的虚拟环境,使得一台物理机可以模拟出多台逻辑上独立的虚拟机。

这种技术可以将计算、存储、网络等资源进行有效的利用和管理,提供更高的资源利用率和灵活性。

虚拟化技术的分类虚拟化技术可以分为以下几种类型:1. 服务器虚拟化服务器虚拟化是最常见的一种虚拟化技术,它将一台物理服务器划分为多个虚拟服务器,每个虚拟服务器可以独立运行不同的操作系统和应用程序。

这种虚拟化技术可以有效地利用服务器的资源,提高服务器的利用率和可靠性。

2. 桌面虚拟化桌面虚拟化是将一台物理的桌面主机划分为多个虚拟桌面,每个虚拟桌面可以独立运行不同的操作系统和应用程序。

这种虚拟化技术可以使得用户可以在任意设备上访问自己的桌面环境,实现跨平台和移动办公。

3. 存储虚拟化存储虚拟化是将多个物理存储设备汇集在一起,形成一个虚拟的存储池,对外提供统一的存储服务。

这种虚拟化技术可以简化存储管理,提高存储的利用率和可靠性。

4. 网络虚拟化网络虚拟化是将一个物理网络划分为多个逻辑网络,每个逻辑网络可以独立运行,提供独立的网络服务和安全隔离。

这种虚拟化技术可以使得网络资源得到更好的利用,提供灵活的网络配置和管理。

虚拟化技术的原理虚拟化技术的核心原理是通过在物理层和逻辑层之间引入一个虚拟层,将物理资源抽象为逻辑资源。

虚拟层负责管理和分配物理资源,提供独立的虚拟环境给用户使用。

在服务器虚拟化中,虚拟层通常由一个称为虚拟机监视器(VMM)的软件实现。

VMM 负责模拟硬件接口,将虚拟机的操作系统误以为在运行在真实的硬件上。

虚拟机将其对硬件的请求发送给VMM,VMM再将其翻译为相应的物理资源的请求,通过调度和管理物理资源,实现虚拟机之间的隔离和资源的共享。

在桌面虚拟化中,虚拟层通常由一个称为虚拟桌面管理器的软件实现。

虚拟桌面管理器负责将用户的桌面环境映射到虚拟桌面上,并提供远程访问功能,使得用户可以在任意设备上访问自己的桌面环境。

虚拟化技术的优势与局限性

虚拟化技术的优势与局限性

虚拟化技术的优势与局限性虚拟化技术是一种将计算资源进行抽象化和隔离的技术,它在当前的信息技术领域中具有重要的意义和应用价值。

本文将围绕虚拟化技术的优势与局限性展开讨论。

一、虚拟化技术的优势1. 提高资源利用率:虚拟化技术可以将一台物理服务器划分为多个虚拟机,每个虚拟机可以独立运行不同的操作系统和应用程序。

这种方式能够充分利用服务器的计算、存储和网络资源,从而提高资源的利用率。

2. 简化管理和维护:采用虚拟化技术后,管理员可以通过统一的管理平台对虚拟机进行集中管理。

相对于传统物理服务器的管理方式,虚拟化技术可以减少人力成本,提高管理效率。

3. 提高可靠性和可恢复性:虚拟化技术能够将虚拟机的状态保存为文件,可以轻松实现虚拟机的备份、迁移和恢复操作。

当一台物理服务器发生故障时,可以迅速将虚拟机迁移到其他正常的服务器上,从而保证业务的连续性和可靠性。

4. 加强安全性:虚拟化技术通过隔离不同虚拟机之间的访问,可以提高系统的安全性。

即使一个虚拟机受到攻击或感染病毒,也不会影响其他虚拟机的正常运行。

5. 节约成本:通过虚拟化技术,企业可以减少物理服务器的数量,从而降低硬件采购和维护的成本。

同时,虚拟化技术还可以提高能源利用效率,降低能源开支。

二、虚拟化技术的局限性1. 性能损失:虚拟化技术在提高资源利用率的同时,也会引入一定的性能损失。

由于虚拟化层的存在,虚拟机的性能可能会比物理机略有下降。

尤其是对于需要大量计算和存储资源的应用程序来说,虚拟化技术可能无法满足其高性能的需求。

2. 安全性问题:虚拟化技术的广泛应用给系统的安全性带来了新的挑战。

虚拟机之间的隔离并非绝对安全,一些安全漏洞可能会导致虚拟机之间的相互影响。

此外,虚拟化管理平台也可能受到攻击,进而影响整个虚拟化环境的安全性。

3. 资源竞争:当多个虚拟机共享同一物理服务器的资源时,可能会出现资源竞争的情况。

例如,某个虚拟机的高负载可能会导致其他虚拟机性能下降。

什么是虚拟化技术

什么是虚拟化技术

什么是虚拟化技术在计算机科学领域中,虚拟化技术是指在一台物理计算机上运行多个逻辑的操作系统。

虚拟化技术可以将单一的物理服务器分割成多个虚拟服务器,每个虚拟服务器都可以运行相互隔离的操作系统和应用程序,就像它们是在不同的物理服务器上运行一样。

虚拟化技术是一种创新性的技术,它使得操作系统和应用程序可以独立地运行在同一台物理服务器上,同时保证每个虚拟服务器的安全性和稳定性。

虚拟化技术不仅可以有效减少服务器数量,减少成本,同时还可以提高计算机系统的可用性和灵活性。

在虚拟化技术的实现中,有两种主要的虚拟化方式:全虚拟化和半虚拟化。

全虚拟化全虚拟化是一种将物理计算机全部虚拟化的技术,它可以在一台物理计算机上同时运行多个不同的操作系统。

全虚拟化采用的是虚拟机监控器(VMM)来管理整个虚拟化过程,VMM负责为每个虚拟机提供对底层硬件的访问。

全虚拟化使得不同操作系统可以同时共享同一台物理计算机的资源。

每个虚拟服务器运行在独立的虚拟机中,它们可以拥有自己的内存、CPU资源、存储设备等,并以独立的方式运行操作系统和应用程序。

全虚拟化方案的优点在于它提供了高度的安全性、可靠性和可扩展性。

半虚拟化半虚拟化技术也可以将单一的物理计算机划分成多个虚拟服务器,但是与全虚拟化不同,半虚拟化并不是虚拟化硬件层。

它是在虚拟机中使用修改过的操作系统,这些操作系统被称为“修改过的客户机操作系统”。

在半虚拟化中,虚拟机中的操作系统需要与虚拟化后的内核交互,从而实现资源共享和分配。

与全虚拟化相比,半虚拟化的优势在于它比全虚拟化要更高效和更节约资源。

虚拟化技术在当今的计算机科学领域中得到了广泛的应用。

虚拟化技术可以使得用户可以利用更少的硬件资源去运行更多的服务。

虚拟化技术不仅可以提高数据中心的利用率,同时可以将物理设备的部署和管理任务自动化,使IT工作更加高效并且容易维护。

总之,虚拟化技术是一项具有划时代意义的技术,它可以在计算机系统架构设计中发挥重要的作用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

虚拟化技术简介什么是虚拟化虚拟化(Virtualization)技术最早出现在20 世纪60 年代的IBM 大型机系统,在70年代的System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。

随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了IT 成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中。

虚拟化是一个广义的术语,对于不同的人来说可能意味着不同的东西,这要取决他们所处的环境。

在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念。

例如对物理内存的抽象,产生了虚拟内存技术,使得应用程序认为其自身拥有连续可用的地址空间(Address Space),而实际上,应用程序的代码和数据可能是被分隔成多个碎片页或段),甚至被交换到磁盘、闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。

虚拟化技术的分类虚拟化技术主要分为以下几个大类[1]:平台虚拟化(Platform Virtualization),针对计算机和操作系统的虚拟化。

资源虚拟化(Resource Virtualization),针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。

应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术等。

我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称为Virtual Machine Monitor 或Hypervisor),隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。

虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚拟机监控器的操作系统被称为主机操作系统(Host OS),当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上(如VMWARE 的ESX 产品)。

运行虚拟机的真实系统我们称之为主机系统。

平台虚拟化技术又可以细分为如下几个子类:全虚拟化(Full Virtualization)全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。

操作系统与真实硬件之间的交互可以看成是通过一个预先规定的硬件接口进行的。

全虚拟化VMM 以完整模拟硬件的方式提供全部接口(同时还必须模拟特权指令的执行过程)。

举例而言,x86 体系结构中,对于操作系统切换进程页表的操作,真实硬件通过提供一个特权CR3 寄存器来实现该接口,操作系统只需执行"mov pgtable,%%cr3" 汇编指令即可。

全虚拟化VMM 必须完整地模拟该接口执行的全过程。

如果硬件不提供虚拟化的特殊支持,那么这个模拟过程将会十分复杂:一般而言,VMM 必须运行在最高优先级来完全控制主机系统,而Guest OS 需要降级运行,从而不能执行特权操作。

当Guest OS 执行前面的特权汇编指令时,主机系统产生异常(General Protection Exception),执行控制权重新从Guest OS 转到VMM 手中。

VMM 事先分配一个变量作为影子CR3 寄存器给Guest OS,将pgtable 代表的客户机物理地址(Guest Physical Address)填入影子CR3 寄存器,然后VMM 还需要pgtable 翻译成主机物理地址(Host Physical Address)并填入物理CR3 寄存器,最后返回到Guest OS中。

随后VMM 还将处理复杂的Guest OS 缺页异常(Page Fault)。

比较著名的全虚拟化VMM 有Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac 和QEMU。

超虚拟化(Paravirtualization)这是一种修改Guest OS 部分访问特权状态的代码以便直接与VMM 交互的技术。

在超虚拟化虚拟机中,部分硬件接口以软件的形式提供给客户机操作系统,这可以通过Hypercall(VMM 提供给Guest OS 的直接调用,与系统调用类似)的方式来提供。

例如,Guest OS 把切换页表的代码修改为调用Hypercall 来直接完成修改影子CR3 寄存器和翻译地址的工作。

由于不需要产生额外的异常和模拟部分硬件执行流程,超虚拟化可以大幅度提高性能,比较著名的VMM 有Denali、Xen。

硬件辅助虚拟化(Hardware-Assisted Virtualization)硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。

例如有了Intel-VT 技术的支持,Guest OS 和VMM 的执行环境自动地完全隔离开来,Guest OS 有自己的“全套寄存器”,可以直接运行在最高级别。

因此在上面的例子中,Guest OS 能够执行修改页表的汇编指令。

Intel-VT 和AMD-V 是目前x86 体系结构上可用的两种硬件辅助虚拟化技术。

部分虚拟化(Partial Virtualization)VMM 只模拟部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运行的,其它程序可能也需要进行修改。

在历史上,部分虚拟化是通往全虚拟化道路上的重要里程碑,最早出现在第一代的分时系统CTSS 和IBM M44/44X 实验性的分页系统中。

操作系统级虚拟化(Operating System Level Virtualization)在传统操作系统中,所有用户的进程本质上是在同一个操作系统的实例中运行,因此内核或应用程序的缺陷可能影响到其它进程。

操作系统级虚拟化是一种在服务器操作系统中使用的轻量级的虚拟化技术,内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程,不同实例中的进程完全不了解对方的存在。

比较著名的有Solaris Container [2],FreeBSD Jail 和OpenVZ 等。

这种分类并不是绝对的,一个优秀的虚拟化软件往往融合了多项技术。

例如VMware Workstation 是一个著名的全虚拟化的VMM,但是它使用了一种被称为动态二进制翻译的技术把对特权状态的访问转换成对影子状态的操作,从而避免了低效的Trap-And-Emulate 的处理方式,这与超虚拟化相似,只不过超虚拟化是静态地修改程序代码。

对于超虚拟化而言,如果能利用硬件特性,那么虚拟机的管理将会大大简化,同时还能保持较高的性能。

本文讨论的虚拟化技术只针对x86 平台(含AMD 64),并假定虚拟机中运行的Guest OS 也是为x86 平台设计的。

--------------------------------------------------------------------------------回页首纯软件虚拟化技术的原理及面临的挑战虚拟机监控器应当具备的条件1974 年,Popek 和Goldberg 在《Formal Requirements for Virtualizable Third Generation Architectures》[3] 论文中提出了一组称为虚拟化准则的充分条件,满足这些条件的控制程序可以被称为虚拟机监控器(Virtual Machine Monitor,简称VMM):资源控制。

控制程序必须能够管理所有的系统资源。

等价性。

在控制程序管理下运行的程序(包括操作系统),除时序和资源可用性之外的行为应该与没有控制程序时的完全一致,且预先编写的特权指令可以自由地执行。

效率性。

绝大多数的客户机指令应该由主机硬件直接执行而无需控制程序的参与。

尽管基于简化的假设,但上述条件仍为评判一个计算机体系结构是否能够有效支持虚拟化提供了一个便利方法,也为设计可虚拟化计算机架构给出了指导原则。

原理简介我们知道,传统的x86 体系结构缺乏必要的硬件支持,任何虚拟机监控器都无法直接满足上述条件,所以不是一个可虚拟化架构,但是我们可以使用纯软件实现的方式构造虚拟机监控器。

虚拟机是对真实计算环境的抽象和模拟,VMM 需要为每个虚拟机分配一套数据结构来管理它们状态,包括虚拟处理器的全套寄存器,物理内存的使用情况,虚拟设备的状态等等。

VMM 调度虚拟机时,将其部分状态恢复到主机系统中。

并非所有的状态都需要恢复,例如主机CR3 寄存器中存放的是VMM 设置的页表物理地址,而不是Guest OS 设置的值。

主机处理器直接运行Guest OS 的机器指令,由于Guest OS运行在低特权级别,当访问主机系统的特权状态(如写GDT 寄存器)时,权限不足导致主机处理器产生异常,将运行权自动交还给VMM。

此外,外部中断的到来也会导致VMM 的运行。

VMM 可能需要先将该虚拟机的当前状态写回到状态数据结构中,分析虚拟机被挂起的原因,然后代表Guest OS 执行相应的特权操作。

最简单的情况,如Guest OS 对CR3 寄存器的修改,只需要更新虚拟机的状态数据结构即可。

一般而言,大部分情况下,VMM 需要经过复杂的流程才能完成原本简单的操作。

最后VMM 将运行权还给Guest OS,Guest OS 从上次被中断的地方继续执行,或处理VM M “塞”入的虚拟中断和异常。

这种经典的虚拟机运行方式被称为Trap-And-Emulate,虚拟机对于Guest OS 完全透明,Guest OS 不需要任何修改,但是VMM 的设计会比较复杂,系统整体性能受到明显的损害。

面临的挑战在设计纯软件VMM 的时候,需要解决如下挑战[4]:确保VMM 控制所有的系统资源。

x86 处理器有4 个特权级别,Ring 0 ~ Ring 3,只有运行在Ring 0 ~ 2 级时,处理器才可以访问特权资源或执行特权指令;运行在Ring 0 级时,处理器可以访问所有的特权状态。

x86 平台上的操作系统一般只使用Ring 0 和Ring 3 这两个级别,操作系统运行在Ring 0 级,用户进程运行在Ring 3 级。

为了满足上面的第一个充分条件-资源控制,VMM 自己必须运行在Ring 0 级,同时为了避免Guest OS 控制系统资源,Guest OS 不得不降低自身的运行级别,运行在Ring 1 或Ring 3 级(Ring 2 不使用)。

相关文档
最新文档