一 、虚拟化linux
虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术能够扩大硬件的容量,简化软件的从新配置过程。CPU的虚拟化技术能够单CPU模 拟多CPU并行,容许一个平台同时运行多个操做系统,而且应用程序均可以在相互独立的空间内运行而互不影响,从而显著提升计算机的工做效率。windows
虚拟化的类型:网络
全虚拟化架构
半虚拟化(涉及修改guestos内核,所以仅支持开源kernel的系统)dom
硬件辅助虚拟化(主板上开启虚拟化支持)性能
几种虚拟化软件简介优化
KVM操作系统
彻底虚拟化翻译
架构:寄居架构(linux内核);祼金属架构RHEV-Horm
特色:祼金属架构RHEV-H或在关键的硬盘和网卡上支持半虚拟化VirtIO,达到最佳性能。
I/O协议栈:KVM重用了整个Linux I/O协议栈,因此KVM的用户就天然就得到了最新的驱动和I/O协议栈的改进。
VmWare ESX
彻底虚拟化
架构:裸金属架构
I/O协议栈:VMware选择性能,可是把I/O协议栈放到了hypervisor里面。不幸的是,VMware kernel是专有的,那就意味着VMware不得不开发和维护整个协议栈,会致使开发速度会减慢,你的硬件可能要等一段时间才会获得VMware的支持。
Citrix XenServer
半虚拟化(linux安装linux);全虚拟化(linux安装windows),硬件辅助虚拟化
架构:裸金属架构
I/O协议栈:Xen选择了可维护这条道路,它将全部的I/O操做放到了Linux guest里面,也就是所谓的domain-0里面。重用Linux来作I/O, Xen的维护者就不用重写整个I/O协议栈了。但不幸的是,这样就牺牲了性能:每个中断都必需通过Xen的调度,才能切换到domain 0, 而且全部的东西都不得不通过一个附加层的映射。
硬件虚拟化
CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有经特别优化过的指令集来控制虚拟过程,经过这些指令集,虚拟机能够很容易提升性能,相比纯软件的虚拟化技术会在很大程度上提升性能。
纯软件的虚拟化技术
在纯软件虚拟化解决方案中,虚拟机中的操做系统实际上是真是操做系统下的一个应用程序,所以,虚拟操做系统上的应用程序到实际操做系统就要比一般应用程序多通过一个通讯层。
虚拟化技术分为:
平台虚拟化(Platform Virtualization)
针对计算机和操做系统的虚拟化。
资源虚拟化(Resource Virtualization)
针对特定的系统资源的虚拟化,好比内存、存储、网络资源等。
应用程序虚拟化(Application Virtualization)
包括仿真、模拟、解释技术等。
纯软件虚拟化:
经过模拟完整的硬件环境来虚拟化guestos
效率较低
QEMU
虚拟化层翻译:
多数的虚拟化采用虚拟机管理程序Hypervisor
Hypervisor是一个软件层或者子系统(也称为VMM--Virtual Machine Monitor)
容许多种OS在相同的物理OS中运行
控制硬件并向GuestOS提供访问底层硬件的途径
向GuestOS提供虚拟化的硬件
x86 CPU环
核心指令直接调用运行Ring 0
应用程序运行调用Ring 3
在使用虚拟化时,GuestOS也要有指令运行在Ring 0,为解决此问题采用:
①全虚拟化:
基于二进制翻译
Hypervisor运行在Ring 0(翻译指令)
GuestOS运行在Ring 1
经过异常捕获机制
例如:VM QEMU
②半虚拟化
Hpervisor运行在Ring 0
GusetOS不能直接运行在Ring 0,须要对kernel进行修改,将运行在Ring 0上的指令转为调用Hypervisor
GuestOS上的应用运行在Ring 3
例如:Xen
③硬件辅助虚拟化
Intel-VT和AMD-V建立了一个新的Ring -1单独给Hypervisor使用
GuestOS能够直接使用Ring 0而无需修改
主流例如:KVM VM.ESXi Xen-3.0
Hypervisor分类
类型一:裸金属型(直接安装在硬件设备)
类型二:宿主型(安装的有OS的设备上)