Forward と reverse の差を使用した Windows の更新プログラムWindows Updates using forward and reverse differentials

Windows 10 の月間品質更新プログラムは累積的で、一貫性と簡素化性を確保するために、以前にリリースされたすべての修正プログラムが含まれています。Windows 10 monthly quality updates are cumulative, containing all previously released fixes to ensure consistency and simplicity. Windows 10 などのオペレーティングシステムプラットフォームでは、複数の年でサポートされていますが、毎月の品質更新プログラムのサイズが急速に大きくなり、ネットワーク帯域幅の消費が直接影響を受けることがあります。For an operating system platform like Windows 10, which stays in support for multiple years, the size of monthly quality updates can quickly grow large, thus directly impacting network bandwidth consumption.

現在、この問題に対処するには、高速ダウンロードを使用します。この問題は、更新されたすべてのファイルの差分ダウンロードが、選択した履歴のリビジョンと基本バージョンに基づいて生成されます。Today, this problem is addressed by using express downloads, where differential downloads for every changed file in the update are generated based on selected historical revisions plus the base version. このドキュメントでは、基本バージョンの任意のリビジョンに適用できるコンパクトなソフトウェア更新プログラムパッケージをビルドするための新しい手法を紹介し、Windows 10 品質更新プログラムがこの手法をどのように使用するかについて説明します。In this paper, we introduce a new technique to build compact software update packages that are applicable to any revision of the base version, and then describe how Windows 10 quality updates uses this technique.

一般的な用語General Terms

このドキュメント全体に適用される一般的な用語は、次のとおりです。The following general terms apply throughout this document:

  • 基本バージョン: windows 10、バージョン 1809 (Windows 10 ビルド 17763.1) などの大幅な変更を加えた主要なソフトウェアリリースBase version: A major software release with significant changes, such as Windows 10, version 1809 (Windows 10 Build 17763.1)
  • リビジョン: KB4464330 などのメジャーバージョンリリースとのマイナーリリース (Windows 10 ビルド 17763.55)Revision: Minor releases in between the major version releases, such as KB4464330 (Windows 10 Build 17763.55)
  • ベースレスの修正プログラム記憶域ファイル (ベースレス PSF): 完全なバイナリまたはファイルを含むパッチストレージファイルBaseless Patch Storage Files (Baseless PSF): Patch storage files that contain full binaries or files

このドキュメントでは、元のリビジョンと移行先のリビジョンのペアに合わせて最適化されたコンパクトなソフトウェア更新プログラムを生成できる新しい手法を紹介します。In this paper, we introduce a new technique that can produce compact software updates optimized for any origin/destination revision pair. これは、変更されたファイルの差分を基本バージョンから転送し、その逆の差分を基本バージョンに戻すことで行われます。It does this by calculating forward the differential of a changed file from the base version and its reverse differential back to the base version. 次に、forward と reverse の両方の差が更新としてパッケージ化され、ソフトウェアを実行しているエンドポイントに配布されます。Both forward and reverse differentials are then packaged as an update and distributed to the endpoints running the software to be updated. 更新パッケージのコンテンツは、次のようにすることができます。The update package contents can be symbolized as follows:

更新パッケージコンテンツのシンボル表現。

ファイルのベースバージョン (V 0) を持つエンドポイントは、 単純な変換を適用することにより、ターゲットリビジョン (v N) を hydrate します。The endpoints that have the base version of the file (V0) hydrate the target revision (VN) by applying a simple transformation:

数式: V sub 0 + < sub N = V sub n への値の変換

ファイルのリビジョン N を持つエンドポイント (V N ) では、次の 変換セットを適用することによってターゲットリビジョン (v R) を hydrate します。The endpoints that have revision N of the file (VN), hydrate the target revision (VR) by applying the following set of transformations:

数式 1: V sub n + 差分サブ変換 0 = V 太陽0数式 2: V sub 0 + delta sub 0 変換 (R = V サブ R)

エンドポイントは、差がオンになっているソフトウェアリビジョンのリバースを保持するため、hydrating に使用し、次のリビジョン更新プログラムを適用することができます。The endpoints retain the reverse differentials for the software revision they are on, so that it can be used for hydrating and applying next revision update.

一般的なベースラインを使用すると、この手法では、次のように多くの利点を備えた1つの更新パッケージが生成されます。By using a common baseline, this technique produces a single update package with numerous advantages:

  • コンパクトなサイズCompact in size
  • すべての基準計画に適用されるApplicable to all baselines
  • 簡単に構築Simple to build
  • インストールの効率化Efficient to install
  • Redistributable

従来、Windows 10 の品質更新プログラム (Windows 10、バージョン1803、および従来サポートされているバージョンの Windows 10) のダウンロードサイズは、エクスプレスダウンロードを使用して最適化されています。Historically, download sizes of Windows 10 quality updates (Windows 10, version 1803 and older supported versions of Windows 10) are optimized by using express download. 簡易ダウンロードは最適化されているため、Windows 10 システムを更新すると、最小バイト数がダウンロードされます。Express download is optimized such that updating Windows 10 systems will download the minimum number of bytes. これを実現するには、同じファイルと基本バージョンまたは RTM バージョンの選択された履歴ベースのリビジョンに基づいて、更新されたすべてのファイルに対して差を生成します。This is achieved by generating differentials for every updated file based on selected historical base revisions of the same file + its base or RTM version.

たとえば、10月の品質更新プログラムが Notepad.exe 更新されている場合、Notepad.exe ファイルの差は9月から10月、7月から10月、7月から10月、元の機能リリースから10月まで変更されます。For example, if the October monthly quality update has updated Notepad.exe, differentials for Notepad.exe file changes from September to October, August to October, July to October, June to October, and from the original feature release to October are generated. これらの差はすべて、パッチストレージファイル (PSF) に保存され、Windows Update またはその他の更新管理または配布サーバー (たとえば、Windows Server Update Services (WSUS)、Microsoft Endpoint Configuration Manager、またはエクスプレス更新をサポートする Microsoft 以外の更新プログラム管理または配布サーバー) に格納されます。All these differentials are stored in a Patch Storage File (PSF, also referred to as “express download files”) and hosted or cached on Windows Update or other update management or distribution servers (for example, Windows Server Update Services (WSUS), Microsoft Endpoint Configuration Manager, or a non-Microsoft update management or distribution server that supports express updates). エクスプレス更新プログラムを利用するデバイスでは、ネットワークプロトコルを使用して最適な差を特定し、更新プログラム配布エンドポイントから必要なものだけをダウンロードします。A device leveraging express updates uses network protocol to determine optimal differentials, then downloads only what is needed from the update distribution endpoints.

高速ダウンロードの反対側は、差が計算された過去のベースラインの数に応じて、PSF ファイルのサイズが大きくなる可能性があることを示しています。The flip side of express download is that the size of PSF files can be very large depending on the number of historical baselines against which differentials were calculated. 大規模な PSF ファイルをオンプレミスまたはリモート更新の配布サーバーにダウンロードしてキャッシュすることは、ほとんどの組織で問題を発生させるため、高速更新を利用して、Windows 10 を実行しているデバイスを最新の状態に保つことはできません。Downloading and caching large PSF files to on-premises or remote update distribution servers is problematic for most organizations, hence they are unable to leverage express updates to keep their fleet of devices running Windows 10 up to date. 第2の理由として、更新配布サーバーにキャッシュする必要がある簡易ファイルの差とサイズの生成が複雑になるため、最も一般的なベースラインの高速ダウンロードファイルを生成することのみが可能であるため、指定したベースラインにのみ適用されます。Secondly, due to the complexity of generating differentials and size of the express files that need to be cached on update distribution servers, it is only feasible to generate express download files for the most common baselines, thus express updates are only applicable to selected baselines. 最後に、最適な差の計算は、システムメモリ使用量の観点から高くなります。特に低コストのシステムでは、更新プログラムのダウンロードと適用がシームレスに機能します。Finally, calculation of optimal differentials is expensive in terms of system memory utilization, especially for low-cost systems, impacting their ability to download and apply an update seamlessly.

以下のセクションでは、windows 10 と Windows Server の新しいリリースのフォワードおよびリバース差に基づいて、Windows 10 品質更新プログラムがこの手法をどのように活用するかについて説明します。In the following sections, we describe how Windows 10 quality updates will leverage this technique based on forward and reverse differentials for newer releases of Windows 10 and Windows Server to overcome the challenges with express downloads.

高レベルのデザインHigh-level Design

パッケージの更新Update packaging

Windows 10 品質更新プログラムパッケージには、RTM 以降に変更された各ファイルについて、差 forward (∆ RTM → N) と、差 back (∆ N > RTM) への逆の転送が含まれています。Windows 10 quality update packages will contain forward differentials from quality update RTM baselines (∆RTM→N) and reverse differentials back to RTM (∆N→RTM) for each file that has changed since RTM. RTM 版をベースラインとして使用することで、すべてのデバイスのペイロードが同じであることが保証されます。By using the RTM version as the baseline, we ensure that all devices will have an identical payload. 更新パッケージのメタデータ、コンテンツマニフェスト、および forward/reverse 差はキャビネットファイル (.cab) にパッケージ化されます。Update package metadata, content manifests, and forward and reverse differentials will be packaged into a cabinet file (.cab). この .cab ファイルと適用ロジックは、Microsoft 単体更新 (.msu) 形式でもラップされます。This .cab file, and the applicability logic, will also be wrapped in Microsoft Standalone Update (.msu) format.

サービスの実行中に新しいファイルがシステムに追加される場合もあります。There can be cases where new files are added to the system during servicing. これらのファイルは RTM ベースラインを持たないため、forward と reverse 差は使用できません。These files will not have RTM baselines, thus forward and reverse differentials cannot be used. これらのシナリオでは、差を使用してサービスを処理します。In these scenarios, null differentials will be used to handle servicing. Null 差は、完全なバイナリの圧縮された、最適化されたバージョンです。Null differentials are the slightly compressed and optimized version of the full binaries. 更新パッケージには、差の forward または reverse のいずれか、またはその2つのバイナリの null 差分を含めることができます。Update packages can have either forward or reverse differentials, or null differential of any given binary in them. 次の画像は、Windows 10 品質更新プログラムのインストーラーの内容を示しています。The following image symbolizes the content of a Windows 10 quality update installer:

2つのサブボックスを含む .msu というラベルの付いた外部ボックス: 1) 1 つのサブボックスを含む .cab というラベルの付いたキャビネット、2) コンテンツマニフェスト、3) delta sub RTM トランスフォーム (ファイル1、file2 など)、3) [RTM] (ファイル1、[ファイル 2] など))

Hydration とインストールHydration and installation

更新パッケージで通常の適用対象のチェックが実行され、適用可能であると判断されると、Windows コンポーネントのサービスインフラストラクチャは、プレインストール中に完全なファイルを hydrate して、通常のインストールプロセスに進みます。Once the usual applicability checks are performed on the update package and are determined to be applicable, the Windows component servicing infrastructure will hydrate the full files during pre-installation and then proceed with the usual installation process.

次に示すのは、更新プログラムのインストールを完了するために、コンポーネントのサービスインフラストラクチャがトランザクションで実行する、高レベルのアクティビティのシーケンスです。Below is a high-level sequence of activities that the component servicing infrastructure will run in a transaction to complete installation of the update:

  • 更新プログラムのインストールに必要なすべてのファイルを特定します。Identify all files that are required to install the update.
  • ファイルの現在のバージョン (V n >---) を使用して、ファイル の品質更新プログラム rtm/基本バージョンとフォワード差分 (v rtm--->R) を使用して、必要なファイルを Hydrate して、 機能更新プログラムの rtm/基本バージョンからターゲットバージョンに戻します。Hydrate each of necessary files using current version (VN) of the file, reverse differential (VN--->RTM) of the file back to quality update RTM/base version and forward differential (VRTM--->R) from feature update RTM/base version to the target version. また、null のディファレンシャル hydration を使って、null 圧縮ファイルを hydrate します。Also, use null differential hydration to hydrate null compressed files.
  • Hydrated ファイル (完全なファイル) をステージングし、差 (' f ' フォルダーの下) に移動します。また、(' r ' フォルダーの下にある) 差を逆にします。Stage the hydrated files (full file), forward differentials (under ‘f’ folder) and reverse differentials (under ‘r’ folder) or null compressed files (under ‘n’ folder) in the component store (%windir%\WinSxS folder).
  • 依存関係を解決し、コンポーネントをインストールします。Resolve any dependencies and install components.
  • 以前の状態をクリーンアップする (V n-1 )、以前の状態の v n は、アンインストールと復元、修復のために保持されます。Clean up older state (VN-1); the previous state VN is retained for uninstallation and restoration or repair.

弾性 HydrationResilient Hydration

特定の種類のハードウェアがファイルシステムの破損によって発生する可能性があることが原因で発生する可能性がある、コンポーネントストアの破損または失われたファイルに対する回復性を確保するために、オンラインまたはローカルの修復ソースを使用して、正常に機能していないコンポーネントストアの回復 ("自動破損修復") またはTo ensure resiliency against component store corruption or missing files that could occur due to susceptibility of certain types of hardware to file system corruption, a corruption repair service has been traditionally used to recover the component store automatically (“automatic corruption repair”) or on demand (“manual corruption repair”) using an online or local repair source. このサービスには、hydration のコンテンツを修復して復元する機能と、必要に応じて更新プログラムが正常にインストールされます。This service will continue to offer the ability to repair and recover content for hydration and successfully install an update, if needed.

更新操作中に破損が検出されると、通常どおり自動で破損の修復が開始され、破損したマニフェスト、バイナリ差、または hydrated または完全なファイルを修正するために、更新プログラムごとに、Windows Update に公開されたベースレスの修正プログラムストレージファイルが使用されます。When corruption is detected during update operations, automatic corruption repair will start as usual and use the Baseless Patch Storage File published to Windows Update for each update to fix corrupted manifests, binary differentials, or hydrated or full files. ベースレスの修正プログラム記憶域のファイルには、更新された各コンポーネントの差と forward の完全なファイルが含まれます。Baseless patch storage files will contain reverse and forward differentials and full files for each updated component. 修復ファイルの整合性はハッシュで確認されます。Integrity of the repair files will be hash verified.

破損修復では、コンポーネントマニフェストを使って、不足しているファイルを検出し、破損検出用のハッシュを取得します。Corruption repair will use the component manifest to detect missing files and get hashes for corruption detection. 更新プログラムのインストール中に、コンピューター上の各差分の新しいレジストリフラグが設定されます。During update installation, new registry flags for each differential staged on the machine will be set. 自動破損修復を実行すると、フラグを使ってマニフェストファイルと差分ファイルを使って hydrated ファイルをスキャンします。When automatic corruption repair runs, it will scan hydrated files using the manifest and differential files using the flags. 差分が見つからないか、確認できない場合は、修復する破損の一覧に追加されます。If the differential cannot be found or verified, it will be added to the list of corruptions to repair.

自動破損修復の遅延Lazy automatic corruption repair

"遅延自動破損修復" は、破損したバイナリと差を検出するために更新操作中に実行されます。“Lazy automatic corruption repair” runs during update operations to detect corrupted binaries and differentials. 更新プログラムを適用しているときに、ファイルの hydration に失敗した場合、"遅延" 自動破損修復は自動的に開始され、破損したバイナリまたは差分ファイルが特定され、破損リストに追加されます。While applying an update, if hydration of any file fails, "lazy" automatic corruption repair automatically starts, identifies the corrupted binary or differential file, and then adds it to the corruption list. 後では、更新操作は可能な限り継続して実行されるため、"遅延" 自動破損修復では、できるだけ多くの破損ファイルを収集することができます。Later, the update operation continues as far as it can go, so that "lazy" automatic corruption repair can collect as many corrupted files to fix as possible. Hydration セクションの最後に、更新が失敗し、自動の破損修復が開始されます。At the end of the hydration section, the update fails, and automatic corruption repair starts. 自動破損修復は、通常どおりに実行され、操作が終了すると、新しいリストの上に "レイジー" 自動破損修復によって生成された破損リストが追加されます。Automatic corruption repair runs as usual and at the end of its operation, adds the corruption list generated by "lazy" automatic corruption repair on top of the new list to repair. 自動破損修復によって、破損リストのファイルが修復され、更新プログラムのインストールは次の試みで成功します。Automatic corruption repair then repairs the files on the corruption list and installation of the update will succeed on the next attempt.