虚拟化是云计算的基础。虚拟化使得在一台物理服务器上可以运行多台虚拟机,虚拟机共享物理机的CPU、内存、I/O硬件资源,但逻辑上虚拟机之间是相互隔离的。OpenStack作为IaaS云操作系统,最主要的服务就是为用户提供虚拟机。在目前 OpenStack 的实际应用中,主要使用 KVM 和Xen这两种Linux虚拟化技术。这里主要讨论Linux虚拟化技术。
计算机虚拟化基础
虚拟化体系结构与Hypervisor
虚拟化主要是指通过软件实现的方案,常见的体系结构是一个直接在物理主机上运行虚拟机管理程序的虚拟化系统。在 x86平台虚拟化技术中,这个虚拟机管理程序通常被称为虚拟机监控器(Virtual Machine Monitor,VMM),又称为Hypervisor。它是运行在物理机和虚拟机之间的一个软件层,物理机被称为主机(Host),虚拟机被称为客户机(Guest),中间软件层即Hypervisor。
主机
指物理存在的计算机,又称宿主计算机(简称宿主机)。当虚拟机嵌套时,运行虚拟机的虚拟机也是宿主机,但不是物理机。主机操作系统是指宿主计算机上的操作系统,在主机操作系统上安装的虚拟机软件可以在计算机上模拟一台或多台虚拟机。
虚拟机
指在物理计算机上运行的操作系统中模拟出来的计算机,又称客户机,理论上完全等同于实体的物理计算机。每个虚拟机都可安装自己的操作系统或应用程序,并连接网络。运行在虚拟机上的操作系统称为客户操作系统。
Hypervisor基于主机的硬件资源给虚拟机提供了一个虚拟的操作平台并管理每个虚拟机的运行,所有虚拟机独立运行并共享主机的所有硬件资源。Hypervisor就是提供虚拟机硬件模拟的专门软件,可分为两类:原生型和宿主型。
(1)原生型(Native)
原生型又称裸机型(Bare-metal),Hypervisor作为一个精简的操作系统(操作系统也是软件,只不过它是一个比较特殊的软件)直接运行在硬件之上以控制硬件资源并管理虚拟机。比较常见的有VMware ESXi、Microsoft Hyper-V等。
(2)宿主型(Hosted)
宿主型又称托管型,Hypervisor运行在传统的操作系统上,同样可模拟出一整套虚拟硬件平台。比较著名的有VMware Workstation、Oracle Virtual Box等。
从性能角度来看,不论原生型还是宿主型都会有性能损耗,但宿主型比原生型的损耗更大,所以企业生产环境中基本使用的是原生型Hypervisor,宿主型的Hypervisor一般用于实验或测试环境中。
全虚拟化和半虚拟化
根据虚拟化实现技术的不同,虚拟化可分为全虚拟化和半虚拟化两种,其中,全虚拟化产品将是未来虚拟化的主流。
全虚拟化(Full Virtualization)
用全虚拟化模拟出来的虚拟机中的操作系统是与底层的硬件完全隔离的,虚拟机中所有的硬件资源都通过虚拟化软件来模拟。这为虚拟机提供了完整的虚拟硬件平台,包括处理器、内存和外设,支持运行任何理论上可在真实物理平台上运行的操作系统,为虚拟机的配置提供了较大程度的灵活性。每台虚拟机都有一个完全独立和安全的运行环境,虚拟机中的操作系统也不需要做任何修改,并且易于迁移。在操作全虚拟化的虚拟机的时候,用户感觉不到它是一台虚拟机。全虚拟化的代表产品有VMware ESXi和KVM。
由于虚拟机的资源都需要通过虚拟化软件来模拟,虚拟机会损失一部分的性能。
半虚拟化(Para Virtualization)
半虚拟化的架构与全虚拟化基本相同,需要修改虚拟机中的操作系统来集成一些虚拟化方面的代码,以减小虚拟化软件的负载。其代表产品有Microsoft Hyper-V和XEN。
半虚拟化模拟出来的虚拟机整体性能会更好些,因为修改后的虚拟机操作系统承载了部分虚拟化软件的工作。不足之处是,由于要修改虚拟机的操作系统,用户会感知使用的环境是虚拟化环境,而且兼容性比较差,用户使用时也比较麻烦,需要获得集成虚拟化代码的操作系统。
|