Windows Server 2019 vs. VMware-Snapshots mit Ruhezustand: eine elegante Lösung für das Problem



Hallo Habr!

Virtuelle Windows Server 2019-Maschinen mit EFI-Emulation unter VMware haben ein Problem mit anwendungsbewussten Snapshots. Es sieht so aus: Ein Snapshot wird erstellt, erreicht 100%, bleibt etwa 5 Minuten lang hängen und fällt dann in den Fehler Fehler beim Stilllegen der virtuellen Maschine.
 


Die Untersuchung ergab, dass die Ursache für diesen Fehler ein Konflikt zwischen dem Windows Server 2019 VSS-Dienst und dem VMware Snapshot Provider war, der für die Stilllegung von Anwendungen verantwortlich ist. Dieses Ding bereitet die virtuelle Maschine auf Snapshots vor: Es stoppt Anwendungen und Schreibvorgänge, sodass nach der Wiederherstellung von Snapshots alle Daten konsistent sind.

Microsoft hat behauptet und behauptet, dass anwendungsbewusste Snapshots vom Betriebssystem perfekt unterstützt werden. In der Tat tritt ein solches Problem in Hyper-V nicht auf. VMware forderte seine Benutzer bescheiden auf, die Stilllegung einfach zu deaktivieren (also, dieser Snapshot ist auf Anwendungsebene nicht konsistent). Oder lehnen Sie Systemfestplatten mit GPT-Kennzeichnung und EFI-Emulation ab (im Jahr 2020!). 

Heute zeige ich Ihnen, wie Sie dieses Problem auf wundervolle Weise umgehen und konsistente anwendungsbezogene Snapshots von virtuellen Windows Server 2019-Maschinen erhalten. Gleichzeitig erinnere ich Sie an die von Microsoft unterstützte Methode zur Installation von Windows Server auf einer virtuellen Maschine.

Wer ist schuldig?


Von vorn anfangen. Beim Erstellen einer virtuellen Maschine unter VMware ESXi in den VM-Optionen ist die Standardemulation die BIOS-Emulation. Obwohl es keine besonderen Anforderungen an die Sicherheit oder die Größe der Systemfestplatte gibt, ist ein solches Szenario durchaus angemessen. Sobald wir jedoch Secure Boot konfigurieren müssen oder die Anzahl der vCPUs 128 überschreitet, müssen wir eine VM mit UEFI-Emulation erstellen. Wenn nur, weil es gibt:

  • Secure Boot - Schutz gegen das Booten von fremden Medien.
  • Verschlüsselungsunterstützung (erfordert TPM-Unterstützung, aber in ESXi 6.7 das gleiche Problem).
  • Unterstützung für Laufwerke über 2 TB (zweifelhaft, aber es passiert).
  • Unterstützung für eine große Anzahl von Prozessoren.

Wenn Sie Windows wie bisher auf VMware-VMs installieren (VMs erstellen, ISO deaktivieren, mit Handles booten, next, next ...), wird beim GPT-Partitionieren der Systemfestplatte der Abschnitt Wiederherstellung neben der EFI-Partition und der Partition mit dem System angezeigt.

Wir erinnern uns an das Material:

Wiederherstellungspartition - eine geschützte Partition auf der Systemfestplatte, mit der bei Problemen die Werkseinstellungen des Systems wiederhergestellt werden. Wenn Sie Windows Server auf einer GPT-Festplatte installieren, schreibt Recovery die Windows-Wiederherstellungsumgebung (WinRE). Computerhersteller ergänzen diesen Abschnitt in der Regel mit ihren benutzerdefinierten Einstellungen und Treibern, die auf eine bestimmte Hardware zugeschnitten sind.

Halt! 

Wir arbeiten jedoch nicht mit Hardware, sondern mit einer virtuellen Maschine. Es sind keine Rollbacks auf Werkseinstellungen erforderlich. Wenn Sie die VM am Ende in ihren ursprünglichen Zustand zurückversetzen möchten, stellen wir sie einfach erneut bereit. Daher ist die Wiederherstellungspartition auf der VM nicht sinnvoll und wird nicht besonders benötigt.

Der Wiederherstellungsabschnitt ist vor Änderungen und versehentlichem Löschen geschützt: Er friert nicht ein. Infolgedessen tritt ein Konflikt zwischen dem VSS VMware-Snapshot-Anbieter und Microsoft Windows VSS auf: Der VMware-Anbieter versucht, alle Partitionen der Festplatte als Snapshot zu erstellen, und Windows Server lässt dies nicht zu. Diese gute Nachricht wird uns in den Protokollen gemeldet:



Was zu tun ist?


Es wird einfach behandelt. Sie können Windows mit dem Cmdlet " Windows-Image konvertieren" auf einer VM installieren . Tatsächlich wird ein solches Installationsskript von Microsoft selbst empfohlen und unterstützt (dieses Skript befindet sich auf dem Windows Server 2016 RTM-Image im Verzeichnis mit dem Nano Server-Image, dies ist jedoch eine andere und nicht weniger interessante Geschichte;)).

Das Skript erstellt automatisch eine Vorlage mit dem aktualisierten sysprepped Windows Server, den erforderlichen Treibern und sogar Rollen. Dieser Ansatz ist interessant, da die Installation und Konfiguration des Betriebssystems automatisiert werden kann, da das Skript unattend.xml unterstützt. Darüber hinaus bietet diese Option Freiheit für das Engineering: vom Vorstart einer VM unter Hyper-V mit Installation über Invoke-Command bis zur Erstellung eines benutzerdefinierten Dienstes durch Bearbeiten der Registrierung. 

Bei der Ausgabe erhalten wir eine dicke VHD-Festplatte, auf die Sie VMware verschieben , die VM starten, VMware Tools einfügen und in eine Vorlage konvertieren können. Infolgedessen verfügt die VM über ein GPT-Markup, das für die Ausführung auf einer EFI-VM und ohne Wiederherstellungsabschnitt geeignet ist. Als Bonus: In meinem Beispiel werde ich sofort einen paravirtuellen Adapter erstellen, um Leistung zu erzielen. Und vor allem: Für eine solche virtuelle Maschine kann ein anwendungsbezogener Snapshot problemlos erstellt werden.

Jetzt wird alles in Schritten detailliert.

Treiberextraktion


  1. Laden Sie das Bild aus dem Repository herunter .
  2. Montiere das Bild.

  3. Führen Sie cmd.exe aus und gehen Sie zum Stammverzeichnis des bereitgestellten Images
  4. Führen Sie das Installationsprogramm mit den Schlüsseln aus:
    setup64.exe /A /P <  >
  5. Im zweiten Schritt des Assistenten wiederholen wir den Pfad zum Entpacken:

  6. Die Treiber sind hier: 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





Die Installation dauert bis zu 30 Minuten.

In diesem Beispiel ist die Ausgabe ein vollständig vorbereitetes Betriebssystem im Status "Sysprepped", aber nichts hindert uns daran, Unattend.xml für die Anpassung zu verwenden (Anpassungsspezifikationen sind etwas verwirrt, wenn Sie die Sysprep-Vorlage sehen und die VM nicht erweitert wird).

Lesen Sie hier und in Get-Help des kmlets selbst mehr über die Schlüssel dieses wunderbaren kmlets .

Danach können Sie die Festplatte auf ESXi laden, eine VM erstellen und VMware Tools installieren. Stellen Sie virtuelle Maschinen bereit, ohne sich Gedanken über Probleme mit Snapshots machen zu müssen.

Was aber, wenn bereits eine „defekte“ Vorlage vorhanden ist?


Es reicht aus, die Wiederherstellungspartition einfach über diskpart.exe zu löschen und die EFI- und Systempartitionen zu verschieben, um das Markup zu verbessern (dies ist jedoch nicht möglich). Wird es unterstützt? Auf einer virtuellen Maschine - definitiv!

  1. Wir starten cmd.exe.
  2. Wir starten diskpart.
  3. Holen Sie sich die Liste der Laufwerke:
    list disk
  4. Wählen Sie eine Festplatte aus:
    select disk n

    Dabei ist n die Plattennummer.
  5. Wir listen die Abschnitte auf:
    list partition
  6. Wir sehen uns die Wiederherstellungspartitionsnummer (n) an und wählen sie aus:
    select partition n
  7. Entfernen Sie den Schutz aus dem Abschnitt:
    gpt attributes=0x8000000000000000
  8. Löschen:
    delete partition
  9. Profitieren!





VM ist bereit für die Abfrage von Snapshots!

Anstelle einer Schlussfolgerung


Dieser Ansatz ist nur eine der Optionen zum Bereitstellen von Windows Server und zum Lösen des KB60395- Problems . In diesem Fall können wir natürlich Thin VDH erstellen und dann das Dienstprogramm quemu-img verwenden, um die virtuelle Festplatte in das OVF-Archiv zu konvertieren, das ESXi sehr gut versteht. Ein solches Szenario ist beispielsweise dann angemessen, wenn die virtuelle Festplatte über das Netzwerk übertragen werden muss. Das Verständnis der Problemgeschichte und der wahren Natur des Problems ermöglicht es immer, eine für eine bestimmte Infrastruktur geeignete Lösung zu finden. Die technische Umsetzung ist ein unbegrenztes Feld für interessante Experimente und Fantasien.

All Articles