什么是虚拟化
虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。
CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术在云计算中的地位
虚拟化技术承上启下,是云计算底层的关键技术
Hypervisor是什么?
Hypervisor一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。
Hypervisor是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisor不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。
虚拟化分类
平台虚拟化
寄居架构
首先安装宿主机操作系统,在宿主机操作系统上再安装VMM,利用VMM管理和创建虚拟机。例如:VMWare Workstation、VirtualBox等。
主要应用于开发、测试、个人小型应用等。
裸金属架构
将VMM直接安装在物理机上而无须预先安装操作系统,安装了VMM之后,在VMM上安装其他操作系统。例如:Citrix XenServer、MicroSoft hyper-v等。
主要用于数据中心生产环境。
资源虚拟化
内存虚拟化
内存虚拟化可能是最困难的任务,内存负责管理和分配物理内存,以及保证硬件分页调度和分割的安全使用。由于几个域共享了一个内存,必须要注意保持域的隔离。虚拟必须保证两个特权域能够访问同一个内存范围。每个分页或目录表的更新必须通过验证,以保证这些域只操纵他们自己的表。
CPU虚拟化
CPU虚拟化技术是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间运行而互不影响。
CPU虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在CPU虚拟化技术中,则可以同时运行多个操作系统,而且每个操作系统可以运行多个程序,每个操作系统都运行在一个虚拟的CPU或者是虚拟主机上。而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
存储虚拟化
存储虚拟化是将底层存储设备进行抽象化统一管理,向服务器层屏蔽存储设备硬件的特殊性,而只保留其统一的逻辑特性,实时地在后台从一个存储平台向另一个平台迁移,而不对主机造成任何中断或影响。从而实现了存储系统集中、统一而方便的管理。对一个计算机系统来说,整个存储系统中的虚拟存储部分就像计算机系统中的操作系统,对下层管理着各种特殊而具体的设备,而对上层则提供了相对统一的运行环境和资源使用方式。
I/O虚拟化
服务器使用一个输入/输出内存管理单元(input/output memory management unit,IOMMU)将DMA I/O总线连接到主存储器,和传统的内存管理单元一样,它将CPU可见的虚拟地址转换成物理地址,IOMMU会将设备可见的虚拟地址映射到物理地址,输入/输出内存管理单元提供了内存保护功能,隔离和限制设备访问由分区管理设备拥有的资源。I/O设备的虚拟化遵循了与CPU和内存虚拟化类似的思想。
服务器虚拟化
服务器虚拟化就是将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的服务器,不在受限于物理上的界限,而是让CPU、内存、磁盘、I/O等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理,实现服务器整合。核心思想:能够通过区分资源优先次序并随时随地能够将服务器资源分配给最需要它们的工作负载来简化管理和提高效率,从而减少为单个工作负载峰值而存储的资源。
网络虚拟化
网络虚拟化是将多个硬件或软件网络资源,以及相关的网络功能集成到一个可用软件中统一管理的过程。并且对于网络应用而言,改网络环境的实现方式是透明的。改网络环境称为虚拟网络,形成改虚拟网络的过程为网络虚拟化。