- 1 概述
- ▪ 虚拟机的定义
- ▪ 系统虚拟机
- ▪ 进程虚拟机
- ▪ 系统虚拟机和进程虚拟机的区别
- ▪ 虚拟化技术的概念
- ▪ 虚拟机监视器
- ▪ 虚拟机管理器
- ▪ 虚拟机与物理机的区别
- 2 发展历程
- ▪ 初始阶段
- ▪ 发展阶段
- ▪ 逐渐成熟阶段
- 3 常见标准和协议
- ▪ CIM
- ▪ OVF
- ▪ vSwitch
- ▪ vRouter
- 4 常见的虚拟机软件
- ▪ Oracle VM VirtualBox
- ▪ VMware Workstation Pro
- 5 特性
- ▪ 优点
- ▪ 分区
- ▪ 封装
- ▪ 独立于硬件
- ▪ 缺点
- 6 相关技术
- ▪ CPU虚拟化
- ▪ 内存虚拟化
- ▪ 设备虚拟化
- ▪ 解码-分派解释
虚拟机(英文全称:Virtual Machine,缩写:VM),是基于计算机架构,通过软件对计算机系统进行虚拟化,从而提供跟实体计算机相同功能的技术。通俗来说,虚拟机本质上是一个计算机系统,它能在一个完全隔离的环境下,利用软件模拟硬件系统的所有功能。在保证虚拟机可以隔离运行的同时,还可以做到虚拟机与物理主机之间的资源同步。
概述
编辑虚拟机的定义
系统虚拟机
虚拟机的定义最早由Popek和Goldberg提出,被称为实体计算机的高效且独立的副本。这类虚拟机被称为系统虚拟机,是一种严密隔离且内含操作系统和应用的软件容器。每个自包含虚拟机都是完全独立的。通过将多台虚拟机放置在一台计算机上,可以仅在一台物理服务器或“主机”上运行多个操作系统和应用。
系统虚拟机
进程虚拟机
进程虚拟机能够支持单一进程。在进程虚拟机中,虚拟化软件被放置在ABI接口,操作系统和硬件组合的上面。虚拟软件仿真用户级指令和操作系统调用。通常底层平台被称作主机,运行在虚拟软件中的应用程序称作客户机。与虚拟机相应的被虚拟机仿真的真实平台被称作本地机。在进程虚拟机中,虚拟软件通常被称作运行时。运行时被创建用来支持客户进程并且运行在操作系统上。虚拟机支持客户进程,只要客户进程执行,虚拟机终止直到客户进程终止。
进程虚拟机
系统虚拟机和进程虚拟机的区别
进程虚拟机的运行位于用户程序、操作系统和物理机之间,消除了用户程序与机器平台之间的依赖关系。而系统虚拟机则运行在操作系统和物理机之间,彻底摆脱了软件和硬件之间的依赖关系。
虚拟化技术的概念
虚拟化是通过“软件定义”把物理硬件抽象逻辑化,实现逻辑资源与底层硬件相隔离,通过对逻辑资源有效的管理利用,实现物理硬件资源效率最大化。虚拟化技术就是将事物从一种形式转变成另一种形式的方法,虚拟机技术就是虚拟化技术的一种。计算机世界中最常用的虚拟化技术有操作系统中虚拟内存,若用户需要的内存空间大于物理机器的内存,可以利用内存的虚拟化技术,将一部分硬盘虚拟化为内存,在对用户透明的情况下,和物理内存一起完成用户的操作。又比如,可以利用虚拟专用网技术(VPN)在公共网络中虚拟出一条安全稳定的“隧道”,让用户感觉像是使用私有网络一样。
虚拟机监视器
虚拟机监视器,也称为Hypervisor或Virtual Machine Monitor。虚拟机通常包含整个操作系统及其应用程序,同时也需要运行一个Hypervisor来控制虚拟机。Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的"元"操作系统,它可以协调访问服务器上的所有物理设备和虚拟机。Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。
虚拟机管理器
虚拟机管理器也称为虚拟机监控器 (VMM),用于管理相互独立运行的虚拟机。它在逻辑上将虚拟机彼此分离,为每个虚拟机分配自己的底层计算能力、内存和存储分片。这可防止VM相互干扰。因此,当一个操作系统崩溃或受到安全攻击时,其他操作系统可不受影响。虚拟机管理器是一个小型软件层,支持多个操作系统相互独立地并行运行,共享相同的物理计算资源。 这些操作系统采用虚拟机 (VM) 的形式,也就是在软件中模拟整个计算硬件环境的文件。
虚拟机与物理机的区别
虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。物理机是相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。通过物理机和虚拟机的配合,一台计算机上可以安装上多个操作系统(一个外界操作系统和虚拟机中的数个操作系统),并且几个操作系统间还可以实现通信,就像是有多台计算机一样。
发展历程
编辑初始阶段
1960年,为了应对物理学领域的计算需求,美国启动 Atlas 超级计算机(Super Computer)项目。1961年,由麻省理工学院的Fernando Corbato教授带领团队开始研发CTSS(Compatible Time Sharing System,兼容性分时系统)项目,并由IBM提供硬件设备和工程师进行支持。同年,IBM 7094机实现了分时系统,这一技术将CPU占用切分为多个极短的时间片(大约1/100秒),每个时间片都执行不同的任务。通过对这些时间片的轮询,可以实现将一个CPU虚拟化或伪装成多个CPU,并且让每个虚拟CPU看起来都在同时运行,这可以看作是虚拟机的雏形。1964 年,IBM征召六万多名新员工,创建五座新工厂,推出了System/360。System/360 不仅实现了让单一操作系统适用于整个系列的产品,还实现了基于全硬件虚拟化的虚拟机解决方案1966年,马丁·理察德在剑桥大学,以CPL编程语言为基础,发明了BCPL编程语言,同时,BCPL编译器的O-code Machine出现,它用于执行O-code的虚拟机,推动了虚拟机的进程。1970年,Euler语言使用了一种叫P的中间语言,后来被Pascal语言所普及,标志着结构化程序设计时期的开始。1972年,IBM正式将system/370机的分时系统命名为虚拟机,虚拟机就此正式诞生了。1979年,Unix的第7个版本引入了chroot机制,意味着第一个操作系统虚拟化诞生了。1980年,Smalltalk-80的出现,推进了即时编译(JIT)作为使用进程虚拟机的实现方式。后期出现的比较有名的Smalltalk虚拟机有VisualWorks、Squeak虚拟机以及Strongtalk等。
发展阶段
20世纪80年代至90年代,为解决x86服务器带来了的如基础架构利用率低等难题,虚拟化技术及公司如同雨后春笋般涌现。1987年,Insignia Solutions公司演示了一个被称为SoftPC的软件模拟器,这个模拟器允许用户在Unix工作站上运行操作系统(DOS)应用。当时一个可以运行操作MS DOS的个人电脑需要1500美金,而使用SoftPC模拟,就可以直接在大型工作站上运行Microsoft DOS。1989年,InsigniaSolutions发布了Mac版的SoftPC,使苹果用户不仅能运行DOS,还能运行Windows 操作系统。1990年,IBM推出的system/390机支持逻辑分区,即将一个CPU分为若干份(最多10份),而且每份CPU都是独立的,也就是一个物理CPU可以逻辑的分为10个CPU。1996年1月23日,JDK1.0诞生,它是JAVA真正意义上第一台JVM虚拟机,随后又出现了例如HotSpot JVM,OpenJ9等不同的JVM实现方式。1997年,苹果开发了Virtual PC,后来又卖给了Connectix 公司。1998年,x86仿真模拟器Bochs发布。同年,VMWare公司成立,并在1999 年开始销售VMWare workstation。2001年,VMWare发行了ESX和GSX, 也就是现在经常使用的ESX-i的前身。同年,Fabrice Bellard发布了采用动态二进制翻译技术的开源虚拟化软件QEMU的第一个版本。
2003年,Connectix被微软收购, 后续推出了Microsoft Virual PC。同年,VMWare被EMC收购。也在这一年,英国剑桥大学的一位讲师发布了开源虚拟化项目Xen,并成立XenSource公司,通过半虚拟化技术为x86-64提供虚拟化支持。2004年,微软发布Virtual Server 2005计划,象征着虚拟化技术正式进入主流市场。2005年,OpenVZ发布,这是Linux操作系统的容器化技术实现,同时也是LXC的核心实现。2006年,Intel和AMD等厂商相继将对虚拟化技术的支持加入到x86体系结构的中央处理器中。2007年1月,Sun公司发布了开源虚拟化软件VirtualBox。同年Xen被Citrix收购。2007年2月,Linux Kernel 2.6.20合入了由以色列公司Qumranet开发的虚拟化内核模块KVM。2008年第一季度,微软同时发布了Windows Server 2008 R2及虚拟化产品Hyper-V。
逐渐成熟阶段
2010年10月21日,NASA 发布了云操作系统OpenStack,推动了云计算在中国的全面爆发。2011年5月,IBM和红帽,联合惠普和英特尔一起,成立了开放虚拟化联盟(Open Virtualization Alliance)。2013年3月15日,在加利福尼亚州圣克拉拉召开的Python开发者大会上,DotCloud的创始人兼首席执行官Solomon Hvkes首次提出了Docker这一概念。2014年6月,Docker发布了第一个正式版本v1.0。同年,Redhat和AWS宣布为 Docker提供官方支持。2015年7月21日,Kubernetes v1.0发布,标志着云原生时代来临。2018年,IBM正式收购Redhat。同年,微软收购Github。2019年,开源盛会KubeCon + CloudNativeCon + Open Source Summit、Open Infrastructure Summit相继在上海举办。
常见标准和协议
编辑CIM
CIM是一个开放标准,旨在为ESXi主机硬件资源的标准监控提供框架,而无需代理程序。该框架包括一个CIM对象管理器(通常称为"CIM代理程序"),以及一组CIM提供程序。CIM提供程序用于管理和访问设备驱动程序及底层硬件。这些提供程序可以由硬件供应商(如服务器制造商和硬件设备供应商)编写,以便监控和管理其设备。CIM代理程序从所有的CIM提供程序中获取信息,并使用标准的API将这些信息提供给外部。
OVF
OVF(开放虚拟化格式)是一个开放的标准,用于以包的形式组织多个文件。例如,.ovf、.vmdk、.nvram 等文件。它的目的是支持在不同产品和平台之间交换虚拟设备。OVA(开放虚拟化格式应用程序)是OVF的单文件发行版。当将虚拟机导出为OVF文件时,会创建一个包含OVF文件和虚拟磁盘文件的目录。
vSwitch
在一个物理网络拓扑中,常见的连接方式是路由器与交换机之间的连接,以及交换机与PC机之间的连接。这样不同的服务器和PC机可以通过交换机的连接相互连通。vSwitch是一种由ESXi内核提供的虚拟交换机,用于连接不同的虚拟机和管理界面。它可以由一块或多块虚拟机网络适配器组成,但不同的vSwitch无法使用同一块虚拟机网络适配器。在安装过程中,默认会创建第一个虚拟交换机vSwitch0,用于主控台和虚拟机联机等功能。vSwitch的作用类似于物理网络中的交换机,它使得虚拟机能够进行内部通信和与外部网络进行连接。
vRouter
vRouter(虚拟路由器)模拟了传统基于硬件的第三层IP路由器的功能。通过网络功能虚拟化(NFV)的方式,虚拟路由器将原本依赖于专用硬件设备的路由功能转换为在软件上运行,而不再依赖于商用硬件设备。这样做的好处包括降低硬件成本,并且有助于实现硬件的互操作性,不需要依赖特定的硬件平台。
常见的虚拟机软件
编辑Oracle VM VirtualBox
Oracle VM VirtualBox是一款开源、低开销、跨平台的桌面虚拟化软件,可以支持多达32个虚拟CPU的大量工作负载,受支持的主机操作系统包括Windows、Linux和macOS。通过该软件,开发人员能够在一台设备上运行多个操作系统。同时,使用 VirtualBox可以减少桌面和服务器配置,从而降低运营成本,缩短在本地和云端安全部署应用所需的时间。
VirtualBox
VMware Workstation Pro
VMware Workstation Pro是一款标准桌面Hypervisor,使用它可在Windows或Linux桌面上运行Windows、Linux和BSD虚拟机。借助VMware Workstation Pro,可以运行复杂的本地虚拟环境,从而在同一桌面PC上模拟操作系统、平台和云环境。在开发和测试中使用VMware Workstation Pro,可以修复更多错误并按时交付高质量代码。VMware Workstation Pro具备虚拟网络连接功能,为虚拟机创建和配置复杂的IPv4和IPv6虚拟网络,并增加网络延迟和带宽模拟功能。
VMware
特性
编辑优点
分区
虚拟机的分区特性是其能够在一台物理机上同时运行多个操作系统,并且可以根据需要分配系统资源给不同的虚拟机。这种分区特性使得虚拟机成为一种灵活且高效的解决方案,能够满足不同用户的需求。通过虚拟化技术,一个物理服务器可以被划分为多个虚拟机,每个虚拟机都具有自己的操作系统和应用程序,而且彼此之间是相互隔离的。这样的分区特性使得虚拟机能够更好地利用物理资源,提高系统的利用率,并且能够灵活地调整和配置不同虚拟机的资源分配,以满足不同工作负载的需求。
封装
虚拟机的这一特性可以让它将整个虚拟机的状态保存到一个文件中,使得移动和复制虚拟机变得像移动和复制文件一样简单。这种封装特性使得虚拟机的部署和管理变得更加便捷。
独立于硬件
通过将软件与物理主机分离,用户可以在单个硬件上运行多个操作系统,从而节省企业的时间、管理成本和物理空间。此外,虚拟机还能够支持旧版应用程序,从而减少或消除将旧应用迁移到更新或不同操作系统的需求和成本。
缺点
虚拟机会面临性能不稳定的问题。当在同一台物理主机上运行多个虚拟机时,可能会导致性能不稳定,特别是当不满足特定应用程序的基础架构要求时。由于虚拟机需要运行额外的操作系统和应用程序,因此会占用一定的内存和处理器资源。这意味着用户在同时使用多个虚拟机时,可能会感到电脑变慢或资源紧张。虚拟机中的数据也可能会因为软件故障、电脑崩溃或其他问题而丢失。此外,如果物理服务器崩溃,那么在其上运行的所有虚拟机和应用程序都将受到影响。因此,在使用虚拟机时,需要确保电脑的硬件及软件配置足够强大以满足需求。不正确配置或使用虚拟机也可能导致电脑受到一些潜在的威胁。例如,虚拟机可能会暴露电脑系统的漏洞,使得恶意软件有机会侵入电脑。
相关技术
编辑许多虚拟机使用仿真的方法来实现其功能。仿真是将一个具有不同接口和功能的系统或子系统转化为具备特定接口和功能的系统或子系统的过程。指令集仿真在虚拟机中起着重要的作用,因为虚拟机需要在特定指令集的主机处理器上运行使用不同指令集编译的二进制程序。
CPU虚拟化
CPU虚拟化是确保客户虚拟机可以使用与物理CPU相同的指令集架构。这里的指令集架构是指软件能够看到的状态(例如寄存器和内存)以及对这些状态起作用的指令。通过CPU虚拟化,客户虚拟机可以在虚拟环境中运行,并且可以与物理CPU进行交互,就像它们在物理环境中一样。这样,虚拟化技术可以为用户提供更加灵活、可扩展的计算资源,同时保持与物理CPU兼容的指令集架构。
内存虚拟化
在传统的系统中,内存地址分为虚拟地址空间和物理地址空间。应用程序使用虚拟地址来访问内存,而CPU根据虚拟地址到物理地址的映射,将虚拟地址转换为可以直接访问的物理地址。这种映射关系维护了从虚拟地址空间到物理地址空间的映射关系。内存虚拟化的核心任务之一就是维护和处理这种双重内存地址空间的映射关系。虚拟化技术允许多个应用程序同时运行在同一台物理机上,每个应用程序都有自己的虚拟地址空间,而这些虚拟地址空间又映射到实际的物理地址空间,从而实现了更高效的资源利用和隔离保护。
设备虚拟化
设备虚拟化涵盖了多种方法,例如软件模拟、半虚拟化、直接I/O访问和SR-IOV等。其中,软件模拟是最简单的设备虚拟化方式。它通过截获客户操作系统所发出的设备I/O操作,并完全模拟设备I/O操作的响应,以确保设备虚拟化对客户操作系统透明。
解码-分派解释
解释器程序是一个模拟和操作机器的程序,它模拟了实现了源指令集的完整结构状态的机器。这个机器包括所有的结构寄存器和主存。解释器维护了客户机主存的一份镜像,包括程序代码和数据。此外,解释器还维护了一个称为上下文块的表,其中包含源结构状态的各种组件,如通用寄存器、程序计数器、条件码和控制寄存器。这样,解释器能够模拟和操作客户机的整个状态,使得源指令集可以在解释器上执行。解释器操作源程序时,它会逐条执行指令并根据指令读取和修改程序的状态。这种类型的解释器通常被称为解码-分派解释器。它的工作方式是通过一个中央循环来解码每条指令,并将指令分派给对应的解释例程来执行。解释器的主要任务是解析指令、执行对应的操作,并根据需要更新程序的状态。这种设计方式可以使解释器更加灵活,可以处理多种不同的指令,并根据指令的类型来执行相应的操作。
线索解释
解码-分派解释器的主循环包含一些直接和间接的分支指令,但这些分支指令对于性能来说可能会造成一定的影响,特别是在无法准确预测它们的情况下。解释器主循环的结构通常在循环顶部进行停止或中断的测试,然后使用一个寄存器间接分支来进行switch语句的跳转,接着是对解释例程的调用,并通过第二个寄存器间接分支返回到主循环,最后通过一个分支来终止循环。线索解释的一个关键特点是使用表格来实现分派的间接跳转。这种间接的跳转方法有一个优势,就是解释例程能够被独立地进行修改和重定位。由于使用了分派表进行跳转,这种方法被称为间接线索解释。
Xen
Xen是一款开放源代码虚拟机监视器,可在单一物理主机上运行多个客户操作系统。Xen兼容IA-32、x86-64,Itanium和ARM计算机架构。Xen Hypervisor直接运行在硬件之上,负责CPU、内存和中断的调度。在Xen之上运行多个虚拟机,每一个运行的虚拟机实例叫做Domain(域)或者Guest。其中,有一个特殊的域Domain 0,它包含了系统中所有的驱动,同时,也包含控制栈用来管理虚拟机的创建,销亡和配置等。
KVM
KVM是一种基于Linux内核的开源虚拟化技术,是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等,从而实现对虚拟机的管理。
主要实现方式
编辑半虚拟化
半虚拟化是一种通过修改Guest OS部分访问特权状态的代码以便直接与VMM交互的技术。在半虚拟化虚拟机中,部分硬件接口以软件的形式提供给Guest OS,这可以通过Hypercall(VMM提供给Guest OS的直接调用,与系统调用类似)的方式来提供。相较于全虚拟化,半虚拟化VMM只需要模拟部分底层硬件,因此Guest OS不做修改是无法在虚拟机中运行的,甚至运行在虚拟机中的其它程序也需要进行修改。
全虚拟化
全虚拟化(Full Virtualization)是硬件虚拟化的一种,允许未经修改的客户操作系统隔离运行。实现一个比主机操作系统优先级更高的VMM或超级操作系统(Super OS)是全虚拟化的基础。监视器或超级操作系统需要两个关键特性来提供并保护虚拟化环境。第一,操作系统无关的储存管理,可以为不同的虚拟环境(如Linux、Windows和嵌入式环境)提供资源,并保护这些环境不会被未经授权地访问;第二,虚拟化环境的切换,以向虚拟机分配物理计算资源。
操作系统虚拟化
在传统操作系统中,所有用户的进程本质上是在同一个操作系统的实例中运行,因此内核或应用程序的缺陷可能影响到其它进程。操作系统虚拟化(OS-level virtualization) 是一种在服务器操作系统中使用的、没有VMM层的轻量级虚拟化技术,内核通过创建多个虚拟的操作系统实例来隔离不同的进程,不同实例中的进程完全不了解对方的存在。通俗来说,操作系统虚拟化是操作系统的虚拟化,需要隔离操作系统资源。
安全及隔离
编辑虚拟机提供了较好的隔离性,每个虚拟机运行在独立的环境中,相互之间不会产生影响。这使得虚拟机可以运行不同版本的操作系统和应用程序,提供更好的兼容性。由于虚拟机具备一定的隔离特性,每个虚拟机都能获得独立的CPU指令、内存和存储等物理资源。这意味着虚拟机可以在硬件级别上实现故障隔离和安全隔离,同时还能利用先进的资源控制功能来保持良好的性能。
安全性问题
虚拟机在安全性面临着四方面的挑战。第一,虚拟机逃逸。虚拟机逃逸是指在攻击者已经控制了一个虚拟机的情况下,通过利用各种安全漏洞来攻击虚拟机管理程序,从而使进程逃离虚拟机的运行环境,进入到宿主机的操作系统中;第二,Rootkit攻击。Rootkit是一种特殊的恶意软件,主要用于在被感染目标上隐藏自身以及指定的文件、进程和网络链接等信息。通常,Rootkit会与木马、后门等其他恶意程序相结合使用。这种攻击方式通常可以绕过自动执行的网络安全控制功能,如入侵检测系统;第三,分布式拒绝服务(DDoS)攻击。DDoS攻击利用大量合法请求占用网络资源,以使网络瘫痪为目的;第四,虚拟机信息窃取和篡改。在一个虚拟主机服务器上,虚拟机被封装在一个单独的虚拟磁盘文件中。只要拥有虚拟化工作环境管理员权限,就可以方便地访问该虚拟化工作环境并读取该文件中的数据,而且不会在系统中留下任何痕迹。
隔离技术
物理资源与虚拟资源隔离
在虚拟机监视器层提供安全隔离措施,以控制虚拟机与宿主机之间的数据通信,并限制或禁止虚拟机对物理存储实体的直接访问,进而确保每个虚拟机都能以独立的方式访问CPU指令、内存和存储等物理资源。
虚拟CPU指令隔离
通过将每个虚拟CPU与物理主机的物理处理器核心绑定,实现虚拟CPU之间的隔离。每个物理CPU核心只能被一个虚拟CPU核心绑定。这种绑定方式确保每个虚拟CPU的计算负载和指令都在对应绑定的物理核心上运行,从而实现了虚拟CPU之间的相互隔离。
内存隔离
使用KVM+QEMU虚拟化技术,以Linux操作系统作为基础平台是一种常见的技术方案。在这种方案中,每个虚拟机对应一个QEMU进程。QEMU进程负责为虚拟机提供所需的内存和其他资源。虚拟机使用的内存资源实际上是分配给QEMU进程的。在Linux操作系统下,不同的进程之间是相互隔离的,它们的虚拟地址空间相互独立。每个进程无法访问其他进程的地址空间,因此虚拟化系统中每个虚拟机的内存空间也是相互隔离的。这样可以确保各个虚拟机之间的安全性和隔离性。
管理与配置
编辑创建与部署
虚拟机的创建与部署是将虚拟机映射到物理机的过程。手动创建和部署独立虚拟机有三种办法,分别是通过空白虚拟硬盘创建和部署虚拟机、通过现有虚拟硬盘创建和部署虚拟机以及通过现有虚拟机创建和部署虚拟机。也可以使用虚拟到虚拟转换、物理到虚拟机转换、使用虚拟机模板、使用服务部署等四种自动创建和部署的方法。在部署虚拟机过程中,VMM需要在两个位置之间移动和复制大文件。
资源分配
CPU分配原则
虚拟机的CPU分配原则是尽量避免过量使用虚拟CPU。对于单线程应用程序而言,并不需要多线程处理。虚拟机的虚拟CPU数量应该小于或等于物理CPU核心数。例如,在双路双核服务器配置下,虚拟机最多应使用两个虚拟CPU。
内存分配原则
在资源评估后,虚拟机内存分配须确保虚拟机所需的实际内存尽量不超过物理内存总量。这意味着当应用程序需要更多内存时,会采用磁盘内存来解决,但这可能会降低系统性能。对于关键应用程序而言,固定内存的方法可以考虑,以确保性能的稳定性。
磁盘使用原则
虚拟机的磁盘性能受到多个因素的限制,包括阵列磁盘的数量、类型以及运行在其上的虚拟机数量。磁盘访问性能对于虚拟机数量有一定的影响。内置磁盘的可用性和IO吞吐能力相对较弱,因此不建议将虚拟机存放在内置磁盘上,而是推荐使用外置高性能磁盘阵列。
快照与备份
虚拟机的快照类似于数据库的照片,即在特定时间点(创建快照的时间点)拍摄的数据库照片。但是这张照片是可以应用于SQL语句的新数据库。创建快照后,将标识原始数据库的所有数据页。如果在创建快照后修改了数据页面,则将复制数据页,并复制未修改的数据页;虚拟机的备份,本质上是一个副本。等效于COPY在某个时间点将数据库中所有内容的副本放入特定文件(备份文件,通常是.bak)中。备份的结果是一个文件,可以将其复制或写入磁带。
性能监控与优化
虚拟机常见的性能问题包括CPU负载不足、系统吞吐量不够、重复查询泛滥、连接池连接占用、不合理的使用等。虚拟机性能优化的原则是尽可能减少创建对象的数量、减少使用全局变量和大对象。如果出现性能问题时,可以从线程池、连接池、虚拟机启动参数、程序算法等方面进行调优。
主要应用
编辑服务器虚拟化
现代计算机系统性能快速发展,特别是近年来多核CPU的发展,为虚拟机应用提供了更大的舞台。通过虚拟机,可以实现服务器的整合,将原本分布在不同计算机和操作系统上的任务整合到一台计算机上,从而显著降低信息系统的购置、运行和维护成本。
云计算平台中的虚拟机
虚拟机也是云计算的基础,支持云计算的弹性扩展和资源共享,使得计算资源更加高效地利用。云计算基于虚拟机技术,为用户提供可定制和可保证服务质量的计算能力,使得计算成为一种按需定制的公共服务。虚拟机的出现使得Guest OS和底层硬件之间的耦合度降低,因此可以将虚拟机的状态完整地迁移到其他计算机系统并恢复运行。这种在线迁移的能力为集群均衡、移动计算和高可靠系统的实现提供了一种革新的技术手段。
桌面虚拟化
桌面虚拟化是一种方法,允许用户从设备单独桌面工作空间上远程访问和运行应用程序。一种常见情况是,当用户使用远程访问软件从其家庭 PC 登录到其办公室 PC 时。桌面虚拟化也可以指在一台设备上运行多个虚拟机,以保持工作负载的独立和隔离。VMware Workstation Player是一款桌面虚拟化应用,无需重新启动即可在同一计算机上运行一个或多个操作系统。
数据中心虚拟化
在数据中心虚拟化中,虚拟服务器是从传统的物理服务器创建的。此过程通过在管理程序的帮助下模仿其处理器、操作系统和其他资源来抽象物理硬件。管理程序是一种创建和管理虚拟机的软件,它将 CPU、内存和存储等资源视为一个池,可以在现有虚拟机之间或新虚拟机之间重新分配。
影响评价
编辑影响
随着数字化发展的影响,网络数据海量增加,虚拟机的影响越来越凸显。虚拟机的开发程度不仅仅局限于桌面操作系统,甚至可以在Windows 10上模仿Android,来使用手机系统,方便着人们的工作生活。虚拟机的出现,能够使物理资源更好地利用,系统的利用率得以提高,并且能够灵活地调整和配置不同虚拟机的资源分配,以满足不同工作负载的需求,进而降低公司的运维成本。同时,它还可以提供灵活性、安全性、经济性和管理性等多种好处,但是也存在一定的性能问题和硬件限制等问题。
评价
虚拟机有诸多优点。2018年7月,波场Tron技术负责人赵宏评价虚拟机:“虚拟机解决了复杂指令的去中心化执行。”2019年7月,南京大学学工处副处长李浩也曾评价虚拟机:“在高考录取过程中,使用虚拟机对录检信息切割,使得录取进程更加安全高效。”
正如一个硬币有两面,虚拟机在发展的过程中也存在着一定的问题。2017年4月,中新经纬官方针对虚拟机的安全问题曾这样评价虚拟机:“虚拟机逃逸会产生云计算环境下的新型安全问题。”2021年5月,河北新闻网官方也就虚拟机的稳定性及安全性问题评价虚拟机:“虚拟机存在着性能不稳定问题,亟需整改。”
注释
编辑展开[a]
“分时” 的含义是将CPU占用切分为多个极短的时间片,每个时间片都执行着不同的任务。通过对这些时间片的轮询,就可以将一个CPU“伪装”(虚拟化)成多个vCPU,并且让每颗vCPU看起来都是并行运行的。最终达到多个用户分享使用同一台计算机,多个程序分时共享硬件和软件资源的效果。
[b]
BCPL是一种编程语言的缩写,代表"Basic Combined Programming Language",最初由Martin Richards在Cambridge Computing Laboratory开发。
[c]
Euler语言是一种编程语言,它以数学家莱昂哈德·欧拉(Leonhard Euler)的名字命名。Euler语言具有直观的数学表达能力,并提供了许多内置的数学函数和运算符。
[d]
是一个系统调用。这个系统调用会让一个进程把指定的目录作为根目录,它的所有文件系统操作都只能在这个指定目录中进行,本质是一种文件系统层的隔离。
[e]
Smalltalk-80是一种面向对象的编程语言,于1980年代初期在Xerox PARC实验室开发完成。它是Smalltalk语言系列的一部分。
[f]
MS DOS,全称为Microsoft Disk Operating System,是由微软开发的一种操作系统。它是早期个人电脑的操作系统之一,于1981年首次发布。MS DOS是基于命令行界面的操作系统,用户通过键入命令来与计算机进行交互。
[g]
VMware是一家软件公司,成立于1998年。该公司专注于虚拟化技术和云计算解决方案。
[h]
ESX是一种基于裸机的虚拟化产品,它允许用户在一个物理服务器上同时运行多个独立的虚拟操作系统。
[i]
GSX是一种基于应用程序的虚拟化产品,它运行在常规操作系统上,并允许用户在单个主机上运行多个虚拟机。
百科词条作者:小小编,如若转载,请注明出处:https://glopedia.cn/16496/