​ 在这云计算风靡的科技时代,虚拟化技术是不可获缺的一环,是前提,是基石。

一、什么是虚拟化

​ 简而言之,一种将硬件资源抽象转化并利用的技术,再简单一些,就是将硬件资源池化(池化是一个非常实用的技术思想,之后会有文章专门阐述)。这里的硬件资源指的是内存,CPU,存储,网络或显卡等计算机所具备的物理资源,虚拟化技术将这些资源变成了”池子“,便可以在一台物理机上建立多个虚拟机,最大限度地运用这些资源。当然,这样的过程肯定会有性能的损耗,不过随着技术水平的不断提高,损耗已不值一提。

二、虚拟化技术的分类

​ 根据VMM(又称Hypervisor,虚拟化的管理程序)分类,可分为Type1和Type2,Type1是在直接在物理设备上安装VMM进行资源抽象,其实现需要对操作系统的源码进行魔改,而Type2则不同,依然需要安装在操作系统上。

​ 从支持程度而言,可分为软件虚拟化和硬件虚拟化。软件虚拟化是通过软件将虚拟机的指令翻译给宿主机执行,消耗较高。硬件虚拟化则可以在硬件层面直接执行虚拟机的指令,效率较高。

​ 从虚拟化的程度程度而言,可分为半虚拟化(又称准虚拟化)和全虚拟化。半虚拟化技术是虚拟机知道自己运行在虚拟环境,虚拟机的操作系统可以主动通知指令到宿主机,减轻了VMM截获指令的要求,可以提升性能并且使虚拟化技术实现更加简单,不过需要更改虚拟机操作系统的源码或安装驱动以获得支持。全虚拟化就是完全模拟出与物理机一摸一样的平台给虚拟机,虚拟机无需任何更改。

三、虚拟化产品

1. Xen

​ 从剑桥大学诞生的非常老牌的虚拟化技术,其历史可追溯到20世纪90年代,是Type1的半虚拟化技术,现在依然活跃于各大云计算厂商。Xen由VMM完全控制物理资源,所以准确地来说,它没有宿主机的概念,用户其实是通过Dom0虚拟机和tool stack来控制其它虚拟机。

2. KVM

​ 后起之秀,诞生于以色列的一家公司,之后被redhat收购。与Xen不同的在于它是一种type2的全虚拟化技术。一台KVM虚拟机对应宿主机inux的一个进程,一个vCPU对应进程中的一个线程,进程中还有单独用来处理I/O的线程。其内存管理也依赖于Linux,即Linux的内存管理技术直接用于虚拟机,如共享内存,KSM,大页和NUMA等。

4. Vmware

​ 最早专注于虚拟化并成功的公司。其旗下两个非常著名的主力产品,workstation和ESXI,前者是type2的桌面级虚拟化产品,后者是type1的服务器级虚拟化产品。

5. HyperV

​ 微软的Type1虚拟化技术,与Xen类似。