Windows Updates mit Vorwärts- und Umgekehrten Differentialen

Monatliche Windows-Qualitätsupdates sind kumulativ und enthalten alle zuvor veröffentlichten Fixes, um Konsistenz und Einfachheit zu gewährleisten. Für eine Betriebssystemplattform wie Windows, die mehrere Jahre lang unterstützt wird, kann die Größe der monatlichen Qualitätsupdates schnell groß werden, was sich direkt auf den Verbrauch der Netzwerkbandbreite auswirkt.

Heute wird dieses Problem mithilfe von Expressdownloads behoben, wobei differenzielle Downloads für jede geänderte Datei im Update basierend auf ausgewählten Verlaufsrevisionen plus der Basisversion generiert werden. In diesem Dokument stellen wir eine neue Technik zum Erstellen von kompakten Softwareupdatepaketen vor, die auf jede Revision der Basisversion anwendbar sind, und beschreiben dann, wie Windows-Qualitätsupdates dieses Verfahren verwenden.

Allgemeine Geschäftsbedingungen

Die folgenden allgemeinen Bedingungen gelten in diesem Dokument:

  • Basisversion: Ein Hauptsoftwarerelease mit erheblichen Änderungen, z. B. Windows 10, Version 1809 (Windows 10 Build 17763.1)
  • Revision: Nebenversionen zwischen den Hauptversionen, z. B. KB4464330 (Windows 10 Build 17763.55)
  • Baseless Patch Storage Files (Baseless PSF): Patchspeicherdateien, die vollständige Binärdateien oder Dateien enthalten

In diesem Dokument stellen wir eine neue Technik vor, mit der kompakte Softwareupdates erstellt werden können, die für jedes Ursprungs-/Zielrevisionspaar optimiert sind. Dazu wird das Differenzial einer geänderten Datei von der Basisversion und deren umgekehrtes Differenzial zurück zur Basisversion berechnet. Sowohl vorwärts- als auch umgekehrte Differenziale werden dann als Update gepackt und an die Endpunkte verteilt, auf denen die Software ausgeführt wird, um aktualisiert zu werden. Der Inhalt des Updatepakets kann wie folgt symbolisiert werden:

Symbolische Darstellung des Updatepaketinhalts. Ein Feld mit zwei Ausdrücken: delta sub zero transform to sub N, n gefolgt von delta sub N transformation to sub null.

Die Endpunkte mit der Basisversion der Datei (V0) hydratisieren die Zielrevision (VN), indem sie eine einfache Transformation anwenden:

Formel: V sub zero + delta sub zero transform to sub N = V sub n.

Die Endpunkte, die über revision N der Datei (VN) verfügen, hydratisieren die Zielrevision (VR), indem sie den folgenden Satz von Transformationen anwenden:

Gleichung 1: V sub n + delta sub n transformation to 0 = V sun 0; Gleichung 2: V sub zero + delta sub 0 transform to R = V sub R.

Die Endpunkte behalten die umgekehrten Differenzen für die Softwarerevision bei, auf der sie sich befinden, sodass sie zum Aktivieren und Anwenden des nächsten Revisionsupdates verwendet werden können.

Durch die Verwendung einer allgemeinen Baseline erzeugt dieses Verfahren ein einzelnes Updatepaket mit zahlreichen Vorteilen:

  • Kompakte Größe
  • Gilt für alle Baselines
  • Einfach zu erstellen
  • Effiziente Installation
  • Weitervertreibbare Komponente

In der Vergangenheit wurden Downloadgrößen von Windows-Qualitätsupdates (Windows 10, Version 1803 und ältere unterstützte Versionen von Windows 10) mithilfe von Expressdownload optimiert. Der Express-Download ist so optimiert, dass beim Aktualisieren von Windows-Systemen die Mindestanzahl von Bytes heruntergeladen wird. Dies wird erreicht, indem Differenzen für jede aktualisierte Datei basierend auf ausgewählten historischen Basisrevisionen derselben Datei und ihrer Basis- oder RTM-Version generiert werden.

Wenn z. B. das monatliche Qualitätsupdate vom Oktober Notepad.exe aktualisiert wurde, werden Differenzen für Notepad.exe Dateiänderungen von September zu Oktober, August bis Oktober, Juli bis Oktober, Juni bis Oktober und von der ursprünglichen Featureversion auf Oktober generiert. Alle diese Differenzen werden in einer Patch Storage-Datei (PSF, auch als Express-Downloaddateien bezeichnet) gespeichert und auf Windows Update oder anderen Updateverwaltungs- oder Verteilungsservern (z. B. Windows Server Update Services (WSUS) gehostet oder zwischengespeichert Microsoft Configuration Manager, oder ein Nicht-Microsoft-Updateverwaltungs- oder Verteilungsserver, der Expressupdates unterstützt). Ein Gerät, das Expressupdates anwendet, verwendet das Netzwerkprotokoll, um optimale Differenzen zu bestimmen, und lädt dann nur die benötigten Elemente von den Updateverteilungsendpunkten herunter.

Die Kehrseite des Expressdownloads ist, dass die Größe von PSF-Dateien groß sein kann, abhängig von der Anzahl der verlaufsbezogenen Baselines, anhand derer Differenzen berechnet wurden. Das Herunterladen und Zwischenspeichern großer PSF-Dateien auf lokale oder Remote-Updateverteilungsserver ist für die meisten Organisationen problematisch, daher können sie keine Expressupdates verwenden, um ihre Geräteflotte mit Windows auf dem neuesten Stand zu halten. Zweitens ist es aufgrund der Komplexität der Generierung von Differenzen und der Größe der Expressdateien, die auf Updateverteilungsservern zwischengespeichert werden müssen, nur möglich, Expressdownloaddateien für die gängigsten Baselines zu generieren, sodass Expressupdates nur auf ausgewählte Baselines anwendbar sind. Schließlich ist die Berechnung optimaler Differenzen in Bezug auf die Systemspeicherauslastung teuer, insbesondere bei kostengünstigen Systemen, was sich auf deren Fähigkeit auswirkt, ein Update nahtlos herunterzuladen und anzuwenden.

In den folgenden Abschnitten wird beschrieben, wie Qualitätsupdates diese Technik basierend auf Vorwärts- und Umgekehrtdifferenzialen für neuere Versionen von Windows und Windows Server verwenden, um die Herausforderungen mit Expressdownloads zu bewältigen.

Allgemeines Design

Paketerstellung aktualisieren

Windows-Qualitätsupdatepakete enthalten Weiterleitungsdifferenzen von RTM-Baselines für Qualitätsupdates (∆RTM→N) und umgekehrte Differenzen zurück zu RTM (∆N→RTM) für jede Datei, die sich seit RTM geändert hat. Durch die Verwendung der RTM-Version als Baseline stellen wir sicher, dass alle Geräte über eine identische Nutzlast verfügen. Updatepaketmetadaten, Inhaltsmanifeste sowie Vorwärts- und Umgekehrte Differenziale werden in eine Cabinet-Datei (.cab) gepackt. Diese .cab-Datei und die Anwendbarkeitslogik werden ebenfalls im Microsoft Standalone Update-Format (.msu) umschlossen.

Es kann vorkommen, dass dem System während der Wartung neue Dateien hinzugefügt werden. Diese Dateien verfügen nicht über RTM-Baselines, sodass vorwärts- und umgekehrte Differenziale nicht verwendet werden können. In diesen Szenarien werden NULL-Differentiale verwendet, um die Wartung zu verarbeiten. NULL-Differentiale sind die leicht komprimierte und optimierte Version der vollständigen Binärdateien. Updatepakete können entweder vorwärts- oder umgekehrte Differenziale oder NULL-Differenziale einer bestimmten Binärdatei aufweisen. Die folgende Abbildung symbolisiert den Inhalt eines Windows-Qualitätsupdate-Installers:

Äußeres Feld mit der Bezeichnung .msu mit zwei Unterfeldern: 1) Anwendbarkeitslogik, 2) Feld mit bezeichnung .cab mit vier Unterfeldern: 1) Metadaten aktualisieren, 2) Inhaltsmanifeste, 3) Delta-Sub-RTM-Transformation in Sub N (Datei 1, Datei2 usw.) und 4) Delta-Sub-N-Transformation in RTM (Datei 1, Datei 2 usw.).

Hydratation und Installation

Sobald die üblichen Anwendbarkeitsprüfungen für das Updatepaket durchgeführt und als anwendbar festgestellt wurden, aktiviert die Wartungsinfrastruktur der Windows-Komponente die vollständigen Dateien während der Vorinstallation und fährt dann mit dem üblichen Installationsprozess fort.

Im Folgenden finden Sie eine allgemeine Abfolge von Aktivitäten, die die Komponentenwartungsinfrastruktur in einer Transaktion ausführt, um die Installation des Updates abzuschließen:

  • Identifizieren Sie alle Dateien, die zum Installieren des Updates erforderlich sind.
  • Aktualisieren Sie jede der erforderlichen Dateien mithilfe der aktuellen Version (VN) der Datei, reverse differential (VN--->RTM) der Datei zurück zum Qualitätsupdate RTM/Basisversion und vorwärts differential (VRTM--->R) vom Featureupdate RTM/Basisversion zur Zielversion. Verwenden Sie außerdem die differenzielle Hydratation NULL, um komprimierte NULL-Dateien zu hydratisieren.
  • Stufen Sie die aktivierten Dateien (vollständige Datei), Vorwärtsdifferentiale (unter f Ordner) und umgekehrte Differenziale (unter r Ordner) oder NULL-komprimierte Dateien (unter n Ordner) im Komponentenspeicher (%windir%\WinSxS-Ordner) inszenieren.
  • Lösen Sie alle Abhängigkeiten auf, und installieren Sie Komponenten.
  • Bereinigen des älteren Zustands (VN-1); Der vorherige Zustand VN wird für die Deinstallation und Wiederherstellung oder Reparatur beibehalten.

Widerstandsfähige Hydratation

Um resilienz gegen Beschädigungen von Komponentenspeichern oder fehlende Dateien zu gewährleisten, die aufgrund der Anfälligkeit bestimmter Hardwaretypen für Dateisystembeschädigungen auftreten können, wurde traditionell ein Reparaturdienst für Beschädigungen verwendet, um den Komponentenspeicher automatisch (automatische Beschädigungsreparatur) oder bei Bedarf (manuelle Beschädigungsreparatur) mithilfe einer Online- oder lokalen Reparaturquelle wiederherzustellen. Dieser Dienst bietet weiterhin die Möglichkeit, Inhalte für die Flüssigkeitszufuhr zu reparieren und wiederherzustellen und bei Bedarf erfolgreich ein Update zu installieren.

Wenn bei Updatevorgängen eine Beschädigung erkannt wird, wird die automatische Beschädigungsreparatur wie gewohnt gestartet und verwendet die baseless Patch Storage-Datei, die in Windows Update für jedes Update veröffentlicht wurde, um beschädigte Manifeste, binäre Differenzen oder aktivierte oder vollständige Dateien zu beheben. Basislose Patchspeicherdateien enthalten reverse- und forward-Differenziale sowie vollständige Dateien für jede aktualisierte Komponente. Die Integrität der Reparaturdateien wird hashgeprüft.

Bei der Beschädigungsreparatur wird das Komponentenmanifest verwendet, um fehlende Dateien zu erkennen und Hashes für die Beschädigungserkennung abzurufen. Während der Updateinstallation werden neue Registrierungsflags für jede differenzielle Stufe auf dem Computer festgelegt. Wenn die automatische Beschädigungsreparatur ausgeführt wird, werden aktivierte Dateien mithilfe des Manifests und differenzieller Dateien mithilfe der Flags überprüft. Wenn das Differenzial nicht gefunden oder überprüft werden kann, wird es der Liste der zu reparierenden Beschädigungen hinzugefügt.

Verzögerte automatische Beschädigungsreparatur

"Verzögerte automatische Beschädigungsreparatur" wird während Updatevorgängen ausgeführt, um beschädigte Binärdateien und Differenziale zu erkennen. Wenn beim Anwenden eines Updates ein Fehler bei der Hydratation einer Datei auftritt, wird automatisch die automatische Beschädigungsreparatur "verzögert" gestartet, identifiziert die beschädigte Binär- oder differenzielle Datei und fügt sie dann der Liste der Beschädigungen hinzu. Später wird der Aktualisierungsvorgang so weit wie möglich fortgesetzt, sodass eine "verzögerte" automatische Beschädigungsreparatur so viele beschädigte Dateien wie möglich sammeln kann, um sie zu beheben. Am Ende des Abschnitts "Hydration" schlägt das Update fehl, und die automatische Reparatur von Beschädigungen wird gestartet. Die automatische Beschädigungsreparatur wird wie gewohnt ausgeführt und fügt am Ende des Vorgangs die von der "verzögerten" automatischen Beschädigungsreparatur generierte Korruptionsliste oben auf der neuen Liste hinzu, die repariert werden soll. Automatische Beschädigungsreparatur repariert dann die Dateien in der Liste der Beschädigungen und die Installation des Updates wird beim nächsten Versuch erfolgreich sein.