详细解析什么是虚拟化思博SPOTO

时间:2023/12/19 15:49:30 来源:os/2

1、什么是虚拟化?虚拟化和云计算不一样。虚拟化是一种技术,使用虚拟化我们可以在一台物理服务器上模拟出多个独立的服务器来。虚拟化的本质就是将原先的物理设备进行逻辑化,转化成一个文件夹或文件,实现软硬件的解耦。耦合,资源共享,资源动态分配等等。虚拟机里具体有哪些东西:包含两部分,一部分用来记录虚拟机的配置信息,另一部分用来保存用户数据的磁盘文件。2、虚拟化的好处1、使用虚拟化后每台物理机上可以同时运行多个虚拟机每个虚拟机上又可以运行一个操作系统,硬件资源利用率得到了有效提高,减少了硬件资源的浪费。2、并且由于虚拟化技术实现了软硬件的解耦合,虚拟化可以摆脱当前服务器的禁锢,允许在集群范围内实现带着业务的动态迁移,并且迁移过程中可以做到业务无中断、用户无感知。虚拟机的动态迁移就带来了高可用性HA、动态资源调度DRS和分布式电源管理DPM等高级特性。为企业数据中心实现了业务的可移动性、降低运行成本、减少管理费用、整合服务器、容错容灾等优势。3、虚拟化的历史年,“蓝色巨人”IBM就开始尝试在大型机上实现虚拟化,甚至在年,IBM的机就已经实现了分时系统,将CPU占用切分为多个极短时间片,每一个时间片都执行着不同的任务。通过对这些时间片的轮询,这样就可以将一个CPU虚拟化或者伪装成为多个CPU。年,VMware推出了最早的能在x86架构上运行的虚拟化产品。20世纪90年代,伦敦剑桥大学的LanPratt和KeirFraser在一个叫做Xenoserver的研究项目中,开发了Xen虚拟机。作为Xenoserver的核心,Xen虚拟机负责管理和分配系统资源,并提供必要的统计功能。在那个年代,x86的处理器还不具备对虚拟化技术的硬件支持,所以Xen从一开始是作为一个准虚拟化的解决方案(半虚拟化)出现的。因此,为了支持多个虚拟机,内核必须针对Xen做出特殊的修改才可以运行(必须是开源的系统)。另外一个就是大名鼎鼎的KVM,最初是由一个以色列的创业公司Qumranet开发的,作为他们的VDIVirtualDesktopInfrastructure产品的虚拟机。为了简化开发,KVM的开发人员并没有选择从底层开始新写一个Hypervisor,而是选择了基于Linuxkernel,通过加载新的模块从而使LinuxKernel本身变成一个Hypervisor。Redhat公司出人意料地出资1亿百万美金,收购了KVM。年11月,Redhat公司推出了新的企业版LinuxRHEL6,在这个发行版中集成了最新的KVM虚拟机,而去掉了在RHEL5.x系列中集成的Xen。IBM以亿美元收购RedHat(红帽)。Dell完成对EMC、Vmware收购。4、计算虚拟化中的重要概念GuestOS:虚拟机操作系统GuestMachine:虚拟出来的虚拟机Hypervisor:虚拟化软件层/虚拟机监控机(VirtualMachineMonitor虚拟机监控器,VMM)HostOS:运行在物理机之上的OSHostMachine:物理机Hypervisor/VMM(虚拟化操作系统)主要实现两个基本功能:首先是识别、捕获和响应虚拟机所发出的CPU特权指令或保护指令(特权指令和保护指令在CPU虚拟化中介绍));其次,它负责处理虚拟机队列和调度,并将物理硬件的处理结果返回给相应的虚拟机。也就是说,Hypervisor将负责管理所有的资源和虚拟环境。VMM可以看作一个为虚拟化而生的完整操作系统,掌控有所有资源(CPU、内存和I/O设备)。5、计算虚拟化的分类根据Hypervisor的不同类型,我们将虚拟化分为I型和II型两种,又叫裸金属虚拟化和寄居虚拟化。I型虚拟化,也被称为裸金属虚拟化,Hypervisor直接调用硬件资源,不需要底层HostOS,或者说在I型虚拟化中,可以将Hypervisor看做一个定制的HostOS,除了起到VMM的作用外,一般不能在其上安装其它的应用。VMM承担管理资源的重任,其还需向上提供虚拟机VM用于运行GuestOS,因此VMM还负责虚拟环境的创建和管理。采用该结构的虚拟化产品主要有:VMWareESXServer、CitrixXenServer和FusionCompute等。I型虚拟化中Hypervisor啥也不干,就专门负责将物理的硬件资源转换为虚拟资源供GuestOS使用GuestOS就像直接运行在物理硬件上一样,所以称为裸金属。优点:虚拟机不依赖于操作系统,支持多种操作系统,多种应用。缺点:虚拟层内核开发难度大。II型虚拟化也被称为宿主型虚拟化/寄居虚拟化,此模型的物理资源由HostOS管理,实际的虚拟化功能由VMM提供,而VMM作为底层操作系统(Windows或Linux等)上的一个普通应用程序,然后通过其再创建相应的虚拟机,共享底层服务器资源。VMM通过调用HostOS的服务来获得资源,实现CPU、内存和I/O设备的虚拟化。VMM创建出虚拟机VM后,通常将VM作为HostOS的一个进程参与调度。采用该虚拟化产品主要有:VMwareWorkstation、VirtualPC等。II型虚拟化有以下特点:·优点:简单、易于实现。·缺点:安装和运行应用程序依赖于主机操作系统对设备的支持。管理开销较大,性能损耗大。VMM/Hypervisor(虚拟监控器),华为的叫法CNA(计算节点代理),虚拟化的操作系统。VRM是管理CAN的一台管理虚拟机,提供Web界面。6、虚拟化的特点分区:虚拟化层为多个虚拟机划分服务器资源的能力;每个虚拟机可以同时运行一个单独的操作系统(相同或不同的操作系统)作用:每个分区划分资源配额,防止虚拟化超配额使用资源;每个虚拟机单独安装操作系统,彼此互不影响。隔离:通过分区所建立的多个虚拟机之间采用逻辑隔离措施,防止相互影响。封装:封装意味着将整个虚拟机(硬件配置、BIOS配置、内存状态、磁盘状态、CPU状态)储存在独立于物理硬件的一小组文件中。只需复制几个文件就可以随时随地根据需要复制、保存和移动虚拟机。相对硬件独立:虚拟机在封装为独立文件后,虚拟机迁移只需要把虚拟机设备文件和配置文件或磁盘文件复制到另一台主机上运行即可,而不用关心底层的硬件类型是否兼容,这就是相对硬件的独立性。7、CPU虚拟化Ring0、Ring1、Ring2和Ring3,Ring0的权限最高Ring1次之Ring2再次之Ring3最低。Ring0的权限可以直接操作硬件一般只有操作系统和驱动会允许拥有此权限。Ring3的权限最低所有的程序都可以拥有此权限。为了保护计算机,一些危险的指令只能由操作系统执行,防止一些恶意软件随意地调用硬件资源,比如某个程序需要开启摄像头就必须向Ring0的驱动程序请求开启。特权指令:是指用于操作和管理关键系统资源的指令,这些指令只有在最高特权级上才能够运行,即必须在Ring0级别上才能运行的指令。·普通指令:与特权指令相对的是普通指令,这些指令在CPU普通权限级别上就能够运行,即在Ring3级别上就可以运行的指令。敏感指令:是指修改虚拟机的运行模式或宿主机状态的指令,也就是说是将GuestOS中原本需要在Ring0模式下才能运行的特权指令剥夺特权后,交给VMM所执行的指令。实现虚拟化的经典方法:特权解除(取消OS原有的Ring0级别)、陷入模拟(Guestos需要将核心指令交给VMM,由VMM交给硬件执行)没有任何问题,所有的敏感指令都是特权指令都能被VMM捕获执行。CISC架构指令集,复杂指令集计算机有19条指令敏感指令不是特权指令,不能被VMM捕获。这个就叫X86缺陷!简单的来说就是X86的CPU不能通过特权,特权解除和陷入模拟来实现虚拟化。如何解决:架构师想出了解决这个问题的方法,而且还是三种方法。它们分别是:全虚拟化、半虚拟化以及硬件厂商提出的硬件辅助虚拟化全虚拟化:有一种类似于“宁可错杀三千,绝不放过一个”的思路,也就是说将所有虚拟机发出的操作系统请求转发到虚拟机监视器(VMM),虚拟机监视器对请求进行二进制翻译,如果发现是特权指令或敏感指令,则陷入到VMM模拟执行,然后调度到CPU特权级别上执行;如果只是应用程序指令则直接在CPU非特权级别上执行。这种方法由于需要过滤所有虚拟机发出的请求指令,因而被称为全虚拟化方式。全虚拟化方式的优点是:不修改虚拟机操作系统,虚拟机的可移植性和兼容性较强,支持广泛的操作系统;但缺点是运行时修改GuestOS二进制代码,性能损耗较大,并且引入了新的复杂性,导致虚拟机监视器VMM开发难度较大。这个方案中虚拟机知道自己是虚拟机嘛????半虚拟化方案:虚拟化漏洞的问题来源于19条敏感指令,如果我们可以修改虚拟机操作系统GuestOS规避虚拟化漏洞,则问题就容易解决了。修改虚拟机操作系统GuestOS,让虚拟机系统GuestOS能够意识到自己是被虚拟化的,虚拟机操作系统会通过“超级调用”用Hypervisor层来替换虚拟化中的敏感指令,从而实现虚拟化。半虚拟化所具有的优点是:半虚拟化中的GuestOS可以同时能支持多个不同的操作系统,虚拟化提供了与原始系统相近的性能。但缺点是:半虚拟化中的HostOS只有针对开源的系统才能支持被修改如Linux,而对于未开源的诸如Windows系统,则无法实现半虚拟化。硬件辅助虚拟化:虚拟化漏洞问题的解决,无论全虚拟还是半虚拟,都默认一个前提,即物理硬件是不具备虚拟化识别功能的,因此必须识别出这19条敏感指令,并通过虚拟化监视器VMM进行陷入执行。如果物理CPU直接支持虚拟化功能,并且可以识别敏感指令,那么CPU虚拟化方式就将发生革命性的变革。幸运的是,目前主流的x86主机的CPU都支持硬件虚拟化技术,即Intel推出VTx的CPUAMD也推出了AMDV的CPU8、内存虚拟化内存使用原则:1、内存地址都是从物理地址0开始的。2、内存地址空间都是连续分配的。解决内存共享问题的思路就在于引入内存虚拟化技术。内存虚拟化就是把物理机的真实物理内存统一管理,包装成多份虚拟的内存给若干虚拟机使用。内存虚拟化技术的核心在于引入一层新的地址空间客户机物理地址空间。内存虚拟化的内存地址转换涉及到三种内存地址,即虚拟机内存地址(VirtualMemoryAddress,即VA)、物理内存地址PhysicalMemoryAddress,即PA)和机器内存地址(MachineMemoryAddress,即MA)。9、I/O虚拟化由于计算虚拟化的出现,物理服务器上会创建出许许多多的虚拟机,并且每台虚拟机都需要访问物理主机的IO设备。但I/O设备的数量毕竟是有限的,为了满足多个虚拟机共同使用I/O设备的需求,就需要虚拟化监视器VMM参与。VMM用于截获虚拟机对I/O设备的访问请求,再通过软件去模拟真实的I/O设备,进而响应I/O请求。从而让多个虚拟机访问有限的I/O资源。实现I/O虚拟化的方式主要有三种:全虚拟化、半虚拟化和硬件辅助虚拟化,其中硬件辅助虚拟化技术是目前I/O虚拟化的主流技术。全虚拟化:通过VMM为虚拟机模拟出一个与真实设备类似的虚拟I/O设备,当虚拟机对I/O设备发起I/O请求时,VMM截获虚拟机下发的I/O访问请求,再由VMM将真实的访问请求发送到物理设备进行处理。优点在于:虚拟机无论使用任何类型的操作系统,操作系统都不需要为I/O虚拟化做任何修改,就可以让多个虚拟机直接使用物理服务器的I/O设备。缺陷也在于,VMM需要实时截获每个虚拟机下发的I/O请求,截获请求后模拟到真实的I/O设备中。实时监控和模拟的操作都是通过CPU运行软件程序来实现的,因此会对服务器带来较严重的性能损耗。QEMU就是这种虚拟化。半虚拟化:半虚拟化方式与全虚拟化方式的明显区别在于,它需要建立一个特权级别的虚拟机,即特权虚拟机。半虚拟化方式要求各个虚拟机运行前端驱动程序,当需要访问I/O设备时,虚拟机通过前端驱动程序把I/O请求发送给特权虚拟机,由特权虚拟机的后端驱动收集每个虚拟机所发出的I/O请求,再由后端驱动对多个I/O请求进行分时分通道处理。XEN技术就是这种虚拟化。硬件辅助虚拟化:硬件辅助虚拟化不同于前面两种方式,它是直接将I/O设备驱动直接安装在虚拟机操作系统中,不需要对操作系统做任何改动即可使用。这种方式和我们熟悉的传统PC主机操作系统直接访问硬件是相同的。SR-IOV就是这种虚拟化。

转载请注明:http://www.wsqwo.com/tjyy/12948.html
网站首页 | 网站地图 | 合作伙伴 | 广告合作 | 服务条款 | 发布优势 | 隐私保护 | 版权申明 | 返回顶部