话说英特尔创始人戈登·摩尔曾说过:“集成电路上可容纳的晶体管数目,约每隔两年便会增加一倍”。
换言之,就是:处理器的性能每隔两年翻一倍。
如此快速的发展,导致硬件的成本越来越低,甚至到了性能过剩的地步。这可怎么办,眼睁睁地看着资源闲置吗?
我们先看下面的一个案例。
某小公司想要搭建三个应用:邮件系统,文档管理,企业内网。到底要买多少服务器呢?
由于公司人少,负荷轻,性能上一台服务服务器就足够用了,但多个应用装在一起的话,不但资源调用可能起冲突,维护起来也麻烦。
但如果买三台服务器的话,又是狮子搏兔,严重浪费。这可怎么办?
既然一套服务器的硬件性能过剩,那么把它划分成三个逻辑上完全隔离的虚拟服务器,每个上面再各自安装操作系统,部署各自的应用不就行了吗?
这样一来,几台虚拟机虽然共用了硬件,但在应用看来,它们使用的CPU,内存,硬盘,网卡等资源又是完全独立的,互相隔离,互不冲突。
这就是虚拟化的奥义:分区,隔离,封装,独立于硬件。
因此,物理机,通常称作“
宿主机(Host)
”,而虚拟机,则也被称作“客户机(Guest)
”。这其中的含义非常直白,“客户机”是寄生在“宿主机”之上的虚拟之物,不能脱离宿主机独立存在。
虚拟化怎么实现?实现虚拟化的核心就是引入相关功能的软件。这类软件就叫做
Hypervisor
,也就是“超级监督者
”。这些“超级监督者”拥有通天的本领,能全面接管服务器上的物理CPU,内存,硬盘,网卡等硬件,把它们抽象成逻辑资源池,并按需分给每个虚拟机。
这样一来,每个虚拟机都能独立使用自己的虚拟CPU,内存,硬盘,网卡,就像它们是物理实在的一样。
“超级监督者”实际上就充当的是物理硬件和逻辑资源之间沟通的桥梁,因此也被叫做“中间件”。
目前有两种虚拟化实现方式,一种叫做“
寄居式虚拟化
”,另一种则叫做“裸金属虚拟化
”。对“
寄居式虚拟化
”来说,物理硬件上是一层操作系统,操作系统上再安装虚拟化软件Hypervisor,通过虚拟化软件再划分出多个虚拟机,各个虚拟机上再安装各自独立的操作系统之后,就可以部署应用了。可以看出,这种虚拟化方式存在两层操作系统,虚拟机的操作系统是寄居在物理机的操作系统之上,并由Hypervisor来在中间整合的,叫“寄居式虚拟化”实至名归。
对于“
裸金属虚拟化
”来说,物理硬件上不需要装操作系统,直接安装Hypervisor来接管硬件并提供虚拟化功能。Hypervisor直接运行于裸机之上,叫“裸金属虚拟化”也是非常直观的。一般来说,寄居式虚拟化虽然效率低一点,但是Hypervisor却简单,易于实现。因此,对于个人及小规模虚拟机应用,使用寄居式虚拟化是比较方便快捷的。
裸金属架构的虚拟化不依赖于操作系统,非常灵活,但是Hypervisor虚拟层的开发难度大,价格也就更为昂贵,多用于大型企业级应用。