1.1.3 为什么需要虚拟化技术

虚拟化技术主要有以下几点优势。

1)Hypervisor可以在同一物理设备上并行运行多种操作系统。例如,可在基于Hypervisor构建的虚拟平台上同时运行提供实时任务的RTOS(如VxWorks、μC/OS-Ⅱ等)和提供非实时任务的GPOS(如Linux或Windows),既解决了GPOS实时性方面的不足,又解决了RTOS应用不够丰富的劣势,如图1-4所示。

2)通过虚拟化技术可以把不同子系统封装到不同的虚拟机中。比如,驱动程序、网络协议栈或者文件系统等内核组件可以直接运行在某个虚拟机上,其他子系统可以共享这些组件,这大大提高了系统的安全性和代码的复用率。即使其中一个子系统崩溃或者被攻击,也不会影响其他子系统。

图1-4 典型Hypervisor示意图

对于现代嵌入式操作系统来说,代码量越来越庞大,存在的安全隐患也越来越多。比如,缓冲区溢出攻击就是一种常见的网络攻击手段,原理是利用用户程序对缓冲区的超界访问,访问系统关键数据和程序,进而窃取系统的控制权。在没有使用Hypervisor架构的系统(见图1-5a)中,缓冲区溢出攻击一旦成功,整个操作系统将暴露在入侵者面前,入侵者将能完全控制整个系统资源,访问所有的关键模块。而在使用了Hypervisor架构的系统(见图1-5b)中,即使用户端的交互应用被入侵,导致其所在的操作系统被劫持,也不会致使运行在Hypervisor上的其他客户操作系统被控制,即把系统被入侵的损害降到了最低。

图1-5 缓冲区溢出攻击示意图

3)Linux作为主流GPOS的优点是使用免费,且有一个庞大的开源社区支持。Linux遵照GPL(GNU General Public License,GNU通用公共许可协议),要求任何由Linux衍生出来的代码都要遵照同样的许可发布,也就意味着开源。这对商业开发者来讲是一个两难的选择,既希望使用免费的系统,又需要保护商业机密。通过Hypervisor可以实现许可的隔离,如图1-6所示。

图1-6 许可隔离

4)虚拟化技术实现了软件和硬件的松散耦合,使得客户操作系统只需要做极少的改动就可以移植到一个新的平台。虚拟化技术还可以为客户操作系统提供稳定的运行环境,特别是维护周期长的系统,可以不受硬件平台限制而得到较长时间的维护。采用Hypervisor方案,看起来像是把所有的鸡蛋放在同一个篮子里。如果运行所有虚拟机的Hypervisor崩溃了,其结果可能比单独一台专用服务器的崩溃要严重得多。然而大多数服务器停机的根源不在于硬件故障,而主要在于臃肿、不可靠、有漏洞的软件,特别是操作系统。使用Hypervisor方案,可以让运行在特权模式下的软件仅有Hypervisor,其代码量比一个完整操作系统的代码量低两个数量级,也就意味着漏洞的数量也低两个数量级,风险系数大大降低。

除了松散耦合带来的强大隔离性,采用Hypervisor方案还有其他的好处。其一是减少物理机器的数量,占用空间更少,节省了硬件与电源的开支。其二是可以设置备份点,虚拟机的迁移仅需移动内存映像和主要保存在操作系统中的进程关键状态信息(包括与打开文件、警报、信号处理函数等相关的信息),这使得虚拟机的迁移比在普通操作系统中进行进程的迁移要容易得多。