62 votos

Windows 2008: El directorio WinSXS crece incontroladamente, bloqueando el servidor

Dirijo un servidor virtual (alojado remotamente) con Windows 2008 Server para un cliente. Inicialmente, tenía 10 GB de espacio. En el transcurso de unas pocas semanas - durante las cuales nada se hizo en la máquina, excepto el trabajo normal utilizando un sistema de tickets basado en la web - , Windows comenzó a llenar su infame directorio "winsxs" tanto que al final, el disco duro estaba lleno y tuvimos que pedir otros 5 GB. Ahora, tres semanas después, estos 5 GB han sido consumidos también por winsxs, y de nuevo no puedo trabajar en la máquina. Winsxs tiene ahora 8 GB y el resto del directorio de Windows 5 GB.

He encontrado varias fuentes en la web que describen el mismo problema. Aparentemente, Windows 2008 almacena todas las versiones de idioma de todas las DLL que descarga en el proceso normal de actualización. El simple hecho de eliminar cosas de ahí se describe como mortalmente peligroso ya que contiene componentes vitales. No he encontrado ningún tipo de herramienta o instrucciones para identificar y eliminar esos archivos que ya no son necesarios.

¿Qué puedo hacer? ¿Es este un comportamiento normal y, si lo es, cómo se las arreglan otros servidores con un espacio igualmente limitado? ¿Hay algo que pueda desactivar o activar?

De los roles predefinidos del servidor, sólo está activado "File services" (o como se llame en inglés, es un servidor suizo). Además, he instalado Apache, mySQL y Subversion. Las actualizaciones automáticas están activadas.

Edición: El problema persiste.

Nota: Soy consciente de que el directorio WinSXS se compone principalmente de enlaces simbólicos y que los usuarios a menudo se asustan al ver su tamaño. Aún así, de 15 GB de espacio, tengo 1,5 MB utilizados por programas y datos, y nada a la izquierda. Me alegro de poder acceder a la maldita máquina. *Ya he liberado 1 GB de datos, que fue llenado por el Windows en 24 horas. Es como en una película de terror. Lo que he probado:

  • Instalar el SP2 (que viene con compcln.exe) no es una opción, ya que el espacio en disco no es suficiente ni siquiera para eso.
  • No hay vsp1clean.exe en la máquina, probablemente porque el SP1 ya se ha incorporado al sistema. De hecho, no existe ningún archivo llamado *cln.exe en ninguna parte.
  • Hay no copias en la sombra. Las copias sombra no están activas.
  • Por lo que veo, no hay puntos de restauración del sistema activos.
  • El único rol de servidor activado es el de "servidor de archivos".
  • La función estándar de "limpieza" (clic con el botón derecho del ratón en la unidad C:) me ofrece unos desconcertantes 2 MB en contenido de basura y archivos temporales de Internet.
  • Utilizar uno de los "winsxs de limpieza" scripts que hay por ahí no es una opción para mí, todos parecen demasiado turbios. No puedo encontrar nada directamente de Microsoft abordar esta cuestión.

24voto

JCCyC Puntos 328

El directorio WinSxS no ocupa ni de lejos el espacio reportado por el Explorador ya que utiliza Hard Links a archivos físicos, no archivos reales. El Explorador sólo tiene problemas para reportar el tamaño de los enlaces duros.

Este artículo sobre Espacio en disco (referenciado aquí http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-Windows-7/ ) tiene una gran explicación sobre el directorio WinSxS.

En cuanto a su problema de uso de disco real - Usted puede tratar de ejecutar COMPCLN.EXE para ver si se puede limpiar cualquier paquete de servicio de edad y los archivos de corrección caliente, que debería ayudar un poco. También miraría los directorios de registro para ver si hay algo más.

18voto

Joseph Kern Puntos 7103

Yo estaba en el mismo barco que tú. Tenía 5 máquinas virtuales nuevas de 2008 y estaba viendo cómo requerían cada vez más espacio en disco durante el último año. Permítanme ilustrar con windrstat.

Aquí hay una captura de pantalla de un nuevo servidor 2008 :

alt text 3,8 GB directorio winsxs

Aquí hay una captura de pantalla de un servidor de producción 2008 :

alt text 5.4GB directorio winsxs

Por último, una captura de pantalla de un nuevo servidor 2008R2 : alt text 5.4GB directorio winsxs

Por lo que veo, no hay forma de truncar el directorio winsxs. WinSxS significa Windows Side-by-Side. En su intento de reducir los efectos del infierno de DLL (es decir, las dependencias), Microsoft decidió mantener cada versión de cada DLL instalada en su sistema en el directorio winsxs.

Esto significa dos cosas (creo):

  1. Aunque hay algunos enlaces duros en winsxs, los únicos enlaces duros deberían ser los de las DLL actuales. En otras palabras, las DLLs actuales que están activas en el sistema están vinculadas a esta carpeta winsxs.

  2. Todas las versiones anteriores de las DLLs siguen estando disponibles, y respaldadas en el directorio winsxs. Como puedes ver en todos los ejemplos, si el directorio winsxs fuera realmente "mayormente enlaces duros" no habría forma de que ocupara más del 50% de tu uso actual del disco. Ahora bien, incluso si fuera cierto que el directorio winsxs es "mayoritariamente hardlinks", un uso del 50% significaría que toda su unidad C: estuviera hardlinked en el directorio winsxs.

Lo he intentado todo. Borrando archivos antiguos, desinstalando parches, borrando los directorios de parches "$". Todo.

Finalmente terminé creciendo todas las particiones C: en todos mis servidores a 30GB cada una. Esto sólo será una solución temporal, ya que el directorio winsxs seguirá creciendo. Sin embargo, hay buenas noticias, ya que la última versión de NTFS permite hacer crecer las particiones sin necesidad de reiniciar. Qué conveniente.

WinSxS no es sólo un directorio molesto, es una nueva metodología para todos los desarrolladores de Windows. WinSxS no desaparecerá pronto. Los desarrolladores utilizan WinSxS y dependen de él para estar ahí hasta que esté disponible una nueva metodología de archivo de DLL o de resolución de dependencias.

En cada caja nueva de Windows 2008/7/Vista creo que una C: de 30GB es casi correcta. Suficiente espacio (por ahora) para parches, registros y algunas aplicaciones.

No puedo esperar a que alguien se dé cuenta de todo esto y empiece a reactivar las DLLs pre-parche con rogue-manifests que se convierten en vectores de ataque/explotación.

5voto

Guy Puntos 16718

Según mi experiencia, 15 GB no son suficientes, especialmente si se trata de una máquina de 64 bits con cierta actividad...

Ampliar el disco del VPS y luego la partición del sistema debería ser fácil sin tener que reinstalar nada, por muy caro que sea. Ofrecer menos de 60GB de disco de sistema para un VPS moderno de Windows Server no parece pensado en primer lugar, incluso si ~30GB podría cortarlo durante un tiempo :7

Ir a una instalación de 32 bits eliminará un poco de sobrecarga, e ir a un Server Core eliminará mucho. Mi servidor de archivos Server 2008 Core de 32 bits, que ejecuta svnserve, dfs, servicio de impresión, etc. y se actualiza regularmente, ocupa unos 5 GB... mientras que mi Server 2008 Standard de 64 bits, que da servicio a las aplicaciones web (asp.net y php mediante IIS), ocupa 30 GB en este momento. Ambas métricas están excluyendo los almacenes de datos/particiones, por supuesto, sólo el sistema de Windows, y ambos son sólo ejemplos Tengo discos de sistema de 64 bits Server 2008 que ocupa cualquier cosa de 10 a 35 GB en este momento.

Cada herramienta, actualización o aplicación que instales hará crecer el directorio winsxs y desinstalar cosas no siempre tendrá efecto en winsxs ya que el sistema puede pensar que esas dependencias son utilizadas por otras herramientas.

5voto

Martin Gerhold Puntos 41

Esto es probablemente demasiado tarde para usted, y sólo se basa en la experiencia de Vista, pero:

  1. No creas a los que dicen que "la mayoría son enlaces duros, por lo que la carpeta no es tan grande como parece" - esto es cierto, pero si te quedas sin espacio en el disco, era demasiado grande.
  2. La única "cura" que se ha sugerido es eliminar las aplicaciones que han añadido la hinchazón a la carpeta, pero no hay ninguna forma documentada que yo conozca para encontrar a los culpables.
  3. Mi "cura" tras no encontrar respuestas satisfactorias fue eliminar brutalmente las carpetas más grandes (y no deseadas), por ejemplo

    • 6 versiones de 'Microsoft natural language search', a ~300kB cada una
    • Muchas fuentes orientales que nunca utilizaré (a veces 6 vns de estas, la mayoría idénticas)
    • etc., etc.

Suponiendo que se parte de una buena copia de seguridad (imagen), ¡pruébalo y verás!

4voto

imagodei Puntos 174

Si es posible, podría intentar mover WinSXS a otra partición como solución. Que yo sepa no hay ninguna forma de eliminar el contenido de WinSXS. Esta cosita linda está en el corazón del funcionamiento de Vista/Win2008, así que... No he oído nada mejor que moverlo a otra partición.

Aquí hay un enlace a un blog que describe cómo hacerlo: Haga clic en

Te sugiero que hagas una copia de seguridad completa (incluso mejor: una imagen) de toda tu partición C: antes de intentar el procedimiento. Tenga en cuenta que he probado esto sólo en Vista, no en Win2008 Server.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: