执行 Windows Server 2008 R2 自动就地升级


如果您的虚拟机 (VM) 实例运行 Windows Server 2008 R2,则您可以使用 gcloud CLI 将其自动升级到 Windows Server 2012 R2。

使用 gcloud CLI 执行就地升级是执行手动升级的替代方案。通过自动执行升级过程,gcloud CLI 可让您减少需要升级的每个虚拟机所需的工作量。

在虚拟机的就地升级期间,gcloud CLI 会执行以下步骤:

  1. 停止虚拟机。
  2. 创建标准 Persistent Disk 快照作为备份。
  3. 创建启动磁盘的副本,并保留原始启动磁盘作为备份。
  4. 挂接包含 Windows 2012 R2 安装介质的安装磁盘。
  5. 从安装磁盘启动 Windows 设置 (setup.exe),以在无人参与模式下执行升级。
  6. 应用升级后配置
  7. 分离安装磁盘。
  8. 停止虚拟机。

限制

您可以使用 gcloud CLI 执行从 Windows Server 2008 R2 到 Windows Server 2012 R2 的升级。此方法仅支持基于 Google 提供的公共操作系统映像的虚拟机实例。如需升级 Windows Server 的其他配置,或升级您为其自带许可的虚拟机实例,请参阅执行 Windows Server 就地升级

费用

可免费执行 Windows Server 就地升级。您只需为升级过程中使用的资源付费,包括:

您可以使用价格计算器根据您的预计用量来估算费用。

准备工作

开始升级

以下部分将引导您完成虚拟机实例的升级过程。

  1. 在 Google Cloud 控制台中,点击激活 Cloud Shell 激活 Cloud Shell。 按钮,以打开 Cloud Shell

    转到 Google Cloud 控制台

  2. 设置默认项目 ID。将 PROJECT_ID 替换为您的 Compute Engine 项目的名称:

    gcloud config set project PROJECT_ID
    
  3. 运行以下命令开始升级:

    gcloud beta compute os-config os-upgrade VM_NAME \
      --zone=ZONE \
      --source-os=windows-2008r2 \
      --target-os=windows-2012r2 \
      --async \
      --auto-rollback
    

    替换以下内容:

    • VM_NAME:要升级的虚拟机实例的名称
    • ZONE:虚拟机实例在其中运行的区域

    --async 标志会指示 gcloud CLI 使用 Cloud Build 在后台运行升级。通过在后台运行升级,您可以并行升级多个虚拟机实例,还可以确保即使关闭 Cloud Shell 会话升级过程仍会继续。您可以在命令输出中找到指向 Cloud Build 作业的链接:

    Created [https://cloudbuild.googleapis.com/v1/projects/...].
    ...
    logUrl: https://console.cloud.google.com/build/builds/...
    ...
    status: QUEUED
    ...
    
    

查看升级过程

根据虚拟机实例的配置,升级可能需要 40 到 90 分钟才能完成。您可以通过打开 Cloud Build 日志来检查升级过程的状态:

  1. 点击 gcloud CLI 的命令输出中 logUrl 旁边显示的网址。
  2. 构建日志下,您可以查看升级过程的当前状态。

升级成功完成后,构建会标记为成功,并且您可以在构建日志中看到以下输出:

Successfully upgraded instance 'projects/...!'

如果 gcloud CLI 在升级期间遇到问题,则会将构建标记为失败。如果指定了 --auto-rollback 选项,则 gcloud CLI 还会启动自动回滚。您可以在构建日志中找到有关遇到的问题的更多详细信息。

如果升级在 90 分钟后仍运行,并且您怀疑升级没有进展,请使用排查就地升级问题中所述的方法之一,确定升级过程是失败还是停滞。

完成升级

升级完成后,启动虚拟机实例,然后运行 Windows 更新以下载并安装最新的安全更新:

  1. 启动虚拟机实例:

    gcloud compute instances start VM_NAME --zone=ZONE
    

    替换以下内容:

    • VM_NAME:虚拟机实例的名称
    • ZONE:虚拟机实例在其中运行的区域
  2. 使用 RDP 客户端连接到机器。如需了解详情,请参阅连接到实例

  3. 使用 Windows 更新来安装最新的 Windows 更新。在此过程中,您可能需要多次重启虚拟机实例。

  4. 验证所有应用是否都按预期运行。

回滚升级

如果升级失败,则 gcloud CLI 会自动启动回滚。如果升级成功,您可能仍会发现其中一个应用未按预期运行。在这种情况下,通过将虚拟机实例更改为再次使用原始启动磁盘来回滚升级:

  1. 停止虚拟机实例:

    gcloud compute instances stop VM_NAME --zone=ZONE
    

    替换以下内容:

    • VM_NAME:虚拟机实例的名称
    • ZONE:虚拟机实例在其中运行的区域
  2. 在构建日志中,找到指示原始启动磁盘名称和连接名称的行:

    4. Original boot disk: ORIGINAL_DISK_NAME
        - Device name of the attachment: DEVICE_NAME
    
  3. 将包含有故障的操作系统的磁盘与您的实例分离:

    gcloud compute instances detach-disk VM_NAME \
      --device-name=DEVICE_NAME \
      --zone=ZONE
    

    替换以下内容:

    • VM_NAME:虚拟机实例的名称
    • DEVICE_NAME:构建日志所指示的设备名称
    • ZONE:虚拟机实例在其中运行的区域
  4. 重新挂接原始启动磁盘:

    gcloud compute instances attach-disk VM_NAME \
      --disk=ORIGINAL_DISK_NAME \
      --device-name=DEVICE_NAME \
      --zone=ZONE
    

    替换以下内容:

    • VM_NAME:虚拟机实例的名称
    • ORIGINAL_DISK_NAME:构建日志所指示的原始启动磁盘的名称
    • DEVICE_NAME:构建日志所指示的设备名称
    • ZONE:虚拟机实例在其中运行的区域
  5. 启动虚拟机实例:

    gcloud compute instances start VM_NAME --zone=ZONE
    

    替换以下内容:

    • VM_NAME:虚拟机实例的名称
    • ZONE:虚拟机实例在其中运行的区域

清理

为避免产生额外费用,请移除 gcloud CLI 在升级前自动创建的备份:

  1. 在构建日志中,找到指示磁盘快照名称和原始启动磁盘的行:

    3. Snapshot for original boot disk: SNAPSHOT_NAME
    4. Original boot disk: DISK_NAME
       - Device name of the attachment: ...
       - AutoDelete setting of the attachment: true
    5. Name of the new boot disk: ...
    
  2. 返回 Cloud Shell 并删除磁盘快照:

    gcloud compute snapshots delete SNAPSHOT_NAME
    
  3. 删除原始启动磁盘,并将 ZONE 替换为在其中部署虚拟机的区域:

    gcloud compute disks delete DISK_NAME --zone=ZONE
    

后续步骤