创建 Windows 映像

您可以通过现有 Compute Engine Windows Server 映像创建自定义 Windows Server 映像。使用这些自定义映像可创建与现有实例具有相同启动磁盘映像的实例。

这些自定义映像十分实用,可用于保存现有实例上操作系统的配置设置,并重复使用相同的配置来创建其他实例。

如果需要通过公共映像或自定义映像创建实例,请参阅创建新的 Windows 实例

如果要定期备份永久性磁盘数据,请使用永久性磁盘快照,不要使用自定义映像。

如果需要导入 Windows Server 或 SQL Server 系统,请使用虚拟机迁移服务

创建 Windows Server 映像

在创建映像之前,请先在实例上运行 GCESysprep,以便为映像创建过程做好准备。运行 GCESysprep 会停止实例,因此如果无法停止实例,您可以跳过 GCESysprep 过程并直接创建映像,但这样做存在破坏映像完整性的风险。

  1. 登录您的 Windows 实例并以管理员身份打开 PowerShell 或命令提示符。
  2. 使用 GCESysprep 完成系统准备,以进行复制。此命令会关停实例,并关闭远程桌面连接。

    GCESysprep
    

    GCESysprep

    1. instance_setup.ps1 配置为在首次启动虚拟机实例时运行。
    2. 将主机名设置为虚拟机实例的名称。
    3. 运行用户提供的 specialize 启动脚本,可用于自定义 GCESysprep 脚本。如需了解详情,请参阅运行启动脚本
    4. 使用密钥管理服务 (KMS) 服务器激活 Windows。
    5. 设置远程桌面协议 (RDP) 和 Windows 远程管理 (WinRM) 以允许远程登录。
  3. 创建映像。

指定映像位置

创建自定义映像时,您可以为该映像指定除了双区域位置之外的 Cloud Storage 位置。指定映像存储位置后,您可以通过确保跨区域实现冗余来满足数据存储区域的法规和合规性要求以及高可用性需求。

存储位置功能是可选的。如果您未选择位置,Compute Engine 会将映像存储在最靠近映像源的多区域位置。您可以根据源磁盘、映像、快照或存储在 Cloud Storage 中的映像创建自定义映像。您可以使用这些映像创建新的虚拟机实例。

此功能发布之前的所有现有映像都保留在原来的位置。 唯一的变化是您可以查看所有映像的位置。如果要移动现有映像,您必须在目标位置重新创建该映像。

创建 Windows 映像

您可从以下来源创建磁盘映像:

  • 永久性磁盘,即使该磁盘已连接到实例。
  • 永久性磁盘的快照
  • 您项目中的另一个映像
  • 通过另一个项目共享的映像
  • 存储在 Cloud Storage 中的导入的映像

控制台

  1. 在 Google Cloud Console 中,转到创建新映像页面。

    创建新映像

  2. 指定映像名称
  3. 选择含有 Windows 操作系统并且您希望根据其创建映像的磁盘。
  4. 指定用于存储映像的位置。从基于来源磁盘位置(默认)(Based on source disk location (default)) 下拉菜单中选择映像位置。例如,指定 us 可将映像存储在 us 多区域中,或指定 us-central1 可将其存储在 us-central1 区域中。如果您未选择位置,Compute Engine 会将映像存储在最靠近映像源位置的多区域中。
  5. 指定您的映像的属性。例如,您可以为映像指定映像系列名称,以将此映像纳入映像系列中。
  6. 点击创建

gcloud

可将 gcloud computeimages create 搭配使用,并提供您希望在其中创建映像的源永久性磁盘。(可选)添加 --force 标志,可以在即使磁盘挂接到正在运行的实例的情况下,继续创建映像。

gcloud compute images create example-image --source-disk [DISK_NAME] \
    --source-disk-zone [ZONE] \
    --storage-location [LOCATION] \
    [--force]
  • [DISK_NAME] 是要在其中创建映像的源磁盘的名称。
  • [ZONE] 是磁盘的地区。
  • [LOCATION] 是一个可选标志,允许您指定要存储映像的区域或多区域。 例如,指定 us 可将映像存储在 us 多区域中,或指定 us-central1 可将其存储在 us-central1 区域中。如果您未选择位置,Compute Engine 会将映像存储在最靠近映像来源位置的多区域中。
  • --force 是一个可选标志,即使在磁盘已挂接到仍在运行的实例的情况下,也会创建映像。但这一选项可能会损害映像的完整性。如果可能,请在创建映像前停止实例。

运行此命令时,gcloud compute 会根据您提供的永久性磁盘创建新映像,并将其添加到您的集合中。您可以通过运行以下命令来确认您的映像已成功创建:

gcloud compute images list

API

images().insert 方法发出 POST 请求,并在请求正文中添加 sourceDisk 网址。

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images?[FORCE_OPTION]

{
  "name": "[IMAGE_NAME]",
  "sourceDisk": "zones/[ZONE]/disks/[DISK_NAME]",
  "storageLocations": "[LOCATION]",
}

其中:

  • [PROJECT_ID] 是此请求的项目 ID。
  • [FORCE_OPTION] 是一个选项,如果使用该选项,那么即使来源磁盘已挂接到正在运行的实例,也会创建映像。请在 POST 行的末尾指定 forceCreate=true 来设置此选项。但这一选项可能会损害映像的完整性。如果可能,请在创建映像前停止实例。
  • [IMAGE_NAME] 是为此映像指定的名称。
  • [ZONE] 是根据其创建映像的来源磁盘的地区。
  • [DISK_NAME] 是来源磁盘的名称。
  • [LOCATION] 是一个可选参数,可让您选择映像的多区域或区域存储位置。例如,指定 us 可将映像存储在 us 多区域中,或指定 us-central1 可将其存储在 us-central1 区域中。如果您未选择位置,Compute Engine 会将映像存储在最靠近映像来源位置的多区域中。

如需详细了解如何添加映像,请参阅映像参考

更新 Windows 代理和脚本

Compute Engine 会不定期发布含有最新代理和脚本的新 Windows 映像。这些代理和脚本可以在启动和关停过程、帐号管理和地址管理方面为 Windows 实例提供帮助。

从 Windows 映像版本 v20160112 开始,Windows 代理将通过上游版本自行更新。您可以通过将 disable-agent-updates 实例元数据键设置为 true 来停用这些代理更新。如果您的实例基于较早映像版本,则可以为这些实例手动更新 Windows 代理

后续步骤