Neste guia, mostrar-lhe-emos passo a passo como realizar a actualização no local das VMs do Windows Server executadas no Microsoft Azure.
Introdução
O processo de actualização para uma versão mais recente do Windows Server pode variar muito, dependendo do sistema operativo com que se está a começar e do caminho que se segue.
O actualização é também conhecida como “in-place upgrade”, onde se passa de uma versão mais antiga do sistema operativo para uma versão mais recente, mantendo-se no mesmo hardware virtual ou físico.
Desde o Windows Server 2016, a Microsoft anunciou o apoio a actualizações no local para instalação autónomabem como para Windows Server com clusters (conhecidos como Actualizações do Cluster OS Rolling Upgrades) instalados no local e não no Azure.
No entanto, para os sistemas operativos Windows Server mais antigos a correr no Microsoft Azure, era uma dor de cabeça realizar uma actualização no local. Para ultrapassar este cenário não suportado, costumávamos passar pelo longo trabalho documentado pela Microsoft de descarregar o VHD a partir do Azure, realizando uma actualização no local num servidor Hyper-V local, e depois carregar o VHD para o Azure.
Estive recentemente envolvido na actualização de vários Servidores Windows no Microsoft Azure, e estou feliz por ver que a Microsoft anunciou recentemente o actualização no local para VMs a correr Windows Server no Azure.
Por favor active o JavaScript
Este guia irá guiá-lo através de cada passo sobre como mover as suas VMs Azure para uma versão posterior do Windows Server usando uma actualização no local.
Pré-requisitos
Antes de começar com a actualização no local das suas VMs que executam o Windows Server no Azure, é necessário verificar os seguintes pré-requisitos:
1) Subscrição Azure – Se não tiver uma subscrição Azure, pode criar uma grátis aqui.
2) No momento da redacção deste documento, os seguintes sistemas operativos de fonte e alvo são suportados para a actualização no local:
Actualização a partir de | Actualização para |
---|---|
Windows Server 2012 R2 (Core) | Windows Server 2019 (Core) |
Windows Server 2012 R2 | Windows Server 2019 (Experiência de Desktop) |
Windows Server 2016 (Core) | Windows Server 2019 (Core) -ou- Windows Server 2022 (Core) |
Windows Server 2016 (Experiência Desktop) | Windows Server 2019 (Desktop Experience) -ou- Windows Server 2022 (Desktop Experience) |
Windows Server 2019 (Core) | Windows Server 2022 (Core) |
Windows Server 2019 (Experiência de Desktop) | Windows Server 2022 (Experiência de Desktop) |
3) Os seguintes sistemas operativos não são suportados para a actualização no local. É necessário passar pelo trabalho manual aqui descrito.
- Windows Server 2012.
- Windows Server 2008.
4) Verificar se o disco do sistema operativo tem espaço livre suficiente para realizar a actualização no local. É necessário pelo menos 32 GB livres (um mínimo absoluto) para uma instalação bem sucedida. Se precisar de espaço adicional, pode expandir e redimensionar os discos rígidos virtuais anexado à sua máquina virtual Windows antes de iniciar.
5) Desactivar temporariamente qualquer antivírus, software anti-spyware, e firewalls que tenha na máquina.
6) Se ainda tiver Microsoft Silverlight instalado na sua antiga máquina Windows Server, certifique-se de que é removido. O Microsoft Silverlight chegou ao fim do suporte em 12 de Outubro de 2021.
7) A fonte VM que se pretende actualizar, deve estar a utilizar Disco Gerido. Se o VM ainda estiver a utilizar Discos não administradosEm seguida, verifique os seguintes passos para migrar o VM para Discos Geridos utilizando o PowerShell.
8) Por último, certifique-se de que o VM está a utilizar uma licença por volume porque o meio de actualização fornecido pelo Azure, requer que o VM seja configurado para a licença por volume do Windows Server. Este é o padrão para quaisquer VMs Windows Server criadas no Azure. No entanto, se o seu VM foi migrado para o Azure utilizando o Azure Migrate ou Azure Site Recovery, então terá de actualizar/converter o VM para uma licença por volume.
Para confirmar se o VM está configurado para activação de licença por volume, pode executar o seguinte comando:
cscript c:\windows\system32\slmgr.vbs /dlv
Agora, se o comando acima mostrar um RETALHO então, é necessário executar os seguintes comandos para definir o canal KMS chave de configuração do cliente para a versão do Windows Server a ser utilizada, e forçá-lo a tentar novamente a activação:
cscript c:\windows\system32\slmgr.vbs /ipk <KMS client setup key>
cscript c:\windows\system32\slmgr.vbs /ato
Em seguida, certifique-se de que o VM Azure está configurado para utilizar o servidor KMS Azure correcto. Para o fazer, pode executar o seguinte comando:
Invoke-Expression "$env:windir\system32\cscript.exe $env:windir\system32\slmgr.vbs /skms kms.core.windows.net:1688"
Deve ver, o Nome da máquina do Key Management Service definido para kms.core.windows.net:1688 com sucessocomo mostra a figura abaixo:
Servidor Windows In-Place Upgrade em Azure
Depois de ter verificado que todos os pré-requisitos acima mencionados, pode proceder de acordo com os seguintes passos:
Passo 1) Criar um instantâneo do disco OS
A Microsoft recomenda que crie um instantâneo do disco do seu sistema operativo e de quaisquer discos de dados antes de iniciar o processo de actualização no local. Um instantâneo é uma cópia completa, apenas leitura, de um disco rígido virtual (VHD).
Este passo faz todo o sentido, porque lhe permitirá regressar ao estado anterior do VM se algo falhar durante o processo de actualização no local. E acredite em mim, poderá enfrentar este problema.
Em primeiro lugar, é preciso assegurar-se de que se desliga o VM em Azure de forma limpa.
Para criar um instantâneo de um disco rígido virtual usando o Azure PowerShell, executar os seguintes comandos:
Primeiro, utilizará o New-AzSnapshotConfig cmdlet para criar um objecto de fotografia instantânea configurável. Pode então utilizar o New-AzSnapshot cmdlet para tirar um instantâneo do disco.
Defina os parâmetros necessários abaixo. Actualize os valores abaixo para reflectir o seu ambiente.
$resourceGroupName = 'ResourceGroupName'
$location = 'westeurope'
$vmName = 'AzureVM12R2'
A seguir, utilize o Get-AzVM cmdlet para obter o VM que contém o VHD que deseja copiar:
$vm = Get-AzVM `
-ResourceGroupName $resourceGroupName `
-Name $vmName
A seguir, é necessário criar a configuração de snapshot. No exemplo abaixo, o instantâneo é para o disco OS:
$osSnapshot = New-AzSnapshotConfig `
-SourceUri $vm.StorageProfile.OsDisk.ManagedDisk.Id `
-Location $location `
-CreateOption copy
Agora, por defeito, o instantâneo utiliza armazenamento padrão local redundante (LRS) (-AccountType StandardLRS). Esta é a opção recomendada para guardar os seus instantâneos em armazenamento padrão em vez de armazenamento premium, porque os instantâneos premium irão incorrer em custos adicionais.
Por último, mas não menos importante, tirar uma fotografia do disco OS executando o seguinte comando:
$snapshotOsName = "$($vm.StorageProfile.OsDisk.Name)_Snapshot_$(Get-Date -Format dd_MM_yyyy)"
New-AzSnapshot `
-Snapshot $osSnapshot `
-SnapshotName $snapshotOsName `
-ResourceGroupName $resourceGroupName
Agora se o seu VM tem discos Data, então pode usar o script PowerShell abaixo para criar a configuração snapshot para todos os seus discos de dados.
$dataDisks = ($vm.Storageprofile.DataDisks).name
foreach ($datadisk in $datadisks) {
$dataDisk = Get-AzDisk -ResourceGroupName $resourceGroupName -DiskName $datadisk
Write-Output "VM $($vm.name) data Disk $($datadisk.Name) Snapshot Begin"
$DataDiskSnapshotConfig = New-AzSnapshotConfig -SourceUri $dataDisk.Id -CreateOption Copy -Location $location
$snapshotDataName = "$($datadisk.name)_snapshot_$(Get-Date -Format dd_MM_yyyy)"
New-AzSnapshot -ResourceGroupName $resourceGroup -SnapshotName $snapshotDataName -Snapshot $DataDiskSnapshotConfig -ErrorAction Stop
Write-Output "VM $($vm.name) Data Disk $($datadisk.Name) Snapshot End"
}
Por último, pode utilizar o Get-AzSnapshot cmdlet para verificar se a sua fotografia existe:
Get-AzSnapshot `
-ResourceGroupName $resourceGroupName
Passo 2) Criar um disco de suporte de actualização
A seguir, tem de criar o que é conhecido como um disco de suporte de actualização. O disco de suporte de actualização deve ser anexado ao VM de origem que pretende actualizar como um Disco Gerido.
Pode encontrar mais sobre como criar um disco de suporte de actualização usando o PowerShell como documentado oficialmente pela Microsoft aqui.
No meu caso, precisamos de criar os meios de actualização para o Windows Server 2019. Portanto, precisamos de modificar as variáveis no script PowerShell para visar o Windows Server 2022 ou o Windows Server 2019.
Aqui está um exemplo do script PowerShell condensado que irá criar um disco de suporte de actualização para o Windows Server 2019:
# Upgrade Disk name that will be created
$upgradeDiskName = "WindowsServer2019UpgradeDisk"
# Target version for the upgrade - must be either server2022Upgrade or server2019Upgrade
$sku = "server2019Upgrade"
# 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 Managed Disk from LUN 0
$diskConfig = New-AzDiskConfig -SkuName $managedDiskSKU `
-CreateOption FromImage `
-Location $location
Set-AzDiskImageReference -Disk $diskConfig -Id $image.Id -Lun 0
New-AzDisk -ResourceGroupName $resourceGroupName `
-DiskName $upgradeDiskName `
-Disk $diskConfig
Passo 3) Anexar os meios de actualização ao VM
A seguir, precisamos de anexar o disco recentemente criado, gerido pelos media, à fonte VM.
É claro que este passo pode ser feito usando o portal Azure, CLI, PowerShell, ou o REST API.
Neste exemplo, utilizaremos os seguintes comandos PowerShell para anexar o disco do suporte de actualização. Actualize os valores abaixo para reflectir o seu ambiente:
$resourceGroupName = 'ResourceGroupName'
$vmName = 'AzureVM12R2'
$location = 'westeurope'
$storageType = 'Standard_LRS'
$upgradeDiskName = "WindowsServer2019UpgradeDisk"
$upgradeDataDisk = Get-AzDisk -DiskName $upgradeDiskName -ResourceGroupName $resourceGroupName
$vm = Get-AzVM -Name $vmName -ResourceGroupName $resourceGroupName
$vm = Add-AzVMDataDisk -VM $vm -Name $upgradeDiskName -CreateOption Attach -ManagedDiskId $UpgradeDataDisk.Id -Lun 0
Update-AzVM -VM $vm -ResourceGroupName $resourceGroupName
Passo 4) Efectuar uma actualização no local
No último passo, efectua a actualização no local como faria normalmente.
Primeiro, deve ligar-se ao Azure VM utilizando Azure Bastion, RDP sobre ExpressRoute, ou Site-to-Site/Point-to-Site VPN. O RDP público não é recomendado por razões de segurança.
Uma vez conectado ao VM, é necessário trazer o disco de suporte de actualização anexado Em linha.
Verificar a letra da unidade para o disco de actualização (normalmente E: ou F: se não houver outros discos de dados anexados ao VM).
Get-Volume | Where FileSystemLabel -eq 'upgrade'
A seguir, altere o directório para o único directório (Windows Server 2019 ou Windows Server 2022) no actualização e depois executar o seguinte comando para dar início ao processo de actualização.
.\setup.exe /auto upgrade /dynamicupdate disable
Depois certifique-se de seleccionar o correcto “Actualização para” com base na actual versão e configuração do VM que pretende actualizar utilizando a seguinte tabela:
Actualização a partir de | Actualização para |
---|---|
Windows Server 2012 R2 (Core) | Windows Server 2019 (Core) |
Windows Server 2012 R2 | Windows Server 2019 (Experiência de Desktop) |
Windows Server 2016 (Core) | Windows Server 2019 (Core) -ou- Windows Server 2022 (Core) |
Windows Server 2016 (Experiência Desktop) | Windows Server 2019 (Desktop Experience) -ou- Windows Server 2022 (Desktop Experience) |
Windows Server 2019 (Core) | Windows Server 2022 (Core) |
Windows Server 2019 (Experiência de Desktop) | Windows Server 2022 (Experiência de Desktop) |
Agora, durante o processo de actualização no local, o VM desligar-se-á automaticamente da sessão de RDP. Após a VM ser desconectada da sessão de RDP, pode monitorizar o processo de actualização através do Funcionalidade de diagnóstico de arranque disponível na lâmina VM Azure.
É isso aí que o tem!
Limpeza Pós-actualização
Uma vez concluído com sucesso o processo de actualização, certifique-se de tomar as seguintes medidas para limpar quaisquer artefactos que tenham sido criados durante o processo de actualização no local:
- Eliminar os instantâneos do disco do SO e do(s) disco(s) de dados, caso tenham sido criados.
- Apagar o suporte de actualização Managed Disk.
- Activar qualquer antivírus, anti-spyware, ou software de firewall que possa ter sido desactivado no início do processo de actualização.
Resumo
Neste artigo, mostrámos-lhe para passar de um sistema operativo Windows Server mais antigo para um mais recente utilizando uma actualização no local, mantendo intactas as suas configurações, funções de servidor e dados.
É óptimo ver que a Microsoft suporta agora a actualização no local para Windows Server no Microsoft Azure, em vez de passar pela longa fase de download do VHD a partir do Azure, realizando uma actualização no local num servidor Hyper-V local, e depois carregando o VHD para o Azure.
Isto é muito mais rápido e mais eficiente.
Saiba mais: 5 Melhores Práticas Críticas para endurecer os seus VMs Azure.
__
Obrigado por ler o meu blogue.
Se tiver alguma pergunta ou feedback, por favor deixe um comentário.
-Charbel Nemnom-