O Windows Atualizações usando diferenciais avançados e reversos

As atualizações mensais de qualidade do Windows são cumulativas, contendo todas as correções lançadas anteriormente para garantir consistência e simplicidade. Para uma plataforma do sistema operacional como o Windows, que permanece em suporte por vários anos, o tamanho das atualizações mensais de qualidade pode crescer rapidamente, afetando diretamente o consumo de largura de banda de rede.

Hoje, esse problema é resolvido usando downloads expressos, em que os downloads diferenciais para cada arquivo alterado na atualização são gerados com base em revisões históricas selecionadas mais a versão base. Neste artigo, apresentamos uma nova técnica para criar pacotes compactos de atualização de software aplicáveis a qualquer revisão da versão base e descrever como as atualizações de qualidade do Windows usam essa técnica.

Termos Gerais

Os seguintes termos gerais se aplicam ao longo deste documento:

  • Versão base: uma versão de software importante com alterações significativas, como Windows 10, versão 1809 (Windows 10 Build 17763.1)
  • Revisão: versões secundárias entre as versões principais, como KB4464330 (Windows 10 Build 17763.55)
  • Arquivos de armazenamento de patch sem base (PSF sem base): arquivos de armazenamento de patch que contêm binários ou arquivos completos

Neste artigo, apresentamos uma nova técnica que pode produzir atualizações de software compactas otimizadas para qualquer par de revisão de origem/destino. Ele faz isso calculando o diferencial de um arquivo alterado da versão base e seu diferencial reverso de volta para a versão base. Os diferenciais de encaminhamento e inverso são empacotados como uma atualização e distribuídos para os pontos de extremidade que executam o software a ser atualizado. O conteúdo do pacote de atualização pode ser simbolizado da seguinte maneira:

Representação simbólica do conteúdo do pacote de atualização. Uma caixa que contém duas expressões: delta sub zero transforme em sub N, seguiu delta sub N transformar em sub zero.

Os pontos de extremidade que têm a versão base do arquivo (V0) hidratam a VN (revisão de destino) aplicando uma transformação simples:

Equação: V sub zero + delta sub zero transforme para sub N = V sub n.

Os pontos de extremidade que têm a revisão N do arquivo (VN), hidratam a VR (revisão de destino) aplicando o seguinte conjunto de transformações:

Equação 1: V sub n + delta sub n transformam em 0 = V sol 0; Equação 2: V sub zero + delta sub 0 transformam em R = V sub R.

Os pontos de extremidade mantêm os diferenciais inversos para a revisão de software em que estão, para que possam ser usados para hidratar e aplicar a próxima atualização de revisão.

Usando uma linha de base comum, essa técnica produz um único pacote de atualização com inúmeras vantagens:

  • Compacto em tamanho
  • Aplicável a todas as linhas de base
  • Simples de criar
  • Eficiente para instalar
  • Redistribuível

Historicamente, os tamanhos de download das atualizações de qualidade do Windows (Windows 10, versão 1803 e versões mais antigas com suporte de Windows 10) foram otimizados usando o download expresso. O download expresso é otimizado de modo que a atualização de sistemas Windows baixe o número mínimo de bytes. Isso é obtido gerando diferenciais para cada arquivo atualizado com base em revisões de base históricas selecionadas do mesmo arquivo + sua versão base ou RTM.

Por exemplo, se a atualização mensal de qualidade de outubro tiver atualizado Notepad.exe, serão gerados diferenciais para Notepad.exe alterações de arquivo de setembro para outubro, agosto para outubro, julho a outubro, junho a outubro e da versão original do recurso para outubro. Todos esses diferenciais são armazenados em um PSF (Arquivo de Armazenamento de Patch, também chamado de arquivos de download expresso) e hospedados ou armazenados em cache em Windows Update ou em outros servidores de gerenciamento ou distribuição de atualizações (por exemplo, Windows Server Update Services (WSUS), Microsoft Configuration Manager, ou um servidor de distribuição ou gerenciamento de atualizações não microsoft que dá suporte a atualizações expressas). Um dispositivo que aplica atualizações expressas usa o protocolo de rede para determinar os diferenciais ideais e, em seguida, baixa apenas o que é necessário dos pontos de extremidade de distribuição de atualização.

O outro lado do download expresso é que o tamanho dos arquivos PSF pode ser grande dependendo do número de linhas de base históricas em relação aos quais os diferenciais foram calculados. Baixar e armazenar arquivos PSF grandes em servidores de distribuição locais ou de atualização remota é problemático para a maioria das organizações, portanto, eles não podem usar atualizações expressas para manter sua frota de dispositivos executando o Windows atualizado. Em segundo lugar, devido à complexidade de gerar diferenciais e tamanho dos arquivos expressos que precisam ser armazenados em cache em servidores de distribuição de atualização, só é viável gerar arquivos de download expresso para as linhas de base mais comuns, portanto, as atualizações expressas só são aplicáveis às linhas de base selecionadas. Por fim, o cálculo dos diferenciais ideais é caro em termos de utilização de memória do sistema, especialmente para sistemas de baixo custo, afetando sua capacidade de baixar e aplicar uma atualização perfeitamente.

Nas seções a seguir, descrevemos como as atualizações de qualidade usam essa técnica com base em diferenciais avançados e reversos para versões mais recentes do Windows e do Windows Server para superar os desafios com downloads expressos.

Design de alto nível

Atualizar empacotamento

Os pacotes de atualização de qualidade do Windows contêm diferenciais de encaminhamento de linhas de base RTM de atualização de qualidade (∆RTM→N) e diferenciais reversos de volta para RTM (∆N→RTM) para cada arquivo que foi alterado desde RTM. Usando a versão RTM como a linha de base, garantimos que todos os dispositivos tenham uma carga idêntica. Atualizar metadados de pacote, manifestos de conteúdo e diferenciais de encaminhamento e reversão são empacotados em um arquivo de gabinete (.cab). Esse arquivo .cab e a lógica de aplicabilidade também serão encapsulados no formato Microsoft Standalone Update (.msu).

Pode haver casos em que novos arquivos são adicionados ao sistema durante a manutenção. Esses arquivos não terão linhas de base RTM, portanto, diferenciais de encaminhamento e inverso não podem ser usados. Nesses cenários, diferenciais nulos são usados para lidar com a manutenção. Os diferenciais nulos são a versão ligeiramente compactada e otimizada dos binários completos. Os pacotes de atualização podem ter diferenciais avançados ou inversos ou diferenciais nulos de qualquer binário determinado neles. A imagem a seguir simboliza o conteúdo de um instalador de atualização de qualidade do Windows:

Caixa externa rotulada .msu contendo duas sub-caixas: 1) Lógica de Aplicabilidade, 2) caixa rotulada .cab contendo quatro sub-caixas: 1) atualizar metadados, 2) manifestos de conteúdo, 3) transformar sub RTM delta em sub N (arquivo 1, arquivo 2 etc.) e 4) sub N delta transformar em RTM (arquivo 1, arquivo 2, etc.).

Hidratação e instalação

Depois que as verificações de aplicabilidade habituais são executadas no pacote de atualização e são determinadas como aplicáveis, a infraestrutura de manutenção de componentes do Windows hidrata os arquivos completos durante a pré-instalação e, em seguida, prossegue com o processo de instalação usual.

Veja abaixo uma sequência de atividades de alto nível que a infraestrutura de manutenção de componentes executa em uma transação para concluir a instalação da atualização:

  • Identifique todos os arquivos necessários para instalar a atualização.
  • Hidrate cada um dos arquivos necessários usando a versão atual (VN) do arquivo, o diferencial reverso (VN--->RTM) do arquivo de volta à atualização de qualidade RTM/versão base e o diferencial de encaminhamento (VRTM--->R) da atualização de recursos RTM/versão base para a versão de destino. Além disso, use hidratação diferencial nula para hidratar arquivos compactados nulos.
  • Stage the hydrated files (full file), forward differentials (under f folder) and reverse differentials (under r folder) or null compactpressed files (under n folder) in the component store (%windir%\WinSxS folder).
  • Resolva quaisquer dependências e instale componentes.
  • Limpar o estado mais antigo (VN-1); o estado anterior VN é mantido para desinstalação e restauração ou reparo.

Hidratação resiliente

Para garantir resiliência contra a corrupção do repositório de componentes ou arquivos ausentes que poderiam ocorrer devido à suscetibilidade de determinados tipos de hardware para corrupção do sistema de arquivos, um serviço de reparo de corrupção tem sido tradicionalmente usado para recuperar o repositório de componentes automaticamente (reparo automático de corrupção) ou sob demanda (reparo manual de corrupção) usando uma fonte de reparo online ou local. Esse serviço continuará oferecendo a capacidade de reparar e recuperar conteúdo para hidratação e instalar com êxito uma atualização, se necessário.

Quando a corrupção é detectada durante as operações de atualização, o reparo automático de corrupção começa normalmente e usa o Arquivo de Armazenamento de Patch Sem Base publicado para Windows Update para cada atualização para corrigir manifestos corrompidos, diferenciais binários ou arquivos hidratados ou completos. Os arquivos de armazenamento de patch sem base contêm diferenciais reversos e avançados e arquivos completos para cada componente atualizado. A integridade dos arquivos de reparo será verificada em hash.

O reparo de corrupção usa o manifesto do componente para detectar arquivos ausentes e obter hashes para detecção de corrupção. Durante a instalação da atualização, novos sinalizadores de registro para cada diferencial encenado no computador são definidos. Quando o reparo automático de corrupção é executado, ele verifica arquivos hidratados usando os arquivos de manifesto e diferenciais usando os sinalizadores. Se o diferencial não puder ser encontrado ou verificado, ele será adicionado à lista de corrupção a serem reparadas.

Reparo automático lento de corrupção

O "reparo automático lento de corrupção" é executado durante operações de atualização para detectar binários e diferenciais corrompidos. Ao aplicar uma atualização, se a hidratação de qualquer arquivo falhar, o reparo automático de corrupção "preguiçoso" será iniciado automaticamente, identifica o arquivo binário ou diferencial corrompido e, em seguida, adiciona-o à lista de corrupção. Mais tarde, a operação de atualização continua até onde pode ir, para que o reparo automático de corrupção "preguiçoso" possa coletar o maior número possível de arquivos corrompidos para corrigir. No final da seção de hidratação, a atualização falha e o reparo automático de corrupção começa. O reparo automático de corrupção é executado normalmente e, no final de sua operação, adiciona a lista de corrupção gerada pelo reparo automático de corrupção "preguiçoso" na parte superior da nova lista a ser reparada. O reparo automático de corrupção, em seguida, repara os arquivos na lista de corrupção e a instalação da atualização será bem-sucedida na próxima tentativa.