Windows Novedades con diferenciales hacia delante e inversos
Las actualizaciones mensuales de calidad de Windows son acumulativas y contienen todas las correcciones publicadas anteriormente para garantizar la coherencia y simplicidad. En el caso de una plataforma de sistema operativo como Windows, que permanece en soporte técnico durante varios años, el tamaño de las actualizaciones de calidad mensuales puede crecer rápidamente, lo que afecta directamente al consumo de ancho de banda de red.
Hoy en día, este problema se soluciona mediante descargas rápidas, donde las descargas diferenciales de cada archivo modificado de la actualización se generan en función de las revisiones históricas seleccionadas más la versión base. En este artículo, presentamos una nueva técnica para crear paquetes compactos de actualización de software que se aplican a cualquier revisión de la versión base y, a continuación, se describe cómo las actualizaciones de calidad de Windows usan esta técnica.
Términos generales
A lo largo de este documento se aplican los siguientes términos generales:
- Versión base: una versión de software principal con cambios significativos, como Windows 10, versión 1809 (Windows 10 compilación 17763.1)
- Revisión: versiones secundarias entre las versiones principales, como KB4464330 (Windows 10 compilación 17763.55)
- Archivos de almacenamiento de revisiones sin base (PSF sin base): archivos de almacenamiento de revisiones que contienen archivos binarios completos o archivos
En este documento, presentamos una nueva técnica que puede producir actualizaciones de software compactas optimizadas para cualquier par de revisión de origen o destino. Para ello, calcula el diferencial de un archivo modificado de la versión base y su diferencial inverso a la versión base. A continuación, los diferenciales tanto hacia delante como inversos se empaquetan como una actualización y se distribuyen a los puntos de conexión que ejecutan el software que se va a actualizar. El contenido del paquete de actualización se puede simbolizar de la siguiente manera:
Los puntos de conexión que tienen la versión base del archivo (V0) hidratan la revisión de destino (VN) aplicando una transformación simple:
Los puntos de conexión que tienen la revisión N del archivo (VN), hidratan la revisión de destino (VR) aplicando el siguiente conjunto de transformaciones:
Los puntos de conexión conservan los diferenciales inversos para la revisión de software en la que se encuentran, de modo que se puedan usar para hidratar y aplicar la siguiente actualización de revisión.
Mediante el uso de una línea base común, esta técnica genera un único paquete de actualización con numerosas ventajas:
- Tamaño compacto
- Aplicable a todas las líneas base
- Fácil de compilar
- Eficaz para instalar
- Redistribuible
Históricamente, los tamaños de descarga de actualizaciones de calidad de Windows (Windows 10, versión 1803 y versiones anteriores compatibles de Windows 10) se optimizaron mediante la descarga rápida. La descarga rápida está optimizada para que la actualización de sistemas Windows descargue el número mínimo de bytes. Esto se logra mediante la generación de diferenciales para cada archivo actualizado en función de las revisiones base históricas seleccionadas del mismo archivo + su versión base o RTM.
Por ejemplo, si la actualización de calidad mensual de octubre se ha actualizado Notepad.exe, se generan diferenciales para Notepad.exe archivo de septiembre a octubre, de agosto a octubre, de julio a octubre, de junio a octubre y de la versión de característica original a octubre. Todos estos diferenciales se almacenan en un archivo de almacenamiento de revisiones (PSF, también denominados archivos de descarga rápida) y se hospedan o almacenan en caché en Windows Update u otros servidores de administración o distribución de actualizaciones (por ejemplo, Windows Server Update Services (WSUS), Microsoft Configuration Manager, o un servidor de distribución o administración de actualizaciones que no es de Microsoft que admite actualizaciones rápidas). Un dispositivo que aplica actualizaciones rápidas usa el protocolo de red para determinar diferenciales óptimos y, a continuación, descarga solo lo que se necesita de los puntos de conexión de distribución de actualizaciones.
La otra cara de la descarga rápida es que el tamaño de los archivos PSF puede ser grande en función del número de líneas base históricas con las que se calcularon los diferenciales. Descargar y almacenar en caché archivos PSF de gran tamaño en servidores de distribución de actualizaciones locales o remotos es problemático para la mayoría de las organizaciones, por lo que no pueden usar actualizaciones rápidas para mantener actualizada su flota de dispositivos que ejecutan Windows. En segundo lugar, debido a la complejidad de generar diferenciales y tamaño de los archivos express que deben almacenarse en caché en los servidores de distribución de actualizaciones, solo es factible generar archivos de descarga rápida para las líneas base más comunes, por lo que las actualizaciones rápidas solo se aplican a las líneas base seleccionadas. Por último, el cálculo de diferenciales óptimos es costoso en términos de uso de memoria del sistema, especialmente para sistemas de bajo costo, lo que afecta a su capacidad para descargar y aplicar una actualización sin problemas.
En las secciones siguientes, se describe cómo las actualizaciones de calidad usan esta técnica basada en diferenciales hacia delante e inversos para las versiones más recientes de Windows y Windows Server para superar los desafíos con descargas rápidas.
Diseño de alto nivel
Actualización del empaquetado
Los paquetes de actualización de calidad de Windows contienen diferenciales hacia delante de líneas base RTM de actualización de calidad (∆RTM→N) y diferenciales inversos a RTM (∆N→RTM) para cada archivo que ha cambiado desde RTM. Al usar la versión RTM como línea base, nos aseguramos de que todos los dispositivos tengan una carga idéntica. Los metadatos del paquete de actualización, los manifiestos de contenido y los diferenciales hacia delante e inversos se empaquetan en un archivo de archivador (.cab). Este archivo .cab y la lógica de aplicabilidad también se ajustarán en formato Microsoft Standalone Update (.msu).
Puede haber casos en los que se agreguen nuevos archivos al sistema durante el mantenimiento. Estos archivos no tendrán líneas base RTM, por lo que no se pueden usar diferenciales hacia delante ni inversos. En estos escenarios, se usan diferenciales null para controlar el mantenimiento. Los diferenciales null son la versión ligeramente comprimida y optimizada de los archivos binarios completos. Los paquetes de actualización pueden tener diferenciales hacia delante o inversos, o diferenciales NULL de cualquier binario determinado en ellos. La siguiente imagen simboliza el contenido de un instalador de actualización de calidad de Windows:
Hidratación e instalación
Una vez que se realizan las comprobaciones de aplicabilidad habituales en el paquete de actualización y se determina que son aplicables, la infraestructura de mantenimiento de componentes de Windows hidrata los archivos completos durante la preinstalación y, a continuación, continúa con el proceso de instalación habitual.
A continuación se muestra una secuencia de alto nivel de actividades que la infraestructura de mantenimiento de componentes ejecuta en una transacción para completar la instalación de la actualización:
- Identifique todos los archivos necesarios para instalar la actualización.
- Rehidrata cada uno de los archivos necesarios utilizando la versión actual (VN) del archivo, diferencial inverso (VN--->RTM) del archivo para actualizar la calidad RTM/versión base y diferencial de reenvío (VRTM--->R) de la actualización de características RTM/versión base a la versión de destino. Además, use la hidratación diferencial nula para hidratar archivos comprimidos null.
- Almacenar provisionalmente los archivos hidratados (archivo completo), diferenciales de reenvío (en
f
carpeta) y diferenciales inversos (enr
carpeta) o archivos comprimidos null (enn
carpeta) en el almacén de componentes (carpeta%windir%\WinSxS). - Resuelva las dependencias e instale los componentes.
- Limpiar el estado anterior (VN-1); el estado anterior VN se conserva para la desinstalación y restauración o reparación.
Hidratación resistente
Para garantizar la resistencia frente a daños en el almacén de componentes o archivos que podrían producirse debido a la susceptibilidad de ciertos tipos de hardware a daños en el sistema de archivos, tradicionalmente se ha usado un servicio de reparación de daños para recuperar el almacén de componentes automáticamente (reparación automática de daños) o a petición (reparación manual de daños) mediante un origen de reparación local o en línea. Este servicio seguirá ofreciendo la capacidad de reparar y recuperar contenido para la hidratación e instalar correctamente una actualización, si es necesario.
Cuando se detectan daños durante las operaciones de actualización, la reparación automática de daños se inicia como de costumbre y usa el archivo de almacenamiento de revisiones sin base publicado para Windows Update para cada actualización para corregir manifiestos dañados, diferenciales binarios o archivos hidratados o completos. Los archivos de almacenamiento de revisiones sin base contienen diferenciales inversos y hacia delante y archivos completos para cada componente actualizado. La integridad de los archivos de reparación se comprobará mediante hash.
La reparación de daños usa el manifiesto del componente para detectar archivos que faltan y obtener hashes para la detección de daños. Durante la instalación de la actualización, se establecen nuevas marcas del Registro para cada elemento diferencial almacenado provisionalmente en la máquina. Cuando se ejecuta la reparación automática de daños, examina los archivos hidratados mediante el manifiesto y los archivos diferenciales mediante las marcas. Si no se puede encontrar o comprobar el diferencial, se agrega a la lista de daños que se van a reparar.
Reparación automática diferida de daños
"Reparación automática diferida de daños" se ejecuta durante las operaciones de actualización para detectar archivos binarios dañados y diferenciales. Al aplicar una actualización, si se produce un error en la hidratación de cualquier archivo, la reparación automática "diferida" de daños se inicia automáticamente, identifica el archivo binario o diferencial dañado y, a continuación, lo agrega a la lista de daños. Más adelante, la operación de actualización continúa hasta donde puede llegar, de modo que la reparación automática "diferida" de daños puede recopilar tantos archivos dañados para corregirlos como sea posible. Al final de la sección de hidratación, se produce un error en la actualización y se inicia la reparación automática de daños. La reparación automática de daños se ejecuta como de costumbre y al final de su operación, agrega la lista de daños generada por la reparación automática de daños "diferida" encima de la nueva lista para reparar. Reparación automática de daños y, a continuación, repara los archivos de la lista de daños y la instalación de la actualización se realizará correctamente en el siguiente intento.