Windows Обновления с использованием прямого и обратного дифференциалов

Ежемесячные обновления качества Windows являются накопительными и содержат все ранее выпущенные исправления для обеспечения согласованности и простоты. Для платформы операционной системы, такой как Windows, которая поддерживается в течение нескольких лет, размер ежемесячных обновлений качества может быстро увеличиться, что напрямую влияет на потребление пропускной способности сети.

Сегодня эта проблема решается с помощью экспресс-загрузки, где разностные загрузки для каждого измененного файла в обновлении создаются на основе выбранных исторических редакций, а также базовой версии. В этом документе мы представляем новую методику создания компактных пакетов обновлений программного обеспечения, применимых к любой редакции базовой версии, а затем описываем, как обновления качества Windows используют этот метод.

Общие условия

В этом документе применяются следующие общие термины:

  • Базовая версия: основной выпуск программного обеспечения со значительными изменениями, например Windows 10, версия 1809 (Windows 10 сборка 17763.1).
  • Редакция: незначительные выпуски между основными версиями, например KB4464330 (Windows 10 сборка 17763.55)
  • Файлы хранилища базовых исправлений (небазовый PSF): файлы хранилища исправлений, содержащие полные двоичные файлы или файлы

В этом документе мы представляем новую методику, которая позволяет создавать компактные обновления программного обеспечения, оптимизированные для любой пары редакций источника и назначения. Это делается путем вычисления переадресации разностного измененного файла из базовой версии и обратного разностного файла обратно в базовую версию. Затем как прямая, так и обратная дифференциальные системы упаковываются в виде обновления и распространяются на конечные точки, на которых выполняется обновление программного обеспечения. Содержимое пакета обновления можно обозначить следующим образом:

Символическое представление содержимого пакета обновления. Поле с двумя выражениями: преобразование delta sub zero в sub N, за которым следует преобразование delta sub N в sub zero.

Конечные точки с базовой версией файла (V0) гидратировали целевую редакцию (VN), применяя простое преобразование:

Уравнение: V sub zero + delta sub zero преобразование в sub N = V sub n.

Конечные точки, имеющие редакцию N файла (VN), гидратировали целевую редакцию (VR), применяя следующий набор преобразований:

Уравнение 1: V sub n + delta sub n преобразование в 0 = V sun 0; Уравнение 2: V sub zero + delta sub 0 преобразование в R = V sub R.

Конечные точки сохраняют обратные различия для редакции программного обеспечения, в которую они включены, чтобы их можно было использовать для гидрирования и применения следующего обновления редакции.

Используя общий базовый план, этот метод создает один пакет обновления с многочисленными преимуществами:

  • Компактный размер
  • Применимо ко всем базовым показателям
  • Простота сборки
  • Эффективная установка
  • Распространяемого

Исторически размеры обновлений качества Windows (Windows 10 версии 1803 и более ранних поддерживаемых версий Windows 10) были оптимизированы с помощью экспресс-скачивания. Экспресс-скачивание оптимизировано таким образом, что обновление систем Windows скачивает минимальное количество байтов. Это достигается путем создания разностных изменений для каждого обновленного файла на основе выбранных исторических базовых редакций того же файла и его базовой или RTM-версии.

Например, если ежемесячное обновление качества за октябрь обновило Notepad.exe, создаются различия для Notepad.exe изменения файлов с сентября по октябрь, с августа по октябрь, с июля по октябрь, с июня по октябрь и с первоначального выпуска функции до октября. Все эти различия хранятся в файле хранилища исправлений (PSF, также называемом файлами экспресс-загрузки) и размещаются или кэшируются на клиентский компонент Центра обновления Windows или других серверах управления обновлениями или распространения (например, Windows Server Update Services (WSUS). Microsoft Configuration Manager или сервер управления обновлениями или распространителя сторонних корпораций, поддерживающий экспресс-обновления). Устройство, применяющее экспресс-обновления, использует сетевой протокол для определения оптимальных различий, а затем загружает из конечных точек распространения обновлений только то, что необходимо.

Обратная сторона экспресс-скачивания заключается в том, что размер файлов PSF может быть большим в зависимости от количества исторических базовых показателей, по которым вычислялись разностные данные. Скачивание и кэширование больших файлов PSF на локальные или удаленные серверы распространения обновлений проблематично для большинства организаций, поэтому они не могут использовать экспресс-обновления для обновления своего парка устройств под управлением Windows. Во-вторых, из-за сложности создания разностных и размеров экспресс-файлов, которые необходимо кэшировать на серверах распространения обновлений, можно создавать файлы экспресс-скачивания только для наиболее распространенных базовых показателей, поэтому экспресс-обновления применимы только к выбранным базовым планам. Наконец, вычисление оптимальных дифференциалов является дорогостоящим с точки зрения использования системной памяти, особенно для недорогих систем, что влияет на их способность легко скачивать и применять обновление.

В следующих разделах описано, как обновления качества используют этот метод на основе прямого и обратного разности для новых выпусков Windows и Windows Server для решения проблем с экспресс-скачиванием.

Высокоуровневый дизайн

Обновление упаковки

Пакеты обновления качества Windows содержат переадресацию от базовых показателей RTM обновления качества (∆RTM→N) и обратные дифференциалы обратно в RTM (∆N→RTM) для каждого файла, который изменился с момента RTM. Используя версию RTM в качестве базового плана, мы гарантируем, что все устройства имеют одинаковые полезные данные. Метаданные пакета обновления, манифесты содержимого, а также прямой и обратный дифференциалы упаковываются в cab-файл (.cab). Этот .cab файл и логика применимости также будут упакованы в формат изолированного обновления Майкрософт (MSU).

Могут быть случаи, когда новые файлы добавляются в систему во время обслуживания. Эти файлы не будут иметь базовые показатели RTM, поэтому нельзя использовать прямую и обратную разницу. В этих сценариях для обработки обслуживания используются разностные значения NULL. Разностные значения NULL — это слегка сжатые и оптимизированные версии полных двоичных файлов. Пакеты обновления могут иметь либо прямую, либо обратную дифференциальную разницу, либо нулевая разница любого заданного двоичного файла в них. Следующее изображение символизирует содержимое установщика обновлений качества Windows:

Внешнее поле с меткой .msu, содержащее два вложенных ящика: 1) логика применимости, 2) поле с меткой .cab, содержащее четыре вложенных поля: 1) обновление метаданных, 2) манифесты содержимого, 3) преобразование разностной подгруппы RTM в sub N (файл 1, файл2 и т. д.) и 4) преобразование delta sub N в RTM (файл 1, файл 2 и т. д.).

Гидратация и установка

После того как обычные проверки применимости выполняются в пакете обновления и будут определены как применимые, инфраструктура обслуживания компонентов Windows восстанавливает все файлы во время предустановки, а затем переходит к обычной установке.

Ниже приведена последовательность действий, которые инфраструктура обслуживания компонентов выполняет в транзакции для завершения установки обновления:

  • Определите все файлы, необходимые для установки обновления.
  • Восстановите каждый из необходимых файлов с помощью текущей версии (VN) файла, обратного разностного (VN--->RTM) файла до версии RTM/base и прямого разностного (VRTM--->R) от rtm/base версии до целевой версии. Кроме того, используйте разностную гидратацию NULL для гидратации сжатых файлов со значением NULL.
  • Размещение гидратированных файлов (полный файл), переадресации разностных (в f папке) и обратных разностных (в r папке) или сжатых файлов null (в n папке) в хранилище компонентов (%windir%\WinSxS).
  • Устраните все зависимости и установите компоненты.
  • Очистка старого состояния (VN-1); предыдущее состояние VN сохраняется для удаления, восстановления или восстановления.

Устойчивое гидратация

Чтобы обеспечить устойчивость к повреждению хранилища компонентов или отсутствующим файлам, которые могут возникнуть из-за восприимчивости определенных типов оборудования к повреждению файловой системы, служба восстановления повреждений традиционно использовалась для автоматического восстановления хранилища компонентов (автоматическое восстановление повреждений) или по запросу (восстановление повреждения вручную) с помощью сетевого или локального источника восстановления. Эта служба будет по-прежнему предлагать возможность восстановления содержимого для восстановления и успешной установки обновления, если это необходимо.

При обнаружении повреждения во время операций обновления автоматическое восстановление повреждений начинается как обычно и использует файл хранилища базовых исправлений, опубликованный в клиентский компонент Центра обновления Windows для каждого обновления для исправления поврежденных манифестов, двоичных дифференциалов, а также гидратированных или полных файлов. Файлы безбазового хранилища исправлений содержат обратные и обратные дифференциалы и полные файлы для каждого обновленного компонента. Целостность файлов восстановления будет проверена на хэш.

Исправление повреждения использует манифест компонента для обнаружения отсутствующих файлов и получения хэшей для обнаружения повреждений. Во время установки обновления устанавливаются новые флаги реестра для каждого разностного промежуточного размещения на компьютере. При выполнении автоматического восстановления повреждения она сканирует гидратированные файлы с помощью манифеста и разностные файлы с помощью флагов. Если не удается найти или проверить разностную разницу, она добавляется в список повреждений для исправления.

Отложенный автоматический ремонт повреждений

"Отложенное автоматическое исправление повреждения" выполняется во время операций обновления для обнаружения поврежденных двоичных файлов и разностных файлов. При применении обновления в случае сбоя восстановления любого файла автоматически запускается автоматическое исправление "отложенного" повреждения, определяет поврежденный двоичный или разностный файл, а затем добавляет его в список повреждений. Позже операция обновления продолжается насколько это возможно, так что "ленивый" автоматическое исправление повреждения может собрать как можно больше поврежденных файлов для исправления. В конце раздела восстановления обновление завершается сбоем, и начинается автоматическое исправление повреждений. Автоматическое исправление повреждений выполняется в обычном режиме и в конце своей работы добавляет список повреждений, созданный "ленивым" автоматическим исправлением повреждений, поверх нового списка для восстановления. Затем автоматическое исправление повреждений исправит файлы в списке повреждений, и установка обновления будет успешно выполнена при следующей попытке.