¿Qué pasaría si Windows 10 de repente decidiera reiniciar debido a la actualización durante la desfragmentación?

Ha habido varias respuestas bastante buenas a esta pregunta, pero pensé que podría darle una opinión ligeramente diferente, porque hay (al menos) tres aspectos interesantes a esta pregunta.

Precaución: detalles técnicos por delante! Normalmente trato de mantener las cosas lo más livianas posible. Pero en este caso, realmente respondiendo ‘¿Qué pasaría?’ requiere solo un vistazo detrás de la cortina técnica.

Primero, ‘ ¿Qué sucede con la desfragmentación si algo (un bloqueo, una falla de energía, etc.) lo termina inesperadamente? ‘Como otros han mencionado, hay dos niveles de protección aquí, aunque obviamente ninguno de ellos es perfecto. Primero, el proceso de desfragmentación en sí mismo intenta hacer las cosas de una manera que minimice el daño si ocurre una falla. En segundo lugar, los sistemas de archivos modernos como NTFS son transaccionales, lo que significa que pueden revertir el disco a un buen estado si ocurre una falla del sistema en medio de una escritura de disco.

Segundo, ‘ ¿Por qué Windows Update termina las cosas de esta manera? ‘Bueno, la respuesta es’ No lo hace, en realidad, aunque ciertamente puedo entender por qué pensarías que sí ‘.

Esto es lo que sucede realmente cuando es hora de que Windows Update reinicie la computadora:

  • Windows Update le dice al administrador de sesión de Windows: “Oye, ¿podrías reiniciar Windows por nosotros?” Esto es básicamente lo mismo que sucedería si elige Reiniciar en el menú Inicio.
  • El administrador de sesión de Windows envía un mensaje a todos los programas que se ejecutan en el sistema: “Bien, Windows se está cerrando ahora”.
  • Los programas tienen 30 segundos para cerrarse, o más si le piden al administrador de la sesión más tiempo de la manera correcta. Eso significa, por ejemplo, que la herramienta de desfragmentación no se terminará realmente en medio de una escritura; en cambio dice ‘¿Windows se está cerrando? Bien, terminaré este pequeño movimiento de datos que estoy haciendo actualmente, y luego detendré la desfragmentación y me cerraré ”. Las cosas se dejan en un estado consistente (aunque no en un estado completamente desfragmentado).
  • Después de 30 segundos, Windows comienza a terminar los programas. Aquí es donde algunos programas pueden funcionar mal y perder datos (por ejemplo, si un programa responde al mensaje ‘Está bien, Windows se está cerrando’ colocando un mensaje ‘Hola, usuario, tiene cambios sin guardar; ¿desea guardarlos? ‘y esperando una respuesta, y luego se termina 30 segundos después). Esto todavía me hace sentir muy mal, y estamos trabajando continuamente en formas de hacerlo menos intrusivo (por ejemplo, Windows 10 es más selectivo sobre el tipo de actualizaciones que desencadenan un reinicio que Windows 8).
  • Después de que todos los programas se hayan apagado o finalizado, el administrador de sesión de Windows continúa y reinicia el sistema, y ​​las actualizaciones se aplican durante el reinicio.

Tercero, ‘ ¿Por qué Windows Update aplica las actualizaciones de esta manera? ¿No podría simplemente, digamos, aplicar las actualizaciones a una copia oculta de Windows y luego cambiar a esa copia en el próximo reinicio? ‘La respuesta a eso es’ Esa es una pregunta realmente difícil de responder, pero aquí hay algunas cosas en las que pensar ”.

  • Windows es grande Tener que tener dos copias de Windows usaría mucho espacio en disco. Cuando tienes una PC de escritorio con un disco duro de 4TB, eso no es tan importante. Pero la gente usa cada vez más tabletas y computadoras portátiles convertibles con SSD pequeños. En esos sistemas, es realmente difícil justificar una copia adicional de Windows solo para que las actualizaciones funcionen sin problemas.
  • Tener una copia oculta de Windows para las actualizaciones resolvería algunos problemas pero presentaría otros (como ‘¿Va a perjudicar el rendimiento si ahora tenemos que estar pendientes de las escrituras en el directorio’ real ‘de Windows y copiar esos cambios en el oculto para que todo permanece sincronizado?
  • Como sucede, las actualizaciones de Windows ya hacen algo así, pero sin la sobrecarga de una copia extra completa de Windows. Supongamos que necesitamos instalar una nueva versión de un componente de Windows. Así es como lo hacemos:
    • Primero, ‘organizamos’ la actualización. Eso significa que copiamos los archivos de la actualización en el directorio “WinSXS” inescrutable en su directorio de Windows. (Significa “Windows Side-by-Side”, por cierto). Y hacemos una nota: “Bien, en el próximo reinicio, esta cosa debe aplicarse realmente”.
      • Por cierto, el directorio WinSXS también contiene todos los componentes que están instalados actualmente . “¡Oye, espera, señor desarrollador! ¿No significa eso que realmente tienes una segunda copia de Windows allí? ¿No dijiste que eso era malo ? Algo así, pero no. Los archivos que ve en WinSXS no son realmente copias separadas de los archivos de Windows; son ‘enlaces duros’. Si busca, por ejemplo, ReachFramework.dll, lo encontrará en los directorios normales de Windows y en WinSXS; pero en realidad solo hay una copia del archivo. Piense en ello como una casa individual con dos direcciones; si vas a cualquier dirección, terminarás en el mismo lugar.
    • Luego esperamos el reinicio.
    • Luego, durante el reinicio (cuando se ejecutan muy pocas cosas para no tener que preocuparnos de que los archivos estén ocupados, etc.), “proyectamos” la actualización. Eso significa que tomamos esos archivos nuevos que se encuentran en el directorio WinSXS y creamos nuevos ‘enlaces duros’ para ellos en los lugares correctos en los directorios regulares de Windows. (Y borramos los ‘enlaces duros’ del directorio regular de Windows para los archivos antiguos). Eso significa que ahora los archivos nuevos están ubicados en los lugares correctos, y todavía tenemos copias de los archivos antiguos. Entonces, si algo sale mal, podemos revertir el proceso y restablecer el directorio normal de Windows a la forma en que estaba.

Realmente deseamos poder hacer reinicios completamente innecesarios. Pero el hecho desafortunado es que hacer eso requeriría cambios en Windows que probablemente romperían la compatibilidad con una gran cantidad de programas. Y eso probablemente dolería más que los reinicios.

Depende. Si el reinicio se realiza como un reinicio normal, no habrá ningún problema. Sin embargo, si quiere decir que la energía se interrumpe repentinamente, depende del sistema de archivos. Debido a que NTFS es un sistema de archivos de registro en diario, debería ser capaz de sobrevivir / corregir (usando chkdsk: revertir las transacciones del sistema de archivos no confirmadas) tal evento.

Lo más probable es que no pase nada malo. El proceso de desfragmentación de Windows es transaccional y no se marca ningún bloque como movido hasta que la operación de copia se haya realizado y verificado. Una pérdida de energía o un reinicio durante la desfragmentación interrumpiría el proceso, pero no dejaría el archivo en el que estaba trabajando codificado.

Las instalaciones de Windows hacen todo lo posible para no ser interrumpidas. Idealmente, instalarían las actualizaciones en un sistema de archivos oculto, luego, cuando esté todo instalado, voltee un poco en algún lugar para que aparezcan los archivos ocultos, pero no es tan inteligente, a pesar de que esa idea ha existido durante 50 años. Windows no es muy inteligente.

De todos modos, si se reinicia, podría ver un archivo presente que significa “instalación iniciada pero no terminada, volver a salir”, y restauraría el último punto de restauración. Eso generalmente funciona.

La desfragmentación nunca es algo problemático, ya que los movimientos de las piezas de datos son siempre atómicos.