客机环境


当您使用 Google 提供的公共映像启动虚拟机 (VM) 实例时,系统会自动在虚拟机实例上安装访客环境。客机环境是读取元数据服务器内容以使虚拟机在 Compute Engine 上正常运行的一组脚本、守护程序和二进制文件。元数据服务器是用于将信息从客户端转移到客机操作系统的通信渠道。

本文档概括介绍了客机环境的组件、支持的操作系统,并说明了如何知道何时需要手动安装或更新客机环境。

何时手动安装或更新客机环境

使用 Google 提供的公共映像创建的虚拟机实例包含默认安装的客机环境。

要检查实例上是否运行着客机环境,请参阅验证客机环境

在某些情况下,安装的客机环境可能会过时。如果客机环境在您的实例上可用,但已过时,请更新客机环境

否则,在以下条件下,您可能需要手动安装客机环境:

如果您需要手动安装客机环境,请参阅安装客机环境

支持的操作系统

Compute Engine 上提供的每个受支持的操作系统都需要特定的客机环境软件包。Google 或操作系统的所有者都可以构建这些软件包。如需了解构建客机环境软件包的人员,请参阅操作系统详细信息文档中的“与标准映像的明显差异”部分。

Linux 客机环境

无论 Linux 客机环境是由 Google 还是操作系统的所有者构建,都有一些关键组件适用于所有版本。

Linux 客机环境的基本组件以 debrpm 软件包的形式提供,这些软件包是使用受支持发行版的适当配置创建的。

以下列表总结了 Linux 客机环境中封装的主要脚本、守护程序和软件包:

  • google-compute-engine 软件包包含以下组件:

    • systemd 的系统初始化脚本。
    • 系统配置,例如 udev 规则、sysctl 规则、rsyslog 配置和用于主机名设置的 dhcp 配置。
    • 在实例启动期间运行的 Bash 脚本。

    此软件包依赖于 google-guest-agentgoogle-compute-engine-oslogin 软件包。

    如需查看此软件包的源代码,请参阅 GitHub 上的 guest-configs

  • google-guest-agent 软件包中包含在客机操作系统上运行的客机代理和元数据脚本可执行文件,用以支持 Compute Engine 功能。Linux 客机代理支持以下功能:

    Linux 客机代理与 Compute Engine 服务的通信方式如下: + 对虚拟机元数据执行数据读写操作 + 将日志发送到串行端口,还可以选择发送到 Cloud Logging

    Linux 访客代理还会从客机操作系统收集遥测数据,以供分析和调试。遥测数据包括:操作系统名称、操作系统版本、操作系统内核版本、操作系统内核版本和操作系统代理版本。如需停用遥测数据收集,请在虚拟机级别或项目级别设置以下元数据:disable-guest-telemetry=TRUE

    如需查看此软件包的源代码,请参阅 GitHub 上的 guest-agent

  • google-compute-engine-oslogin 软件包中包含 OS Login 的二进制文件、模块和脚本。您可以使用 OS Login 来通过 Identity and Access Management (IAM) 角色管理对虚拟机实例的访问权限。

    该软件包包含以下内容:

    • 已获授权的密钥命令,该命令为 sshd 提供用户的 OS Login 配置文件中的 SSH 密钥,以便在登录时对用户进行身份验证。
    • 名称服务切换 (NSS) 模块,这些模块用于为系统提供 OS Login 用户和群组信息。
    • 可插入式身份验证模块 (PAM),这些模块提供授权(如果已启用双重支持,则还提供身份验证)支持,以便系统使用 Google Cloud IAM 权限来控制登录实例或以根用户身份执行操作(通过 sudo)的能力。
    • google_oslogin_nss_cache,这是一个用于更新本地用户和群组缓存的实用程序。
    • selinux 包含 SELinux 政策定义文件和用于配置 SELinux 以支持 OS Login 的已编译政策软件包。

    OS Login 组件与 Compute Engine 服务的通信方式如下:

    如需查看此软件包的源代码,请参阅 GitHub 上的 guest-oslogin

  • gce-disk-expand 组件与 Compute Engine 服务的通信方式如下:

    • 将日志发送到串行端口

    如需查看此软件包的源代码,请参阅 GitHub 上的 guest-diskexpand

  • google-osconfig-agent 软件包包含 OS Config 代理,虚拟机管理器使用该代理来管理操作系统清单、补丁和操作系统政策。

    这些脚本与 Compute Engine 服务的通信方式如下:

    如需查看代理的源代码,请参阅 GitHub 上的 osconfig

Windows 客机环境

以下列表总结了属于 Windows 客机环境的软件包:

  • google-compute-engine-windows 软件包包含 Windows 客机代理。Windows 客机代理用于支持以下流程:

    Windows 客机代理与 Compute Engine 服务的通信方式如下: + 对虚拟机元数据执行数据读写操作 + 将日志发送到 Windows 应用事件日志、串行端口和 Cloud Logging

    Windows 客机代理还会从客机操作系统收集遥测数据,以用于分析和调试。遥测数据包括:操作系统名称、操作系统版本、操作系统内核版本、操作系统内核版本和操作系统代理版本。如需停用遥测数据收集,请在虚拟机级别或项目级别设置以下元数据:disable-guest-telemetry=TRUE

    如需查看代理的源代码,请参阅 GitHub 上的 guest-agent

  • google-compute-engine-sysprep 软件包中包含用于泛化 Windows 实例以准备创建映像的脚本。该软件包还包含 instance_setup.ps1 脚本,该脚本用于在首次启动时配置新实例。

    这些脚本与 Compute Engine 服务的通信方式如下:

    • 虚拟机元数据执行数据读写操作
    • 将日志发送到 Windows 应用事件日志和串行端口

    如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows

  • google-compute-engine-metadata-scripts 软件包包含用于运行 Compute Engine、sysprep 专用化的脚本和二进制文件,以及启动关停脚本。

    这些脚本与 Compute Engine 服务的通信方式如下:

    • 虚拟机元数据执行数据读写操作
    • 使用 sysprep-specialize-script-urlwindows-startup-script-url 时从 Cloud Storage 位置读取数据
    • 将日志发送到 Windows 应用事件日志、串行端口和 Cloud Logging

    如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows

  • google-compute-engine-powershell 软件包中包含一个 PowerShell 模块。此模块包含 PowerShell 脚本在其他 Windows 客机环境脚本中常用的一些函数。

    这些脚本与以下 Compute Engine 服务进行通信:

    • 默认情况下,PowerShell 模块中的日志记录函数会将日志发送到 Windows 应用事件日志和串行端口。

    如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows

  • google-compute-engine-auto-updater 软件包包含用于每天更新 Compute Engine 软件包的脚本。默认情况下,系统不会再安装此软件包。

    这些脚本与 Compute Engine 服务的通信方式如下:

    • 虚拟机元数据读取数据
    • 调用 GooGet 代理以将日志发送到 Windows 应用事件日志和控制台

    如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows

  • google-compute-engine-diagnostics 软件包中包含用于从实例获取诊断信息并将信息保存到 Cloud Storage 存储桶的二进制文件。该二进制文件由 Windows 客机代理执行。

    这些脚本与 Compute Engine 服务的通信方式如下:

    • 将数据保存到 Cloud Storage 存储桶

    如需查看代理的源代码,请参阅 GitHub 上的 compute-image-tools

  • certgen 软件包包含在实例上创建证书的二进制文件。

    如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows

  • googet 软件包包含二进制文件,这是一个用于安装和维护客机环境的软件包管理器。

    这些脚本通过从 packages.cloud.google.com 的 Google Cloud 代码库读取数据来与 Compute Engine 服务通信。

    如需查看代理的源代码,请参阅 GitHub 上的 googet

  • google-compute-engine-vss 软件包安装用于通过 Microsoft 的卷影复制服务 (VSS) 截取永久性磁盘快照的 Compute Engine VSS 代理和提供程序。

    这些脚本与 Compute Engine 服务的通信方式如下:

    • 与 Google Cloud 快照服务进行通信

    如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows

  • google-osconfig-agent 软件包包含 OS Config 代理,供 VM Manager 用于管理操作系统清单、补丁和操作系统政策。

    这些脚本与 Compute Engine 服务的通信方式如下:

    如需查看代理的源代码,请参阅 GitHub 上的 osconfig

Compute Engine Windows 驱动程序

为 Windows 映像维护以下 Compute Engine 驱动程序:

驱动程序类型 软件包名称
以太网适配器 google-compute-engine-driver-netkvm
SCSI 磁盘 google-compute-engine-driver-vioscsi
显示适配器 google-compute-engine-driver-gga
崩溃处理程序 google-compute-engine-driver-pvpanic
Virtio 内存气球驱动程序 google-compute-engine-driver-balloon
Google 虚拟 NIC google-compute-engine-driver-gvnic

每个驱动程序均使用 GooGet 封装并发布到 Google Cloud 代码库。驱动程序的源代码位于 GitHub 上的 compute-windows-drivers。所有 Google Cloud Windows 映像都预先配置了 GooGet 工具和 Google Cloud 代码库。如需自行安装 GooGet 并设置代码库,请参阅封装和软件包分发

如需安装或升级特定驱动程序,请运行以下命令:

googet install DRIVER_PACKAGE_NAME

后续步骤

如需了解安装客机环境的分步说明,请参阅安装客机环境