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


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

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

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

  1. 停止虚拟机。
  2. 创建标准永久性磁盘快照作为备份。
  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
    

后续步骤