Windows Server 2019 vs. Instantâneos VMware com desativação: uma solução elegante para o problema



Olá Habr!

As máquinas virtuais do Windows Server 2019 com emulação EFI no VMware têm um problema com os instantâneos do Application-Aware. É assim: um instantâneo é concluído, atinge 100%, trava por cerca de 5 minutos e depois cai no erro Falha ao desativar a máquina virtual.
 


A investigação mostrou que a causa desse erro foi um conflito entre o serviço VSS do Windows Server 2019 e o VMware Snapshot Provider, responsável pela desativação do aplicativo. Essa coisa prepara a máquina virtual para capturas instantâneas: interrompe aplicativos e operações de gravação para que, após a recuperação de capturas instantâneas, todos os dados sejam consistentes.

A Microsoft alegou e afirma que os Snapshots com reconhecimento de aplicativo são perfeitamente suportados pelo sistema operacional. De fato, esse problema não ocorre no Hyper-V. A VMware convidou modestamente seus usuários a simplesmente desativar o quiesce (e daí, esse instantâneo não será consistente no nível do aplicativo). Ou recuse os discos do sistema com marcação GPT e emulação EFI (em 2020!). 

Hoje, mostrarei como contornar esse problema de maneira bonita e obter instantâneos consistentes com reconhecimento de aplicativo das máquinas virtuais do Windows Server 2019 e, ao mesmo tempo, lembrarei da maneira suportada pela Microsoft de instalar o Windows Server em uma máquina virtual.

Quem é culpado?


Recomeçar. Ao criar uma máquina virtual no VMware ESXi em Opções da VM, a emulação padrão é a emulação do BIOS. E, embora não haja requisitos especiais de segurança ou o tamanho do disco do sistema, esse cenário é bastante apropriado. Porém, assim que precisarmos configurar o Secure Boot ou o número de vCPUs exceder 128, precisaremos criar uma VM com emulação UEFI. Se apenas porque existem:

  • Inicialização segura - proteção contra a inicialização de mídia externa.
  • Suporte de criptografia (requer suporte do TPM, mas no ESXi 6.7 o mesmo problema).
  • Suporte para unidades com mais de 2 TB (duvidoso, mas acontece).
  • Suporte para um grande número de processadores.

Se você instalar o Windows em VMs da VMware, como costumávamos fazer (criar VMs, excluir ISO, inicializar com alças, próximo, próximo ...), ao particionar o disco do sistema por GPT, a seção Recuperação será exibida ao lado da partição EFI e da partição com o sistema.

Recordamos o material:

Partição de recuperação - uma partição protegida no disco rígido do sistema, usada para restaurar as configurações de fábrica do sistema em caso de problemas. Quando você instala o Windows Server em um disco GPT, o Recovery grava o Windows Recovery Environment (WinRE). Os fabricantes de computadores, como regra, complementam esta seção com suas configurações personalizadas e drivers personalizados para um hardware específico.

Pare! 

Mas não estamos trabalhando com hardware, mas com uma máquina virtual. Não são necessárias reversões para as configurações de fábrica. No final, se você quiser retornar a VM ao seu estado original, simplesmente a reimplantamos. Portanto, a partição de recuperação na VM não faz sentido e não é particularmente necessária.

A seção Recuperação está protegida contra modificação e exclusão acidental: "não congela". Como resultado, surge um conflito entre o VSS VMware Snapshot Provider e o Microsoft Windows VSS: o provedor VMware está tentando capturar instantaneamente todas as partições do disco, e o Windows Server não permite isso. Esta boa notícia é relatada para nós pelos logs:



O que fazer?


É tratado simplesmente. Você pode instalar o Windows em uma VM usando o cmdlet Convert Image do Windows. Na verdade, esse script de instalação é recomendado e suportado pela própria Microsoft (esse script está na imagem do Windows Server 2016 RTM no diretório com a imagem do Nano Server, mas essa é outra história e não menos interessante;)).

O script criará automaticamente um modelo com o Windows Server sysprepped atualizado, os drivers necessários e até as funções. Essa abordagem é interessante porque a instalação e configuração do sistema operacional podem ser automatizadas, pois o script suporta o unattend.xml. Além disso, essa opção oferece liberdade para a engenharia: do pré-lançamento de uma VM no Hyper-V com instalação através do Invoke-Command até a criação de um serviço personalizado através da edição do registro. 

Na saída, temos um disco VHD espesso, no qual você pode instalar o VMware , iniciar a VM, colocar o VMware Tools e converter em um modelo. Como resultado, a VM terá a marcação GPT dentro, adequada para execução em uma VM EFI e sem a seção Recuperação por design. Como um bônus: no meu exemplo, criarei imediatamente um adaptador paravirtual para fornecer desempenho. E o mais importante - para uma máquina virtual como essa, o instantâneo com reconhecimento de aplicativo pode ser feito sem problemas.

Agora tudo é detalhado em etapas.

Extração de driver


  1. Faça o download da imagem do repositório .
  2. Monte a imagem.

  3. Execute o cmd.exe e vá para a raiz da imagem montada
  4. Execute o instalador com as chaves:
    setup64.exe /A /P <  >
  5. Na segunda etapa do assistente, repetimos o caminho para descompactar:

  6. Os drivers estão aqui: VMWToolsExtract \ VMware \ Ferramentas VMware \ VMware \ Drivers

Windows Server 2019


  1. . , .
  2. : Servicing Stack Update. How to get this update , MS update catalog:

  3. Windows Server 2019 Cumulative Update Servicing Stack Update.



  4. CAB- :



  1. PowerShell .

  2. Install-Module -Name Convert-WindowsImage
  3. - Convert-WindowsImage:
    $ConvertWindowsImageParam = @{
    	#    Windows Server 2019
    	SourcePath = "C:\work\en_windows_server_2019.iso"
    	#   
    	VHDFormat = "VHD"
    	#   
    	SizeBytes = 40GB
    	#   - GPT
    	DiskLayout = "UEFI"
    	BCDinVHD = "VirtualMachine"
    	#   
    	DiskType = "Fixed"
    	#  - Windows Server 2019 Standard (Desktop Expirience)
    	<#
    	 :
    	1 - Windows Server 2019 Standard (Core)
    	2 - Windows Server 2019 Standard (Desktop Expirience)
    	3 - Windows Server 2019 Datacenter (Core)
    	4 - Windows Server 2019 Datacenter (Desktop Expirience)
    	#>
    	Edition = @("2")
    	#  Remote Desktop
    	RemoteDesktopEnable = $True
    	#   
    	Feature = @("TelnetClient","WindowsServerBackup","NetFx3")
    	#   (     CAB)
    	#       :  SSU,  
    	Package = @("C:\work\Windows10.0-KB4523204-x64.cab","C:\work\Windows10.0-KB4534321-x64_PSFX.cab")
    	#     
    	Driver = @("C:\work\VMWToolsExtract\VMware\VMware Tools\VMware\Drivers")
    	}
  4. Windows Server 2019 :
    Convert-WindowsImage @ConvertWindowsImageParam





A instalação leva até 30 minutos.

Neste exemplo, a saída é um sistema operacional totalmente preparado no estado Sysprepped, mas nada nos impede de usar o Unattend.xml para personalização (as especificações de personalização ficam um pouco confusas quando você vê o modelo sysprep e a VM não se expande).

Leia mais sobre as chaves deste maravilhoso kmlet aqui e em Get-Help do próprio kmlet.

Depois disso, você pode carregar o disco no ESXi, criar uma VM e instalar o VMware Tools. E implante máquinas virtuais sem se preocupar com problemas de desativação de instantâneos.

Mas e se já houver um modelo "defeituoso"?


Basta excluir a partição de recuperação via diskpart.exe e mover as partições EFI e de sistema para a beleza da marcação (mas você não pode fazer isso). É suportado? Em uma máquina virtual - definitivamente!

  1. Iniciamos o cmd.exe.
  2. Começamos diskpart.
  3. Obtenha a lista de unidades:
    list disk
  4. Selecione um disco:
    select disk n

    onde n é o número do disco.
  5. Listamos as seções:
    list partition
  6. Examinamos o número da partição Recovery (n) e o selecionamos:
    select partition n
  7. Remova a proteção da seção:
    gpt attributes=0x8000000000000000
  8. Excluir:
    delete partition
  9. Lucro!





A VM está pronta para o Quescing Snapshots!

Em vez de uma conclusão


Essa abordagem é apenas uma das opções para implantar o Windows Server e resolver o problema KB60395 . Obviamente, nesse caso, podemos reduzir o VDH e depois usar o utilitário quemu-img para converter o disco virtual no arquivo OVF, que o ESXi entende muito bem. Esse cenário é bastante apropriado, por exemplo, no caso em que o disco virtual precisa ser transferido pela rede. Compreender o histórico do problema e a verdadeira natureza do problema sempre permite encontrar uma solução adequada para uma infraestrutura específica. A implementação técnica é um campo para experiências e fantasias interessantes, ilimitadas.

All Articles