JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Cómo reducir (mucho) el tamaño de tu instalación de Windows y Windows Server

Afrontémoslo: Windows es un sistema operativo que "se come" muchísimo espacio en disco. Ocupa muchísimo nada más instalarlo, pero es que a medida que pasa el tiempo todavía va ocupando más y más espacio. Los motivos son variados: cachés que se hacen de todo tipo de recursos, archivos temporales, configuraciones que se guardan en el perfil de los usuarios y, sobre todo, actualizaciones del propio sistema operativo.

Si dispones de un disco duro generoso normalmente esto no es una gran molestia. Pero si tienes restricciones de espacio (por ejemplo en un tablet) o cada GB extra ocupado te cuesta dinero (en la nube), esto puede llegar a ser un problema grave.

Lo primero que todos intentamos es borrar cosas innecesarias utilizando la utilidad que viene integrada en Windows:

La cual (sobre todo ejecutándola en modo administrador) es capaz de borrar archivos temporales, cachés y algunos archivos del sistema que ya no se necesitan.

Sin embargo los ahorros son más bien exiguos. Así que si necesitamos liberar más espacio lo siguiente suele ser utilizar algún programa para analizar el espacio en disco, y así identificar qué carpetas son las responsables de consumir más espacio.

Por supuesto, la carpeta más glotona es casi siempre "C:\Windows", y más en concreto, dentro de ésta, "C:\Windows\WinSxS". Esta carpeta siempre ocupa unos cuantos GB, y además va aumentando con el tiempo. No es raro que ocupe 10, 12 o 15GB de tu precioso espacio que podría ser utilizado para otras cosas. 

Esta carpeta (Windows Side by Side, de ahí su nombre) contiene la caché nativa de ensamblados. Este pomposo nombre viene de los tiempos de Mari Castaña Windows Millenium (Windows Me: si no te suena, mejor para ti), y se suponía que iba a ser la solución del famoso "Infierno de las DLL" que infestaba a los sistemas operativos de por aquel entonces. En la actualidad sigue estando presente en todas las versiones de Windows, incluso las más recientes, y almacena todo tipo de basura electrónica al más puro síndrome de diógenes digital. De hecho, desde Windows Vista, almacena también los componentes del propio sistema operativo, por lo que, cuando una biblioteca o un componente del sistema operativo se actualiza, la versión vieja se archiva aquí, al igual que la nueva, que ahora apunta (mediante un hardlink) a la biblioteca real a la que está sustituyendo. De esta forma, si hay necesidad de utilizar dos versiones diferentes de lo mismo, las tienes aquí, o si hay que echar atrás alguna actualización, también podrías hacerlo.

Lo que ocurre es que lo más habitual es que esta carpeta permanezca llena de cosas obsoletas durante muchísimo tiempo, ocupando mucho espacio en disco.

OJO: si vas a mirar el espacio ocupado en disco por "C:\Windows" con el explorador de archivos, el tamaño que te dará es mayor que el real. El motivo es precisamente lo que comentamos de los Hardlinks. Un hardlink permite que un mismo archivo esté en más de un sitio al mismo tiempo, pero que realmente solo esté guardado en disco una única vez. Pero el explorador de archivos no los gestiona bien y los cuenta todas las veces. Como muchos de los archivos que hay, por ejemplo, en "C:\Windows\System32" en realidad son hardlinks a archivos de WinSxS, la carpeta del sistema parece ocupar mucho más de lo que en realidad ocupa. Si usas un programa que tenga en cuenta esto verás que el espacio ocupado no es en realidad tanto como parece. Eso sí, WinSxS está lleno de cosas inservibles a priori que sería bueno eliminar si andamos justos de espacio.

¿Podemos eliminar el contenido de WinSxS?

La respuesta es no. No directamente. Nos podríamos cargar partes importantes del sistema y dejarlo inutilizado, pero es que además tampoco podríamos debido a los permisos necesarios, ya que es una carpeta especialmente protegida por el sistema.

Entonces ¿qué podemos hacer?

Por suerte todas las versiones modernas de Windows ofrecen una herramienta de línea de comandos que sirve precisamente para lidiar con esta situación. Se trata de la Herramienta Deployment Image Servicing and Management, o dicho de modo más breve, DISM. Esta herramienta apareció con Windows Vista SP1 y Windows Server 2008, por lo que la tienes en cualquier sistema operativo posterior.

Para sacarle partido solo tenemos que abrir una línea de comandos como administradores y ejecutar un par de instrucciones.

Lo primero es averiguar cuánto espacio tenemos ocupado por WinSxS y cuánto realmente se puede liberar. Esto se consigue con esta instrucción:

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

Por ejemplo, esta captura proviene de aplicar el comando en una máquina virtual con Windows Server 2016 recién instalado en un conocido proveedor Cloud:

Fíjate en cómo nos indica que el explorador de Windows nos diría que la carpeta ocupa casi 23GB!, aunque en realidad ocupa 19,03GB (que sigue siendo una barbaridad). Dado que la máquina virtual viene con unos exiguos 40GB de disco duro, todo lo que podamos liberar va a ser una gran ventaja para nosotros.

Nos indica que hay 5,79GB compartidos con Windows. Esos no los podemos eliminar, pero los otros más de 13GB que hay entre backups, características deshabilitadas del sistema y cachés y datos temporales, sí que podremos recuperarlos, así que en un caso así es un beneficio enorme. En esta máquina virtual en concreto, supone ¡ahorrar más de un 32% de espacio en disco!.

Para lograrlo en la misma línea de comandos escribe:

Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase

Esto le indica a DISM que libere todo el espacio que pueda y que deje solo las últimas versiones de los componentes del sistema. Con esto conseguiremos el máximo ahorro, pero no podremos volver atrás si necesitamos deshacer una actualización (algo que raramente haremos de todos modos). Si llevas bastante tiempo con el sistema actualizado y funcionando correctamente no deberías tener problema alguno por hacerlo.

El proceso tarda bastante rato, y podemos ver el resultado final en la pantalla así:

No nos indica gran cosa, pero podemos ver el log en la ruta indicada y si comprobamos el espacio libre en disco desde el explorador de archivos, veremos que hemos ganado un montón de GBs para ser utilizados para otras cosas más útiles.

Windows 10 y Windows Server 2016 se supone que ejecutan este proceso automáticamente de vez en cuando, pero probablemente no de modo exhaustivo como hemos hecho nosotros, pues esta carpeta no de deja de crecer. Tampoco hay que obsesionarse con hacer esto cada pocos días, pero seguramente hacerlo una vez al año (o cuando veamos que la carpeta de "desmadra") nos vendrá muy bien.

¡Espero que te sea útil!

José Manuel Alarcón José Manuel Alarcón
Fundador de campusMVP.es, el proyecto de referencia en formación on-line para programadores en lengua española. Autor de varios libros y cientos de artículos. Galardonado como MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.
Descarga GRATIS mi último libro (no técnico): "Tres Monos, Diez Minutos".
Banner

Comentarios (6) -

¡¡Lo he ejecutado y ahora no me va youporn!! :-D

No, en serio, dos preguntas: ¿El borrado de todo eso tiene en cuenta que tenga una app del año maricastaña que esté usando una  versión de dll de MFC (por poner un ejemplo) de maricastaña, que a su vez necesita una dll del "kelmer" que no es la actual (de maricastaña), y limpiará y dejará esa versión? ¿O es un "paso la escoba y ya veremos qué revienta" como últimamente nos tiene acostumbrados MS?

PS: Oye, y haz preguntas más sencillas para el anti-spam. :-P

Responder

¡Jarl!

Tampoco hace falta que reviente nada, ya falla él de por sí sin necesitad de ayuda de nadie.

Lo he pasado en mis dos únicos Windowses y... en un uno me dijo que se podían eliminar dos "packages". Después de dos pasadas con reinicio en medio, todavía queda por eliminar uno de ellos.

En el otro Windows, me da error 6428 (sobre que hay otra transacción pendiente -¿cuál?)... y de ahí no pasa.

Aparte de que el log generado es casi más largo que el espacio recuperado... En fin, lo típico de Microsoft.

Responder

by Jose M. Alarcon

Hola Rafael:

Eso eres tú que tienes los sistemas mal mantenidos :-P

Yo lo he pasado en bastantes equipos, pero sobre todo servidores, y m e ha ido bien en todos. De todos modos aunque te falle quitando algunas cosas, si te ayuda a liberar varios GB siempre es algo estupendo.

Respecto a lo otro que preguntas, en teoría debería ir porque se supone que los que están en uso no te los quita, solo las versiones antiguas que no están en uso. Pero vete a saber.

Como te digo, yo no he tenido problemas.

Saludos,

Responder

Eres muy maligno, pero mucho mucho. :-)

Al menos a mi no me ha jodido nada, lo que es de agradecer. :-D

Responder

Kevin Tanza

La verdad es que no estaba al tanto de esta información; le agradezco mucho que le haya compartido :D

Responder

Iñaki Ayucar

Muy bueno Jose!

Responder

Agregar comentario