云计算的一个核心思想就是在服务器端提供集中的物理计算资源,这些计算资源可以被分解成更小的单位去独立地服务于不同的用户,也就是在共享物理资源的同时,为每个用户提供隔离、安全、可信的虚拟工作环境,而这一切不可避免地要依赖于虚拟化技术。
一、虚拟化技术的概述
虚拟化技术对大家来说都不陌生,比如虚拟内存和虚拟服务器等,为了更好的理解虚拟化我们应该首先来了解一下计算机系统的层次结构。
每一层都向上层提供一个抽象,并且每一层只需要知道下层抽象的接口,而并不需要了解其内部运作机制。例如,操作系统看到的是一个硬件抽象层,它并不知道硬件中布线和电器特征。即使硬件层发生变化,只要硬件抽象层不变,那么操作系统层将察觉不到任何的变化。
这种分层有一定的优点。首先,每一层只需要考虑本层的设计以及相邻层间的交互接口,从而大大的降低了系统设计的复杂性,提高了软件的移植性。另外,这样的设计也是给下一层软件模块为上一层软件模块创造“虚拟世界”提供了条件。
所谓的虚拟化就是有位于下层的软件模块,根据上一层软件模块的期待,抽象出一个虚拟的软件或硬件接口,使上一层软件可以直接运行在与自己所期待的运行环境完全一致的虚拟环境上。
虚拟化可以发生在上图中的每一个层次上,硬件的虚拟化,操作系统的虚拟化等等,但是对于IaaS(基础架构即服务)的云计算,更关心的是硬件抽象层上的虚拟化。硬件抽象层上的虚拟化是指通过虚拟硬件抽象层来实现虚拟机,为客户机操作系统呈现出与物理硬件相同或相近的硬件抽象层。