如果您的虚拟机 (VM) 实例运行 Windows Server 2008 R2,则您可以使用 gcloud CLI 将其自动升级到 Windows Server 2012 R2。
使用 gcloud CLI 执行就地升级是执行手动升级的替代方案。通过自动执行升级过程,gcloud CLI 可让您减少需要升级的每个虚拟机所需的工作量。
在虚拟机的就地升级期间,gcloud CLI 会执行以下步骤:
- 停止虚拟机。
- 创建标准永久性磁盘快照作为备份。
- 创建启动磁盘的副本,并保留原始启动磁盘作为备份。
- 挂接包含 Windows 2012 R2 安装介质的安装磁盘。
- 从安装磁盘启动 Windows 设置 (
setup.exe
),以在无人参与模式下执行升级。 - 应用升级后配置。
- 分离安装磁盘。
- 停止虚拟机。
限制
您可以使用 gcloud CLI 执行从 Windows Server 2008 R2 到 Windows Server 2012 R2 的升级。此方法仅支持基于 Google 提供的公共操作系统映像的虚拟机实例。如需升级 Windows Server 的其他配置,或升级您为其自带许可的虚拟机实例,请参阅执行 Windows Server 就地升级。
费用
可免费执行 Windows Server 就地升级。您只需为升级过程中使用的资源付费,包括:
您可使用价格计算器根据您的预计使用情况来估算费用。
准备工作
- 务必了解执行 Windows Server 就地升级的限制和可能的替代方案。
- 使用 Windows 更新验证 Windows Server 是否为最新版本。
- 停用或卸载防病毒软件、反间谍软件以及其他可能会干扰升级或与要升级到的 Windows Server 版本不兼容的代理。
- 查看 Microsoft 文档,了解 Windows Server 2012 R2 的前提条件和可能的限制:
- 验证虚拟机实例是否满足 Windows Server 2012 的系统要求,并且是否有足够的可用磁盘空间。
- 查看有关 Windows Server 2012 R2 的服务器角色升级建议、已知问题和升级过程。
- 查看有关计划就地升级的建议。
- 验证您是否受到 Windows Server 2012 R2 中已移除或弃用的功能影响。
- 验证您的任何自定义软件或第三方软件是否都与 Windows Server 2012 R2 兼容。
- 在继续操作之前,确保您已拥有以下 Cloud IAM 角色之一:
- 本指南使用 Cloud Shell 运行 gcloud CLI。如果您要改为在本地计算机上运行 gcloud CLI,请务必先下载并安装最新的 gcloud CLI。
开始升级
以下部分将引导您完成虚拟机实例的升级过程。
在 Google Cloud 控制台中,点击激活 Cloud Shell 按钮,以打开 Cloud Shell。
设置默认项目 ID。将
PROJECT_ID
替换为您的 Compute Engine 项目的名称:gcloud config set project PROJECT_ID
运行以下命令开始升级:
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 日志来检查升级过程的状态:
- 点击 gcloud CLI 的命令输出中
logUrl
旁边显示的网址。 - 在构建日志下,您可以查看升级过程的当前状态。
升级成功完成后,构建会标记为成功,并且您可以在构建日志中看到以下输出:
Successfully upgraded instance 'projects/...!'
如果 gcloud CLI 在升级期间遇到问题,则会将构建标记为失败。如果指定了 --auto-rollback
选项,则 gcloud CLI 还会启动自动回滚。您可以在构建日志中找到有关遇到的问题的更多详细信息。
如果升级在 90 分钟后仍运行,并且您怀疑升级没有进展,请使用排查就地升级问题中所述的方法之一,确定升级过程是失败还是停滞。
完成升级
升级完成后,启动虚拟机实例,然后运行 Windows 更新以下载并安装最新的安全更新:
启动虚拟机实例:
gcloud compute instances start
VM_NAME
--zone=ZONE
替换以下内容:
VM_NAME
:虚拟机实例的名称ZONE
:虚拟机实例在其中运行的区域
使用 RDP 客户端连接到机器。如需了解详情,请参阅连接到实例。
使用 Windows 更新来安装最新的 Windows 更新。在此过程中,您可能需要多次重启虚拟机实例。
验证所有应用是否都按预期运行。
回滚升级
如果升级失败,则 gcloud CLI 会自动启动回滚。如果升级成功,您可能仍会发现其中一个应用未按预期运行。在这种情况下,通过将虚拟机实例更改为再次使用原始启动磁盘来回滚升级:
停止虚拟机实例:
gcloud compute instances stop
VM_NAME
--zone=ZONE
替换以下内容:
VM_NAME
:虚拟机实例的名称ZONE
:虚拟机实例在其中运行的区域
在构建日志中,找到指示原始启动磁盘名称和连接名称的行:
4. Original boot disk: ORIGINAL_DISK_NAME - Device name of the attachment: DEVICE_NAME
将包含有故障的操作系统的磁盘与您的实例分离:
gcloud compute instances detach-disk VM_NAME \ --device-name=DEVICE_NAME \ --zone=ZONE
替换以下内容:
VM_NAME
:虚拟机实例的名称DEVICE_NAME
:构建日志所指示的设备名称ZONE
:虚拟机实例在其中运行的区域
重新挂接原始启动磁盘:
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
:虚拟机实例在其中运行的区域
启动虚拟机实例:
gcloud compute instances start VM_NAME --zone=ZONE
替换以下内容:
VM_NAME
:虚拟机实例的名称ZONE
:虚拟机实例在其中运行的区域
清理
为避免产生额外费用,请移除 gcloud CLI 在升级前自动创建的备份:
在构建日志中,找到指示磁盘快照名称和原始启动磁盘的行:
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: ...返回 Cloud Shell 并删除磁盘快照:
gcloud compute snapshots delete SNAPSHOT_NAME
删除原始启动磁盘,并将
ZONE
替换为在其中部署虚拟机的区域:gcloud compute disks delete DISK_NAME --zone=ZONE
后续步骤
- 了解如何手动执行 Windows Server 就地升级。
- 了解如何排查就地升级问题。
- 详细了解永久性磁盘快照。