跳至主要内容

什么是虚拟机?类型、优势与使用场景

在这份完整指南中全面了解虚拟机。探索 VM 的工作原理、优势、类型与常见使用场景,包括其在数据科学、IT 基础设施与云计算中的作用。
Tim Lu
Tim Lu

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续继续即表示您接受我们的 使用条款,我们的 隐私政策 ,并且您的数据存储在美国。

虚拟机(VM)是 IT 基础设施的核心组成部分。它是对物理计算机的软件仿真,能够提供灵活的物流与计算能力。

在本文中,我将解释什么是虚拟机、它如何工作、有哪些优势、常见使用场景等内容。

什么是虚拟机(VM)?

虚拟机是一种从 CPU、内存、存储、网络接口到操作系统进行完整计算系统仿真的技术。

VM 会从物理计算机借用资源来生成这些虚拟计算机。举例来说,如果一台计算机有 8 个 CPU 和 16 GB 内存,我们可以将其中的 4 个 CPU 和 8 GB 内存虚拟化为一个独立的环境,从物理硬件中划分出来。

我们依赖 虚拟机监控器(hypervisor)来在一套硬件上管理多个虚拟环境。它是一种软件,用于控制硬件资源的虚拟化并管理多个 VM。

虚拟机 vs. 物理机

理解虚拟机与物理机的差异非常重要。

先澄清硬件与软件的区别。硬件指系统的物理组件,如主板、CPU、内存、GPU 和存储。软件(如操作系统或其他程序)运行在硬件之上。

物理机直接运行在硬件上。而 VM 则运行能够创建“虚拟化”硬件的软件。正如前文所述,底层系统或许有 64 GB 内存,但我们可以虚拟出 32 GB 内存供虚拟机使用。

由于 VM 可以共享硬件资源,我们可以高效地只为 VM 分配其所需的资源。例如,如果我们有一台性能强劲的服务器,就可以并行运行多个 VM,让它们各自以所需的最小资源完成任务。这能提升整体资源利用率并降低成本。

下表将虚拟机与物理机进行并列比较:

特性

虚拟机(VM)

物理机

对硬件的依赖

运行在由软件提供的虚拟化硬件之上。

直接运行在物理硬件组件上。

资源分配

与其他 VM 共享硬件资源(如内存、CPU)。

专享硬件资源。

可扩展性

高度可扩展;单台物理机可运行多个 VM。

受物理机硬件限制。

效率

通过仅分配必要资源来提升资源利用率。

可能导致硬件未被充分利用。

灵活性

易于重新配置和复制。

灵活性较差;需要物理调整或更换。

成本

通过资源共享降低成本。

成本更高,因为每台机器都需要独立硬件。

性能

因虚拟化存在少量开销。

直接使用硬件,性能更高。

虚拟机的类型

虚拟机主要有两类:系统级和进程级。前者仿真整个操作系统,后者仿真单个应用程序:

系统虚拟机

在谈到 VM 时,我们最常想到的就是系统虚拟机。它会模拟完整的操作系统,例如一整台 Linux 计算机。通过这种方式,一台硬件可以模拟多个操作系统实例。当我们需要多个环境来处理不同任务时,这非常有用。

云虚拟机是常见示例。它们将完整的操作系统环境托管在远程,通过互联网访问,非常适合可扩展的基础设施。

进程虚拟机

进程虚拟机是在宿主操作系统上运行的单个进程。它本身并非一个完整系统,而是较小的环境,使任意计算机都能运行不属于其原生操作系统的应用程序。例如,Java 虚拟机允许任何机器原生运行 Java 应用。

与系统虚拟机相比,进程虚拟机更为轻量,广泛用于运行特定的隔离应用,尤其在开发与调试场景中。

VM 类型

描述

使用场景

系统虚拟机

模拟完整的物理机器,包括硬件和操作系统。

运行多个操作系统、服务器整合与测试。

进程虚拟机

运行单个应用或进程,提供隔离环境。

跨平台应用执行、开发与调试。

虚拟机的组成

每个虚拟机都有一些核心组件。尽管具体实现可能不同,但它们应包含相似的部分。本节我们来逐一了解。

通常而言,虚拟机监控器是用于管理和初始化虚拟机的软件层。它在 VM 与物理机之间管理资源。

虚拟机监控器有两种类型:

  • Type 1 虚拟机监控器直接运行在裸机之上,由服务器本身驱动。它通常可以直接访问服务器资源。
  • Type 2 虚拟机监控器通常安装在宿主操作系统之上。它无法对计算机资源进行完全控制,而是受宿主操作系统管理。

虚拟机监控器会为 VM 分配虚拟硬件。这意味着将物理资源进行虚拟化隔离并赋予虚拟环境。可能包括划分内存、CPU 核心及其他计算资源,以便 VM 运行进程。

客户操作系统在 VM 内运行。它不必与宿主一致,可以是任意操作系统。同一虚拟机监控器或服务器上的不同 VM 也可根据其用途运行不同的操作系统。

VM 通常配有虚拟磁盘,用于在运行时临时存储信息。有时我们会将虚拟磁盘中的数据转移到宿主计算机的实际存储系统,但需要谨慎操作以避免对宿主造成损害。

展示虚拟机主要组成部分的架构图

一台服务器运行三个虚拟机的架构示意图。图片来源: DataCamp。

虚拟机 vs. 容器

容器化是另一种流行的虚拟化方式。尽管目标相似,虚拟机与容器在实现上有很大不同。我们来看看二者的差异。

  • 虚拟机旨在复制设备的全部,包括其硬件。这意味着 VM 会复制主板、CPU、网络设备等,使在 VM 上运行的任何应用看起来都像是在独立硬件上运行。
  • 容器则旨在无论环境如何都能运行特定的软件应用。它们不会自行初始化资源,而是使用宿主计算机的资源。

展示容器及其主要组成部分的架构图

一台服务器运行三个容器的架构示意图。图片来源: DataCamp。

何时使用 VM 与容器

当您需要并行运行多个操作系统并要求对资源进行离散管理时,使用 VM。如果您的进程需要一致且可预测的资源配额,VM 也更为合适。

另一方面,容器非常适合轻量级的应用部署。由于容器共享资源,务必确保您的服务器能够同时承载多个容器并合理分配资源。

如果您对这些概念还不熟悉,可以参考容器化与虚拟化概念课程来了解它们的使用场景。若想更深入比较 VM 与容器的差异,请查看关于容器与虚拟机对比的博文。

虚拟机的优势

虚拟机的优势众多,包括更高的资源效率与安全性。恰当使用 VM 能让您的技术基础设施更简单、更健壮。我们来具体看看这些优势:

资源效率与成本节约

由于多个 VM 共享相同硬件,您可以显著提升物理服务器的利用率。将不同环境整合在一起,减少了为特定用例采购专用硬件的需求,转而通过共享资源来实现整体成本节约。

隔离性与安全性

每个 VM 独立于宿主系统运行,天然具备隔离性。这通过降低单个系统崩溃或被入侵所带来的连带风险来提升安全性。VM 之间通常没有通信,也不相互依赖,因此可以快速关闭存在问题的 VM 或迅速隔离安全隐患。

灵活性与可移植性

VM 为 IT 基础设施提供了极大的灵活性,因为它们易于复制。这简化了需要同时启动多个环境的流程,因为它们可以共享相同的启动指令。这也便于测试、备份与灾难恢复。

虚拟机的常见使用场景

我们来讨论一些 VM 的常见用途。它几乎能完成普通计算机可以执行的任何任务,在各类运营活动中都极具价值。

测试与开发环境

开发者常用 VM 来创建新软件或补丁的测试与开发环境。VM 便于在多种生态中测试程序改动,以实现全面验证且不影响宿主机器。同一脚本可用于在大量 VM 上部署相同变更以进行测试。

服务器整合

专业人员利用 VM 将多台物理服务器整合为更少的服务器。这可降低硬件维护成本,并节省机房空间。同时,由于物理机不再绑定于单一环境或任务,资源利用率得到提升。

运行遗留应用

随着技术演进,现代操作系统可能不再支持遗留流程。通过 VM 可以在现代化改造期间维持这些遗留应用的运行,确保业务不中断。

灾难恢复与备份

随着数据与信息量的增长,VM 可作为整个环境的快速备份,提升系统的健壮性。如果某台物理服务器上的单个 VM 崩溃,其他副本可以继续运行或接管。这是云计算的核心组成部分。

云计算

云的主体运行在虚拟化之上。像 AWS、Azure 与 Google Cloud 这样的云平台能够提供可扩展、灵活的基础设施,是因为创建与关闭虚拟机非常便捷。它们可以快速复制整站或程序以应对增长的需求,并在不再需要时将其关闭。

若想进一步了解云计算如何利用虚拟化,请查看云计算基础课程。

虚拟机在数据科学中的应用

得益于其灵活性与实用性,VM 是数据科学中的优秀工具。以下是其在该领域的一些用途:

隔离的开发环境

就像软件工程师使用 VM 构建专用开发环境一样,数据科学家也可以利用 VM 为不同的数据项目创建隔离环境。

例如,您可以用一个 VM 来用 Python 构建预测模型,再用另一个 VM 通过 R 进行数据预处理。这样的分离允许多个计算密集型项目在不同环境中同时运行,从而提升效率。

数据科学实验的可复现性

数据科学家通常需要能够复现实验结果。比如在训练深度学习模型时,您可以与同事共享一个包含相同版本的 TensorFlow、依赖库与数据集的 VM。这能确保实验一致性,避免环境差异影响结果。

大数据项目的可扩展性

随着项目规模增长,可能需要在云中使用多个虚拟机集群。设想在 TB 级文本数据上训练自然语言处理模型;像 AWS 这样的云服务商可以自动将工作负载分布到多个 VM 上。例如,Apache Spark 等工具可利用虚拟集群高效处理大规模计算。

常用虚拟机软件

有许多工具可让您在个人计算机与企业环境中运行虚拟机。以下是一些最受欢迎的选择:

VMware

VMware 是企业环境中最流行的虚拟化工具之一,提供强大的技术支持与云端解决方案。VMware 可根据需求为桌面与服务器虚拟化提供工具。其主要虚拟机监控器是 VMware ESXi Type 1,便于进行服务器虚拟化,并配有易用的 HTML 5 界面。

Microsoft Hyper-V

Microsoft 的 Hyper-V 是针对 Windows Server 环境定制的虚拟机监控器。这意味着所有虚拟化都需要在 Windows 操作系统上运行,并利用磁盘分区。它便于在 Windows Server 环境中虚拟化桌面,对于希望留在 Windows 生态或使用 Azure 的用户来说是不错的方案。

VirtualBox

VirtualBox 是最流行的开源虚拟化软件之一。用户可以在本机上创建任意类型的虚拟桌面。它提供直观的界面,并可利用磁盘镜像实现轻松复现。对于入门虚拟化世界而言,这是极佳的工具,非常适合练习与积累经验。

KVM(基于内核的虚拟机)

Linux 内核允许您创建称为 KVM 的虚拟机。所有现代 Linux 系统都包含 KVM,使用户可以将任何基于 Linux 的硬件转换为虚拟机监控器。它利用现有硬件,通常结合 Red Hat 等虚拟化软件进行管理。

结语

虚拟机是 IT 生态系统不可或缺的一部分,它使您能够从一台服务器快速创建多个虚拟环境。它们通常由虚拟机监控器软件进行管理,按需创建并分配资源。这在需要并行运行多个进程时,能够带来更高的资源利用率、可复现性、弹性与效率。

若想进一步探索这些概念,并了解 VM 与容器等技术的比较,请查看容器化与虚拟化概念课程。这将有助于您加深对这些关键技术的理解。

FAQs

虚拟机会占用过多资源吗?

确实可能为 VM 过度分配资源。如果发生这种情况,请使用管理软件以更少的资源重新创建该 VM。

使用虚拟机会有安全隐患吗?

由于 VM 通常被设计为与系统其他部分完全隔离,其使用通常仅带来极小的安全风险。

虚拟机的关键使用场景有哪些?

我们通常使用 VM 来为多种任务提供合适的资源分配,例如机器学习算法、网站管理和云端编程。这些只是 VM 用途的部分示例。

创建虚拟机是否有最佳方式?

不存在适用于所有目的的“最优” VM。VM 的设计初衷是针对特定需求进行定制,因此与其创建一个“万能”的 VM,不如根据具体目标进行量身定制。

有哪些常用的虚拟机软件适合上手体验?

我强烈建议从 VMware 入手体验虚拟化。

Tim Lu

作者

Tim Lu

我是一名数据科学家,擅长空间分析、机器学习和数据管道。曾使用过 GCP、Hadoop、Hive、Snowflake、Airflow 等数据科学/工程相关流程与工具。

主题