服务器虚拟化技术深度科普
虚拟化技术要追述到IBM大型机的虚拟化 z/VM,在z系列大型机(非虚拟化操作系统是z/OS)上实现服务器虚拟化。基于z/VM可以运行上百个虚拟机。后来在Power上的KVM技术是PowerKVM;以及AIX虚拟化PowerVM,支持vSCSI和NPIV两种技术(虚拟出系统叫VIOS)。今天的内容覆盖了CPU虚拟化、内存虚拟化、Intel硬件辅助技术、IO虚拟化和GPU虚拟化等,技术深度科普文章;请老司机们让车,忽略今天的内容。
很多读者可能认为服务器虚拟化技术遭到了容器技术的冲击,可能已经过时了,事实上在很多场景下,虚拟化技术并非容器所能够替代的。所以作为要踏入云计算领域的初学者们,还是有必要深入了解服务器虚拟化。下面我们看看虚拟化发展历程和外在因素和推动力。
分区技术使得虚拟化层为多个虚拟机划分服务器资源的能力;使您能够在一台服务器上运行多个应用程序,每个操作系统只能看到虚拟化层为其提供的虚拟硬件。
虚拟机隔离让虚拟机是互相隔离,一个虚拟机的崩溃或故障(例如,操作系统故障、应用程序崩溃、驱动程序故障等等)不会影响同一服务器上的其它虚拟机。
封装意味着将整个虚拟机(硬件配置、BIOS 配置、内存状态、磁盘状态、CPU 状态)储存在独立于物理硬件的一小组文件中。这样,您只需复制几个文件就可以随时随地根据需要复制、保存和移动虚拟机。
CPU虚拟化发展
服务器虚拟化按照虚拟化程度可分为全虚拟化、半虚拟化、硬件辅助虚拟化。
CPU虚拟化的条件和技术难点,CPU本身有不同运行级别,这些级别对应不同权限。虚拟机执行到这些敏感指令的时候,很有可能出现错误,将会影响到整个机器的稳定,所以不允许VM直接执行。那就需要虚拟化平台解决这个问题。
全虚拟化: VMM在软件堆栈中的位置是传统意义上操作系统所处的位置,而操作系统的位置是传统意义上应用程序所处的位置。每个Guest OS对特殊指令访问通信需要进行二进制转换,以便提供到物理资源(如处理器、内存、存储、显卡和网卡等)的接口,模拟硬件环境。
半虚拟化: Guest OS的部分代码被改变,从而使Guest OS会将和特权指令相关的操作都转换为发给VMM的Hypercall(超级调用),由VMM继续进行处理并返回结果。
硬件辅助虚拟化: 引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式)下,且Guest OS运行在Ring 0下运行。使得Guest OS的核心指令可以直接下达到计算机系统硬件执行,而不需要经过VMM。
1