虚拟化技术区别
服务器虚拟化与容器化技术区别与应用场景比较

服务器虚拟化与容器化技术区别与应用场景比较服务器虚拟化和容器化技术是当前云计算领域中非常热门的两种技术,它们都可以帮助企业提高服务器资源的利用率和灵活性,但在实际应用中有着不同的特点和适用场景。
本文将就服务器虚拟化和容器化技术的区别以及各自的应用场景进行比较分析。
一、服务器虚拟化技术服务器虚拟化技术是指通过软件将一台物理服务器虚拟成多台逻辑服务器,每台逻辑服务器都可以运行不同的操作系统和应用程序。
在服务器虚拟化技术中,通常会使用虚拟机监控器(Hypervisor)来实现虚拟化,常见的Hypervisor有VMware的ESXi、Microsoft的Hyper-V、Citrix的XenServer等。
1. 区别特点:- **资源隔离性强**:每个虚拟机都拥有独立的操作系统和应用程序,资源之间相互隔离,一台虚拟机的故障不会影响其他虚拟机的运行。
- **硬件资源虚拟化**:虚拟机可以独立使用物理服务器的CPU、内存、存储等硬件资源,实现资源的灵活分配和管理。
- **启动时间较长**:由于每个虚拟机都需要加载完整的操作系统镜像,因此启动时间相对较长。
- **资源利用率较低**:由于每个虚拟机都包含完整的操作系统,会造成资源的浪费,尤其是在运行多个轻量级应用时。
- **多样化应用环境**:适用于需要在同一台物理服务器上运行不同操作系统和应用程序的场景,如开发测试环境、应用部署等。
- **安全隔离需求**:对于需要进行安全隔离的应用场景,可以通过虚拟化技术实现不同虚拟机之间的隔离。
- **资源需求波动大**:对于资源需求波动较大的应用,可以通过动态调整虚拟机的资源来满足需求。
二、容器化技术容器化技术是一种轻量级的虚拟化技术,通过容器引擎(如Docker、Kubernetes)实现应用程序及其依赖的打包、分发和部署。
每个容器都运行在宿主机的操作系统内核上,共享操作系统资源,实现更高效的资源利用和快速部署。
1. 区别特点:- **资源共享性强**:容器共享宿主机的操作系统内核,避免了虚拟机启动多个完整的操作系统的开销,资源利用率更高。
云计算和虚拟化技术的区别和联系

云计算和虚拟化技术的区别和联系云计算和虚拟化技术是当今IT行业中备受关注的两种技术,它们在提高企业效率、降低成本、提升安全性、提高能源效率等方面发挥了重要作用。
虽然它们的共同点在于其技术都是基于互联网和软件实现的,但它们的目标和实现方式有很大的不同,本文将从这两方面展开讨论其区别和联系。
目标的不同云计算的主要目标是通过互联网提供资源和服务,使企业和个人可以方便、快捷、经济地获得计算、存储、网络等基础资源,并且可以根据需求按需进行扩展。
云计算提供的是面向服务(SOA)的计算,以实现服务定制化、快速响应、弹性伸缩和低成本等特点。
虚拟化技术的主要目标是将一个物理服务器的计算资源分割为多个虚拟服务器,从而有效利用硬件资源。
虚拟化技术提供的是面向资源的计算,以实现资源共享、资源分配、资源弹性和资源隔离等特点。
这两者从目标上来看有很大的不同,云计算注重的是资源界面、自动化管理和弹性伸缩,而虚拟化技术注重的是资源抽象、资源隔离和资源共享。
他们的合并是云计算的一个重要组成部分(IaaS)。
实现方式的不同云计算的实现方式很多,最常用的云计算模型包括公共云、私有云和混合云。
公共云是由云提供商提供的、对所有用户都可用的云计算资源。
私有云是企业内部部署部署的云计算资源,仅对内部应用或群体用户提供服务。
混合云兼具公共云和私有云的优势,可以提供更灵活的IT组合和动态调整。
方法上,它们都需要虚拟化技术的支持。
虚拟化技术也有多种实现方式,包括服务器虚拟化、桌面虚拟化、应用虚拟化等。
服务器虚拟化是分割每台服务器,将每个分区映射到不同的操作系统中。
桌面虚拟化是将多个桌面操作系统虚拟化到一台服务器、桌面或平板电脑。
应用虚拟化是将标准应用程序虚拟化到不同的操作系统或终端中等。
联系的重要性虽然云计算和虚拟化技术在目标和实现方式上有很大的不同,但它们是相辅相成的技术。
在同一个物理服务器上部署多个虚拟机,使其可以作为云计算的存储和计算资源使用。
虚拟化与容器化的区别与联系

虚拟化与容器化的区别与联系虚拟化与容器化是当今互联网技术领域两种非常重要的技术,它们在软件开发、IT运维以及云计算等领域都发挥着重要作用。
虽然它们都是用来实现资源的隔离和利用,但是它们在实现方式和应用场景上有着很大的不同。
本文将从技术原理、应用场景、优缺点等多个角度来探讨虚拟化与容器化的区别与联系。
一、技术原理虚拟化技术是通过在物理服务器上安装虚拟化软件,将物理服务器划分为多个虚拟的独立运行环境,每个虚拟环境都可以运行不同的操作系统和应用程序。
常见的虚拟化软件有VMware、Hyper-V等。
虚拟化技术利用了Hypervisor的技术,通过在物理服务器和虚拟机之间增加一层抽象的软件层来实现资源的隔离和共享。
而容器化技术则是利用了Linux内核的Cgroups和Namespace等特性,将应用程序及其依赖的运行环境打包成一个独立的容器,每个容器之间相互隔离。
Docker是目前最流行的容器化引擎,它通过镜像的方式来打包应用程序及其依赖,并提供了轻量级的隔离环境。
二、应用场景虚拟化技术通常用于构建虚拟的开发测试环境、服务器 consolization、虚拟桌面以及数据中心的资源池化等场景。
虚拟化技术可以让用户在物理服务器上运行多个不同的操作系统,从而提高服务器的利用率。
而容器化技术则更多的用于构建云原生应用、持续集成/持续部署、微服务架构等场景。
容器化技术将应用程序及其依赖打包成轻量级的容器,使得应用可以更快速、更简单地迁移和部署,从而提高了开发、测试和部署的效率。
三、优缺点比较虚拟化技术的优点在于它可以让用户在一台物理服务器上运行多个不同的操作系统,提高了服务器的利用率。
同时,虚拟化技术也能够提供更好的隔离性和安全性,每个虚拟机都相对独立,不会相互影响。
然而,虚拟化技术也存在一些缺点,比如虚拟化软件占用的资源较大,性能相对较低,虚拟机启动时间较长等。
而容器化技术的优点在于它提供了轻量级的隔离环境,容器启动速度快、资源占用少,能够更好地支持快速部署和横向扩展。
虚拟化技术概述

虚拟化技术概述虚拟化技术是一种将物理资源(如计算机、存储和网络)虚拟化为多个可供使用的虚拟资源的技术。
通过虚拟化,可以实现资源的有效管理、利用和共享,提高资源利用率,并同时提供更好的安全性和灵活性。
一、虚拟化技术的种类1. 服务器虚拟化:服务器虚拟化是将一台物理服务器划分为多个虚拟服务器的技术。
每个虚拟服务器可以运行不同的操作系统和应用程序,提供独立的计算资源,并且能够根据实际需求进行弹性扩展。
2. 桌面虚拟化:桌面虚拟化是将个人电脑的运算能力、操作系统和应用软件等虚拟化,使用户可以通过网络访问虚拟桌面,实现随时随地的使用。
3. 存储虚拟化:存储虚拟化可以将多个存储设备整合为一个虚拟的存储池,并为应用程序提供透明的存储访问。
通过存储虚拟化,可以提高存储资源的利用率和性能,并简化存储管理。
4. 网络虚拟化:网络虚拟化是将物理网络设备抽象为虚拟网络资源,使多个虚拟网络可以共享物理网络的带宽和资源。
通过网络虚拟化,可以提高网络资源的利用率和可管理性。
二、虚拟化技术的优势1. 资源利用率提升:虚拟化技术能够将物理资源划分为多个虚拟资源,并根据实际需求进行动态分配,从而提高资源的利用率。
2. 灵活性和可扩展性:虚拟化技术可以根据业务需求,动态调整虚拟资源的分配,实现快速部署和扩展,提供更好的服务响应能力。
3. 成本降低:通过虚拟化技术,可以减少物理设备的购买和维护成本,简化管理流程,同时降低能源消耗。
4. 安全性增强:虚拟化技术可以实现资源隔离,避免不同用户或应用之间的干扰,提高系统的安全性和稳定性。
5. 管理和维护简化:通过虚拟化管理平台,可以实现统一的资源管理、监控和故障排除,简化管理和维护工作,提高效率。
三、虚拟化技术的应用领域1. 数据中心:虚拟化技术可以在数据中心中实现服务器、存储和网络资源的虚拟化,提高资源利用率和灵活性,降低成本和维护工作量。
2. 云计算:云计算是基于虚拟化技术的一种计算模式,通过虚拟化技术,可以实现资源的弹性伸缩和按需使用,提供灵活的计算服务。
云计算和虚拟化的联系与区别

云计算和虚拟化的联系与区别云计算和虚拟化的联系与区别云计算和虚拟化是当今IT领域的热门话题,它们在技术和应用层面上都有着密切的联系和区别。
本文将详细介绍云计算和虚拟化的定义、特点、应用场景、优缺点以及二者之间的联系和区别。
一、云计算的定义云计算是一种基于互联网的计算方式,通过将计算资源、存储资源和应用程序提供给用户,以满足不同需求的计算任务,用户可以根据需要随时随地访问这些资源。
1-1 云计算的特点●弹性伸缩:根据用户需求动态分配和调整资源,实现按需分配和使用。
●高可用性:通过冗余和备份机制确保服务的持续性和可靠性。
●自助服务:用户可以根据需要自主管理和配置云计算资源。
●实时监控:监控和记录云计算资源的使用情况和性能指标,以便进行优化和调整。
1-2 云计算的应用场景●公有云:云服务提供商将计算资源、存储资源和应用程序提供给公众用户使用。
●私有云:组织内部搭建基于云计算技术的计算平台,供内部员工使用。
●混合云:结合公有云和私有云,根据实际需求灵活调配资源。
1-3 云计算的优缺点●优点:节省成本、灵活性高、易于扩展和维护。
●缺点:数据安全性可能存在风险、对网络带宽要求较高。
二、虚拟化的定义虚拟化是一种将物理资源抽象为虚拟资源的技术,通过将计算、存储和网络资源从物理硬件中解耦,实现资源的灵活管理和利用。
2-1 虚拟化的特点●资源隔离:通过虚拟化技术实现物理资源的隔离,提高资源的安全性和稳定性。
●高效利用:通过虚拟化技术将多个虚拟机运行在一台物理服务器上,提高资源利用率。
●灵活性:根据需求动态分配和管理虚拟资源,实现优化和调整。
●兼容性:支持不同的操作系统和应用程序运行在虚拟环境中,提高兼容性。
2-2 虚拟化的应用场景●服务器虚拟化:将多个虚拟服务器运行在一台物理服务器上,提高服务器利用率和管理效率。
●存储虚拟化:将多个存储设备组合成一个虚拟存储池,实现统一管理和利用。
●网络虚拟化:通过虚拟网络技术将一个物理网络划分为多个独立的虚拟网络,提高网络资源利用率和安全性。
电脑虚拟化技术VMware和VirtualBox的比较

电脑虚拟化技术VMware和VirtualBox的比较在当今科技快速发展的时代,虚拟化技术成为越来越多企业和个人用户的首选。
VMware和VirtualBox作为两个主要的虚拟化软件,各自有着独特的特点和优势。
本文将对VMware和VirtualBox进行比较,并分析它们在不同方面的表现。
一、功能比较VMware是一款功能强大且成熟稳定的虚拟化软件,提供了广泛的功能和高级特性。
它支持迁移虚拟机、热添加硬件、集中管理等高级功能,适用于企业环境。
与之相对,VirtualBox则更适用于个人用户和小型企业。
它虽然功能较为简单,但对于基本的虚拟化需求足够满足。
二、性能比较在性能方面,VMware表现较好。
它具有更高的性能和效率,能够更好地利用硬件资源,提供更好的用户体验。
VMware的虚拟机可以在较低的硬件配置上运行,且对多核处理器的支持更好。
相比之下,VirtualBox则要求更高的硬件配置,对资源的占用较多,可能会对主机的性能产生一定的影响。
三、兼容性比较VMware和VirtualBox都具有良好的兼容性,可以在不同的操作系统上运行。
虽然VMware在兼容性方面稍胜一筹,但VirtualBox也能够满足大部分用户的需求。
它们都支持多种操作系统,包括Windows、Linux、Mac等,可以在不同的虚拟机中同时运行多个操作系统实例。
四、易用性比较在易用性方面,VirtualBox相对来说更加友好。
它提供了简洁的用户界面,使得用户可以快速上手。
VirtualBox还具有丰富的在线社区和用户手册,可以帮助用户解决遇到的问题。
而VMware则相对复杂一些,需要一定的技术经验才能熟练操作。
五、安全性比较在安全性方面,VMware具有更高的安全性。
它提供了各种安全功能,如安全的网络连接、安全的存储、数据的加密等。
这些安全特性可以有效保护虚拟机和主机系统的安全。
而VirtualBox相对来说安全性稍逊一筹,但对于大部分用户来说仍然足够安全。
简述虚拟化技术的分类

简述虚拟化技术的分类虚拟化技术是一种将应用、资源和环境从物理环境中剥离,再重新在虚拟环境中构建的技术。
它的主要优势是可以更高效地利用硬件资源,节约成本,减少耗材,简化服务器部署和管理运行。
根据不同的需求,虚拟化技术可以分为三大类:计算虚拟化、存储虚拟化和网络虚拟化。
1. 计算虚拟化: 指通过虚拟化技术将一个物理服务器分割为多个虚拟服务器,从而使得一个物理服务器资源可以被多个客户分享,从而极大地提高服务器利用率,降低企业服务器库房的负担。
常见的计算虚拟化技术包括:虚拟机技术(如VMware,KVM,Virtualbox等);应用程序虚拟化技术(如Docker,OpenVZ);容器虚拟化技术(如LXC,LXD)。
2. 存储虚拟化: 是一种把实际存储设备虚拟成抽象的虚拟存储设备,并将其统一管理,以便更好地利用存储资源,提高存储性能,降低总体成本。
常见的存储虚拟化技术包括:分布式存储虚拟化(如StorAge Networking,Storage Virtualization,Cluster Storage);SAN(Storage Area Network)虚拟化(如Net App,IBM SAN);NAS (Network Attached Storage)虚拟化(如EQL,HPN)。
3. 网络虚拟化: 是一种把实际网络设备虚拟成抽象的虚拟网络设备,并将其统一管理,以便更好地利用网络资源,提高网络性能,降低总体成本。
常见的网络虚拟化技术包括:虚拟化交换机(如Cisco Nexus, Juniper OS);虚拟路由(如Brocade vRouter,Netscaler);虚拟网络接入(如OpenVSwitch, OpenFlow)。
简述虚拟化技术的分类

简述虚拟化技术的分类虚拟化技术是一种将物理资源抽象成虚拟资源的技术,它可以让多个虚拟机共享一台物理机的硬件资源,从而提高硬件资源的利用率。
虚拟化技术可以分为四类:硬件虚拟化、操作系统虚拟化、应用程序虚拟化和网络虚拟化。
一、硬件虚拟化硬件虚拟化是一种将物理硬件资源虚拟化的技术,它可以将一台物理机的硬件资源分配给多个虚拟机,并使得每个虚拟机都可以独立运行。
硬件虚拟化技术主要分为两种:全虚拟化和半虚拟化。
1. 全虚拟化全虚拟化是一种在虚拟机中模拟出完整的物理硬件环境的技术,它可以让虚拟机操作系统认为自己运行在一台真实的物理机上。
全虚拟化需要使用虚拟机监控器(VMM)来模拟物理硬件环境,并将虚拟机操作系统的指令翻译成可以在物理硬件上运行的指令。
全虚拟化的优点是可以运行各种操作系统和应用程序,但是它的缺点是需要较高的虚拟化开销,会影响虚拟机的性能。
2. 半虚拟化半虚拟化是一种在虚拟机中使用虚拟化接口来访问物理硬件的技术,它不需要模拟出完整的物理硬件环境,因此可以提高虚拟机的性能。
半虚拟化需要虚拟机操作系统进行修改,以便使用虚拟化接口来访问物理硬件。
半虚拟化的优点是可以提高虚拟机的性能,但是它的缺点是需要虚拟机操作系统进行修改,因此不支持所有操作系统。
二、操作系统虚拟化操作系统虚拟化是一种将操作系统虚拟化的技术,它可以让多个虚拟机共享一台物理机的操作系统,并使得每个虚拟机都可以独立运行。
操作系统虚拟化主要分为两种:容器虚拟化和操作系统级虚拟化。
1. 容器虚拟化容器虚拟化是一种使用容器技术将操作系统虚拟化的技术,它可以让多个容器共享同一个操作系统内核,并使得每个容器都可以独立运行。
容器虚拟化不需要虚拟化监控器,因此可以提高虚拟机的性能。
容器虚拟化的优点是可以提高虚拟机的性能,但是它的缺点是只支持相同操作系统的容器。
2. 操作系统级虚拟化操作系统级虚拟化是一种使用操作系统虚拟化技术将操作系统虚拟化的技术,它可以让多个虚拟机共享同一个操作系统内核,并使得每个虚拟机都可以独立运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x86平台三种不同的虚拟化之路从1998年开始,VMware创造性的将虚拟化引入x86平台,通过二进制翻译(BT,Binary Translation)和直接执行的模式,让x86芯片可以同时运行不同的几种操作系统,并且确保性能、稳定性和安全性。
从那时起,数以万计的企业已经从虚拟化中获得了极大的收益。
但是,关于虚拟化的几种实现方式,引起了很多误解,为此,希望通过此文澄清几种虚拟化道路的优缺点,以及VMware公司对几种虚拟化之路的支持情况。
图1总结了x86虚拟化技术的进展情况,从VMware的BT最近的内核部分虚拟化和硬件辅助虚拟化。
1.x86虚拟化概览所谓x86服务器的虚拟化,就是在硬件和操作系统之间引入了虚拟化层,如图2所示。
虚拟化层允许多个操作系统实例同时运行在一台物理服务器上,动态分区和共享所有可用的物理资源,包括:CPU、内存、存储和I/O设备。
图2. x86架构上的虚拟化层近年来,随着服务器和台式机的计算能力急剧增加,虚拟化技术应用广泛普及,很多用户已经在开发/测试、服务器整合、数据中心优化和业务连续性方面证实了虚拟化的效用。
虚拟架构已经可以将操作系统和应用从硬件上分离出来,打包成独立的、可移动的虚拟机,从来带来了极大的灵活性。
例如:现在可以通过虚拟架构,让服务器7x24x365运行,避免因为备份或服务器维护而带来的停机。
已经有用户在VMware平台上运行3年而没有发生任何的停机事件。
对于x86虚拟化,有两种常见的架构:寄居架构和裸金属架构。
寄居架构将虚拟化层运行在操作系统之上,当作一个应用来运行,对硬件的支持很广泛。
相对的,裸金属架构直接将虚拟化层运行在x86的硬件系统上,可以直接访问硬件资源,无需通过操作系统来实现硬件访问,因此效率更高。
VMware Player、ACE、Workstation和VMware Server都是基于寄居架构而实现的,而VMware ESX Server是业界第一个裸金属架构的虚拟化产品,目前已经发布了第四代产品。
ESX Server需要运行在VMware认证的硬件平台上,可以提供出色的性能,完全可以满足大型数据中心对性能的要求。
为了更好的理解x86平台虚拟化,在此简要介绍一下部件虚拟化的背景。
虚拟化层是运行在虚拟机监控器(VMM,Virtual Machine Monitor)上面、负责管理所有虚拟机的软件。
如图3所示,虚拟化层就是hypervisor(管理程序)直接运行在硬件上,因此,hypervisor 的功能极大地取决于虚拟化架构和实现。
运行在hypervisor(管理程序)上的每个VMM进行了硬件抽取,负责运行传统的操作系统。
每个VMM必须进行分区和CPU、内存和I/O设备的共享,从而实现系统的虚拟化。
图3. Hypervisor通过VMM管理虚拟机2. CPU虚拟化根据原来的设计,x86上的操作系统需要直接运行在裸机上,因此默认拥有和控制所有的硬件。
如图4所示,x86架构提供了四种特权级别Ring 0、1、2和3,通过这四种级别来控制和管理对硬件的访问。
通常,用户级的应用一般运行在Ring 3级别,操作系统需要直接访问内存和硬件,需要在Ring 0执行它的特权指令。
为了虚拟x86架构,需要在操作系统下面运行虚拟化层,由虚拟化层来创建和管理虚拟机,进行共享资源分配。
而有些敏感指令不能很好的进行虚拟化,它们在Ring 0以外级别执行时,会出现不同的结果。
如何在运行时捕获和翻译这些敏感指令成为x86虚拟化的一大挑战,使得x86架构虚拟化最初是不可能的。
图4. x86架构虚拟化前的特权级别VMware在1998年成功克服了这个难点,开发出了BT技术,从而将操作系统移到Ring 3的用户模式运行,而VMM运行在Ring 0级别实现隔离和性能提升。
尽管VMware通过BT技术实现的全虚拟化已经成为默认的业界标准,超过2万家的VMware用户都在这种技术的支持下可靠、高效运行,但整个业界还没有统一定义的行业标准,因此每家公司都在自由发挥,来试图解决这个技术难点,不同的方案都有自己的优势和劣势。
到今天为止,有三种典型的技术来解决x86虚拟化的难题:通过BT实现的全虚拟化操作系统帮助下的虚拟化,也叫半虚拟化硬件帮助的虚拟化a. 技术1 –通过BT实现的全虚拟化VMware可以通过BT和直接执行技术的结合来实现任何x86操作系统的虚拟化。
如图5所示,BT可以翻译核心指令来代替那些不能虚拟化的指令,通过翻译后的指令直接访问虚拟硬件。
同时,所有用户级指令还是可以直接在CPU上执行来确保虚拟化的性能。
每个VMM为每个虚拟机提供完整的硬件支持服务,包括虚拟BIOS、虚拟设备和虚拟内存管理。
图5. BT实现x86架构虚拟化BT和直接执行技术的结合实现了全虚拟化,此时客户操作系统可以通过虚拟化层从物理硬件上完全抽取出来,客户操作系统感知不到是否发生了虚拟化,完全不需要进行修改。
全虚拟化是迄今为止唯一不需要硬件或操作系统协助来进行敏感和特权指令虚拟化的技术,Hypervisor(管理程序)可以翻译所有的操作系统特权指令,并保存在缓存里备用,而用户级的指令完全可以全速直接执行。
全虚拟化提供了最好的虚拟机隔离和安全性,简化了客户操作系统迁移和移植能力。
VMware ESX Server就是通过全虚拟化技术来实现的最好案例。
b.技术2 –半虚拟化该文中我们将Para-Virtualization翻译为半虚拟化。
Para是来自希腊语的英语前缀,意指“和”、“在边上”、“一道”等。
因此,“半虚拟化”指得是客户操作系统和hypervisor之间的通讯如何提高性能和有效性。
如图6所示,半虚拟化需要修改操作系统内核,替换掉不能虚拟化的指令,通过超级调用(hypercall)直接和底层的虚拟化层hypervisor来通讯,hypervisor同时也提供了超级调用接口来满足其他关键内核操作,比如内存管理、中断和时间保持。
图6. 操作系统协助的x86架构虚拟化半虚拟化和全虚拟化不同,全虚拟化不需要修改上面的操作系统,敏感的操作系统指令直接通过BT进行处理。
半虚拟化的价值在于降低了虚拟化的损耗,但是半虚拟化的性能优势很大程度上依赖于运行的负载。
由于半虚拟化不支持未修改的操作系统(例如:Windows 2000/XP),它的兼容性和可移植性差。
在实际的生产环境中,半虚拟化也会导致操作系统支持和维护的艰难,因为半虚拟化往往要深入修改操作系统内核。
开源的Xen项目是半虚拟化的代表,它可以通过修改Linux的内核来实现CPU和内存的虚拟化,通过定制的操作系统驱动来实现I/O的虚拟化。
为了实现全虚拟化,需要构建复杂的BT技术,这往往比直接修改客户操作系统来启用半虚拟化更艰难。
VMware实际上已经在产品中使用了半虚拟化的一些技术,来构建VMware Tools和优化虚拟设备驱动。
VMware tools服务为VMM Hypervisor提供了一个后门服务,用来同步时间、记录日志和客户操作系统关机等。
Vmxnet是半虚拟化的I/O设备驱动程序,它可以和hypervisor共享数据结构。
这些半虚拟化技术的应用改善了设备的兼容能力,提高了数据吞吐速率,降低了CPU利用率。
需要重点澄清的是:VMware tools 服务和vmxnet 设备驱动并不是CPU半虚拟化解决方案,它们紧紧对客户操作系统进行了微小的、非关键的修改,并不需要修改客户操作系统内核。
面向未来,VMware也在帮助开发虚拟化版的Linux来支持半虚拟化技术的进步,更进一步的细节,我们将在后面进行探讨。
c. 技术3 –硬件辅助虚拟化硬件厂商面对虚拟化都相当热情,他们都投入了大量的精力来开发新的特性来简化虚拟化技术的应用。
第一代的虚拟化增强包括Intel Virtualization Technology (VT-x)和AMD的AMD-V,这两种技术都为CPU增加了新的执行模式root模式,可以让VMM运行在root 模式下,而root模式位于Ring 0的下面。
如图7所示,特权和敏感指令自动在hypervisor 上执行,从而无需BT或半虚拟化技术。
客户操作系统的状态保存在VT-x(Virtual Machine Control Structure,虚拟机控制结构)中或AMD-v(Virtual Machine Control Block,虚拟机控制块)。
支持Intel VT和AMD-V的CPU从2006年开始推向市场,因此只有新的系统包含了这些硬件辅助的虚拟化功能。
图7.硬件辅助的x86架构虚拟化由于hypervisor到客户操作系统转换的损耗和严格的编程模式要求,第一代的硬件辅助虚拟化性能并不理想,VMware的BT技术很多时候性能更好。
第一代硬件辅助虚拟化为编程留了很小的空间,降低了软件的灵活性,增加了hypervisor到客户操作系统转换的损耗,正式基于此,VMware仅仅在很少的情况下利用了第一代的硬件辅助虚拟化,比如,在Intel平台上支持64位操作系统的时候,VMware使用了Intel的VT-x。
3. 内存虚拟化除了CPU虚拟化,下一个关键是内存虚拟化,通过内存虚拟化共享物理系统内存,动态分配给虚拟机。
虚拟机的内存虚拟化很象现在的操作系统支持的虚拟内存方式,应用程序看到邻近的内存地址空间,这个地址空间无需和下面的物理机器内存直接对应,操作系统保持着虚拟页到物理页的映射。
现在所有的x86 CPU都包括了一个称为内存管理的模块MMU (Memory Management Unit)和TLB(Translation Lookaside Buffer),通过MMU和TLB来优化虚拟内存的性能。
图8. 内存虚拟化为了在一台机器上运行多个虚拟机,需要增加一个新的内存虚拟化层,也就是说,必须虚拟MMU来支持客户操作系统。
客户操作系统继续控制虚拟地址到客户内存物理地址的映射,但是客户操作系统不能直接访问实际机器内存。
VMM负责映射客户物理内存到实际机器内存,它通过影子页表来加速映射。
如图8所示,VMM使用TLB硬件来映射虚拟内存直接到机器内存,从而避免了每次访问进行两次翻译。
当客户操作系统更改了虚拟内存到物理内存的映射表,VMM也会更新影子页表来启动直接查询。
MMU虚拟化引入了虚拟化损耗,第二代的硬件辅助虚拟化将支持内存的虚拟化辅助,从而大大降低因此而带来的虚拟化损耗,让内存虚拟化更高效。
4. 设备和I/O虚拟化最后一个模块是设备和I/O虚拟化,也就是如何管理和路由物理设备和虚拟设备之间的I/O请求。
图9. 设备和I/O虚拟化基于软件的I/O虚拟化和管理为设备管理带来了新的特性和功能,让设备的管理更容易。