什么是虚拟机?

虚拟机 (VM) 是使用称为虚拟化的过程在其他计算机内部运行的计算机。

学习目标

阅读本文后,您将能够:

  • 定义虚拟机
  • 了解虚拟化和虚拟硬件的工作原理
  • 概述虚拟机的几个用例

复制文章链接

什么是虚拟机?

虚拟机 (VM) 是存在于另一台计算机的操作系统中的基于软件的计算机,通常用于测试、备份数据或运行 SaaS 应用程序。要完全掌握 VM 的工作方式,首先��须要了解操作系统通常如何集成计算机软件和硬件。

什么是操作系统?

传统计算机是由实体硬件(包括硬盘驱动器、处理器芯片,RAM 等)构成的。计算机依赖一种称为操作系统 (OS) 的软件利用这些硬件。Mac OSX、Microsoft Windows、Linux 和 Android 是 OS 的一些常见示例。

操作系统按照用户的使用目的管理计算机的硬件。例如,如果用户要访问互联网,则操作系统指示网络接口卡进行连接。如果用户要下载文件,则操作系统将在硬盘驱动器上对空间进行分区。操作系统还运行和管理其他软件。例如,它可以运行 Web 浏览器,并为浏览器提供足够的随机访问内存 (RAM),以使其平稳运行。

通常,操作系统以一比一的比例存在于物理计算机中。每台计算机都有一个操作系统来管理其硬件资源。

一台计算机上可以有两个或多个操作系统吗?

可以在一台计算机上运行多个操作系统。这可以通过称为虚拟化的过程来实现。在虚拟化中,一个软件就像一台独立的计算机一样运转。该软件称为虚拟机,也称为“访客”计算机。(运行 VM 的计算机称为“主机”。)访客具有操作系统以及自己的虚拟硬件。

“虚拟硬件”听起来可能有点矛盾。事实上,虚拟机的“硬盘”实际上只是主机硬盘上的一个文件。但是,虚拟硬盘驱动器与物理硬盘驱动器具有相同的功能。

一台主机上可以运行的虚拟机数量仅受主机的可用资源限制。用户可以像运行其他程序中一样在窗口中运行虚拟机 的操作系统,也可以在全屏模式下运行虚拟机,以使其观感都如同真正的主机操作系统。

虚拟机用于什么目的?

单台计算机上虚拟机的常见用例包括:

  • 测试——软件开发��员通常希望能够在不同的环境中测试应用程序。通过使用虚拟机,他们可以在一台计算机上的各种操作系统中运行应用程序。与在多台实体计算机上进行测试相比,这样更简单且更具成本效益。
  • 运行为其他 OS 设计的软件 - 尽管某些软件应用程序仅可用于单个平台,但 VM 可以运行为其他 OS 设计的软件。例如,想要运行专为 Windows 设计的软件的 Mac 用户可以在 Mac 主机上运行 Windows VM。
  • 运行过时的软件 - 某些较旧的软件无法在新版 OS 中运行。想要运行这些应用程序的用户可以在虚拟机上运行旧版的操作系统。
  • 浏览器隔离——浏览器隔离是指将 Web 浏览器活动与计算机操作系统的其余部分“隔离”,以防止恶意软件影响计算机的其他文件和程序。一些浏览器隔离工具使用虚拟机来建立这种隔离,尽管这种方法��减慢浏览活动。

云计算如何使用虚拟机?

一些云提供商向客户提供虚拟机。这些虚拟机通常位于功能强大的服务器上,服务器可以充当多个 VM 的主机,并且可以出于多种原因使用 - 这对于本地托管的 VM 是不可行的。其中包括:

  • 运行 SaaS 应用程序——软件即服务(简称 SaaS)是使用云向用户提供软件的方法,其中应用程序通过互联网提供给用户,而不是在他们的计算机上运行。通常,是中的虚拟机为 SaaS 应用程序进行计算并将其交付给用户。如果云提供商有一个地理分布的网络边缘,那么应用程序将在更靠近用户的地方运行,从而获得更快的性能。
  • 备份数据 - 基于云的 VM 服务经常被用于备份数据,因为之后可以从任何地方访问数据。另外,与虚拟数据中心相比,云虚拟机可提供更好的冗余性,需要更少的维护,并具有更好的可扩展性。(例如,从云虚拟机提供商那里购买额外的千兆字节存储空间通常相对容易,但是为同样多的数据构建新的本地数据服务器则要困难得多。)
  • 托管服务,例如电子邮件和访问权限管理 - 在云端 VM 上托管这些服务通常更快、更具成本效益,并且有助于最大程度地减少维护和负载分担安全问题。
  • 浏览器隔离——一些浏览器隔离工具使用云虚拟机运行 Web 浏览活动并通过安全的互联网连接向用户提供安全的内容

Cloudflare 和虚拟机

Cloudflare 帮助保护和管理任何类型的云部署,包括云虚拟机。SaaS 提供商可以使用 Cloudflare for SaaS 来提高其应用程序的性能、保护终端用户的自定义域,等等。

此外,对于想要在边缘上运行代码而不愿支付虚拟机费用的用户,我们有 Cloudflare Workers——这是一个无服务器平台,能够以完全可扩展的方式为客户提供边缘计算,开发人员可以借此扩展现有应用程序或创建全新的应用程序,而无需配置或维护基础设施。