作者

Stephanie Susnjara

Author

Ian Smalley

Senior Editorial Strategist

什么是虚拟机?

虚拟机 (VM) 是物理计算机的虚拟表示或仿真,它使用软件而不是硬件来运行程序和部署应用程序。

通过使用单个物理机的资源(如内存、CPU、网络接口和存储),VM 允许企业在单个设备上虚拟运行具有不同操作系统的多台计算机。

虚拟机通常称为“客户机”,一个或多个客户机运行在被称为“主机”的物理机上。虚拟机技术包括虚拟服务器、虚拟服务器实例 (VSI) 和虚拟专用服务器 (VPS)。

根据 Global Market Insights (GMI) 报告,2023 年虚拟机市场规模已超过 95 亿美元。GMI 预测,在稳步采用云计算的推动下,该市场将在 2024 至 2032 年间以约 12% 的复合年增长率 (CAGR) 不断扩张。随着企业迁移到云端以实现可扩展性、灵活性和成本效益,云供应商会继续集成虚拟机和其他关键技术(例如容器),以便提供一致的 IT 基础设施。

在云端保持清醒头脑

获取每周 Think 时事通讯,了解有关在 AI 时代优化多云设置的专家指导。

立即订阅

虚拟化和虚拟机背景

虚拟机通过虚拟化工作,虚拟化是指创建基于软件或者虚拟版本的资源(计算、存储、联网、服务器)或应用程序的过程。

虚拟化可以更高效地使用物理计算机硬件,而且是云计算的基础。

虚拟化是通过虚拟机管理程序(也称为虚拟机监视器 (VMM))来实现的。当虚拟机彼此并行运行时,该轻量级软件层负责对其进行管理。

虚拟化的诞生可追溯到 1964 年,当时 IBM 设计并推出了 CP-40,这是 IBM System/360 的一个实验性分时研究项目。后来,CP-40 依次演变为 CP-67 和 UNIX,且可提供能支持多个并发用户的计算机硬件,为虚拟机奠定了基础。

1972 年 8 月 2 日,IBM 推出了被很多人视为首个虚拟机的 VM/370 以及首个支持虚拟内存的 System/370 大型机。

1998 年,VMware(ibm.com 外部链接)开发了 x86 操作系统,该操作系统可以将一台计算机分成多个虚拟机,每个虚拟机都有自己的操作系统。1999 年,该公司推出了 VM Workstation 1.0,这是首款允许用户在单台电脑上将多个操作系统作为虚拟机运行的商业产品。

如今,虚拟化已成为企业级 IT 基础设施的标准实践,也是云计算经济的驱动力,使企业能够提高容量利用率并降低成本。可以虚拟化所有 IT 基础设施,包括桌面环境、操作系统、存储硬件、数据中心等等。

AI 学院

利用混合云实现 AI 就绪

本课程由 IBM 资深思想领袖带领,旨在帮助企业领导者获得所需的知识,以便划分可以推动增长的 AI 投资的优先级。

转到视频集

虚拟机是如何工作的?

虚拟化依赖虚拟机管理程序技术。此软件层被置于物理计算机或服务器(也称为 裸机服务器)上,这样,物理计算机就能够将其操作系统和应用程序与其硬件相隔离。这些虚拟机可以独立运行它们的操作系统和应用程序,同时仍然共享由虚拟机管理程序管理的服务器的原始资源(内存、RAM、存储等等)。从本质上讲,虚拟机管理程序就像一名交通警察,负责为虚拟机分配资源,并确保它们不会相互干扰。

虚拟机监控程序主要有两种类型:

第 1 类虚拟机管理程序直接在物理硬件(通常是服务器)上运行,并取代操作系统。通常情况下,需要使用一款单独的软件产品在虚拟机管理程序上创建和操纵虚拟机。使用某些管理工具(例如 VMware 的 vSphere),可以选择要安装在虚拟机中的客户操作系统。可以使用一个虚拟机作为其他虚拟机的模板,并复制它以创建新的虚拟机。根据需求,可以创建多个虚拟机模板,以供不同的用途使用,例如软件测试、生产数据库或开发环境。第 1 类虚拟机管理程序的一个示例是基于内核的虚拟机 (KV)。

2 类虚拟机监控程序会在主机操作系统中作为应用程序来运行,且通常以单用户台式机或笔记本电脑平台为目标。借助 2 类虚拟机监控程序,您可以手动创建 VM 并在其中安装来宾操作系统。您可使用虚拟机监控程序为虚拟机分配物理资源,并手动设置其可使用的处理器核心数量和内存大小。根据虚拟机监控程序的功能,您可设置 3D 图形加速等选项。2 类虚拟机监控程序包括 VMware Workstation 和 Oracle VirtualBox。

系统虚拟机与进程虚拟机

除根据虚拟机管理程序管理进行分类外,虚拟机主要可分为两大类:系统虚拟机(也称为全虚拟化计算机)和流程虚拟机。

系统虚拟机允许在不同的虚拟机之间共享底层物理机资源,且每个虚拟机均运行自己的操作系统。相比之下,流程虚拟机(也称为应用程序虚拟机)则会在操作系统内运行应用程序并支持单个流程。Java 虚拟机(可运行用 Java 编译的程序)是流程虚拟机的一个示例。

虚拟机的优势

较之传统物理硬件,虚拟机具有众多优势。

提高资源利用率和投资回报率

由于多个虚拟机在一台物理计算机上运行,客户无须在每次要运行其他操作系统时购买新的服务器。如此一来,他们便可从已拥有的每个硬件中获得更多回报,从而大幅降低与资本支出和运营支出相关的 IT 成本。

敏捷性和高速度

由于 VM 是基于软件的,因此极易启动新的虚拟机,且与预配基于硬件的新环境相比,可以更快地实现纵向扩展以满足新的工作负载要求。

可移植性

企业可根据需要在网络中的物理计算机之间重新定位虚拟机。此功能可以将工作负载分配给具有备用算力的服务器。虚拟机甚至可以在本地与云环境之间迁移,这样,它们对于在数据中心与云服务提供商之间共享计算资源的混合云场景非常有用。

灵活性

创建 VM 比在物理服务器上安装某一 OS 速度更快也更容易,因为您可以克隆已安装此操作系统的 VM。开发人员和软件测试人员可按需创建新环境,以便处理出现的新任务。

安全性

与直接在硬件上运行的操作系统相比,虚拟机能以多种方式提高安全性。通过使用外部程序,可以扫描虚拟机文件是否存在恶意软件。可以随时创建虚拟机的快照,并在虚拟机感染恶意软件时将其还原到该状态,从而有效地及时恢复虚拟机。此外,通过快速、轻松地创建虚拟机,还可快速删除并重新创建受到感染的虚拟机,从而加快从恶意软件感染中恢复的速度。

可持续性发展

通过减少运行工作负载和应用程序所需的物理服务器数量,您可以大幅降低能源消耗,从而改善对环境的影响。

虚拟机的缺点

虽然虚拟机具备众多优点,但它也有一些需纳入考虑的缺点。

性能问题

虚拟机依赖主机上为其提供的硬件资源。有限的资源可能会导致性能下降和效率低下。

复杂性上升

虚拟机的配置和管理可能非常复杂,需要具备技术知识和专业知识的团队对它们进行设置和维护。

单点故障 (SPOF)

虚拟机依赖一台物理计算机,因此存在单点故障风险。

虚拟机主要用例

无论是对于企业 IT 管理员还是用户,虚拟机都具有广泛的用途,包括:

实现基于云的计算:虚拟机是云计算的基本单元,可让数十种应用程序和工作负载成功地运行和扩展。

加快工作负载迁移:由于具有可移植性,虚拟机有助于加快工作负载从本地环境迁移到云环境的速度。

加速混合云之旅:虚拟机提供用于创建混合云环境的基础设施,这些环境可以将本地部署、私有云和公有云环境整合成一个单一、灵活的 IT 基础设施。

支持开发运维:虚拟机是一种为开发运维团队和其他企业开发人员提供支持的绝佳方法,允许这些人员使用各自的软件开发与测试流程的对应设置来配置虚拟机模板。这些人员可为静态软件测试等任务创建虚拟机,并在自动化开发工作流程中包含这些步骤。这些功能有助于简化开发运维工具链。

测试新的操作系统:使用虚拟机,可在桌面上测试新系统,而不会影响主操作系统。

调查恶意软件:虚拟机对恶意软件研究人员很有帮助,因为他们经常需使用新的计算机来测试恶意程序。

运行不兼容软件:有些用户需要使用一种操作系统,但同时又需要只能在另一种操作系统中使用的程序。

安全浏览:使用虚拟机进行浏览,可以访问网站而不必担心受到感染。可以为计算机创建一个快照,然后在每次浏览会话结束后回滚到该快照。用户可以使用第 2 类桌面虚拟机管理程序设置此浏览场景。或者,管理员可以在服务器上提供临时虚拟桌面。

支持灾难恢复 (DR):利用虚拟化环境,可以轻松配置和部署资源,这样即可在需要时复制或克隆虚拟机。只需几分钟即可完成此过程,而配置和设置新的物理服务器需要花费数小时的时间,这对于灾难恢复 (DR) 至关重要。

常见的虚拟机类型

VMware 虚拟机

作为第一家成功将 x86 微处理器架构的虚拟化商业化的公司,VMware 是虚拟化市场的领导者。VMware 为企业客户提供第 1 类和第 2 类虚拟机管理程序和虚拟机软件。

Windows 虚拟机

大多数虚拟机监控程序均支持以访客身份运行 Windows 操作系统的 VM。Microsoft 的 Hyper-V 虚拟机监控程序是 Windows 操作系统的一部分。安装后,它会创建一个包含自身和主 Windows 操作系统的父分区,且每个分区均有权访问该硬件。其他操作系统(包括 Windows 来宾操作系统)均在子分区中运行,并通过父分区与该硬件进行通信。

Android 虚拟机

Google 的开源 Android 操作系统在手机和联网家居设备上非常常见。

Android 操作系统只在这些设备的典型 ARM 处理器架构上运行,但是爱好者、Android 游戏玩家或软件开发人员可能希望在电脑上运行这种操作系统。这种情况可能会产生问题,因为电脑在完全不同的 x86 处理器架构上运行,而硬件虚拟化虚拟机管理程序只在虚拟机与 CPU 之间传递指令。它不会为使用不同指令集的处理器翻译这些指令。

Shaslik 或 Genymotion 等各种项目可通过使用在软件中重新创建 ARM 架构的模拟器来解决此问题。另一替代方案则是 Android-x86 项目,它可将 Android 移植到 x86 架构。要运行该项目,必须将 Android-x86 程序安装为使用 VirtualBox“2 类虚拟机监控程序”的虚拟机。还有一种替代方案 Anbox,它可在主机 Linux 操作系统的内核中运行 Android 操作系统。

Mac 虚拟机

Apple 规定,他们的 macOS 系统只能在 Apple 硬件上运行。这意味着在非 Apple 硬件上,您不能将 macOS 作为虚拟机运行或者根据 Apple 的最终用户许可协议运行。不过,您可以在 Mac 硬件上使用第 2 类虚拟机管理程序创建具有 macOS 客户机的虚拟机。

iOS 虚拟机

如今,要在 VM 中运行 iOS 已不可能,这是因为 Apple 会严格控制其 iOS 操作系统,且仅允许其在 iOS 设备上运行。

最接近 iOS VM 的是 Xcode 集成开发环境所附带的 iPhone 模拟器,它能以软件形式模拟整个 iPhone 系统。

Java 虚拟机

Java 平台为用 Java 软件开发语言所编写程序的执行环境。Java 的承诺“编写一次,随处运行”意味着任意 Java 程序均可在任何 Java 平台上运行,而这便是 Java 平台包含 Java 虚拟机 (JVM) 的原因所在。

Java 程序包含字节码,字节码是一种用于 JVM 的指令。JVM 会将此字节码编译成机器码,机器码是主机使用的最低级别的语言。根据处理器所需的机器码,一个计算平台的 Java 平台中的 JVM 会创建一组与另一个计算平台中的 JVM 不同的机器码指令。

因此,JVM 不能运行整个操作系统,也不会像其他虚拟机那样使用虚拟机管理程序。相反,它会转换应用程序级软件程序,以便在特定的硬件上运行。

Python 虚拟机

和 JVM 一样,Python 虚拟机既不在虚拟机管理程序上运行,也不包含客户机操作系统。此工具能够让以 Python 语言编写的程序在各种 CPU 上运行。

与 Java 类似,Python 也将它的程序转换成被称为字节码的中间格式,并将这些字节码存储在可以执行的文件中。当程序运行时,Python 虚拟机会将字节码转换成机器码,以便快速执行。

Linux 虚拟机

Linux 是在众多 VM 中使用的一种典型来宾操作系统。同时,它也是用于运行 VM 的典型主机操作系统;甚至,它还有自己的虚拟机监控程序,即“基于内核的虚拟机 (KVM)”。虽然它是一个开源项目,但 Red Hat 却拥有 KVM。

Ubuntu 虚拟机

Ubuntu 是由 Canonical 制作的 Linux 发行版。它分为桌面版和服务器版,可作为虚拟机安装。用户可以在 Microsoft Hyper-V 上将 Ubuntu 作为客户机操作系统进行部署。它提供了 Ubuntu 桌面的优化版本,可以在 Hyper-V 的“增强会话模式”下正常运行,以便在 Windows 主机与 Ubuntu 虚拟机之间提供紧密集成。它提供的支持包括剪贴板集成、动态桌面大小调整、共享文件夹以及在主机和客户机桌面之间移动鼠标。

多租户与单租户

在云计算环境中,虚拟机具有单租户与多租户这两种变体。

公共虚拟机或多租户虚拟机是指多个用户共享一个公共物理基础设施的那些虚拟机。这种模式是配置虚拟机的最经济高效、最具可扩展性的方法。不过,多租户环境缺乏一些具有严格安全性或合规性要求的组织可能更喜欢的隔离特征。

单租户虚拟机有两种模型:专用主机和专用实例。

专用主机涉及租用整个物理机,并保持对此机器的持续访问和控制。这种模式提供了最高的硬件灵活性和透明度、工作负载控制和分配能力,并为特定的自带许可证软件提供了一些优势。

专用实例提供了相同的单租户隔离和对工作负载分配的相同控制,但它并不与特定的物理机耦合。因此,例如,如果重新启动一个专用实例,它最终可能位于一台新的物理机上 — 一台专用于个人帐户的机,但可能是位于另一个物理位置的新机器。

虚拟机定价模式

云端虚拟机最常见的定价模式为即用即付(按小时或秒)、瞬态/竞价实例、预留实例和专用主机。

即用即付模式

即用即付模式对虚拟机而言没有前期成本,且用户只需为使用的内容付费。客户需按小时或秒数付费,具体则取决于提供商和实例类型。

瞬态/竞价实例

成本最低的虚拟机模式是瞬态实例或竞价实例,这些实例会使用提供商的多余容量,但提供商可以随时回收这些容量。瞬态/竞价实例非常适合不需要始终保持启动状态的应用程序,或者在任何其他模式下都过于昂贵的应用程序。

预留实例

与“即用即付“定价模式不同,预留实例具有明确的期限承诺,通常介于一到三年之间,但也可以享受大幅折扣。

专用主机

用户通常需要支付物理服务器的总成本,并按照提供商提供的专用服务器的任何增量计费(通常按小时或按月计费)。

虚拟机与裸机服务器

选择虚拟机而不是裸机服务器的关键原因不在于相互竞争的功能,而在于了解您需要什么以及何时需要它们。

裸机服务器均涉及原始硬件、功能和隔离。它们属于单租户物理服务器,且完全没有虚拟机监控程序周期(虚拟化软件),同时完全专用于单个客户(也就是您自己)。

优先考虑性能和隔离性的工作负载(例如数据密集型应用程序和监管合规性要求)通常最适合使用裸机服务器,尤其是在持续部署的情况下。

企业资源计划 (ERP)、客户关系管理 (CRM)、供应链管理 (SCM)、电子商务和金融服务应用程序只是非常适合裸机服务器的几种工作负载。

相反,当您的工作负载需要最大限度的灵活性和可扩展性时,则最好在裸机硬件上安装虚拟机监控程序来实现一个虚拟机。虚拟机可提高服务器的容量和利用率。它们非常适合将数据从一个 VM 迁移到另一 VM、调整数据集大小和划分动态工作负载。

虚拟机与容器

了解容器的最简单方法是掌握它与传统虚拟机 (VM) 的区别所在。在传统的虚拟化中,无论是在本地还是在云端,虚拟机监控程序都有助于虚拟化物理硬件。如此一来,每个虚拟机都包含一个客户操作系统、运行该操作系统所需的硬件的虚拟副本,以及一个应用程序及其相关的库和依赖项。

容器并非虚拟化底层硬件,而是虚拟化操作系统(通常为 Linux)。每个容器仅包含该应用程序及其库和依赖项。由于没有来宾操作系统,因此容器非常轻便、快速且可移植。

容器和管理容器的 Kubernetes(开源容器编排平台)已成为现代云原生和微服务架构的事实单元。虽然容器通常与无状态服务相关联,但组织也可将它们用于有状态服务。容器是混合云场景中的标准配置,因为它们可在公有云、私有云和传统的本地部署环境下一致地运行。今天,一个组织可能会在其私有云上运行应用程序,但明天,该组织便可能需要将应用程序部署到其他提供商的公有云中。将应用程序容器化可为团队提供处理现代 IT 的众多软件环境所需的灵活性。

值得注意的是,容器和虚拟机可以在企业中共存。例如,由于很多企业都有基于虚拟机的基础设施,因此在虚拟机中运行容器是一种非常常见的做法。

公司可以选择一个容器以运行应用程序,并由虚拟机提供底层基础设施。这种方法将容器的可移植性和高速度与虚拟机的安全性相结合。而在另一个场景中,一家金融机构可能会将虚拟机用于他们的数据库系统,以通过资源隔离确保更严格的安全性,并将容器用于前端应用程序,例如面向客户的移动应用程序。

博客文章“容器与虚拟机:有什么区别?”提供了详细说明。

如下视频详细介绍了容器化的基础知识以及它与虚拟机的比较:

选择虚拟机提供商

选择虚拟机和云提供商时,首先会审视您的工作负载需求和预算要求,以及其他关键因素。选择虚拟机服务提供商时需考虑的 10 个事项如下。

可靠的支持:确保可通过电话、电子邮件、聊天等方式提供 24x7 全天候客户支持;否则,便不予考虑。希望电话另一端有一个真人来帮助应对重大 IT 情况。此外还须考虑,哪些云提供商能提供额外服务以获得更多的实际支持。

托管选项:云提供商是否同时提供非托管解决方案和托管解决方案?如果不熟悉虚拟化技术,请考虑选择一家能够设置、维护和持续监控性能的提供商。

软件集成:虚拟机环境是否能与其他软件良好兼容?操作系统、第三方软件、开源技术和应用程序有助于在整个企业中提供更多解决方案。企业需要一个能提供有效支持的虚拟机提供商,而且该提供商还与业界最主要的软件供应商建立了牢固的合作伙伴关系。

高质量的网络和基础设施:用于运行您的新虚拟机的基础设施有多新?该基础设施应包括可靠的裸机服务器、现代化数据中心和网络主干。云供应商应能利用最先进的硬件和高速网络技术来履行其部分交易。

位置:数据离用户越近,在延迟、安全性和及时服务交付方面遇到的麻烦就越少。由分散的数据中心和 POP 位置所组成的卓越全球网络对于在最需要的时间和地点获取数据至关重要。

备份和恢复:面对突发事件,云提供商有哪些计划可保证虚拟机正常运行?它们是否还会为企业的虚拟化环境提供附加备份和冗余选项?持续运营是企业必须认真对待的事项。

可扩展性和易用性:启动、关闭、保留、暂停和更新虚拟机的速度和易用性如何?对于虚拟机的可扩展性,企业最想听到的一个词无疑是“按需”。

多种 CPU 配置:配置越多,可用选项便越多。并非每个虚拟机配置都适合每个使用季节中的每种工作负载。务必寻找能提供同时满足单租户和多租户要求的各种配置包的虚拟机提供商。

安全层:企业的业务数据堪称最高形式的货币,尤其是在处理敏感的客户信息时。务必向提供商询问有关专用网络线路、联邦数据中心选项、内置加密功能以及符合监管合规标准的信息,它们对于保护企业最宝贵的资产均至关重要。

无缝迁移支持:随着 IT 优先事项的变化,虚拟机提供商应当能够帮助您在本地与外部之间无缝过渡。寻找完整的数据采集、网络迁移和应用程序主导迁移选项。