说一说什么是虚拟化?
发布网友
发布时间:2022-04-22 04:05
我来回答
共3个回答
热心网友
时间:2023-12-29 04:14
一、什么是虚拟化
虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同空旷、通透的写字楼,整个楼层几乎看不到墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。这种把有限的固定的资源根据不同需求进行重新规划以达到最大利用率的思路,在IT领域就叫做虚拟化技术。
虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
虚拟化技术也与VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。
虚拟化技术有很多定义,下面就给出了一些这样的定义。
“虚拟化是以某种用户和应用程序都可以很容易从中获益的方式来表示计算机资源的过程,而不是根据这些资源的实现、地理位置或物理包装的专有方式来表示它们。换句话说,它为数据、计算能力、存储资源以及其他资源提供了一个逻辑视图,而不是物理视图。” —— Jonathan Eunice, Illuminata Inc。
“虚拟化是表示计算机资源的逻辑组(或子集)的过程,这样就可以用从原始配置中获益的方式访问它们。这种资源的新虚拟视图并不受实现、地理位置或底层资源的物理配置的*。” —— Wikipedia
“虚拟化:对一组类似资源提供一个通用的抽象接口集,从而隐藏属性和操作之间的差异,并允许通过一种通用的方式来查看并维护资源。” —— Open Grid Services Architecture Glossary of Terms。
热心网友
时间:2023-12-29 04:15
什么是虚拟化(Virtualization)
虚拟化说白了就是本来是一个完整的资源,切分或者说虚拟成多份,让这多份资源都使用起来,物尽其用,减少了浪费,提高了利用率,省了钱。
虚拟化技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在70年代的 System 370 系列中逐渐流行起来.
在物理硬件之上安装软件:虚拟机监控器(Virtual Machine Monitor,VMM),并且用VMM来控制产生多个的虚拟机(Virtual Machine)实例,每个vm都可以运行独立操作系统及应用软件。
虚拟化是一个广义的术语,对于不同的人来说可能意味着不同的东西,这要取决他们所处的环境。在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念。
比如对物理内存的抽象:产生了虚拟内存技术,使得应用程序认为其自身拥有连续可用的地址空间(Address Space),而实际上,应用程序的代码和数据可能是被分隔成多个碎片页或段),甚至被交换到磁盘、闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。
回到顶部
二、为何要学习虚拟化
随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了 IT 成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中。
网格(Grid),在信息学中,网格是一种用于集成或共享地理上分布的各种资源(包括计算机系统、存储系统、通信系统、文件、数据库、程序等),使之成为有机的整体,共同完成各种所需任务的机制。
虚拟化是云计算的基础,而我们学习虚拟化的目的之一是为云平台提供云主机,具体的:在一台物理机上产生多台虚拟机(每台vm按照有不同的操作系统),它们共享物理机的cpu,内存,IO硬件资源,但是逻辑上彼此隔离。
回到顶部
三、虚拟化技术的分类
在这里讨论的虚拟化技术只针对 x86 平台(含 AMD 64),并假定虚拟机中运行的 Guest OS 也是为 x86 平台设计的。
1、虚拟化技术主要分以下几个大类
平台虚拟化(Platform Virtualization),针对计算机和操作系统的虚拟化,即产生vm。
资源虚拟化(Resource Virtualization),针对特定的系统资源的虚拟化,比如内存虚拟化、存储虚拟化、网络资源虚拟化等。
应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术(java虚拟机jvm)等。
通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Virtual Machine Monitor 或Hypervisor),来创建虚拟机vm。
Guest OS(客户机操作系统):虚拟机中运行的操作系统
Host OS(主机操作系统):运行虚拟机监控器VMM的操作系统,需要注意的是:某些虚拟机监控器VMM可以脱离操作系统直接运行在硬件之上(如 VMWARE 的 ESX 产品)
回到顶部
三、平台虚拟化技术分类
这些分类的关键在于一定要记住:vm(虚拟机)是由vmm(虚拟机监视器)产生并运行的。
1、全虚拟化(Full Virtualization)
全虚拟化的核心就在全,‘全’指的是VMM为虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等。
优点:原本是为物理硬件设计的操作系统或其它系统软件,完全不做任何修改就可以在虚拟机中运行。
缺点:(1)然而飞的再高最后也得落地,vm最后还是要与vmm打交道,对于全虚拟化来说, VMM 必须完全并且完整地把自己模拟成硬件,为vm提供全部硬件调用接口,
(2)必须模拟特权指令的执行过程,如下例所示
1
2
3
4
5
6
7
让我们以x86 体系结构下对操作系统进程页表切换的操作(mov pgtable)为例,来介绍VMM把自己完全模拟成硬件是怎么样一种过程:
1.真实的硬件提供了一个特权 CR3 寄存器来实现该接口,操作系统只需执行 "mov pgtable,%%cr3"的 汇编指令即可。
2.VMM 必须按照1中所述,完全地模拟该接口执行的全部过程,但是如果硬件不提供虚拟化的特殊支持,那么这个模拟过程将会十分复杂:
a:一般而言VMM 必须运行在最高优先级来完全控制物理主机的系统,而 Guest OS 需要降级运行,因而不能执行特权操作(如进程页表切换mov pgtable这种特权操作)。
b:当 Guest OS 执行前面的特权汇编指令(mov pgtable...)时,物理主机系统产生异常(General Protection Exception),执行控制权重新从 Guest OS 转到 VMM 手中。--->飞的再高也得回到地面
c:VMM 先分配一个变量作为影子 CR3 寄存器交给 Guest OS。将 pgtable (进程表)代表的客户机物理地址(Guest Physical Address)填入影子 CR3 寄存器--->让Guest OS以为自己在操作真实的内存。
e:然后 VMM 将Guest Os需要操作的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,KVM。
2、硬件辅助虚拟化(Hardware-Assisted Virtualization)
硬件辅助虚拟化主要是为了解决全虚拟化在提供接口的同时必须模拟特权指令的执行过程,是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。例如有了 Intel-VT 技术的支持,Guest OS 和 VMM 的执行环境自动地完全隔离开来,Guest OS 有自己的“全套寄存器”,可以直接运行在最高级别。因此在上面的例子中,Guest OS 能够执行修改页表的汇编指令。Intel-VT 和 AMD-V 是目前 x86 体系结构上可用的两种硬件辅助虚拟化技术。
3、半虚拟化(Paravirtualization)
这是一种修改 Guest OS 部分访问特权状态的代码以便直接与 VMM 交互的技术。在半虚拟化虚拟机中,部分硬件接口以软件的形式提供给客户机操作系统,这可以通过 Hypercall(VMM 提供给 Guest OS 的直接调用,与系统调用类似)的方式来提供。例如,Guest OS 把切换页表的代码修改为调用 Hypercall 来直接完成修改影子 CR3 寄存器和翻译地址的工作。由于不需要产生额外的异常和模拟部分硬件执行流程,半虚拟化可以大幅度提高性能,比较著名的 VMM 有 Denali、Xen。
热心网友
时间:2023-12-29 04:15
虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。