it-swarm-es.tech

¿Por qué la carpeta / winsxs crece tan grande, y puede hacerse más pequeña?

Una máquina virtual de Vista que uso solo tiene un disco duro virtual de 10 GB, y me preocupa que se quede sin espacio con el tiempo.

Utilicé TreeSize para buscar a los culpables ...

enter image description here

Y el principal culpable es que /winsxs o la carpeta "Windows Side-By-Side" .

enter image description here

¿Qué es la carpeta lado a lado de Windows? Bueno, eso se explica bastante bien aquí .

Todos los componentes del sistema operativo se encuentran en la carpeta WinSxS; de hecho, llamamos a esta ubicación el almacén de componentes. Cada componente tiene un nombre único que incluye la versión, el idioma y la arquitectura del procesador para el que fue creado. La carpeta WinSxS es la única ubicación en la que se encuentra el componente en el sistema; todas las demás instancias de los archivos que ve en el sistema se "proyectan" mediante un enlace directo desde el almacén de componentes. Permítame repetir ese último punto: solo hay una instancia (o copia de datos completa) de cada versión de cada archivo en el sistema operativo, y esa instancia se encuentra en la carpeta WinSxS. Así que desde esa perspectiva, la carpeta WinSxS es realmente la totalidad de todo el sistema operativo, conocido como "plano" en los sistemas operativos de nivel inferior. Esto también explica por qué ya no se le solicitarán medios cuando ejecute operaciones como el Comprobador de archivos de sistema (SFC), o cuando instale funciones y funciones adicionales.

Eso explica por qué la carpeta comienza en grande, pero no por qué se hace más grande con el tiempo: la respuesta a esa pregunta es la revisión. En versiones anteriores de Windows, la unidad atómica de servicio era el archivo, en Windows Vista es el componente. Cuando actualizamos un binario en particular, lanzamos una nueva versión de todo el componente, y esa nueva versión se almacena junto con la original en la tienda de componentes. La versión más alta del componente se proyecta en el sistema, pero la versión anterior en la tienda no se toca. La razón de ello es la tercera parte de por qué el almacén de componentes es tan grande.

Muchas otras personas también se quejan del tamaño de la carpeta/winsxs :

Un compañero de trabajo recientemente recibió la actualización de su computadora portátil cada dos años y estaba cargando su nueva computadora portátil con Vista. Por alguna razón, su disco duro C: fue particionado a solo 25GB y el resto del espacio reservado para un disco D mucho más grande.

De todos modos, después de cargar muchas actualizaciones de Windows, casi no le quedaba espacio en la unidad en C: y, por alguna razón, el directorio de WinSxS se había disparado a más de 8 GB.

Si bien sabía en qué consistía el directorio WinSxS (lado a lado de Windows), no estaba muy seguro de por qué ese directorio explotaría en tamaño tan rápido con las actualizaciones normales del sistema operativo.

No me importa realmente tener todos estos archivos duplicados por seguridad, pero me preocupo por la explosión de VM debido a un error de falta de espacio de disco. Entonces ... ¿Puede/winsxs reducirse de forma segura de alguna manera? No parece que pueda ser ..

Los administradores no deben, por ningún motivo, encargarse de limpiar el directorio/winsxs , ya que esto puede impedir que Windows Update y MSI funcionen correctamente después. La prevención de la eliminación accidental del directorio se logra al colocar un descriptor de seguridad sólido en el directorio que hereda a sus hijos.

Si esta carpeta/winsxs se hace más grande, tendré que volver a crear una imagen de esta máquina virtual ... ¡lo cual realmente no quiero hacer!

174
Jeff Atwood

Parece que finalmente hay una manera de hacer esto en Windows 8.1 service pack 1 y Windows Server 2012 R2 .

Herramienta de análisis de la tienda de componentes:

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

Al final de la exploración, el usuario recibe un informe de los resultados (tamaño real de la carpeta winsxs) de la siguiente manera:

analyzecomponentstore results

Limpieza de la tienda de componentes:

Hoy en día, la limpieza de la tienda de componentes debe ser activada manualmente por un usuario final, ya sea ejecutando DISM o usando el Asistente de limpieza de disco. Para que la limpieza de la tienda de componentes sea más útil para el usuario final promedio, se agregará a una tarea de mantenimiento, ahorrando automáticamente espacio en disco para los usuarios finales. Para habilitar esto, se realizará un cambio para permitir la desinstalación de los controladores de la bandeja de entrada reemplazados sin requerir un reinicio (hoy, todas las instalaciones/desinstalaciones de controladores realizadas por CBS requieren un reinicio).

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

  2. Herramienta de limpieza de disco, botón Limpiar archivos de sistema.

    disk cleanup tool

  3. schtasks.exe /Run /TN "\Microsoft\Windows\Servicing\StartComponentCleanup"

6
Jeff Atwood

Hay un comando Nice que se limpia después de una instalación de Windows 7 SP1 (me ahorró alrededor de 3 GB):

DISM /online /cleanup-Image /spsuperseded

Debe ejecutarse desde un comando elevado.

101
GvS

TL; DR

en realidad, winsxs contiene enlaces duros . No ocupa tantos datos adicionales como creas.

Un enlace duro es como un 'atajo' o 'puntero' a un archivo real ubicado en algún lugar de su disco. Un enlace duro no ocupa espacio en el disco duro por sí mismo: simplemente sirve como redirección.

Debido a que winsxs consiste en enlaces duros, eliminar estos enlaces no liberará espacio. Los archivos reales continuarán permaneciendo en varias ubicaciones en su disco.


winsxs no es un problema

... es una solución! (Bueno, en su mayoría .)

Un resumen, "Marcado como respuesta por Ronnie Vernon, MVP, Moderador", dice aquí :

Wow, larga discusión sobre enlaces duros y winsxs. De todos modos aquí hay algunos puntos resumidos de lo que entendí acerca de cómo funciona todo.

Para comenzar, respondiendo a la pregunta del OP con la respuesta perfecta publicada anteriormente por Andre.Ziegler, no toques winsxs. Tal vez algunos de los archivos se pueden recortar como los de mp3, avi's, etc, pero el resto de los archivos del sistema se deben dejar solos . Yo también estoy usando Link Shell Extension como lo publicó Ronnie Vernon, una manera fácil de ver cuáles están vinculados (flecha roja) y cuáles son archivos simples.

Antes de llegar, vi gente en muchos lugares que pedían la herramienta de limpieza después de instalar SP1 para Windows 7 como vsp1cln. No hay una herramienta dedicada, todo se integró en el servicio de limpieza de disco. Una nota que haría aquí es que incluso si la opción dice que eliminará algunos cientos de MB después de que limpié mi unidad, el servicio eliminó alrededor de 3 GB de archivos en exceso, por lo que varía de un sistema a otro. Curioso, ahora tengo incluso más espacio del que tenía antes de instalar SP1. Muy bien, MS.

En cuanto a los enlaces duros, me divirtió la confusión creada alrededor de ellos. No soy un geek de Linux, y normalmente solo uso enlaces suaves ... son suficientes para mí, pero la gente no entendió cómo funcionan los difíciles y cómo se cuenta el tamaño.

Un grupo de archivos seleccionados, enlaces o no, siempre se contará como una suma. Esto significa que si tomo un archivo de 10 MB y hago 2 enlaces duros, la selección de los tres tendrá 30 MB y este es el tamaño correcto, porque a diferencia de los enlaces blandos que están relacionados con la entrada original de la tabla de archivos maestros del archivo y tienen 0 bytes, los enlaces duros están relacionados con los datos en sí , tienen su propia entrada en MFT pero apuntan a la misma dirección de datos, obviamente teniendo como tamaño el tamaño de los datos reales, mismos tiempos, atributos y así sucesivamente. Por qué, abajo.

¿Cuánto queda en la unidad? Simple: exactamente igual que los informes de propiedades del disco . No vaya a seleccionar todos los archivos, ocultos y no ocultos en C, y haga comparaciones, o usando herramientas que lo hacen automáticamente porque no mostrará el uso real del disco duro. ¿Por qué? Porque:

  1. esa operación hace una lista de todos los archivos seleccionados, incluidos los enlaces duros como archivos separados, toma cada uno de ellos y agrega los tamaños, las propiedades de las unidades cuentan los datos almacenados reales
  2. no se contarán todos los archivos, las carpetas protegidas de los desplazamientos y los archivos de la lectura no se contarán y la Información de volumen del sistema generalmente tiene archivos muy grandes protegidos de esta manera
  3. ese número es útil solo en casos de transferencia de archivos, si los archivos, enlaces, etc. deben copiarse en un DVD o NAS, es la cantidad que ocuparían, y los enlaces no se conservarán ya que son características específicas de NTFS, no disponibles o disponibles en diferentes formas bajo ISO, UDF, NFS y otros sistemas de archivos, pero se clonarán.

Haga una prueba ... copie un archivo de 10 MB, a.exe, desde una unidad diferente y observe cómo el espacio libre cae en los 10 MB. Haga un enlace duro (mklink/H b.exe a.exe). Ahora estos dos archivos seleccionados se "usarán" 20MB en las propiedades de selección , pero en realidad solo se verificaron 10MB en las propiedades del disco , que tendrá el mismo espacio libre que tenía/tiene después de la copia del archivo. Eliminar uno, cualquiera de los dos, el espacio libre seguirá siendo el mismo. Ahora borre el último y el espacio aumentará en 10MB. ¿Hubo algún daño? NO.

¿Qué es winsxs? Un dllcache mucho mejor. Donde con el dllcache en XP teníamos copias de archivos que realmente se agregaron al uso de tamaño desde que se clonaron, esto realmente mejora el uso pero no la protección total (contra virus). ). Si un desinstalador malicioso piensa que tiene que eliminar algunas bibliotecas de tiempo de ejecución de System32, solo eliminaría los enlaces, pero no los datos, entonces los enlaces se recrearían manteniendo el uso del espacio de datos lo más bajo posible, mejor que archivar winsxs en taxis y teniendo Los taxis junto a los archivos originales. Además, winsxs trae serialización, compartimentalización de archivos con el mismo nombre pero con una versión diferente, por el bien del desarrollador, lo cual es bueno/malo, los hace perezosos codificar correctamente pero ayuda cuando ya no quieren codificarlos.

Hice esto para ayudar a cualquiera que aterrice aquí por las mismas razones que hice ... el "uso del espacio" excesivo por parte de winsxs después del SP1. Y espero que haya sido de ayuda.

44
Mateen Ulhaq

Estos duplicados y copias de seguridad son extremadamente molestos cuando se tiene un espacio de disco limitado.

Estando en ese lugar, la única forma en que encontré que no pondría en peligro la estabilidad del sistema operativo era usar generosamente la configuración "Comprimir contenido para ahorrar espacio en el disco" .

Al comprimir todos esos directorios de respaldo en el directorio de Windows, pude reducir el tamaño del directorio de 6,5 GB a 5 GB, sin efectos secundarios reconocibles. Usarlo en algunas de tus cosas fuera del directorio de Windows estiraría aún más tus 10 GB.

33
eran

Si tiene Vista y tiene SP2 instalado, puede limpiar los archivos antiguos del sistema con la nueva Herramienta de limpieza del paquete de servicios .

  1. Haga clic en Inicio> Todos los programas> Accesorios> Símbolo del sistema o haga clic en Inicio> Ejecutar y escriba cmd para abrir Windows de símbolo del sistema
  2. Ejecute el comando "Compcln.exe". La ruta es "c:\Windows\System32\compcln.exe".
  3. Se le preguntará a los usuarios si deben mantener Vista SP2 permanentemente en el sistema.
  4. Escriba "Y" y presione Enter, el sistema comenzará a limpiar los componentes de Windows.
27
Tomas Andrle

En Windows 8 puede reducir el tamaño de la carpeta WinSxS al eliminar Características de Windows :

DISM.exe /Online /Disable-Feature /Featurename:<name> /Remove

Lo importante es el parámetro /Eliminar que es nuevo en Windows 8 .

La mayoría del espacio en WinSxS se usa en las actualizaciones de Windows que instala a lo largo del tiempo. En Windows 8/Windows 10 puede detectar y eliminar Actualizaciones que son reemplazadas por actualizaciones más recientes (como el nuevo acumulativo IE Actualizaciones) estará ejecutando este comando:

dism.exe /online /cleanup-image /startcomponentcleanup

o ejecutando el asistente de limpieza de disco y seleccione "Limpieza de Windows Update"

enter image description here

enter image description here

enter image description here

También asegúrese de haber instalado la actualización de la pila de servicios http://support.Microsoft.com/kb/2821895 .

Estas actualizaciones ejecutan una limpieza profunda de WinSxS y comprimen todos los archivos DLL/Exe, desde WinSxS que no están actualmente en uso, en un archivo delta más pequeño:

enter image description here

Mira los diferentes tamaños de archivo.

Windows 8.1 agrega nuevos comandos DISM . El /startcomponentcleanup obtiene un nuevo parámetro /ResetBase que hace que su última actualización sea permanente y elimina todos los archivos antiguos para ahorrar más espacio.

También puede ejecutar un nuevo comando dism /online /cleanup-image /analyzecomponentstore para analizar la carpeta WinSxS:

enter image description here

Le indica ahora cuándo debe ejecutar la limpieza para ahorrar espacio.

21
magicandre1981

Podría usar VSP1CLN.EXE para hacer que SP1 sea permanente, lo que de acuerdo con esta página liberará componentes superados por SP1.

20
Ben Lings

¡Buenas noticias! Ahora hay un método autorizado oficialmente , de Microsoft, para Windows 7 SP1, para limpiar su carpeta WinSXS .

  1. Instale la HotFix 2852386 : puede descargarla manualmente o esperar a que llegue la actualización de Windows
  2. Esto agrega una nueva opción a la Limpieza de disco Wizard (En Limpiar archivos del sistema) que puede habilitar para la "Limpieza de actualización de Windows". Marque esta opción.
  3. Haga clic en Aceptar

Advertencia: es posible que no pueda desinstalar ciertas actualizaciones de Windows después de ejecutar la limpieza de su carpeta WinSxS.

9
Mark Henderson

Dism ++ es lo que estás buscando ( https://www.chuyu.me/en/index.html ).

Ahorrarás gigabytes de espacio ...

Deberá seleccionar "Reemplazo de ensamblajes WinSxS". Si hace esto, le avisará que estas actualizaciones instaladas no se pueden desinstalar. Haga clic en Aceptar, luego escanear

enter image description here

Te dará una idea de cuánto espacio ahorrarás. Pulsa limpieza, y debería aclarar ese espacio.

2
user425154

Espero que sea útil tener un oneliner simple, ya que de lo contrario la gran respuesta de Jeff Atwood pierde el /ResetBase switch.

Precaución : este interruptor ayuda enormemente a reducir el tamaño de la carpeta WinSxS, pero elimina completamente las versiones anteriores de los componentes, por lo que no podrá deshacer las actualizaciones instaladas anteriormente. Pero si su sistema se comporta bien, debe estar seguro (especialmente si no está en el entorno de producción)

dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Esto funciona en Windows 8.1 y versiones posteriores.

1
maoizm

Además de las soluciones mencionadas, una forma de ganar espacio significativo es comprimir todo el contenido de la carpeta. Sin embargo, esto no se puede hacer usando Explorer (se necesitan derechos adecuados), al menos a partir de Windows 7.

Estas instrucciones muestran cómo lograr esto:

sc query msiserver 
sc query TrustedInstaller

sc stop msiserver
sc stop TrustedInstaller

sc config msiserver start= disabled
sc config TrustedInstaller start= disabled

icacls "%WINDIR%\WinSxS" /save "%WINDIR%\WinSxS.acl" /t

takeown /f "%WINDIR%\WinSxS" /r

icacls "%WINDIR%\WinSxS" /grant "%USERDOMAIN%\%USERNAME%":(F) /t

compact /s:"%WINDIR%\WinSxS" /c /a /i *

icacls "%WINDIR%\WinSxS" /setowner "NT SERVICE\TrustedInstaller" /t

icacls "%WINDIR%" /restore "%WINDIR%\WinSxS.acl"
del "%WINDIR%\WinSxS.acl"

sc config msiserver start= demand
sc config TrustedInstaller start= demand

sc start msiserver
sc start TrustedInstaller

Notas/consejos:

  1. La agrupación marca la forma recomendada de ejecutar estos comandos, si se realiza manualmente. Normalmente, no debería haber problemas (excepto en algunos archivos omitidos, porque están en uso), pero el resultado para cada grupo debe verificarse

  2. He realizado estos pasos en la instalación de varios sistemas operativos en el hogar y en el trabajo: Win7x64, Win10x64, Windows Server 2008R2 y Windows Server 2012 y no he visto ningún problema hasta ahora.

  3. Algunos pasos llevan bastante tiempo, especialmente el tiempo de compresión. La mayoría de los pasos se repetirán y mostrarán los archivos procesados. Minimizar comando La ventana de solicitud podría ganar algo de velocidad.

0
Alexei