虚拟机使用虚拟化技术在物理机器上创建虚拟硬件,即计算机的虚拟版本。运行虚拟机的物理机器称为宿主机,在宿主机上运行的虚拟机称为客户机。
一种称为 Hypervisor 的轻量级软件层负责划分宿主机物理硬件资源,例如 CPU、GPU、TPU、内存 (RAM)、存储空间和网络。然后,Hypervisor 会将这些资源分配给每个客机虚拟机。这样,您就可以在单个“宿”主机上并发且独立地运行多个“客机”操作系统。例如,Google Compute Engine 使用基于 KVM 的 Hypervisor 来高效管理资源,并将其分配给您创建的虚拟机。
每个客机虚拟机都在主机上的隔离分区上运行,与其他客机完全隔离。您可以在单个宿主机(通常是服务器)上托管多个虚拟机。Hypervisor 通过将宿主机的物理资源抽象化为资源池,提高了整体效率和灵活性。然后,可以根据客虚拟机的具体要求预配这些资源并动态分配给客机虚拟机。
通常而言,虚拟机分为两大类:进程虚拟机与系统虚拟机。
进程虚拟机(亦称为应用虚拟机或托管式运行时环境 [MRE])会在应用或单个进程运行期间创建虚拟的操作系统环境,并在进程退出后立即将其销毁。进程虚拟机能够构建一个独立于平台的运行环境,让应用或进程在各类平台上均能保持一致的运行表现。一个具体的实例是 Cloud Run 上的 Node.js 服务器。Cloud Run 提供了一个全托管式环境,让您的应用在容器中运行,从而将应用与底层基础设施分离。
系统虚拟机(有时称为硬件虚拟机)可模拟完整的操作系统,从而支持多个操作系统环境在同一物理机上并行运行。通常,这是指人们在谈论“虚拟机”时所谓的虚拟机类型。系统虚拟机可以运行自己的操作系统和应用,而 Hypervisor 监控物理宿主机的资源并在系统虚拟机之间分配这些资源。
最近,您可能还听到过有人在讨论云端虚拟机或云虚拟机。云虚拟机就是指在云中的虚拟服务器上运行的虚拟机。许多云服务提供商都支持在他们的基础设施上创建和运行云虚拟机,这样您可以将他们强大的服务器用作宿主机,并利用内存和网络存储空间等其他由软件定义的服务。这些云虚拟机通常按资源优化情况分类:
虚拟机是对物理计算机的软件模拟,而虚拟桌面是一种用户界面,可让用户访问远程服务器上托管的桌面环境。二者的主要区别在于,虚拟机模拟的是整台计算机,而虚拟桌面则提供对桌面环境的远程访问。
虚拟机通常是安全的,因为它们在主机系统和虚拟机之间提供了隔离,从而降低了恶意软件传播的风险。不过,其安全性取决于正确的配置、定期更新和适当的安全实践。如果管理不当,虚拟机仍可能容易受到攻击,因此必须遵循安全最佳实践。
是,虚拟机会占用主机系统上的存储空间。所使用的存储空间量取决于虚拟硬盘的大小、操作系统和任何已安装的应用。此外,虚拟机可以配置为根据需要动态分配存储空间,也可以配置为使用固定数量的存储空间。
虽然虚拟机与容器均用于实现应用隔离,但其底层实现机制存在本质区别。虚拟机可对包括操作系统在内的整个物理硬件堆栈进行虚拟化。这赋予了每个虚拟机独立完备的隔离环境,但也意味着其体量通常较大,且资源占用量更高。
相比之下,容器更显轻量,因为其仅将操作系统层虚拟化。容器无需为每个应用捆绑完整的操作系统,而是通过共享主机的操作系统内核来运行。这使得容器在保持隔离性的同时,以更低的资源消耗实现更快速的启动。这一优势使容器成为新应用开发的理想架构选择。鉴于过去十年间的大量应用均针对容器构建,包括电子商务、后台办公及 AI 在内的诸多工作负载已实现“容器原生化”。
虚拟机是虚拟化计算资源的基础组成要素,在构建任何应用、工具或环境(无论是在云端还是本地)时均发挥着关键作用。
以下是企业利用虚拟机的一些典型应用场景:
将多台物理机重新配置为虚拟机,并使其与其他虚拟机在主机上并行运行,可协助组织有效遏制资源扩张。虚拟机久经考验,即使是性能要求最严苛的应用也能流畅运行。
中央 IT 部门可以为各业务部门和职能领域统一预配并管理虚拟机,这不仅能加速资源访问,更能提升企业的治理透明度。
虚拟机可以作为独立的测试和开发环境,它们拥有完整的功能,同时又不会对周围的基础设施造成任何影响。
虚拟机可轻松开关、迁移和调整,最大限度提高了开发和部署灵活性。
虚拟机提供的灵活性和可移植性是提高迁移计划速度的关键。
在云环境中利用虚拟机复制系统,能为您带来更深一层的安全保障和信心。云环境也能持续获得更新。
虚拟机为创建与本地环境并行的云环境奠定了基础,提供了出色的灵活性,而且不需要放弃旧系统。
借助虚拟机,您可以在一台实体机器上运行不同的操作系统。例如,即使您的主要开发环境使用 Linux,您也可以在 Google Cloud 的 Compute Engine 上运行 Windows Server 虚拟机。Google Cloud 提供各种操作系统映像,以满足各种需求。
在云环境中利用虚拟机复制系统,能为您带来更深一层的安全保障和信心。云环境也能持续获得更新。
虚拟机可提供诸多优势(尤其在选择云端虚拟机时),具体包括:
可伸缩性
基于云的虚拟机让您的应用扩缩自如,不仅提升了可用性,更优化了性能。您可以根据需求灵活扩展容量,而无需承担自建物理服务器的资本支出。
可移植性
虚拟机是一种集硬件资源、操作系统及其所有应用于一体的软件程序包。您可以便捷地在服务器之间迁移虚拟机,甚至能将其从本地硬件环境迁移至云端。
减少占用空间和费用
借助虚拟机,您可以在一台机器上运行多个虚拟环境,从而减少物理基础设施占用空间、电费以及维护和管理费用。
资源预配更快
虚拟机可以轻松复制,让企业无需从零开始,就能快速创建出全新的、一模一样的环境。
可靠性
虚拟机及其组件以虚拟方式存在,并与其他客机虚拟机保持隔离状态。如果虚拟机崩溃,其他客机虚拟机依然可正常运行,物理宿主机不会受到影响。
安全性更高
借助虚拟机,您可以在运行多个操作系统的同时,确保主机操作系统不受干扰。使用虚拟机时,您可以创建安全的虚拟环境来测试应用,甚至研究安全漏洞,而且不会给宿主机带来高风险。现代虚拟机产品(例如 Google Cloud 的机密虚拟机)使用基于硬件的可信执行环境 (TEE),为内存中正在处理的数据提供“使用中加密”机制,让您的数据安全无虞。
然而,在运行虚拟机时,仍需考虑以下关键因素。虚拟机的最大潜在挑战之一是,如果宿主机不够强大,运行多个操作系统和一个 Hypervisor 层可能会导致性能下降。此外,虚拟硬件的效率可能不及物理机的硬件。最后,对于大多数云服务提供商提供的虚拟机,CPU 和内存配置都是固定的,这会导致资源利用率欠佳。
然而,通过选择合适的云服务商提供的虚拟机,可以克服上述大部分问题。相较于传统虚拟机,云虚拟机具备诸多优势,因为它们能协助组织获取整个数据中心级别的算力支持,而非受限于单台物理机器。此外,Google Compute Engine 还提供自定义机器类型,赋予您更灵活的规格选择权。采用自定义配置时,您可以针对工作负载精准定制 CPU 与内存比例,无需再选择可能存在冗余容量的预定义机器类型,从而实现按实际使用的资源付费。这一精准策略不仅能最大限度地减少资源浪费,还能显著降低云端成本,对于从本地或其他云服务提供商迁移至 Google Cloud 的场景尤为适用。Compute Engine 还提供针对特定需求优化的虚拟机类型,适合企业级工作负载、高内存配置,以及机器学习或高性能计算等高要求工作负载。
Google Cloud 还提供安全强化型虚拟机,旨在增强虚拟机实例的安全性并协助验证其完整性。Google Cloud 安全强化型虚拟机利用先进的平台安全功能和控制措施,保护企业工作负载免受远程攻击、权限提升和恶意内部人员等威胁的侵扰。
对于某些应用,开发者可能会选择完全绕过传统虚拟机。对于特定应用场景,容器编排 (Google Kubernetes Engine - GKE) 和无服务器计算 (Cloud Run) 等现代部署模型是强大的替代方案,可让团队绕过虚拟机操作系统管理,提高部署速度,而且通常可以节省更多成本。
如果您准备开始使用虚拟机,Google Cloud 可通过 Compute Engine 提供虚拟机。Compute Engine 提供在 Google 基础设施上托管的灵活、自行管理的虚拟机实例。下面简要介绍了如何在 Compute Engine 上创建虚拟机并连接到该虚拟机:
您需要一个启用了结算功能的 Google Cloud 项目。新用户可以注册以进行免费试用。
创建和管理虚拟机需要此 API。您可以在 Google Cloud 控制台中或使用 gcloud CLI 启用它。
您可以使用 Google Cloud 控制台或 gcloud CLI 创建虚拟机实例。
SSH(Linux 虚拟机):使用 SSH 安全地连接到 Linux 实例。
使用 gcloud CLI:gcloud compute ssh 命令提供了一种从本地终端进行连接的便捷方式
使用 OS Login(推荐):为了增强安全性并简化 SSH 密钥管理,尤其是在跨多个虚拟机或团队的情况下,建议启用 OS Login。OS Login 会将 SSH 访问权限控制与 Google Cloud IAM 集成。启用 OS Login 后,SSH 密钥会与您的 Google 身份相关联,访问权限通过 IAM 权限进行管理,而不是通过将密钥分发到实例元数据中进行管理。
如需启用 OS Login,请在项目或单个实例上将 enable-oslogin 元数据键设置为 TRUE。

解决方案
解决方案