Windows 2008: el directorio WinSXS crece sin control, bloqueando el servidor

62

Ejecuto un servidor virtual (alojado de forma remota) con Windows 2008 Server para un cliente. Inicialmente, tenía 10 GB de espacio. Durante el transcurso de unas pocas semanas, durante las cuales no se hizo nada en la máquina, excepto el trabajo normal utilizando un sistema de icket 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 también han sido consumidos por winsxs, y nuevamente no puedo trabajar en la máquina. Winsxs ahora tiene 8 GB de tamaño, 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 para todos los archivos DLL que descarga en el proceso de actualización normal. Simplemente eliminar cosas allí se describe como mortalmente peligroso ya que contiene componentes vitales. No he encontrado ningún tipo de herramienta o instrucciones para identificar y eliminar aquellos archivos que ya no son necesarios.

¿Que puedo hacer? ¿Es este comportamiento normal y, si es así, cómo se gestionan otros servidores con espacio igualmente limitado? ¿Hay algo que pueda apagar o encender?

De los roles de servidor predefinidos, solo se activan los "Servicios de archivos" (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.

Editar: el problema persiste.

Nota: Soy consciente de que el directorio WinSXS consiste principalmente en enlaces simbólicos y que los usuarios a menudo entran en pánico al ver su tamaño. Aún así, de 15 GB de espacio, tengo 1,5 MB utilizados por programas y datos, y no queda nada . Me alegra poder acceder a la maldita máquina. * Ya he liberado 1 GB de datos, que Windows Windows llenó en 24 horas. Es como en una película de terror. Lo que he intentado:

  • Instalar SP2 (que viene con compcln.exe) no es una opción, ya que el espacio en disco no es suficiente para eso.
  • No hay vsp1clean.exe en la máquina, probablemente porque SP1 ya se ha fusionado con el sistema. De hecho, no existe ningún archivo llamado * cln.exe en ninguna parte.
  • No hay instantáneas. Las instantáneas no están activas.
  • Por lo que puedo decir, no hay puntos de restauración del sistema activos.
  • La única función de servidor activada es "servidor de archivos".
  • La función estándar de "limpieza" (clic derecho en C: unidad) me ofrece unos desconcertantes 2 MB en contenido basura y archivos temporales de Internet.
  • El uso de uno de los scripts de "limpieza winsxs" no es una opción para mí, todos se ven demasiado turbios. No puedo encontrar nada directamente de Microsoft que aborde este problema.
Pekka apoya a GoFundMonica
fuente
¿Resolviste esto al final?
UpTheCreek
@UpTheCreek en realidad, lamentablemente, no! El proveedor nos otorgó 5 GB de espacio adicional en el VPS, que Windows Lucky no llenó. Pero el directorio de Windows todavía ocupa 20 GB. El contrato terminará pronto, y cambiaremos las empresas de hosting.
Pekka admite GoFundMonica el

Respuestas:

24

El directorio WinSxS no ocupa casi el espacio informado por Explorer, ya que utiliza enlaces duros a archivos físicos, no a archivos reales. Explorer solo tiene problemas para informar el tamaño de los enlaces duros.

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

En cuanto a su problema real de uso del disco: puede intentar ejecutar COMPCLN.EXE para ver si puede limpiar cualquier paquete de servicio antiguo y archivos de reparación, lo que debería ayudar un poco. También miraría cualquier directorio de registro para ver si hay algo más.

Christopher_G_Lewis
fuente
Esto suena bien, sin embargo, el directorio de Windows parece estar consumiendo> 12GB (es un espacio de 15GB, los programas y los datos de trabajo ocupan 2.5 GB, y no queda espacio). Compcln.exe no existe en 2008, ¿alguien conoce un comando similar allí?
Pekka admite GoFundMonica
Posiblemente solo W2K8 SP2: news.softpedia.com/news/…
Christopher_G_Lewis
SP2 suena interesante, pero el servidor está tan lleno que ni siquiera puedo instalarlo. Le he pedido al proveedor un espacio adicional durante unos días, pero en el pasado no han demostrado ser demasiado útiles. Esto es realmente preocupante y está causando problemas graves. Estoy abriendo una recompensa y agregando algunas capturas de pantalla.
Pekka admite GoFundMonica el
¿Supongo que reimaginar la máquina y ejecutar actualizaciones no es una opción para ti?
blueberryfields
Solo como el último, el último recurso, ya que he invertido mucho trabajo para configurar todo ... Eso probablemente lo resolvería, pero estaría muy feliz de solucionarlo.
Pekka admite GoFundMonica el
18

Yo estaba en el mismo barco que tú. Tuve 5 máquinas virtuales nuevas de 2008 y las estuve viendo constantemente requieren más y más espacio en disco durante el último año. Déjame ilustrar con windrstat.

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

texto alternativo 3,8 GB de directorio winsxs

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

texto alternativo Directorio de 5.4GB winsxs

Finalmente, una captura de pantalla de un nuevo servidor 2008R2 : texto alternativo directorio de 5.4x winsxs

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

Esto significa dos cosas (creo):

  1. Si bien hay algunos enlaces duros en winsxs, los únicos enlaces duros deberían ser los de las DLL actuales. En otras palabras, los archivos DLL actuales que están activos en el sistema están vinculados de nuevo a esta carpeta winsxs.

  2. Todas las versiones anteriores de las DLL todavía están disponibles y se respaldan en el directorio winsxs. Como puede ver en todos los ejemplos, si el directorio winsxs realmente fuera "en su mayoría enlaces duros", no habría forma de que ocupara más del 50% del uso actual de su disco. Ahora, incluso si fuera cierto que el directorio winsxs es "en su mayoría enlaces duros", el 50% de uso significaría que toda su unidad C: se volvió a vincular al directorio winsxs.

Lo intenté todo. Eliminar archivos antiguos, desinstalar parches, eliminar los directorios de parches "$". Todo.

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

WinSxS no es solo un directorio molesto, es una nueva metodología para todos los desarrolladores de Windows. WinSxS no desaparecerá pronto. Los desarrolladores están utilizando WinSxS y dependen de que esté allí hasta que esté disponible una nueva metodología de archivo DLL o resolución de dependencia.

En cada nuevo cuadro de Windows 2008/7 / Vista siento que un C de 30 GB: es casi correcto. Suficiente espacio (por ahora) para parches, registros y algunas aplicaciones.

No puedo esperar hasta que alguien descubra todo esto y comience a reactivar las DLL de pre-parche con manifiestos falsos , que se convierten en vectores de ataque / explotación.

Joseph Kern
fuente
1
Gracias, si no aparece ninguna forma milagrosa de adelgazar, WinSXS aceptará esta respuesta por dejarme saber que no soy el único a quien le está sucediendo esto. Lástima que no parece haber una solución. La actualización a 30 GB será difícil de justificar, ya que es un alojamiento externo pago. Tal vez lo rebaje a 2003, pero eso también suena tonto ...
Pekka apoya a GoFundMonica el
1
Sí, tampoco estoy muy entusiasmado con esto. Parece que winsxs no es una colección de enlaces duros. Por el contrario, proyecta enlaces duros en el resto del sistema, pero también parece haber cierto desacuerdo al respecto. winvistaclub.com/f16.html ...
Joseph Kern el
También quería mencionar que no tengo roles de servidor habilitados en ninguno de los servidores que utilicé como ejemplos. El servidor de producción es un servidor apache tomcat. Y el programa que utilicé para encontrar el espacio de la unidad es windirstat.info
Joseph Kern el
55
MS declara 32 GB como requisito mínimo de disco: microsoft.com/windowsserver2008/en/us/system-requirements.aspx
Christopher_G_Lewis
5

15 GB no serán suficientes en mi experiencia, especialmente si es una máquina de 64 bits con alguna actividad ...

Extender el disco VPS y luego la partición del sistema debería ser fácil sin tener que reinstalar nada, por costoso que sea. En primer lugar, ofrecer un disco de sistema de menos de 60 GB para un VPS de Windows Server moderno no parece pensado, incluso si ~ 30 GB podrían reducirlo por un tiempo: 7

La instalación de 32 bits eliminará un poco de sobrecarga, y la elección de un Server Core eliminará mucho. Mi servidor de archivos Core Server 2008 de 32 bits que ejecuta svnserve, dfs, servicio de impresión, etc. y se actualiza regularmente es de alrededor de 5 GB ... mientras que mi Server 2008 Standard de 64 bits que sirve aplicaciones web (asp.net y php usando IIS) ocupa 30 GB en este momento. Ambas métricas están excluyendo los almacenes de datos / particiones, por supuesto, solo el sistema de Windows, y ambos son solo ejemplos de que tengo discos del sistema Server 2008 de 64 bits que ocupan de 10 a 35 GB en este momento.

Cada herramienta, actualización o aplicación que instale hará crecer el directorio winsxs y desinstalar cosas no siempre tendrá ningún efecto en winsxs ya que el sistema puede pensar que esas herramientas utilizan esas dependencias.

Oskar Duveborn
fuente
5

Probablemente sea demasiado tarde para usted y solo se base en la experiencia de Vista, pero:

  1. No creas a los que dicen 'es sobre todo enlaces duros, por lo que la carpeta no es tan grande como parece'; esto es cierto, pero si te quedaste sin espacio en disco, era demasiado grande.
  2. La única "cura" sugerida es eliminar las aplicaciones que agregaron la hinchazón a la carpeta, pero no hay ninguna forma documentada que yo sepa para encontrar a los culpables.
  3. Mi 'cura' después de no encontrar respuestas satisfactorias fue eliminar brutalmente las carpetas más grandes (y no deseadas), por ejemplo:

    • 6 versiones de 'Búsqueda en lenguaje natural de Microsoft', a ~ 300kB cada una
    • Muchas fuentes orientales que nunca usaré (a veces 6 vns de estas, en su mayoría idénticas)
    • etcétera etcétera.

Suponiendo que comience con una buena copia de seguridad (imagen), ¡pruébelo y vea!

Martin Gerhold
fuente
4

Si es posible, puede intentar mover WinSXS a otra partición como solución alternativa. Que yo sepa, no hay forma de deshacerse del contenido de WinSXS. Esta pequeña cosita linda está en el corazón de la operación Vista / Win2008, así que ... No he escuchado nada mejor al moverla 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 probé esto solo en Vista, no en Win2008 Server.

imagodei
fuente
Buena idea, pero en mi caso (este es un VPS sin almacenamiento alternativo) desafortunadamente no es una opción.
Pekka admite GoFundMonica el
--- y hacer una imagen no es tan fácil por la misma razón; de lo contrario, haría una e intentaría ejecutarla en mi propia máquina para un examen más detallado.
Pekka apoya a GoFundMonica el
3

Si el principal culpable es WindowsUpdate, entonces diría que su única alternativa para comprar más espacio o realizar una cirugía de archivos del sistema es limitar el crecimiento causado por las actualizaciones de activación de Microsoft.

Dado que utiliza principalmente una plataforma de aplicaciones que no es de Microsoft, probablemente pueda prescindir del 90-95% de las actualizaciones "importantes" que se rechazan.

Por lo tanto, lo que puede hacer es desactivar las actualizaciones automáticas y luego ser MUY selectivo sobre qué actualizaciones "importantes" aplicar. Solo aplique aquellos que corrigen vulnerabilidades que comprometen DIRECTAMENTE su plan de seguridad. La mayoría de las actualizaciones "importantes" probablemente no se apliquen a su escenario de seguridad, y si lo hacen, probablemente pueda modificar su plan de seguridad para que no las tenga (por ejemplo, no use IE en el servidor, use servicios de archivos alternativos, ajuste la seguridad de la red) .

Matias Nino
fuente
3

Si WinDirStat y el sistema operativo en sí (solo mirado en Mi PC) informan la misma cantidad de espacio utilizado, es irrelevante si no cuenta los tamaños como enlaces duros. Si el sistema operativo cree que no tiene espacio, ESTÁ FUERA DE ESPACIO.

Tengo este problema en un Storage Server 2008 y un DC (Server 2008). No se han instalado otros programas, excepto las actualizaciones de Windows en DC, ambos servidores consumen 15 GB de espacio en WinSXS. HP preinstaló el servidor de almacenamiento con 40 GB en C :, por lo que también estoy sufriendo este problema. Hasta 5 GB de espacio libre.

Esto se solucionó en Windows 8 / Server 2013 mediante el uso de DISM para limpiar las actualizaciones reemplazadas (dism.exe / online / cleanup-image / startcomponentcleanup), por lo que claramente este es un problema que reconocieron, desafortunadamente sin otra solución que la actualización para aquellos atrapados con 2008

NickIzk99
fuente
3

En Windows Server 2008 R2 puede usar DISM para limpiar WinSxS, por supuesto, no podrá deshacer las actualizaciones después de hacer esto. Aquí hay una explicación: http://www.sqlskills.com/blogs/glenn/how-to-reclaim-disk-space-in-your-windowswinsxs-directory-on-windows-server-2008-r2-sp1/

En resumen, debe ejecutar el siguiente comando como administrador:

DISM.exe /online /Cleanup-Image /spsuperseded

Sé que esta podría no ser una solución relevante para usted, ya que tiene Windows Server 2008 (no R2 aparentemente), pero encontré esta pregunta cuando busqué una solución para R2, por lo que podría ser útil para algunas personas.

Ynhockey
fuente
esto elimina solo los archivos pre sp1, no los archivos de las revisiones posteriores.
Hubert Kario
1

Un par de sugerencias:

  • ¿Dónde está tu archivo de intercambio?

  • Configure una máquina de prueba con el mismo software para ver si puede replicar el problema. Esto definitivamente no es normal, y lo único en lo que puedo pensar es que algo en esa caja está modificando constantemente una DLL (o algo así) y, por lo tanto, Windows está constantemente haciendo copias de seguridad.

15 GB está en el lado más bajo para una instalación de Windows 2008: mi unidad C: estándar para Windows 2008 es de 60 GB.

John Röthlisberger
fuente
Los 15 GB son del tamaño del paquete del proveedor de alojamiento virtual y cada extensión (comenzamos con 10 GB) es muy costosa. Es por eso que no puedo mover el archivo de intercambio a ningún otro lado.
Pekka admite GoFundMonica el
Oh, lo olvidé: por la misma razón, replicar la máquina no es tan fácil de hacer. Será el último recurso a menos que algo más funcione.
Pekka admite GoFundMonica el
Entonces cambie de proveedor.
TomTom
1

http://tech.xlab.si/2009/07/move-winsxs-folder/

Encontré este artículo pero nunca lo probé. Parece que hay una manera de moverse sobre la carpeta winsxs. si alguien puede intentar esto, por favor, hazlo y avísame

tecnología inteligente
fuente
Ese es el enlace de la respuesta de imagodei.
Cees Timmerman
1

Los requisitos del sistema dados por Microsoft para Server 2008 son "Espacio en disco: mínimo 32 Gb o más".

http://www.microsoft.com/windowsserver2008/en/us/system-requirements.aspx

¿Por qué crees que puede funcionar cómodamente en la mitad de ese espacio?

TessellatingHeckler
fuente
Alquilo una solución VPS de un gran proveedor de hosting que originalmente era un paquete de 10GB con el servidor 2008 preinstalado. Supongo que deben haber provisto esto de alguna manera. Los grandes proveedores tienen paquetes de Windows de 10 GB o 20 GB: consulte, por ejemplo, bit.ly/h0AZsP . El proveedor me dijo que el mío es un caso extraño
Pekka apoya a GoFundMonica el
Mi error, me he vinculado a los requisitos de Server 2008 R2 SP1. Server 2008 requiere como mínimo 8 Gb ( microsoft.com/latam/windowsserver2008/sysreqs.mspx) , pero aún así recomienda 40 Gb.
TessellatingHeckler
Gracias por el enlace. Sin embargo, podría ser que el sistema operativo se actualizó en el medio - investigaré
Pekka es compatible con GoFundMonica el
0

Una opción para usar: si es solo un VPS viejo y barato que usa para cosas simples, entonces vale la pena habilitar la compresión NTFS en el disco o en carpetas específicas:

Esto podría exprimir algo de espacio fuera de la unidad. Los artículos dicen que es para XP pero son los mismos pasos en Win7 / 2008:

David d C e Freitas
fuente
0

Me he encontrado con el mismo problema. Seguramente WinSxs es en parte culpable ... Pero creo que el problema se debe en parte a herramientas como WinDirStat que cuentan los tamaños de archivos y uniones a archivos de la misma manera. Una unión es solo un puntero al archivo, no un duplicado de todos los bloques que componen el archivo.

He descubierto que VSS es un gran culpable de este problema. Use los siguientes comandos para ver si VSS está consumiendo demasiado espacio en su disco, reclame ese espacio o establezca un límite menor:

vssadmin list shadowstorage

vssadmin Eliminar ShadowStorage / For = C: / On = C:

vssadmin Redimensionar ShadowStorage / For = C: / On = C: / MaxSize = 20%

Clayton
fuente