虚拟机(Virtual Machine)指通过软体模拟的具有完整硬体系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟机扩展是指将虚拟机的存储空间扩大到合适大小或在一个硬体平台上搭建多个虚拟机平台,用于不同的套用。
基本介绍
- 中文名:虚拟机扩展
- 外文名:Virtual Machine Extensions
- 领域:计算机系统
- 目的:扩展记忆体或套用需求
- 有关术语:虚拟机
- 方法:增加记忆体配比
简介
虚拟机扩展一般来说是通过某种方法来扩展虚拟机的存储空间,主要是为了提高虚拟机的性能和提高系统资源利用效率。虚拟机扩展另一种解释是指虚拟机体系结构扩展,即扩展调试暂存器、记忆体访问监视暂存器等基础调试机构,这一般用于一些特定领域如软体调试。在提供记忆体访问行为分析、多数据断点跟蹤等基础功能之上,进一步支持数据操作语义正确性、软体行为一致性等高层调试支持。
方法
虚拟机的记忆体占用机制,其记忆体资源一旦分配,就会被虚拟机作业系统持续占用,即使该虚拟机大量记忆体资源空闲,被占用的宿主机记忆体资源也无法被其他虚拟机利用,造成资源池记忆体资源不足。针对以上实际生产中的问题,传统的解决方法一般不外乎两种,一种是简单粗暴地增加伺服器的记忆体配比,通过加大记忆体的方式解决记忆体不足的问题。第二种方法是通过swap的方式,将部分记忆体保存在硬碟上,缓解记忆体不足的压力。其中方法一自然是简单有效,并且没有任何风险隐患,但是记忆体价格高昂。而通过swap的方式解决记忆体问题则很不可靠。由于linux本身的记忆体最佳化机制,还有硬碟本身的性能所限,当套用直接访问swap内的资源时,往往会对套用造成极大的不利影响。
Linux kernel都支持记忆体超分 (Memory Overcommit),KVM还可以对相同类型的虚机利用KSM(Kernel Same-page Merging)合併完全一致的记忆体页表。但当部署密度较大时,随着活跃的记忆体页表增加,仍然容易出现swap,从而引起应用程式被强制中断或者运行异常。在云场景中,虚机内部套用访问到swap资源,造成套用崩溃,进而影响到虚机的稳定性。当希望重新创建一个新的虚机接替原有的虚机时,本地记忆体资源仍然在被占用,而新虚机被迫在swap上创建记忆体,造成新虚机创建失败。这种负面的连锁效应对于整个云计算系统而言是灾难性的。
虚拟机
虚拟机监视器是一个能够提供计算机硬体完整模拟的软体层, 虚拟机监视器中创造的系统抽象就称之为虚拟机,它让使用虚拟机的作业系统认为自己是直接运行于硬体之上的。虚拟机监视器中模拟的计算机硬体要做到跟真机的硬体儘可能一致,这样应用程式和作业系统就可以在虚拟机透明地运行。虚拟机监视器可以让多个虚拟机能够同时利用所有资源。虚拟机监视器起的作用就是提供一种抽象,可以使得多个虚拟实例运行在同一个硬体平台上。虚拟机(virtual machine),在计算机科学中的体系结构里,是指一种特殊的软体,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软体所创建的环境来操作软体。虚拟机技术大致可以分成三类完全虚拟化、半虚拟化、模拟器。完全虚拟化是指允许多个作业系统在同一台主机上运行。所有这些例子都对底层硬体至少是底层硬体的一个子集进行了完全虚拟化的实现。完全虚拟化技术最大的好处就是可以无需修改作业系统,直接移植到虚拟环境中,支持多个OS。因为完全虚拟化往往只能对特定硬体的特点进行虚拟,在虚存管理和设备管理方面,需要花费大量的代码进行处理,这对软体运行的效率必定会产生极大的影响,同时也增加了虚拟软体层的複杂度。因此,半虚拟化技术也应运而生。半虚拟化技术通过对作业系统的核心做一定的修改,使得原本一些需要直接通过CPU执行的保护任务,可以在修改后的核心中直接执行,这样就有效的提高了虚拟机的效率。模拟器只是读取CPU指令,对它们指令进行解释,并且模拟执行,保证这些代码指令的执行效果。模拟器需要模拟硬体的各个暂存器和状态机的状态,往往CPU会耗费巨大的开销,严重影响性能。