虚拟化技术的类型包括什么

虚拟化技术有哪三种类型

开放VZXen和KVM是目前常见的三种虚拟化技术:1.OpenVZ;配置更加灵活的操作系统级虚拟化技术;2.Xen,独立加载内核模块以及虚拟内存和IO的半虚拟化技术;3.KVM,完全虚拟支持任何类型的操作系统。
OpenVZ优点:提供商的许可内存和CPU非常出色。
缺点:它基于操作系统虚拟化,因此如果其他人使用它更多,您的损失就会更少。
内存下降后,它将被损坏且不稳定。
Xen的优点:专用内存较小,但分配给所有人。
不管内存有多低,它崩溃或在一段时间内变得无响应。
缺点:内存小;更小的硬盘和更小的带宽。
光伏发电性能较好。
KVM的优点:完全虚拟,pv和hvm没有区别。
它支持任何类型的操作系统。

虚拟化技术都包含什么?

虚拟化技术简介什么是虚拟化?虚拟化技术最早出现在20世纪60年代的IBM大型机系统中,并在1970年代的System370系列中逐渐流行起来。
这些机器通过虚拟机监视器(VirtualMachineMonitor,VMM)程序生成许多虚拟机(VirtualMachine)实例,这些实例可以在物理硬件上运行独立的操作系统软件。
近年来,随着多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用中的优势日益明显。
不仅降低了IT成本,还增强了系统的安全性和可靠性。
虚拟化的概念也逐渐渗透到人们的日常工作和生活中。
虚拟化是一个广泛的术语,对于不同的人来说可能意味着不同的事情,具体取决于他们的环境。
在计算机科学领域,虚拟化代表了计算资源的抽象,并不局限于虚拟机的概念。
例如,对物理内存的抽象,产生了虚拟内存技术,使得应用程序认为自己有一个连续可用的地址空间(AddressSpace)。
事实上,应用程序代码和数据可能被分成多个碎片页或段。
),甚至交换到磁盘、闪存等外部存储,使得应用程序即使在物理内存不足的情况下也能顺利执行。
虚拟化技术的分类虚拟化技术主要分为以下几类[1]:平台虚拟化(PlatformVirtualization),针对的是计算机和操作系统的虚拟化。
资源虚拟化(ResourceVirtualization),针对特定系统资源的虚拟化,如内存、存储、网络资源等。
应用程序虚拟化(ApplicationVirtualization),包括仿真、仿真、解释技术等。
我们通常所说的虚拟化主要指平台虚拟化技术,它通过使用控制程序(ControlProgram,也称为VirtualMachineMonitor或Hypervisor)来隐藏特定计算平台的实际物理特征,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。
运行在虚拟机中的操作系统称为来宾操作系统(GuestOS),运行虚拟机监视器的操作系统称为主机操作系统(HostOS)。
当然,有些虚拟机监视器可以不依赖操作系统直接运行。
在硬件之上(例如VMWARE的ESX产品)。
运行虚拟机的真实系统称为主机系统。
平台虚拟化技术可以细分为以下小类:全虚拟化(FullVirtualization)全虚拟化是指虚拟机模拟完整的底层硬件,包括处理器、物理内存、时钟、外设等,使其成为原来的操作系统或者硬件设计的其他系统软件无需任何修改就可以在虚拟机中运行。
操作系统和真实硬件之间的交互可以看作是通过预先指定的硬件接口进行的。
完全虚拟化的VMM通过完全模拟硬件来提供所有接口(还必须模拟特权指令的执行过程)。
例如,在x86架构中,对于操作系统切换进程页表的操作,真正的硬件通过提供特权CR3寄存器来实现这个接口,操作系统只需要执行“movpgtable,%%cr3”组装说明。
一个全虚拟化的VMM必须完全模拟整个过程执行接口。
如果硬件没有提供对虚拟化的特殊支持,那么模拟过程会非常复杂:一般来说,VMM必须以最高优先级运行才能完全控制主机系统,而GuestOS则需要降级运行,使其无法运行。
执行特权操作。
当GuestOS执行之前的特权汇编指令时,主机系统产生异常(GeneralProtectionException),执行控制权再次从GuestOS转移到VMM。
VMM提前给GuestOS分配一个变量作为影子CR3寄存器,将pgtable表示的guest物理地址(GuestPhysicalAddress)填充到影子CR3寄存器中,然后VMM还需要将pgtable翻译为主机物理地址(HostPhysicalAddress)并填写物理CR3寄存器。
最后返回GuestOS。
然后,VMM将处理复杂的GuestOS页面错误异常(PageFault)。
比较著名的全虚拟化VMM包括MicrosoftVirtualPC、VMwareWorkstation、SunVirtualBox、ParallelsDesktopforMac和QEMU。
半虚拟化(Paravirtualization)这是一种修改GuestOS部分代码以访问特权状态以便与VMM直接交互的技术。
在半虚拟化虚拟机中,一些硬件接口以软件的形式提供给客户操作系统,可以通过Hypercall(VMM向GuestOS提供的直接调用,类似于系统调用)来提供。
例如,GuestOS修改了切换页表的代码,调用Hypercall直接修改shadowCR3寄存器并翻译地址。
由于不需要生成额外的异常并模拟部分硬件执行过程,因此半虚拟化可以极大地提高性能。
比较著名的VMM有Denali和Xen。
硬件辅助虚拟化硬件辅助虚拟化是指在硬件(主要是主机处理器)的支持下实现高效的全虚拟化。
例如,在Intel-VT技术的支持下,GuestOS和VMM的执行环境自动完全隔离。
GuestOS有自己的“全套寄存器”,可以直接运行在最高层。
所以在上面的例子中,GuestOS能够执行修改页表的汇编指令。
Intel-VT和AMD-V是目前x86架构上可用的两种硬件辅助虚拟化技术。
部分虚拟化(PartialVirtualization)VMM只模拟部分底层硬件,因此来宾操作系统不经修改就无法在虚拟机中运行,其他程序也可能需要修改。
从历史上看,部分虚拟化是全虚拟化道路上的一个重要里程碑。
它首先出现在第一代分时系统CTSS和IBMM44/44X实验性分页系统中。
操作系统级虚拟化(OperatingSystemLevelVirtualization)在传统操作系统中,所有用户进程本质上都运行在同一个操作系统实例中,因此内核或应用程序的缺陷可能会影响其他进程。
操作系统级虚拟化是一种应用于服务器操作系统的轻量级虚拟化技术。
内核通过创建多个虚拟操作系统实例(内核和库)来隔离不同的进程。
不同实例中的进程完全不知道对方的存在。
比较有名的有SolarisContainer[2]、FreeBSDJail和OpenVZ等,这个分类并不是绝对的。
一款优秀的虚拟化软件往往结合了多种技术。
例如,VMwareWorkstation是众所周知的全虚拟化VMM,但它使用了一种称为动态二进制翻译的技术,将对特权状态的访问转换为对影子状态的操作,从而避免低效的Trap-And-Emulate处理方法与半虚拟化类似,只不过半虚拟化静态修改程序代码。
对于半虚拟化来说,如果能够利用硬件特性,在保持高性能的同时,虚拟机的管理将会大大简化。
本文讨论的虚拟化技术仅针对x86平台(包括AMD64),并且假设虚拟机中运行的GuestOS也是针对x86平台设计的。
------------------------------------------------------------------------------------返回顶部纯软件虚拟技术的原理和挑战虚拟机监视器应具备的1974年,Popek和Goldberg在论文《可虚拟化第三代架构的形式要求》[3]中提出了一组称为虚拟化标准的充分条件。
满足这些条件的控制程序就可以称为虚拟机监视器(VirtualMachineMonitor,简称VMM):资源控制。
控制程序必须能够管理所有系统资源。
等价。
在控制程序控制下运行的程序(包括操作系统)的行为,除了时序和资源可用性外,应该与没有控制程序时完全相同,并且可以自由执行预先编写的特权指令。
效率。
绝大多数客户端指令应该由主机硬件直接执行,而不需要控制程序的参与。
尽管基于简化的假设,上述条件仍然为判断计算机体系结构是否能够有效支持虚拟化提供了便捷的方法,也为设计可虚拟化的计算机体系结构提供了指导。
原理介绍我们知道,传统的x86架构缺乏必要的硬件支持,任何虚拟机监视器都无法直接满足上述条件,因此它不是可虚拟化的架构,但是我们可以使用软件实现构造虚拟机监视器。
虚拟机是对真实计算环境的抽象和模拟。
VMM需要给每个虚拟机分配一套数据结构来管理它们的状态,包括虚拟处理器的全套寄存器、物理内存使用情况、虚拟设备状态等。
VMM在调度虚拟机时,会恢复部分虚拟机的状态。
向主机系统报告其状态。
并非所有状态都需要恢复。
例如,主机CR3寄存器存储的是VMM设置的页表物理地址,而不是GuestOS设置的值。
主机处理器直接运行GuestOS的机器指令。
由于GuestOS运行在低特权级别,当访问主机系统的特权状态(例如写入GDT寄存器)时,权限不足会导致主机处理器产生异常,并自动将运行权返回给VMM。
另外,外部中断的到来也会导致VMM运行。
VMM可能需要首先将虚拟机的当前状态写回到状态数据结构中,分析虚拟机被挂起的原因,然后代表GuestOS执行相应的特权操作。
最简单的情况下,如果GuestOS修改了CR3寄存器,只需要更新虚拟机的状态数据结构即可。
一般来说,大多数情况下,VMM需要经过复杂的流程才能完成原本简单的操作。
最后,VMM将运行权返回给GuestOS,GuestOS从上次中断的地方继续执行,或者处理VMM“塞”进去的虚拟中断和异常。
这种经典的虚拟机运行方式称为Trap-And-Emulate。
虚拟机对于GuestOS是完全透明的。
GuestOS不需要任何修改。
然而,VMM的设计会更加复杂且整体系统性能将受到显着损害。
面临的挑战在设计纯软件VMM时,需要解决以下挑战[4]:确保VMM控制所有系统资源。
x86处理器有4个特权级别,Ring0~Ring3。
只有当运行在Ring0~Ring2时,处理器才能访问特权资源或执行特权指令;当运行在Ring0时,处理器可以访问所有特权状态。
x86平台上的操作系统一般只使用两个级别,Ring0和Ring3。
操作系统运行在Ring0级别,用户进程运行在Ring3级别。
为了满足上述第一个充分条件——资源控制,VMM本身必须运行在Ring0级别。
同时,为了防止GuestOS控制系统资源,GuestOS不得不降低自身的运行级别,运行在Ring1或Ring3级别(Ring2不使用)。
特权级压缩(RingCompre ssion)。
VMM使用分页或段限制来保护物理内存访问,但段限制在64位模式下不起作用,并且分页不区分Ring0、1和2。
为了统一和简化VMM的设计,GuestOS可以像Guest进程一样只在Ring3级别运行。
VMM必须监视GuestOS对特权资源(例如GDT和IDT)的设置,以防止GuestOS在Ring0级别运行。
同时,它必须保护降级的GuestOS免受Guest进程的主动攻击或无意损坏。
权限级别名称(RingAlias)。
权限级别名称是指GuestOS在虚拟机中运行的级别,而不是它所期望的级别。
VMM必须确保GuestOS无法知道它正在虚拟机中运行的事实,否则等价条件可能会被打破。
例如,x86处理器的特权级别存储在CS代码段寄存器中。
GuestOS可以使用非特权push指令将CS寄存器压入堆栈,然后将其弹出以检查值。
再比如,GuestOS无一例外地以低特权级别读取特权寄存器GDT、LDT、IDT和TR,可能会发现这些值与它期望的不一样。
为了解决这个挑战,VMM可以使用动态二进制翻译技术,例如提前替换“push%%cs”指令,并在堆栈上存储一个影子CS寄存器值;例如,读取GDT寄存器的操作可以将“sgdtdest”改为“movlfake_gdt,dest”。
地址空间压缩。
地址空间压缩意味着VMM必须保留GuestOS地址空间的一部分供其使用。
例如,中断描述表寄存器(ID​​TRegister)存储中断描述表的线性地址。
如果GuestOS运行时发生外部中断或者触发处理器异常,必须保证执行权立即转移给VMM。
因此,VMM需要将GuestOS线性地址空间的一部分映射到主机的物理地址到自己的中断描述表中。
VMM可以完全运行在GuestOS的地址空间中,也可以有后一种情况,VMM只占用GuestOS的一小部分地址空间,用于存储中断描述表和全局描述符表(GDT)等重要的特权状态。
无论哪种情况,VMM都应该阻止GuestOS直接读取和修改这部分地址空间。
处理guestOS页面错误异常。
内存是VMM必须充分管理的非常重要的系统资源。
GuestOS理解的物理地址只是来宾物理地址(GuestPhysicalAddress),而不是最终的主机物理地址(HostPhysicalAddress)。
当GuestOS中发生页面错误时,VMM需要知道页面错误的原因。
Guest进程是否正在尝试未经许可访问地址,或者访客线性地址(GuestLinearAddress)尚未转换为GuestPhysicalAddress,或者访客物理地址尚未转换为主机。
物理地址。
一种可行的方案是,VMM为GuestOS中每个进程的页表构造一个影子页表,维护从GuestLinearAddress到HostPhysicalAddress的映射,主机CR3寄存器存储这个影子页表的物理内存地址。
VMM还维护一个从GuestOS全局GuestPhysicalAddress到HostPhysicalAddress的映射表。
发生页错误异常的地址始终是GuestLinearAddress。
VMM首先检查GuestOS中的页表来排查原因。
如果页表项已经建立,即对应的GuestPhysicalAddress存在,说明到HostPhysicalAddress的映射尚未建立,则VMM分配一页物理内存。
更新影子页表和映射表;否则,VMM返回GuestOS,GuestOS自行处理异常。
处理GuestOS中的系统调用。
系统调用是操作系统向用户提供的服务例程,使用非常频繁。
最新的操作系统一般使用SYSENTER/SYSEXIT指令对来实现快速的系统调用。
SYSENTER指令通过三个MSR(ModelSpecificRegister)寄存器IA32_SYSENTER_CS、IA32_SYSENTER_EIP和IA32_SYSENTER_ESP直接转入Ring0级;如果在Ring0级别没有执行SYSEXIT指令,则会触发异常。
因此,如果VMM只能以Trap-And-Emulate的方式处理这两条指令,那么整体性能将会受到很大的损害。
转发虚拟中断和异常。
所有外部中断和主机处理器异常都直接由VMM接管。
VMM构造必要的虚拟中断和异常,然后将它们转发给GuestOS。
VMM需要模拟硬件和操作系统对中断和异常的完整处理流程。
例如,VMM首先要压入GuestOS当前内核堆栈上的一些信息,然后找到GuestOS相应处理例程的地址并跳转到那里。
VMM必须清楚不同GuestOS的内部工作流程,这增加了VMM实现的难度。
同时,GuestOS可能会频繁屏蔽中断和使能中断。
这两个操作访问特权寄存器EFLAGS,并且必须由VMM模拟,因此性能会受到损害。
当GuestOS重新使能中断时,VMM需要及时了解这种情况,并转发累积的虚拟中断。
GuestOS频繁访问特权资源。
GuestOS每次对特权资源的访问都会触发处理器异常,然后由VMM模拟执行。
如果访问过于频繁,系统整体性能将受到极大损害。
例如,要屏蔽和启用中断,cli(ClearInterrupts)指令在Pentium4处理器上需要60个时钟周期。
又例如,处理器的本地高级可编程中断处理程序(LocalAPIC)具有操作系统可修改的任务优先级寄存器(Task-PriorityRegister)。
IO-APIC将外部中断转发给具有最低TPR值的处理器(预计该处理器正在执行低优先级线程)以优化中断处理。
TPR是一些操作系统经常设置的特权寄存器(LinuxKernel仅在初始化阶段为每个处理器的TPR设置相同的值)。
软件VMM遇到的上述挑战本质上是因为GuestOS无法运行在它期望的最高权限级别。
虽然传统的Trap-And-Emulate处理方法基本上以透明的方式解决了上述挑战,但带来很大的后果。
设计复杂性和性能下降。
目前比较先进的虚拟化软件采用了二进制翻译和半虚拟化技术的结合。
其核心思想是动态或静态地改变GuestOS对特权状态访问的操作,最大限度地减少不必要的硬件异常,并简化VM.M的设计。
------------------------------------------------------------------------------------返回顶部Intel-VT硬件辅助虚拟化技术详解中2005年冬天,英特尔带来了业界首个硬件辅助虚拟化技术Intel-VT,为台式电脑及相关处理器产品开启了IA架构虚拟化技术应用的新纪元。
支持虚拟化技术的处理器具有专门优化的指令集来自动控制虚拟化过程,从而大大简化了VMM的设计并大大提高了VMM的性能。
IA-32处理器的虚拟化技术称为VT-x,Itanium处理器的虚拟化技术称为VT-i。
AMD还推出了自己的虚拟化解决方案AMD-V。
Intel-VT和AMD-V虽然不完全相同,但基本思想和数据结构是相似的。
本文仅讨论Intel-VT-x技术。
两种新的操作模式VT-x为IA32处理器添加了两种操作模式:VMXroot操作和VMXnon-root操作。
VMM本身运行在VMXroot操作模式下,GuestOS使用VMXnon-root操作模式。
两种操作模式都支持Ring0~Ring3四种权限级别,因此VMM和GuestOS都可以自由选择自己想要的操作级别。
这两种工作模式可以相互转换。
运行在VMXroot操作模式下的VMM通过显式调用VMLAUNCH或VMRESUME指令切换到VMXnon-root操作模式。
硬件自动加载GuestOS的上下文,因此GuestOS开始运行。
这种转换称为VMentry。
当GuestOS在运行过程中遇到需要VMM处理的事件,如外部中断或者缺页异常,或者主动调用VMCALL指令调用VMM服务时(类似系统调用),硬件会自动挂起GuestOS,切换到VMXroot运行模式,当VMM运行时,这种转换称为VMexit。
VMXroot操作模式下软件的行为与不带VT-x技术的处理器上的行为基本相同;而在VMX非root操作模式下,则有很大不同。
主要区别在于此时运行某些指令或遇到某些事件。
,发生VMexit。
虚拟机控制块VMM和GuestOS共享底层处理器资源,因此硬件需要一个物理内存区域来自动保存或恢复彼此的执行上下文。
该区域称为虚拟机控制块(VMCS),包括客户状态区域(GuestStateArea)、主机状态区域(HostStateArea)和执行控制区域。
在VMentry期间,硬件自动从客户状态区域加载GuestOS上下文。
不需要保存VMM的上下文。
原因与中断处理程序类似,因为如果VMM开始运行,就不会受到GuestOS的干扰。
只有当VMM处理完工作后,才能自行切换到GuestOS。
VMM的下一次运行必须处理新的事件,因此每次VMMentry时,VMM都从通用事件处理函数开始执行;当VMexit时,硬件自动将GuestOS的上下文保存在gueststate区域,从hoststate开始将VMM通用事件处理函数的地址加载到该区域,VMM开始执行。
执行控制区存放可以控制VMentry和退出的标志位,比如标记哪些事件可以引起VMexit,什么样的中断准备好在VMentry期间自动“塞”进GuestOS等等。
客户端状态区和主机状态区都应该包含一些物理寄存器的信息,比如控制寄存器CR0、CR3、CR4;ESP和EIP(RSP、RIP,如果处理器支持64位扩展);CS、SS、DS、ES、FS、GS等段寄存器及其描述项;TR、GDTR、IDTR寄存器;MSR寄存器,如IA32_SYSENTER_CS、IA32_SYSENTER_ESP、IA32_SYSENTER_EIP和IA32_PERF_GLOBAL_CTRL。
宾客状态区不包含通用寄存器的。
VMM在VMexit期间决定是否保存它们,从而提高系统性能。
访客状态区域还包括非物理寄存器的。
例如,32位ActiveState值指示执行GuestOS时处理器的活动状态。
如果指令正常执行,则处于Active状态。
如果三重故障(TripleFault)或其他严重错误处于Shutdown状态等。
前面提到,执行控制区用于存放可以控制VMentry和VMexit的标志位,包括:External-interruptexiting:用于设置是否外部中断中断可以触发VMexit,而不是GuestOS是否屏蔽中断。
Interrupt-windowexiting:如果设置,则当GuestOS取消屏蔽中断时会触发VMexit。
UseTPRshadow:通过CR8访问TaskPriorityRegister(TPR)时,使用VMCS中的影子TPR以避免触发VMexit。
同时,执行控制区域还具有TPR阈值设置。
只有当GuestOS设置的TR值小于阈值时,才会触发VMexit。
CRmasksandshadows:每个控制寄存器的每个位都有一个对应的掩码,它控制GuestOS是否可以直接写入相应位或触发VMexit。
同时,VMCS包含一个影子控制寄存器。
当GuestOS读取控制寄存器时,硬件将影子控制寄存器的值返回给GuestOS。
VMCS还包括一组位图以提供更好的适应性:Exceptionbitmap:选择哪些异常可以触发VMexit,I/Obitmap:访问哪些16位I/O端口触发VMexit。
MSR位图:与控制寄存器掩码类似,每个MSR寄存器都有一组“读”位图掩码和一组“写”位图掩码。
每次发生VMexit时,硬件都会自动在VMCS中存储丰富的信息,以便于VMM识别事件的类型和原因。
在VMentry期间,VMM可以轻松地将事件(中断和异常)注入GuestOS,因为GuestOS的中断描述表(IDT)的地址存储在VMCS中,因此硬件可以自动调用GuestOS的处理程序。
更详细的信息请参考Intel开发手册[5]。
解决纯软件虚拟化技术面临的挑战。
首先,由于新操作模式的引入,VMM和GuestOS的执行被硬件自动隔离。
任何关键事件都可以自动将系统控制权转移给VMM,因此VMM可以完全控制系统的所有资源。
其次,GuestOS可以运行在它期望的最高权限级别,因此解决了权限级别压缩和权限级别名称的问题,并且GuestOS中的系统调用不会触发VMexit。
硬件使用物理地址访问虚拟机控制块(VMCS),VMCS保存了VMM和GuestOS各自的IDTR和CR3寄存器,因此VMM可以拥有独立的地址空间,GuestOS可以完全控制自己的地址空间。
地址空间压缩问题不再存在。
中断和虚拟化异常的问题也得到了很好的解决。
VMM只需要简单设置需要转发的虚拟中断或异常。
VMentry期间,硬件自动调用GuestOS的中断和异常处理程序,大大简化了VMM的设计。
在同时,GuestOS可以在不触发VMexit的情况下屏蔽和取消中断,从而提高性能。
而且,VMM还可以设置为在GuestOS取消屏蔽中断时触发VMexit,这样可以及时转发累积的虚拟中断和异常。
------------------------------------------------------------------------------------返回顶部在虚拟化技术的未来发展中,我们可以看到硬件辅助虚拟化技术必然是未来的发展方向。
Intel-VT仍处于处理器级虚拟化技术的初级阶段,仍需要在以下方面发展:提高运行模式之间的转换速度。
两种工作模式之间的转换非常频繁,如果不能有效降低转换速度,即使充分利用硬件特性,虚拟机的整体性能也会大幅下降。
早期支持硬件辅助虚拟化技术的Pentium4处理器需要花费2409个时钟周期处理VMentry,508个时钟周期处理缺页异常触发的VMexit,成本相当高。
随着Intel技术的不断改进,在新的Core架构上响应时间已降低至937和446个时钟周期。
未来,硬件制造商将需要进一步提高模式转换速度并提供更多硬件功能以减少不必要的转换。
优化转换后备缓冲区(TLB)性能。
每次VMentry和VMexit发生时,TLB(TranslationLookasideBuffer)就会完全清空,因为CR3寄存器需要重新加载。
虚拟化系统中操作模式的转换非常频繁,因此系统的整体性能受到显着影响。
一种可行的解决方案是为VMM和每个虚拟机分配一个全局唯一的ID,并将ID信息附加到TLB中的每个条目中以索引线性地址的翻译。
为内存管理单元(MMU)虚拟化提供硬件支持。
即使采用了Intel-VT技术,VMM仍然必须使用旧方法来处理GuestOS中出现的页面错误。
通常情况下,以及GuestOS的guest物理地址到主机物理地址的翻译,其本质原因是VMM完全控制主机的物理内存,因此GuestOS中线性地址的翻译涉及VMM和GuestOS两者的地址空间,硬件只能看到。
其中之一。
Intel和AMD提出了自己的解决方案,分别称为EPT(ExtendedPageTable)和NestedPaging。
这两种技术的基本思想是,每当遇到Guest物理地址时,硬件会自动查找VMM提供的关于GuestOS的页表,将其翻译成主机物理地址,或者产生缺页异常来触发退出。
支持高效的I/O虚拟化。
I/O虚拟化需要考虑性能、可用​​性、可扩展性、可靠性和成本等多种因素。
最简单的方法是让VMM为虚拟机模拟一个通用的I/O设备。
设备的功能由VMM使用软件或复用主机I/O设备来实现。
例如,VirtualPC虚拟机提供较旧的S3Trio64显卡。
该方法提高了兼容性,充分利用了GuestOS自带的设备驱动程序,但虚拟I/O设备功能有限,性能较低。
为了提高性能,VMM可以直接将主机I/O设备分配给虚拟机,这会带来两个主要挑战:1.如果多个虚拟机可以重用同一个设备,VMM必须保证它们对设备的访问一致。
会互相干扰。
2.如果GuestOS使用DMA来访问I/O设备,由于地址由GuestOS并不是主机的物理地址,VMM必须确保在开始DMA操作之前地址被正确转换。
Intel和AMD都提出了自己的解决方案,分别称为DirectI/O(VT-d)和IOMMU,希望用硬件手段来解决这些问题,降低VMM实现的难度。

虚拟化技术的分类

虚拟化技术的分类1、服务器虚拟化服务器虚拟化是最常见的虚拟化类型。
它将物理服务器的资源(如CPU、内存、存储等)进行抽象,划分为多​​个独立的虚拟服务器。
每个虚拟服务器都可以运行自己的操作系统和应用程序。
该技术显着提高了服务器资源利用率,降低了能耗,简化了管理和维护。
例如VMwareESXi、微软Hyper-V、KVM等都是业界知名的服务器虚拟化平台。
2.网络虚拟化网络虚拟化是将物理网络资源(如交换机、路由器等)转换为逻辑网络资源,以实现更灵活的网络管理、扩展和配置。
网络虚拟化技术包括VLAN、VPN和软件定义网络(SDN)。
3、存储虚拟化存储虚拟化将物理存储资源(如硬盘、闪存等)抽象出来,转化为逻辑存储资源,从而提高存储效率、数据保护和恢复能力,提供更灵活的存储管理。
例如,存储区域网络(SAN)和网络附加存储(NAS)经常使用存储虚拟化技术。
4、应用程序虚拟化应用程序虚拟化技术将应用程序与操作系统分离,使应用程序可以运行在不同的操作系统或设备上,而不必在每个设备上单独安装。
这提高了应用程序兼容性和可移植性,同时降低了部署和管理成本。
例如,CitrixXenApp和MicrosoftApp-V是应用程序虚拟化的常用工具。
5、桌面虚拟化桌面虚拟化技术在数据中心集中运行用户的桌面环境(包括操作系统、应用程序和用户数据),然后通过网络将桌面环境远程交付到用户设备。
该技术提供了更灵活的办公环境、更好的数据安全性和更低的桌面管理成本。
例如,VMwareHorizo​​n和CitrixVirtualDesktops是桌面虚拟化的常见解决方案。

请大神介绍一下虚拟化可以划分为哪些类型,各种类型有什么优缺点以及有什么代表性的产品?

1.托管虚拟化:此类虚拟化技术是通过在主机操作系统内运行虚拟化软件来实现的。
其优点是易于安装和配置,适合个人用户和企业进行开发和测试。
但是,由于它依赖于驱动程序和主机操作系统支持,因此可能会导致性能损失和资源冲突。
代表性产品包括VMwareWorkstations、VirtualBox和MicrosoftVirtualPC。
2、裸机虚拟化(也称全虚拟化):该模式下,虚拟化层直接安装在物理硬件上,不依赖于主机操作系统。
这使得虚拟机能够实现与物理机相似的性能,同时支持多个操作系统和应用程序。
但该技术的实施和维护一般比较复杂,需要较高的技术门槛。
著名的商业产品包括VMwarevSphere、MicrosoftHyper-V和CitrixXenServer。
3.操作系统虚拟化:这种虚拟化技术允许在单个操作系统实例上运行多个隔离的虚拟环境。
启动速度快,管理方便,但绝缘性较弱。
Docker技术和容器是操作系统虚拟化的典型代表。
由于国家对网络安全和自主可控技术的重视,建议在服务器虚拟化领域尽可能使用国产自主可控的产品,如云鸿CNware等,以加强信息安全和安全保障。
确保国家关键信息基础设施稳定运行。

虚拟化技术包括哪些

1.平台虚拟化(PlatformVirtualization)包括计算机和操作系统的虚拟化。
主要分为两类:服务器虚拟化和桌面虚拟化。
服务器虚拟化允许通过资源优先级和隔离来优化服务器资源的使用。
2.资源虚拟化(ResourceVirtualization)侧重于对特定的计算机资源进行虚拟化,以便更好地管理和分配这些资源,提高硬件利用率和灵活性。
3.应用虚拟化(ApplicationVirtualization)包括模拟和仿真等技术,旨在简化应用部署和维护。
通过虚拟化,应用程序可以在不同的环境中运行,而不受底层硬件和操作系统的限制。
4.表示层的虚拟化(PresentationVirtualization)。
这种虚拟化技术与应用程序虚拟化类似,但不同的是,表示层虚拟化涉及的应用程序运行在服务器上,用户通过客户端设备进行交互,这有助于提高数据安全性和易管理性。

相关推荐

小学生python考级有用吗?

小学生python考级有用吗?

小学生python考级有用吗那行得通。Python考试不仅仅是为了获得证书,更重要的是通过准备和考试过程,可以帮助小学生提高科学知识和实践能力。这样的经历可以让孩子在编程过程

linux和windows的区别特点

linux和windows的区别特点

请问LINUX系统和WINDOWS系统的区别有那些?区别一:开放性所谓开放性是指Linux操作系统是一个开源系统,其软件是可以编辑和修改的。微软的Windows受微软版权保护,这意味着它只能在微

以下是正确的python变量名

以下是正确的python变量名

python语言变量命名规则有哪些Python语言中变量命名的主要规则如下:1、变量名必须以字母(a-z、A-Z)或下划线(_)开头,不能以数字开头。2.变量名可以包含字母、数字和下划线,但Pyt