共用方式為

在 Azure 中运行 Windows Server 的 VM 的就地升级

借助就地升级,可从较低版本的操作系统升级到较高版本的操作系统,同时使设置、服务器角色和数据保持不变。 本文介绍如何使用就地升级将 Azure VM 移动到更高版本的 Windows Server。 目前支持升级到 Windows Server 2012、Windows Server 2016、Windows Server 2019、Windows Server 2022 和 Windows Server 2025。

注意

遵循本文中的过程会导致数据平面与虚拟机(VM) 的控制平面 断开连接。 Azure功能(如 Auto guest patchingAuto OS 映像升级HotpatchingAzure Update Manager 将不可用。 这意味着 VM 属性中的源映像信息(包括发布者、套餐和计划)保持不变。 用于部署 VM 的映像保持不变,并且仅会升级 OS。 若要利用这些功能,请使用首选作系统创建新的 VM,而不是执行就地升级。

重要

虚拟机(VM)在Azure中运行,并遇到Windows Update问题? 尝试诊断和解决Azure虚拟机Windows Update或Windows OS 升级问题? 请尝试以下工具之一:

如果在联系支持人员之前遇到虚拟机Windows Update或Windows OS 升级问题,请运行这些工具。

先决条件

开始就地升级前的准备工作:

  • 查看目标操作系统的升级要求:

    • 从 Windows Server 2008(64 位)或 Windows Server 2008 R2 升级Windows Server 2012选项

    • 从 Windows Server 2012 或 Windows Server 2012 R2 升级Windows Server 2016选项

    • 从 Windows Server 2012 R2 或 Windows Server 2016 中Windows Server 2019的升级选项

    • 从 Windows Server 2016 或 Windows Server 2019 升级到 Windows Server 2022 的选项

    • 从 Windows Server 2022、Windows Server 2019、Windows Server 2016 或 Windows Server 2012 R2 升级到 Windows Server 2025 的选项

  • 运行 Azure 虚拟机(VM)Windows OS 升级评估工具验证 OS 升级路径和任何已知问题。

  • 验证操作系统磁盘是否有足够的执行就地升级的可用空间。 如果需要更多空间,请执行这些步骤来扩展附加到 VM 的操作系统磁盘。

  • 禁用防病毒和反间谍软件以及防火墙。 这些类型的软件可能会与升级过程发生冲突。 升级完成后,重新启用防病毒和反间谍软件以及防火墙。

将 VM 升级为批量许可证(KMS 服务器激活)

Azure提供的升级介质要求将虚拟机(VM)配置为Windows Server批量许可。 这是从Azure中通用映像安装的任何Windows Server VM 的默认行为。 如果 VM 已导入Azure,则可能需要转换为批量许可,以使用Azure提供的升级媒体。 若要确认 VM 是否已配置为批量许可证激活,请按照以下步骤配置相应的 KMS 客户端设置密钥。 如果激活配置已更改,请按照以下步骤验证与 Azure KMS 服务的连接

升级到托管磁盘

就地升级过程要求在 VM 上使用托管磁盘进行升级。 Azure中的大多数 VM 都使用托管磁盘,2022 年 11 月宣布停用非托管磁盘支持。 如果 VM 当前正在使用非托管磁盘,请按照以下步骤 迁移到托管磁盘

创建操作系统磁盘的快照

建议在开始就地升级过程之前创建操作系统磁盘和所有数据磁盘的快照。 借助它,如果就地升级过程中出现任何故障,可以还原到 VM 的先前状态。 若要对每个磁盘创建一个快照,请按照以下步骤创建磁盘快照

注意

在升级过程中,仅使用 en-US 语言创建升级媒体磁盘。 目前,不支持其他语言或版本。 若要避免以前使用其他语言 ISO 安装 OS 而导致的错误,可以将系统语言设置为 en-US,或者将系统区域设置更改为 Control Panel 中的 English (United States)

创建升级介质磁盘

若要启动就地升级,必须将升级媒体作为托管磁盘附加到 VM。 若要创建升级媒体,请修改 Windows Server 2025 的以下 PowerShell 脚本中的变量。 升级介质磁盘可用于升级多个 VM,但一次只能用于升级一个 VM。 若要同时升级多个 VM,则对于同时进行的每次升级,必须创建多个升级磁盘。

参数 定义
resourceGroup 将在其中创建升级媒体托管磁盘的资源组的名称。 如果不存在已命名的资源组,将创建该资源组。
位置 升级媒体托管磁盘创建所在的 Azure 区域。 这必须与要升级的 VM 在同一区域。
区域 在所选区域的 Azure 可用区中将创建升级媒体托管磁盘。 这必须与要升级的 VM 在同一地区。 对于区域 VM(非区域),区域参数应为“”。
diskName 将包含升级介质的托管磁盘的名称
sku Windows Server升级媒体版本。 这必须是:server2025Upgradeserver2022Upgradeserver2019Upgradeserver2016Upgradeserver2012Upgrade。 升级媒体磁盘是使用指定 SKU 的最新版本创建的。

如果有多个订阅,则应运行 Set-AzContext -Subscription '<subscription name or id> 来指定要使用的订阅。

PowerShell 脚本

#
# Customer specific parameters


# Resource group of the source VM
$resourceGroup = "WindowsServerUpgrades"

# Location of the source VM
$location = "ChinaNorth2"

# Zone of the source VM, if any
$zone = "" 

# Disk name for the that will be created
$diskName = "WindowsServer2025UpgradeDisk"

# Target version for the upgrade - must be one of these five strings: server2025Upgrade, server2022Upgrade, server2019Upgrade, server2016Upgrade or server2012Upgrade
$sku = "server2025Upgrade"


# Common parameters

$publisher = "MicrosoftWindowsServer"
$offer = "WindowsServerUpgrade"
$managedDiskSKU = "Standard_LRS"

#
# Get the latest version of the special (hidden) VM Image from the Azure Marketplace

$versions = Get-AzVMImage -PublisherName $publisher -Location $location -Offer $offer -Skus $sku | sort-object -Descending {[version] $_.Version	}
$latestString = $versions[0].Version


# Get the special (hidden) VM Image from the Azure Marketplace by version - the image is used to create a disk to upgrade to the new version


$image = Get-AzVMImage -Location $location `
                       -PublisherName $publisher `
                       -Offer $offer `
                       -Skus $sku `
                       -Version $latestString

#
# Create Resource Group if it doesn't exist
#

if (-not (Get-AzResourceGroup -Name $resourceGroup -ErrorAction SilentlyContinue)) {
    New-AzResourceGroup -Name $resourceGroup -Location $location    
}

#
# Create managed disk from LUN 0
#

if ($zone){
    $diskConfig = New-AzDiskConfig -SkuName $managedDiskSKU `
                                   -CreateOption FromImage `
                                   -Zone $zone `
                                   -Location $location
} else {
    $diskConfig = New-AzDiskConfig -SkuName $managedDiskSKU `
                                   -CreateOption FromImage `
                                   -Location $location
} 

Set-AzDiskImageReference -Disk $diskConfig -Id $image.Id -Lun 0

New-AzDisk -ResourceGroupName $resourceGroup `
           -DiskName $diskName `
           -Disk $diskConfig  

将升级介质附加到 VM

将目标Windows Server版本的升级媒体附加到要升级的 VM。 当 VM 处于运行或停止状态时,可以执行此操作。

门户说明

  1. 登录到 Azure 门户

  2. 搜索并选择“虚拟机”。

  3. 从列表中选择要执行就地升级的虚拟机。

  4. 在“虚拟机”页上选择“磁盘” 。

  5. 在“磁盘”页上,选择“附加现有磁盘”。

  6. 在“磁盘名称”下拉列表中,选择在上一步中创建的升级磁盘的名称。

  7. 选择“保存”,将升级磁盘附加到 VM。

执行就地升级到 Windows Server 2016、2019、2022 或 2025

若要启动就地升级,VM 必须处于 Running 状态。 VM 处于运行状态后,请使用以下步骤执行升级。

  1. 使用 RDPRDP-Bastion 连接到 VM。

  2. 确定升级磁盘的驱动器号(如果没有其他数据磁盘,则通常为 E: 或 F:)。

  3. 开始Windows PowerShell。

  4. 将目录更改为升级磁盘上的唯一目录。

  5. 执行以下命令以开始升级:

    .\setup.exe /auto upgrade /dynamicupdate disable 
    

    可以在执行Windows Server升级命令时使用 /eula accept 开关,在升级过程中自动接受微软软件许可条款(最终用户许可协议或EULA)。 使用 /eula 接受指令可以帮助避免因为未手动同意 EULA 而导致的升级过程卡住的问题。 此开关可确保升级过程能够顺利进行,无需通过用户交互来接受许可条款。

    .\setup.exe /auto upgrade /dynamicupdate disable /eula accept
    
  6. 使用 Windows Server 升级矩阵根据 VM 的当前版本和配置选择正确的“升级到”映像。

在升级过程中,VM 将自动断开与 RDP 会话的连接。 从 RDP 会话断开连接后,可以通过 Azure 门户中提供的 screenshot 功能监视升级进度

仅执行就地升级到Windows Server 2012

若要启动就地升级,VM 必须处于 Running 状态。 VM 处于运行状态后,请使用以下步骤执行升级。

  1. 使用 RDPRDP-Bastion 连接到 VM。

  2. 确定升级磁盘的驱动器号(如果没有其他数据磁盘,则通常为 E: 或 F:)。

  3. 开始Windows PowerShell。

  4. 将目录更改为升级磁盘上的唯一目录。

  5. 执行以下命令以开始升级:

    .\setup.exe 
    
  6. Windows安装程序启动时,选择立即安装

  7. 对于 获取 Windows 安装程序的重要更新,请选择“不,谢谢”。

  8. 使用 Windows Server 升级矩阵,根据当前 VM 的版本和配置选择正确的 Windows Server 2012 "升级到" 映像。

  9. 在“许可条款”页上,选择“我接受许可条款”,然后选择“下一步”。

  10. 对于“需要哪种类型的安装?”,请选择Upgrade:安装Windows并保留文件、设置和应用程序

  11. 安装程序将生成“兼容性报告”,可以忽略任何警告并选择“下一步”。

  12. 完成后,计算机会重新启动,自动断开与 RDP 会话的连接。 从 RDP 会话断开连接后,可以通过 Azure 门户中提供的 screenshot 功能监视升级进度

升级后的步骤

升级过程成功完成后,应执行以下步骤来清理升级过程中创建的任何项目:

  • 如果创建了 OS 磁盘和数据磁盘的快照,请将其删除。

  • 删除升级媒体托管磁盘。

  • 启用升级过程中可能已禁用的任何防病毒、反间谍软件或防火墙软件。

重要

升级过程后,映像计划信息不会更改。

从故障中恢复

如果就地升级过程未能成功完成,在创建了操作系统磁盘和数据磁盘快照的情况下,可以返回到 VM 的先前版本。 若要通过快照将 VM 还原到以前的状态,请完成以下步骤:

  1. 按照 在快照中创建磁盘 的步骤,从 OS 磁盘快照和每个数据磁盘快照创建新的托管磁盘。如果 VM 位于某个可用性区域,请确保在与 VM 相同的可用性区域中创建磁盘。

  2. 停止 VM。

  3. 交换 VM 的 OS 磁盘

  4. 从 VM 拆离所有数据磁盘

  5. 附加根据步骤 1 中的快照创建的数据磁盘

  6. 重启 VM。

后续步骤