Para todos los que gestionamos infraestructuras virtuales, ya sea con VMWare, Hyper-V, repleta de servidores Windows, una de las premisas es aligerar al máximo el espacio que estos servidores nos ocupan en nuestro almacenamiento.
Con ese objetivo en mente veremos como podemos aligerar nuestro Windows vaciando la carpeta WinSXS. Si, habéis leído bien, WINSXS, pero tenemos que ser muy conscientes de lo que estamos haciendo y los riesgos que corremos.
Lo primero es saber que es esta carpeta, pues sin ir más lejos es un almacén de archivos de uso para nuestro SO. Una de las cosas que encontramos en esta carpeta son los ficheros para instalar los roles y características de nuestro Windows, también almacena los updates que vamos instalando sobre nuestro SO, encontraremos drives, dll, etc.. En definitiva, ficheros que a priori no vemos importantes para el día a día, pero críticos cuando no disponemos de ellos.
Veamos cómo podemos saber lo que realmente ocupa nuestra carpeta WinSXS.
dism /Online /Cleanup-Image /AnalyzeComponentStore
Entrando en las Propiedades de la carpeta ubicada en C:\Windows\WINSXS
Eliminar roles y características
Este proceso es el más seguro para vaciar nuestra carpeta WinSXS, ya que lo que estamos haciendo es vaciar el repositorio de nuestros roles y características. ¿Y si al cabo del tiempo necesito instalar uno nuevo? Podemos recurrir a nuestro DVD de instalación de de Windows para lanzar la instalación del rol o característica, por lo que estamos a salvo de instalar cualquier servicio en un futuro.
Con esta instrucción podemos ver los servicios que tenemos instalados, disponible o eliminados.
Get-WindowsFeature
Podemos eliminar un servicio con el siguiente comando. Por ejemplo, Hyper-V.
Uninstall-WindowsFeature Hyper-v -Remove
Con esta otra instrucción podemos hacer que se eliminen todos los servicios disponibles (Available) sin ir uno a uno ejecutando la instrucción anterior.
Get-WindowsFeature | Where-Object {$_.installstate -eq "Available"} | Uninstall-WindowsFeature -Remove
Volvemos a comprobar el estado de nuestros roles y características con el comando anterior y veremos que salen como Removed.
Get-WindowsFeature
Si comprobamos ahora el tamaño de nuestra carpeta WinSXS veremos que se ha reducido.
NOTA. Si queremos instalar un rol o característica que hemos eliminado deberemos usar esta instrucción con el DVD de Windows introducido, en mi caso en la D:. > Install-WindowsFeature "nombre del servicio" -Restart -Source wim:d:\sources\install.win:4 En número 4 es la versión que usamos de nuestro DVD, para saber cual tenemos debemos hacer los siguiente pasos Saber que version de Windows tenemos instalada. > systeminfo Que índice corresponde a nuestro DVD. > dism /get-wiminfo /getfile:d:\sources\install.wim
Eliminar paquetes de actualizaciones
Este procedimiento entraña un riesgo elevado, ya que lo que eliminamos los ficheros de instalación de las actualizaciones que tenga nuestro servidor, instalados, no podríamos desinstalar cualquiera actualización que nos diera problemas.
Podemos realizar este proceso de dos maneras, de manera gráfica con el limpiador de windows o por linea de comandos.
Limpiador de Windows
Primero debemos activar la característica de “experiencia de usuario” para poder usarlo.
Ahora accedemos al Limpiador de Windows y dejamos que analice nuestro equipo, como podemos ver nos devolverá el tamaño de las actualizaciones.
Ahora tan solo le damos a continuar para dejar que haga la limpieza. Este proceso, dependiendo del tamaño de las actualizaciones puede llevar horas, para que hos hagais una idea para los 400Mb ha tardado casi 1h y 30 min.
LÍNEA de comandos dism.exe
Podemos lanzar el mismo proceso, sin necesidad de instalar la experiencia de escritorio, por lo que evitamos cargar archivos innecesariamente. Desde nuestra línea de comandos (CMD) lanzamos el siguiente comando.
dism /online /cleanup-image /StartComponentCleanup
Ahora ya podemos comprobar nuestra carpeta WinSXS para ver el tamaño que nos ocupa después de realizarle la limpieza.
En mi caso hemos pasado de los 9,69Gb a los 5,78Gb, no es un milagro, pero ayuda a mantener controlados nuestros servidores o clientes.
Espero que os haya servido, si tenéis alguna duda comentar el post y haré lo posible para ayudaros.
Muy interesante.
Son tres pasos:
C:\Windows\WINSXS
Eliminar roles y características
Eliminar paquetes de actualizaciones (Este procedimiento entraña un riesgo elevado)
Alguna forma de automatizarlo en script powershell , si tienes varios servidores ?
Gracias
Se puede crear un PS1 con todas estas instrucciones y para poder lanzarlo a distintos servidores, lo mejor es usar PowerShell Remota. https://blogs.technet.microsoft.com/heyscriptingguy/2013/12/11/use-powershell-to-create-remote-session/
Saludos.