Windows Server 2019 contre Instantanés VMware avec mise au repos: une solution élégante au problème



Bonjour, Habr!

Les machines virtuelles Windows Server 2019 avec émulation EFI sur VMware ont un problème avec les instantanés compatibles avec les applications. Cela ressemble à ceci: un instantané est fait, atteint 100%, se bloque pendant 5 minutes, puis tombe dans l'erreur Échec de la mise au repos de la machine virtuelle.
 


L'enquête a montré que la cause de cette erreur était un conflit entre le service VSS de Windows Server 2019 et le fournisseur de clichés VMware, qui est responsable de la mise au repos des applications. Cette chose prépare la machine virtuelle pour les instantanés: elle arrête les applications et les opérations d'écriture afin qu'après la récupération des instantanés, toutes les données soient cohérentes.

Microsoft a affirmé et prétend que les instantanés compatibles avec les applications sont parfaitement pris en charge par le système d'exploitation. En effet, un tel problème ne se produit pas dans Hyper-V. VMware a modestement invité ses utilisateurs à simplement désactiver la mise au repos (alors quoi, cet instantané ne sera pas cohérent au niveau de l'application). Ou refusez les disques système avec marquage GPT et émulation EFI (en 2020!). 

Aujourd'hui, je vais vous montrer comment contourner magnifiquement ce problème et obtenir des instantanés cohérents, compatibles avec les applications, des machines virtuelles Windows Server 2019, et en même temps, je vous rappellerai la méthode prise en charge par Microsoft pour installer Windows Server sur une machine virtuelle.

Qui est coupable?


Recommencer. Lors de la création d'une machine virtuelle sur VMware ESXi dans VM Options, l'émulation par défaut est l'émulation du BIOS. Et, bien qu'il n'y ait pas d'exigences particulières pour la sécurité ou la taille du disque système, un tel scénario est tout à fait approprié. Mais dès que nous devons configurer Secure Boot ou que le nombre de vCPU dépasse 128, nous devrons créer une machine virtuelle avec une émulation UEFI. Ne serait-ce que parce qu'il y a:

  • Secure Boot - protection contre le démarrage à partir de supports étrangers.
  • Prise en charge du chiffrement (nécessite la prise en charge du TPM, mais dans ESXi 6.7 le même problème).
  • Prise en charge des disques de plus de 2 To (douteux, mais cela arrive).
  • Prise en charge d'un grand nombre de processeurs.

Si vous installez Windows sur des machines virtuelles VMware, comme nous le faisions auparavant (créer des machines virtuelles, désactiver l'ISO, démarrer avec des poignées, suivant, suivant ...), puis lors du partitionnement GPT du disque système, la section Récupération apparaît à côté de la partition EFI et de la partition avec le système.

Nous rappelons le matériel:

partition de récupération - une partition protégée sur le disque dur du système, qui est utilisée pour restaurer les paramètres d'usine du système en cas de problèmes. Lorsque vous installez Windows Server sur un disque GPT, Recovery écrit l'environnement de récupération Windows (WinRE). En règle générale, les fabricants d'ordinateurs complètent cette section avec leurs paramètres et pilotes personnalisés adaptés à un matériel spécifique.

Arrêtez! 

Mais nous ne travaillons pas avec du matériel, mais avec une machine virtuelle. Aucun retour aux paramètres d'usine n'est requis. Au final, si vous souhaitez ramener la VM à son état d'origine, nous la redéployons simplement. Par conséquent, la partition de récupération sur la machine virtuelle n'a pas de sens et n'est pas particulièrement nécessaire.

La section Récupération est protégée contre toute modification et suppression accidentelle: elle "ne se fige pas". Par conséquent, un conflit survient entre le fournisseur de clichés VSS VMware et Microsoft Windows VSS: le fournisseur VMware essaie de prendre des clichés de toutes les partitions du disque et Windows Server ne lui permet pas de le faire. Cette bonne nouvelle nous est signalée par les journaux:



Que faire?


Il est traité simplement. Vous pouvez installer Windows sur une machine virtuelle à l'aide de l'applet de commande Convert Windows Image. En fait, un tel script d'installation est recommandé et pris en charge par Microsoft lui-même (ce script se trouve sur l'image Windows Server 2016 RTM dans le répertoire avec l'image Nano Server, mais c'est une histoire différente et non moins intéressante;)).

Le script créera automatiquement un modèle avec le serveur Windows mis à jour avec sysprep, les pilotes nécessaires et même les rôles. Cette approche est intéressante car l'installation et la configuration du système d'exploitation peuvent être automatisées, car le script prend en charge unattend.xml. De plus, cette option offre une liberté d'ingénierie: du pré-lancement d'une machine virtuelle sur Hyper-V avec l'installation via Invoke-Command à la création d'un service personnalisé en passant par la modification du registre. 

À la sortie, nous obtenons un disque VHD épais, que vous pouvez glisser VMware , démarrer la VM, mettre VMware Tools et convertir en un modèle. En conséquence, la machine virtuelle aura un balisage GPT à l'intérieur, adapté pour fonctionner sur une machine virtuelle EFI et sans section de récupération par conception. En bonus: dans mon exemple, je vais immédiatement créer un adaptateur paravirtuel pour offrir des performances. Et plus important encore - pour une telle machine virtuelle, un instantané orienté application peut être réalisé sans problème.

Maintenant, tout est détaillé par étapes.

Extraction de pilote


  1. Téléchargez l'image depuis le référentiel .
  2. Montez l'image.

  3. Exécutez cmd.exe et accédez à la racine de l'image montée
  4. Exécutez le programme d'installation avec les clés:
    setup64.exe /A /P <  >
  5. Dans la deuxième étape de l'assistant, nous répétons le chemin pour le déballage:

  6. Les pilotes sont ici: VMWToolsExtract \ VMware \ VMware Tools \ 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





L'installation prend jusqu'à 30 minutes.

Dans cet exemple, la sortie est un système d'exploitation entièrement préparé à l'état Sysprep, mais rien ne nous empêche d'utiliser Unattend.xml pour la personnalisation (les spécifications de personnalisation sont un peu perplexes lorsque vous voyez le modèle sysprep et que la machine virtuelle ne se développe pas).

En savoir plus sur les clés de ce merveilleux kmlet ici et dans Get-Help du kmlet lui-même.

Après cela, vous pouvez charger le disque sur ESXi, créer une machine virtuelle et installer VMware Tools. Et déployez des machines virtuelles sans vous soucier de la suspension des problèmes d'instantanés.

Mais que faire s'il existe déjà un modèle «défectueux»?


Il suffit de supprimer simplement la partition de récupération via diskpart.exe et de déplacer les partitions EFI et système pour la beauté du balisage (mais vous ne pouvez pas le faire). Est-il pris en charge? Sur une machine virtuelle - définitivement!

  1. Nous démarrons cmd.exe.
  2. Nous commençons diskpart.
  3. Obtenez la liste des disques:
    list disk
  4. Sélectionnez un disque:
    select disk n

    où n est le numéro de disque.
  5. Nous listons les sections:
    list partition
  6. Nous regardons le numéro de partition Recovery (n) et le sélectionnons:
    select partition n
  7. Retirez la protection de la section:
    gpt attributes=0x8000000000000000
  8. Supprimer:
    delete partition
  9. Profit!





La VM est prête pour les instantanés Quescing!

Au lieu d'une conclusion


Cette approche n'est qu'une des options pour déployer Windows Server et résoudre le problème KB60395 . Bien sûr, dans ce cas, nous pouvons créer un VDH léger, puis utiliser l' utilitaire quemu-img pour convertir un disque virtuel en une archive OVF, qu'ESXi comprend très bien. Un tel scénario est tout à fait approprié, par exemple, dans le cas où le disque virtuel doit être transféré sur le réseau. La compréhension de l'historique du problème et de la véritable nature du problème permet toujours de trouver une solution adaptée à une infrastructure particulière. L'implémentation technique est un champ d'expériences et de fantasmes intéressants, illimité.

All Articles