当前位置:首页 > 虚拟化 > 正文

虚拟化的发展历程和技术原理


一、求虚拟技术的发展历史自20世纪60年代以来,美国计算机学术界开始发展虚拟技术。1959年,ChristopherStrachey发表了一篇名为《大型快速计算机中的时间共享》的学术论文,提出了虚拟化的基本概念。这篇文章也被认为是虚拟化技术的基础。最早的讨论
虚拟化技术在x86服务器上的迅速普及,造成了虚拟化技术的爆炸式增长,但虚拟化技术最初只应用于大型机。大型机上的虚拟分区技术可以追溯到20世纪60年代和20世纪70年代,IBM发明了操作系统虚拟机技术,允许用户在一台服务器上运行多个操作系统,从而使用户能够充分利用昂贵的资源。大型机资源。
最早使用的虚拟化技术是IBM7044计算机。继IBM之后,该公司还在20世纪60年代开发了System/360Model67服务器型号,Model67服务器通过虚拟机监视器(VirtualMachineMonitor)来虚拟化所有硬件接口。1965年,IBM的“M44/44X”计算机项目定义了虚拟内存管理机制。用户程序可以在虚拟内存中运行。对于用户来说,这些虚拟内存就像“虚拟机”,提供多个用户程序,提供独立的计算环境。
IBM提出的虚拟机技术导致了许多新产品的出现,例如:IBM360/40、IBM360/67和VM/370。这些机器都具有虚拟机功能。当时,一种名为VMM(虚拟机监控)的技术创建了多个虚拟机实例,可以在物理硬件上独立运行操作系统软件。
由于虚拟化技术在商业应用中的优势,RISC服务器和小型机成为受益于虚拟化技术的第二代产品。1999年,IBM在AS/400上提出了“逻辑分区(LPAR)”技术和新的高可用性集群解决方案。AS/400LPAR在POWER虚拟机管理程序上运行,允许单个服务器作为12个独立服务器运行。2002年,IBM更进一步,其AIX5Lv5.2还包含了IBM首先实现的动态逻辑分区(DLPAR)。DLPAR允许将系统资源(包括处理器、内存和其他组件)分配到独立的分区中,而无需重新启动系统。在不中断运营的情况下分配资源的能力不仅使系统管理变得更加容易,而且还有助于通过更好的资源利用来降低总拥有成本。
然而,尽管HP和Sun效仿IBM在自己的RISC服务器上提供虚拟化技术,但只有少数用户真正使用大型机和小型机,而许多其他产品和技术却没有。。相互兼容,虚拟化技术仍然很少受到公众的关注。现在,虚拟化技术的发展已经让x86架构受益。
过去,x86架构上的虚拟化技术进展缓慢的主要原因是x86架构本身不适合虚拟化。不过这个障碍已经被Intel和AMD修改了。x86处理器指令集已解决;另一个原因是x86处理器的性能不足。由于x86处理器性能的快速提高,这个原因也得到了解决。由于x86架构的广泛普及,x86架构上的虚拟化技术也比以前受到了更大的关注。
随着虚拟化技术在x86平台上的实现,虚拟化应用的广阔前景第一次被大家看到,因为x86平台可以提供低成本、高性能和高度可靠的服务器。更重要的是,一些用户已经开始配置虚拟化生产环境,他们需要新的管理工具来随着虚拟化技术的发展获得更大的效益。
然而,与已经存在多年的UNIX服务器和大型机上的虚拟化技术相比,x86服务器上的虚拟化仍处于早期阶段——根据Intel的蓝图,在集成处理器硬件中——辅助虚拟化只是IA平台的第一步,第二步必须进行I/O虚拟化,直到最终实现整个IA平台的虚拟化。也就是说,目前的x86平台只能实现处理器层面的虚拟化,I/O等方面的虚拟化还需要进一步发展。不仅如此,x86架构上的虚拟化技术无法完美地进行虚拟分区之间的动态迁移,这在UNIX和大型机平台上不再是问题。目前x86架构上虚拟化技术的最高规划是支持8路SMP系统,可以实现单个CPU资源的配置。
2006年以来,从处理器层面的AMD、Intel到操作系统层面的微软,从大量第三方软件厂商的涌现到知名的服务器系统厂商,我们已经服务器完全虚拟化的行业生态圈趋势逐渐形成。这也让虚拟化成为近一两年受到广泛关注的热门话题。总体而言,随着新计算技术的快速发展,虚拟化的前景与一年前相比几乎完全改变,新的虚拟化平台的前景非常乐观。
二、虚拟化基本原理

虚拟化:解锁服务器资源的革命性技术


虚拟化,这项技术的神奇之处在于,它把一台物理服务器变成了一个多租户的竞技场,每个租户都拥有独立的、隔离的虚拟机。它提供的好处包括显着提高资源利用率、灵活的性能调优、提高业务连续性以及易于运维。主要虚拟化类型分为Type-1(如VMwarevSphere)和Type-2(如QEMU/KVM),后者通过操作系统层面实现智能虚拟化,展现了技术的深度和灵活性。


QEMU/KVM的基石:架构与机制


以QEMU/KVM为例。该架构就像一个模拟CPU、内存和I/O设备的复杂阶段。vCPU充当在虚拟阶段执行的“演员”,以VMX模式执行guestOS指令。关键步骤包括CPU状态保存(VMCS)、复杂的内存虚拟化转换(GVA到GPA到GHA)以及设备驱动程序的智能处理。主机就像一个控制器,通过qemu仿真或内核与用户空间之间的直接协作来处理来自虚拟设备的请求。


中断虚拟化路径


中断信号不再直接传递,而是通过I/OAdvancedProgrammableInterruptController(I/OAPIC)传递到vCPU。在虚拟化过程中,微调中断虚拟化过程,保证系统稳定运行。作为Hypervisor的执行线程,vCPU运行在VMX模式下,当遇到敏感操作时,必须通过VMEexit回到Hypervisor进行处理,然后将Guest状态加载到VEntry中继续执行。


VMCS:状态切换的守护者


在VMEexit/Entry过程中,状态信息存储在4KB的VMCS结构中,包括注册表状态、主机状态等和访客状态检查,以及执行和退出/进入控制域等核心数据。该数据容器充当复杂的剧本,确保虚拟机在虚拟世界和物理世界之间无缝转换时保持一致。


内存虚拟化:隐藏的魔术师


在内存虚拟化中,Hypervisor是虚拟内存的幕后控制器,所有的虚拟访问都由Hypervisor负责。最终会被映射到物理内存。当CPU处理虚拟地址(HVA)时,硬件辅助MMU将其转换为物理地址(HPA)。在虚拟环境中,通过多级页表(如GPT、PML4、PDPT等)进行地址转换,Intel的EPT机制提高了效率。然而,EPT管理不善可能会导致性能瓶颈,因此虚拟机管理程序需要良好的规划。


I/O虚拟化的效率


在I/O虚拟化中,遇到传统软件I/O瓶颈,Intel和AMD推出了硬件辅助设备直通和SR-IOV等技术。前者允许guestOS直接访问设备,接近裸机性能,后者通过虚拟PF和VF设备实现高效的资源共享。Virtio技术通过virtqueue减少了上下文切换,将数据传输的效率提升到了一个新的水平。用户空间和内核空间的Hypervisor处理方式也方便了数据交换。


中断处理:虚拟环境的新规则


虚拟环境中的中断处理与物理环境中的不同,是由监控和确定的由管理程序。虚拟APIC和LAPIC的角色已被重新定义。它们在虚拟化中断路由中发挥着关键作用,确保中断信息的准确传递和处理。


总的来说,虚拟化技术前所未有地重塑了服务器的内部运作方式,通过硬件优化和智能机制实现性能提升和资源高效利用。随着虚拟化技术的不断发展,我们可以期待更多的创新和突破来推动计算世界的发展。