Aggiornamenti di Windows con differenziali avanti e inversi

Gli aggiornamenti qualitativi mensili di Windows sono cumulativi e contengono tutte le correzioni rilasciate in precedenza per garantire coerenza e semplicità. Per una piattaforma del sistema operativo come Windows, che rimane in supporto per più anni, le dimensioni degli aggiornamenti qualitativi mensili possono aumentare rapidamente, incidendo direttamente sul consumo di larghezza di banda di rete.

Oggi, questo problema viene risolto usando i download rapidi, in cui i download differenziali per ogni file modificato nell'aggiornamento vengono generati in base alle revisioni cronologiche selezionate più la versione di base. In questo documento viene introdotta una nuova tecnica per creare pacchetti di aggiornamento software compatti applicabili a qualsiasi revisione della versione di base e quindi viene descritto come gli aggiornamenti qualitativi di Windows usano questa tecnica.

Condizioni generali

In questo documento si applicano le condizioni generali seguenti:

  • Versione di base: versione principale del software con modifiche significative, ad esempio Windows 10, versione 1809 (Windows 10 Build 17763.1)
  • Revisione: versioni secondarie tra le versioni principali, ad esempio KB4464330 (Windows 10 Build 17763.55)
  • File di archiviazione patch in baseless (PSF in baseless): applicare patch ai file di archiviazione che contengono file binari o file completi

In questo documento viene introdotta una nuova tecnica in grado di produrre aggiornamenti software compatti ottimizzati per qualsiasi coppia di revisione di origine/destinazione. Questa operazione viene eseguita calcolando il differenziale di un file modificato dalla versione di base e il relativo differenziale inverso alla versione di base. I differenziali in avanti e inverso vengono quindi compressi come aggiornamento e distribuiti agli endpoint che eseguono il software da aggiornare. Il contenuto del pacchetto di aggiornamento può essere simboleggiato come segue:

Rappresentazione simbolica del contenuto del pacchetto di aggiornamento. Casella contenente due espressioni: delta sub zero transform in sub N, seguito delta sub N transform to sub zero.

Gli endpoint con la versione di base del file (V0) idratano la revisione di destinazione (VN) applicando una semplice trasformazione:

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

Gli endpoint con revisione N del file (VN), idratano la revisione di destinazione (VR) applicando il set di trasformazioni seguente:

Equazione 1: V sub n + delta sub n trasforma in 0 = V sole 0; Equazione 2: V sub zero + delta sub 0 trasforma in R = V sub R.

Gli endpoint mantengono i differenziali inversi per la revisione del software in cui si trovano, in modo che possano essere usati per l'idratazione e l'applicazione dell'aggiornamento di revisione successivo.

Usando una baseline comune, questa tecnica produce un singolo pacchetto di aggiornamento con numerosi vantaggi:

  • Dimensioni compatte
  • Applicabile a tutte le baseline
  • Semplice da compilare
  • Efficiente da installare
  • Ridistribuibile

In passato, le dimensioni di download degli aggiornamenti qualitativi di Windows (Windows 10, versione 1803 e versioni supportate meno recenti di Windows 10) venivano ottimizzate usando il download rapido. Il download rapido è ottimizzato in modo che l'aggiornamento dei sistemi Windows scarichi il numero minimo di byte. Ciò si ottiene generando differenziali per ogni file aggiornato in base alle revisioni di base cronologiche selezionate dello stesso file + della relativa versione di base o RTM.

Ad esempio, se l'aggiornamento qualitativo mensile di ottobre è stato aggiornato Notepad.exe, vengono generati differenziali per Notepad.exe modifiche dei file da settembre a ottobre, da agosto a ottobre, da luglio a ottobre, da giugno a ottobre e dalla versione originale della funzionalità a ottobre. Tutti questi differenziali vengono archiviati in un file di archiviazione patch (PSF, detti anche file di download rapido) e ospitati o memorizzati nella cache in Windows Update o in altri server di gestione o distribuzione degli aggiornamenti (ad esempio, Windows Server Update Services (WSUS), Microsoft Configuration Managero un server di distribuzione o gestione degli aggiornamenti non Microsoft che supporta gli aggiornamenti rapidi). Un dispositivo che applica aggiornamenti rapidi usa il protocollo di rete per determinare i differenziali ottimali, quindi scarica solo ciò che è necessario dagli endpoint di distribuzione degli aggiornamenti.

Il rovescio della medaglia del download rapido è che le dimensioni dei file PSF possono essere elevate a seconda del numero di baseline cronologiche rispetto alle quali sono stati calcolati i differenziali. Il download e la memorizzazione nella cache di file PSF di grandi dimensioni nei server di distribuzione degli aggiornamenti locali o remoti è problematico per la maggior parte delle organizzazioni, pertanto non è possibile usare gli aggiornamenti rapidi per mantenere aggiornata la flotta di dispositivi che eseguono Windows. In secondo luogo, a causa della complessità della generazione di differenziali e delle dimensioni dei file rapidi che devono essere memorizzati nella cache nei server di distribuzione degli aggiornamenti, è possibile generare file di download rapido solo per le baseline più comuni, quindi gli aggiornamenti rapidi sono applicabili solo alle baseline selezionate. Infine, il calcolo dei differenziali ottimali è costoso in termini di utilizzo della memoria del sistema, soprattutto per i sistemi a basso costo, influendo sulla loro capacità di scaricare e applicare un aggiornamento senza problemi.

Nelle sezioni seguenti viene descritto come gli aggiornamenti qualitativi usano questa tecnica basata su differenziali in avanti e inverso per le versioni più recenti di Windows e Windows Server per superare le sfide con i download rapidi.

Progettazione di alto livello

Aggiornare la creazione di pacchetti

I pacchetti di aggiornamento qualità di Windows contengono differenziali in avanti rispetto alle baseline RTM per gli aggiornamenti qualitativi (∆RTM→N) e differenziali inversi a RTM (∆N→RTM) per ogni file modificato dopo RTM. Usando la versione RTM come baseline, ci assicuriamo che tutti i dispositivi abbiano un payload identico. I metadati del pacchetto di aggiornamento, i manifesti di contenuto e i differenziali in avanti e inverso vengono compressi in un file cab (.cab). Anche questo file .cab e la logica di applicabilità verranno inclusi nel formato Microsoft Standalone Update (con estensione msu).

Possono essere presenti casi in cui nuovi file vengono aggiunti al sistema durante la manutenzione. Questi file non avranno linee di base RTM, pertanto non è possibile usare differenziali in avanti e inverso. In questi scenari vengono usati differenziali Null per gestire la manutenzione. I differenziali Null sono la versione leggermente compressa e ottimizzata dei file binari completi. I pacchetti di aggiornamento possono avere differenziali in avanti o inverso o differenziali Null di un determinato file binario. L'immagine seguente simboleggia il contenuto di un programma di installazione di Windows Quality Update:

Casella esterna con etichetta .msu contenente due sotto-caselle: 1) Logica di applicabilità, 2) casella etichettata .cab contenente quattro caselle secondarie: 1) metadati di aggiornamento, 2) manifesti di contenuto, 3) trasformazione delta sub RTM alla sub N (file 1, file2 e così via) e 4) trasformazione delta sub N in RTM (file 1, file 2 e così via).

Idratazione e installazione

Dopo aver eseguito i consueti controlli di applicabilità sul pacchetto di aggiornamento e determinati come applicabili, l'infrastruttura di manutenzione dei componenti Windows idrata i file completi durante la preinstallazione e quindi procede con il normale processo di installazione.

Di seguito è riportata una sequenza generale di attività eseguite dall'infrastruttura di manutenzione dei componenti in una transazione per completare l'installazione dell'aggiornamento:

  • Identificare tutti i file necessari per installare l'aggiornamento.
  • Idratare ognuno dei file necessari usando la versione corrente (VN) del file, il differenziale inverso (VN--->RTM) del file all'aggiornamento qualitativo RTM/versione di base e il differenziale di inoltro (VRTM--->R) dall'aggiornamento delle funzionalità RTM/versione di base alla versione di destinazione. Inoltre, usare l'idratazione differenziale null per idratare i file compressi null.
  • Eseguire lo stage dei file idratati (file completo), dei differenziali di inoltro (nella f cartella) e dei differenziali inversi (sotto r cartella) o dei file compressi Null (nella n cartella) nell'archivio componenti (%windir%\WinSxS).
  • Risolvere eventuali dipendenze e installare i componenti.
  • Pulire lo stato precedente (VN-1); lo stato precedente VN viene mantenuto per la disinstallazione e il ripristino o il ripristino.

Idratazione resiliente

Per garantire la resilienza contro il danneggiamento dell'archivio componenti o i file mancanti che potrebbero verificarsi a causa della suscettibilità di determinati tipi di hardware al danneggiamento del file system, un servizio di riparazione del danneggiamento è stato tradizionalmente usato per ripristinare automaticamente l'archivio componenti (ripristino automatico del danneggiamento) o su richiesta (riparazione manuale del danneggiamento) usando un'origine di riparazione online o locale. Questo servizio continuerà a offrire la possibilità di ripristinare e ripristinare il contenuto per l'idratazione e installare correttamente un aggiornamento, se necessario.

Quando viene rilevato un danneggiamento durante le operazioni di aggiornamento, il ripristino automatico del danneggiamento viene avviato come di consueto e usa il file di archiviazione patch senza base pubblicato per Windows Update per ogni aggiornamento per correggere manifesti danneggiati, differenziali binari o file idrati o completi. I file di archiviazione patch in baseless contengono differenziali inversi e in avanti e file completi per ogni componente aggiornato. L'integrità dei file di ripristino verrà verificata tramite hash.

Il ripristino del danneggiamento usa il manifesto del componente per rilevare i file mancanti e ottenere gli hash per il rilevamento del danneggiamento. Durante l'installazione dell'aggiornamento, vengono impostati nuovi flag del Registro di sistema per ogni passaggio differenziale nel computer. Quando viene eseguito il ripristino automatico del danneggiamento, analizza i file idratati usando il manifesto e i file differenziali usando i flag. Se non è possibile trovare o verificare il differenziale, viene aggiunto all'elenco dei danneggiamenti da ripristinare.

Ripristino automatico del danneggiamento lazy

"Lazy automatic corruption repair" viene eseguito durante le operazioni di aggiornamento per rilevare i file binari e i differenziali danneggiati. Durante l'applicazione di un aggiornamento, se l'idratazione di un file non riesce, viene avviato automaticamente il ripristino automatico del danneggiamento "lazy", identifica il file binario o differenziale danneggiato e quindi lo aggiunge all'elenco dei danneggiamenti. In seguito, l'operazione di aggiornamento continua per quanto possibile, in modo che il ripristino automatico del danneggiamento "lazy" possa raccogliere il numero più di file danneggiati da correggere il più possibile. Alla fine della sezione di idratazione, l'aggiornamento non riesce e viene avviato il ripristino automatico del danneggiamento. La riparazione automatica del danneggiamento viene eseguita come di consueto e alla fine dell'operazione aggiunge l'elenco di danneggiamenti generato dalla riparazione automatica del danneggiamento "differita" in cima al nuovo elenco da ripristinare. Il ripristino automatico del danneggiamento ripristina quindi i file nell'elenco dei danneggiamenti e l'installazione dell'aggiornamento avrà esito positivo al tentativo successivo.