虚拟机 (VM)

17 Mar 2025 | 5 分钟阅读

虚拟机可以定义为一个虚拟环境,它就像一个计算机系统(虚拟),拥有基于物理硬件系统的CPU、存储、内存网络接口。一种称为虚拟机管理程序的软件会将机器的资源与硬件隔离并进行适当的安排。

配备任何虚拟机管理程序(如KVM (Kernel-based Virtual Machine))的各种物理机被称为宿主机、宿主操作系统、宿主机器,或简称宿主。许多使用资源的虚拟机被称为客户操作系统、客户机、客户机,或简称客户。

虚拟机管理程序将所有计算机资源(如 CPU、存储和内存)视为资源池,可以轻松地在新的虚拟机或现有的客户机之间重新分配。

虚拟机允许在同一台计算机上同时运行多个不同类型的操作系统。所有操作系统都以与应用程序或操作系统在宿主硬件上正常运行相同的方式执行。

虚拟机优点

虚拟机可以在同一台计算机系统上使用多个操作系统环境。

  • 虚拟机支持ISA(指令集架构)。ISA 结构与真实计算机相比是一种不同的结构。它充当硬件和软件之间的接口。
  • 此外,运行虚拟机还有各种安全优势。例如,当我们想运行一个可疑的安全应用程序时,我们可以在客户操作系统中运行它。因此,如果应用程序导致损坏或丢失,它在客户机关闭后只会是暂时的。
  • 虚拟机通过审计客户操作系统是否存在缺陷并允许所有用户被隔离进行分析,从而实现安全取证。
  • 当我们构建虚拟机时,我们会构建一个(虚拟)硬盘。因此,该机器上的任何东西都可能崩溃,但如果发生这种情况,也不会影响任何宿主机器。

虚拟机缺点

虚拟机缺点如下

  • 虚拟机由于间接访问硬件,效率不如实际机器。
  • 在宿主操作系统之上运行软件意味着软件需要向宿主请求访问。这会减慢可用性。
  • 如果在同一宿主上运行多个虚拟机,如果计算机的性能不足,性能可能会下降。在这种情况下,VM 仍然使用我们宿主机的资源。宿主计算机系统越强大,VM 运行的速度就越快。
  • 虚拟机可能会受到宿主机器弱点的影响。例如,进程隔离通常由操作系统使用的方面。但是,有些错误会破坏它。一台裸机虚拟机只会受到影响。然而,一台拥有大量虚拟机的计算机系统也会影响所有虚拟机。

容器

容器是一种操作系统虚拟化。单个容器可以用于运行从小型软件进程或微服务到大型应用程序的任何东西。在容器内,有许多重要的可执行文件,如配置文件、库二进制代码

与机器或服务器虚拟化方法相比,容器不包含操作系统映像。这使得它们便携且轻量级,开销基本更少。多个容器可以部署为多个容器集群。这些类型的集群可以由 Kubernetes 等容器编排器进行管理。

容器优点

容器是一种简化的技术,可以测试、构建、重新部署部署应用程序,从开发人员的本地笔记本电脑到云或数据中心等多个环境。

以下是容器的一些重要优点

Virtual Machine vs Containers
  • 较低的开销:与硬件或传统 VM 环境相比,所有容器所需的系统资源更少,因为它们不包含操作系统映像。
  • 更高的可移植性:在容器内运行的多个应用程序可以轻松地部署到多个不同的硬件平台和操作系统上。
  • 一致的操作:每个 DevOps 团队都知道应用程序将以相同的方式运行,而无需担心它们在容器中的部署位置。
  • 更高的效率:每个容器允许应用程序更快地扩展、修补和部署。
  • 应用程序开发:每个容器都支持 DevOps 和敏捷工作,以加速生产、测试和开发周期。

容器缺点

以下是容器的一些缺点

Virtual Machine vs Containers
  • 并非适用于所有任务:容器提供了通用性;然而,它们并非对所有现有的 VM(虚拟机)部署都是全球性的替代品。此外,一些应用程序不适合容器虚拟化。
  • 依赖项的开销:通用虚拟机高度自包含,并且所有虚拟机都包含特定的操作系统、应用程序组件和驱动程序。Bittman 描述道,在容器上放置大量依赖项可能会限制在不同服务器之间的可移植性。
  • 较弱的隔离:容器在共享操作系统组件和内核方面较弱。因此,攻击和漏洞有更大的被利用机会。
  • 有限的工具:管理和监控容器所需的工具在行业内有所欠缺。这不是一个新现象。虚拟机管理程序虚拟化早期也曾出现过适用工具的缺乏。

VM 与容器的区别

让我们讨论一下 VM 和容器的区别。

Virtual Machine vs Containers
序号。虚拟机 (VM)容器
1.通过 VM 来虚拟化硬件以运行多个操作系统实例。容器提供了一种虚拟化操作系统的方法,以便多个工作负载可以在单个操作系统实例上运行。
2.VM 由虚拟机管理程序管理并使用 VM 硬件。容器从底层宿主提供操作系统服务,并使用虚拟内存硬件分离应用程序。
3.VM 支持抽象机器,该抽象机器使用寻址抽象机器的设备驱动程序。容器支持抽象操作系统。
4.VM 技术在各种嵌入式社区中广为人知。容器已在多个云和服务器上发展,如 Google 和 Facebook 等组织。例如,Google Docs 的所有服务都获得了一个容器/实例。
5.较高的开销较低的开销
6.VM 允许我们安装其他软件,因此我们实际上可以控制它,而不是直接在计算机上安装软件。容器是允许不同应用程序的功能独立运行的软件。
7.在虚拟机系统上运行的应用程序可以运行不同的操作系统。在容器环境中运行的应用程序贡献给单个操作系统。
8.VM 提供了一种虚拟化任何计算机系统的方法。容器仅虚拟化操作系统。
9.VM 的大小较大。容器非常轻便(几兆字节)。
10.VM 由于其体积大,运行需要几分钟。容器运行只需几秒钟。
11.它占用大量系统内存。容器使用的系统内存非常少。
12.它高度安全。它不太安全。
13.如果我们希望使用操作系统的所有资源来运行多个应用程序,VM 会很有帮助。如果我们希望以最少的服务器运行最多的并发应用程序,容器会很有帮助。
14.VM 示例:VMware、Xen、KVM容器示例:Docker 容器、PhotonOS、RancherOS

下一主题区别