版权归原作者所有,如有侵权,请联系我们

[科普中国]-虚拟机扩展

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟机扩展是指将虚拟机的存储空间扩大到合适大小或在一个硬件平台上搭建多个虚拟机平台,用于不同的应用。

简介

虚拟机扩展一般来说是通过某种方法来扩展虚拟机的存储空间,主要是为了提高虚拟机的性能和提高系统资源利用效率。虚拟机扩展另一种解释是指虚拟机体系结构扩展,即扩展调试寄存器、内存访问监视寄存器等基础调试机构,这一般用于一些特定领域如软件调试。在提供内存访问行为分析、多数据断点跟踪等基础功能之上,进一步支持数据操作语义正确性、软件行为一致性等高层调试支持1。

方法

虚拟机的内存占用机制,其内存资源一旦分配,就会被虚拟机操作系统持续占用,即使该虚拟机大量内存资源空闲,被占用的宿主机内存资源也无法被其他虚拟机利用,造成资源池内存资源不足。针对以上实际生产中的问题,传统的解决方法一般不外乎两种,一种是简单粗暴地增加服务器的内存配比,通过加大内存的方式解决内存不足的问题。第二种方法是通过swap的方式,将部分内存保存在硬盘上,缓解内存不足的压力。其中方法一自然是简单有效,并且没有任何风险隐患,但是内存价格高昂。而通过swap的方式解决内存问题则很不可靠。由于linux本身的内存优化机制,还有硬盘本身的性能所限,当应用直接访问swap内的资源时,往往会对应用造成极大的不利影响。

Linux kernel都支持内存超分 (Memory Overcommit),KVM还可以对相同类型的虚机利用KSM(Kernel Same-page Merging)合并完全一致的内存页表。但当部署密度较大时,随着活跃的内存页表增加,仍然容易出现swap,从而引起应用程序被强制中断或者运行异常。在云场景中,虚机内部应用访问到swap资源,造成应用崩溃,进而影响到虚机的稳定性。当希望重新创建一个新的虚机接替原有的虚机时,本地内存资源仍然在被占用,而新虚机被迫在swap上创建内存,造成新虚机创建失败。这种负面的连锁效应对于整个云计算系统而言是灾难性的2。

虚拟机

虚拟机监视器是一个能够提供计算机硬件完整模拟的软件层, 虚拟机监视器中创造的系统抽象就称之为虚拟机,它让使用虚拟机的操作系统认为自己是直接运行于硬件之上的。虚拟机监视器中模拟的计算机硬件要做到跟真机的硬件尽可能一致,这样应用程序和操作系统就可以在虚拟机透明地运行。虚拟机监视器可以让多个虚拟机能够同时利用所有资源。虚拟机监视器起的作用就是提供一种抽象,可以使得多个虚拟实例运行在同一个硬件平台上。虚拟机(virtual machine),在计算机科学中的体系结构里,是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。虚拟机技术大致可以分成三类完全虚拟化、半虚拟化、模拟器。完全虚拟化是指允许多个操作系统在同一台主机上运行。所有这些例子都对底层硬件至少是底层硬件的一个子集进行了完全虚拟化的实现。完全虚拟化技术最大的好处就是可以无需修改操作系统,直接移植到虚拟环境中,支持多个OS。因为完全虚拟化往往只能对特定硬件的特点进行虚拟,在虚存管理和设备管理方面,需要花费大量的代码进行处理,这对软件运行的效率必定会产生极大的影响,同时也增加了虚拟软件层的复杂度。因此,半虚拟化技术也应运而生。半虚拟化技术通过对操作系统的内核做一定的修改,使得原本一些需要直接通过CPU执行的保护任务,可以在修改后的内核中直接执行,这样就有效的提高了虚拟机的效率。模拟器只是读取CPU指令,对它们指令进行解释,并且模拟执行,保证这些代码指令的执行效果。模拟器需要模拟硬件的各个寄存器和状态机的状态,往往CPU会耗费巨大的开销,严重影响性能。

本词条内容贡献者为:

王伟 - 副教授 - 上海交通大学