Windows Atualizações com diferenciais reencaminhados e inversos
As atualizações de qualidade mensais do Windows são cumulativas, contendo todas as correções disponibilizadas anteriormente para garantir consistência e simplicidade. Para uma plataforma de sistema operativo como o Windows, que permanece em suporte durante vários anos, o tamanho das atualizações de qualidade mensais pode aumentar rapidamente, o que afeta diretamente o consumo de largura de banda da rede.
Atualmente, este problema é resolvido através de transferências rápidas, em que as transferências diferenciais para cada ficheiro alterado na atualização são geradas com base em revisões históricas selecionadas e na versão base. Neste artigo, introduzimos uma nova técnica para criar pacotes de atualização de software compactos aplicáveis a qualquer revisão da versão base e, em seguida, descrevemos como as atualizações de qualidade do Windows utilizam esta técnica.
Termos gerais
Os seguintes termos gerais aplicam-se ao longo deste documento:
- Versão base: uma versão de software principal com alterações significativas, como Windows 10, versão 1809 (Windows 10 Compilação 17763.1)
- Revisão: versões secundárias entre as versões principais, como KB4464330 (Windows 10 Compilação 17763.55)
- Ficheiros de Armazenamento de Patches Sem Base (PSF Sem Base): Patch storage files that contain full binaries or files (Ficheiros ou binários completos)
Neste artigo, introduzimos uma nova técnica que pode produzir atualizações de software compactas otimizadas para qualquer par de revisão de origem/destino. Fá-lo ao calcular o diferencial de um ficheiro alterado da versão base e o respetivo diferencial inverso para a versão base. Os diferenciais reencaminhados e inversos são então empacotados como uma atualização e distribuídos para os pontos finais que executam o software a atualizar. Os conteúdos do pacote de atualização podem ser simbolizados da seguinte forma:
Os pontos finais que têm a versão base do ficheiro (V0) hidratam a revisão de destino (VN) ao aplicar uma transformação simples:
Os pontos finais que têm a revisão N do ficheiro (VN), hidratam a revisão de destino (VR) ao aplicar o seguinte conjunto de transformações:
Os pontos finais mantêm os diferenciais inversos da revisão do software em que se encontram, para que possam ser utilizados para hidratar e aplicar a próxima atualização de revisão.
Ao utilizar uma linha de base comum, esta técnica produz um único pacote de atualização com inúmeras vantagens:
- Tamanho compacto
- Aplicável a todas as linhas de base
- Simples de criar
- Eficiente para instalar
- Redistribuível
Historicamente, os tamanhos de transferência das atualizações de qualidade do Windows (Windows 10, versão 1803 e versões suportadas mais antigas do Windows 10) foram otimizados com a transferência rápida. A transferência rápida é otimizada de modo a que a atualização dos sistemas Windows transfira o número mínimo de bytes. Isto é conseguido ao gerar diferenciais para cada ficheiro atualizado com base em revisões históricas de base selecionadas do mesmo ficheiro + a respetiva versão base ou RTM.
Por exemplo, se a atualização de qualidade mensal de outubro tiver atualizado Notepad.exe, são gerados diferenciais para Notepad.exe ficheiro de setembro a outubro, de agosto a outubro, de julho a outubro, de junho a outubro e do lançamento da funcionalidade original para outubro. Todos estes diferenciais são armazenados num Ficheiro de Armazenamento de Patches (PSF, também conhecido como ficheiros de transferência rápida) e alojados ou colocados em cache no Windows Update ou noutros servidores de gestão ou distribuição de atualizações (por exemplo, Windows Server Update Services (WSUS), Microsoft Configuration Managerou um servidor de distribuição ou gestão de atualizações que não seja da Microsoft que suporte atualizações rápidas). Um dispositivo que aplique atualizações rápidas utiliza o protocolo de rede para determinar diferenciais ideais e, em seguida, transfere apenas o que é necessário a partir dos pontos finais de distribuição de atualização.
O lado inverso da transferência rápida é que o tamanho dos ficheiros PSF pode ser grande consoante o número de linhas de base históricas em relação às quais os diferenciais foram calculados. A transferência e colocação em cache de ficheiros PSF grandes para servidores de distribuição de atualizações no local ou remotos é problemática para a maioria das organizações, pelo que não é possível utilizar atualizações rápidas para manter a sua frota de dispositivos com o Windows atualizado. Em segundo lugar, devido à complexidade da geração de diferenciais e tamanho dos ficheiros expressos que precisam de ser colocados em cache nos servidores de distribuição de atualizações, só é viável gerar ficheiros de transferência rápida para as linhas de base mais comuns, pelo que as atualizações rápidas só são aplicáveis a linhas de base selecionadas. Por fim, o cálculo de diferenciais ideais é dispendioso em termos de utilização da memória do sistema, especialmente para sistemas de baixo custo, o que afeta a capacidade de transferir e aplicar uma atualização de forma totalmente integrada.
Nas secções seguintes, descrevemos como as atualizações de qualidade utilizam esta técnica com base em diferenciais reencaminhados e inversos para versões mais recentes do Windows e do Windows Server para superar os desafios com transferências rápidas.
Design de alto nível
Atualizar o empacotamento
Os pacotes de atualização de qualidade do Windows contêm diferenciais reencaminhados das linhas de base RTM da atualização de qualidade (∆RTM→N) e diferenciais inversos para RTM (∆N→RTM) para cada ficheiro que foi alterado desde RTM. Ao utilizar a versão RTM como linha de base, garantimos que todos os dispositivos têm um payload idêntico. Os metadados do pacote de atualização, os manifestos de conteúdo e os diferenciais de reencaminhamento e inversa são empacotados num ficheiro cab (.cab). Este .cab ficheiro e a lógica de aplicabilidade também serão encapsulados no formato Microsoft Standalone Update (.msu).
Podem existir casos em que novos ficheiros são adicionados ao sistema durante a manutenção. Estes ficheiros não terão linhas de base RTM, pelo que os diferenciais inversos e reencaminhados não podem ser utilizados. Nestes cenários, são utilizados diferenciais nulos para processar a manutenção. Os diferenciais nulos são a versão ligeiramente comprimida e otimizada dos binários completos. Os pacotes de atualização podem ter diferenciais reencaminhados ou inversos ou diferenciais nulos de qualquer binário especificado nos mesmos. A imagem seguinte simboliza o conteúdo de um instalador de atualização de qualidade do Windows:
Hidratação e instalação
Assim que as verificações de aplicabilidade habituais forem efetuadas no pacote de atualização e estiverem determinadas como aplicáveis, a infraestrutura de manutenção do componente do Windows hidrata os ficheiros completos durante a pré-instalação e, em seguida, prossegue com o processo de instalação habitual.
Segue-se uma sequência de atividades de alto nível que a infraestrutura de manutenção de componentes executa numa transação para concluir a instalação da atualização:
- Identifique todos os ficheiros necessários para instalar a atualização.
- Hidratar cada um dos ficheiros necessários com a versão atual (VN) do ficheiro, diferencial inverso (VN--->RTM) do ficheiro de volta à atualização de qualidade RTM/versão base e reencaminhar diferencial (VRTM--->R) da atualização de funcionalidades RTM/versão base para a versão de destino. Além disso, utilize hidratação diferencial nula para hidratar ficheiros comprimidos nulos.
- Teste os ficheiros hidratados (ficheiro completo), os diferenciais reencaminhados (por baixo
f
da pasta) e as diferenciais inversas (emr
pasta) ou os ficheiros comprimidos nulos (emn
pasta) no arquivo de componentes (%windir%\Pasta WinSxS). - Resolver quaisquer dependências e instalar componentes.
- Limpar o estado mais antigo (VN-1); O estado anterior VN é retido para desinstalação e restauro ou reparação.
Hidratação resiliente
Para garantir a resiliência contra danos no arquivo de componentes ou ficheiros em falta que possam ocorrer devido à suscetibilidade de determinados tipos de hardware a danos no sistema de ficheiros, um serviço de reparação de danos tem sido tradicionalmente utilizado para recuperar o arquivo de componentes automaticamente (reparação automática de danos) ou a pedido (reparação manual de danos) utilizando uma origem de reparação online ou local. Este serviço continuará a oferecer a capacidade de reparar e recuperar conteúdos para hidratação e instalar com êxito uma atualização, se necessário.
Quando são detetados danos durante as operações de atualização, a reparação automática de danos é iniciada como habitualmente e utiliza o Ficheiro de Armazenamento de Patches Sem Base publicado no Windows Update para cada atualização para corrigir manifestos danificados, diferenciais binários ou ficheiros hidratados ou completos. Os ficheiros de armazenamento de patches sem base contêm diferenciais inversos e reencaminhados e ficheiros completos para cada componente atualizado. A integridade dos ficheiros de reparação será verificada com hash.
A reparação de danos utiliza o manifesto do componente para detetar ficheiros em falta e obter hashes para deteção de danos. Durante a instalação da atualização, são definidos novos sinalizadores de registo para cada diferencial testado no computador. Quando a reparação automática de danos é executada, analisa os ficheiros hidratados com o manifesto e os ficheiros diferenciais com os sinalizadores. Se não for possível localizar ou verificar o diferencial, é adicionado à lista de danos a reparar.
Reparação automática de danos em diferido
A "reparação automática de danos em diferido" é executada durante as operações de atualização para detetar binários e diferenciais danificados. Ao aplicar uma atualização, se a hidratação de qualquer ficheiro falhar, a reparação automática de danos "em diferido" é iniciada automaticamente, identifica o ficheiro binário ou diferencial danificado e, em seguida, adiciona-o à lista de danos. Mais tarde, a operação de atualização continua o mais longe possível, para que a reparação automática de danos "em diferido" possa recolher o maior número possível de ficheiros danificados para corrigir. No final da secção de hidratação, a atualização falha e é iniciada a reparação automática de danos. A reparação automática de danos é executada como habitualmente e, no final da operação, adiciona a lista de danos gerada pela reparação automática de danos "em diferido" no topo da nova lista para reparação. A reparação automática de danos repara os ficheiros na lista de danos e a instalação da atualização terá êxito na próxima tentativa.