it-swarm-eu.dev

Perché la cartella/winsxs diventa così grande e può essere ridotta?

Una macchina virtuale di Vista che utilizzo ha solo un disco rigido virtuale da 10 GB - e sono preoccupato che lo spazio rimanga senza spazio nel tempo.

Ho usato TreeSize per verificare i colpevoli ..

enter image description here

E il principale colpevole è che/winsxs o cartella "Windows Side-by-Side" .

enter image description here

Che cos'è la cartella Windows Side by Side? Bene, questo è ha spiegato abbastanza bene qui .

Tutti i componenti del sistema operativo si trovano nella cartella WinSxS, infatti chiamiamo questa posizione l'archivio componenti. Ogni componente ha un nome univoco che include la versione, la lingua e l'architettura del processore per cui è stato creato. La cartella WinSxS è l'unica posizione in cui il componente viene trovato sul sistema, tutte le altre istanze dei file che vedi sul sistema sono "proiettate" da un hard link dall'archivio componenti. Consentitemi di ripetere l'ultimo punto: esiste una sola istanza (o copia completa dei dati) di ciascuna versione di ciascun file nel sistema operativo e tale istanza si trova nella cartella WinSxS. Da questo punto di vista, la cartella WinSxS è in realtà l'interezza dell'intero sistema operativo, definita "piatta" nei sistemi operativi di livello inferiore. Ciò spiega anche il motivo per cui non verrà più richiesto il supporto durante l'esecuzione di operazioni come Controllo file di sistema (SFC) o durante l'installazione di funzioni e ruoli aggiuntivi.

Questo spiega perché la cartella inizia in grande, ma non perché è più grande nel tempo - la risposta a questa domanda è la manutenzione. Nelle versioni precedenti di Windows l'unità atomica di manutenzione era il file, in Windows Vista è il componente. Quando aggiorniamo un particolare file binario, rilasciamo una nuova versione dell'intero componente e la nuova versione viene archiviata insieme a quella originale nell'archivio componenti. La versione più alta del componente è proiettata sul sistema, ma la versione precedente nello store non viene toccata. La ragione di ciò è la terza parte del motivo per cui l'archivio componenti diventa così grande.

Un sacco di altre persone lamentandosi anche della dimensione della cartella/winsxs :

Un collega ha recentemente ricevuto i suoi due anni di aggiornamento del laptop di lavoro ed è stato nel mezzo del caricamento del suo nuovo laptop con Vista. Per qualche ragione, il suo disco rigido C: era partizionato a soli 25 GB e il resto dello spazio riservato per un disco molto più grande D :.

Ad ogni modo, dopo aver caricato molti aggiornamenti di Windows, gli rimaneva pochissimo spazio su C: e, per qualche ragione, la directory WinSxS era aumentata di oltre 8 GB.

Mentre sapevo a cosa serviva la directory WinSxS (Windows Side-by-Side), non ero del tutto sicuro del motivo per cui quella directory esplodesse di dimensioni così velocemente con i normali aggiornamenti del sistema operativo.

Non mi interessa davvero avere tutti questi file duplicati per sicurezza, ma io domi preoccupo del VM che esplode a causa di un errore di spazio su disco. Quindi .. can/winsxs be in modo sicuro ridotto in qualche modo? Non sembra che possa essere ..

Gli amministratori non dovrebbero, per nessuna ragione, prendere su di sé la pulizia della directory/winsxs - così facendo si potrebbe impedire a Windows Update e MSI di funzionare correttamente in seguito. La prevenzione dell'eliminazione accidentale dalla directory viene eseguita inserendo un potente descrittore di sicurezza nella directory che eredita dai suoi figli.

Se questa cartella/winsxs diventa più grande, dovrò rivisitare questa macchina virtuale .. che io davveronon voglio fare!

174
Jeff Atwood

Sembra che ci sia finalmente un modo per farlo in Windows 8.1 service pack 1 e Windows Server 2012 R2 .

Strumento di analisi del negozio di componenti:

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

Alla fine della scansione, l'utente ottiene un rapporto sui risultati (dimensioni effettive della cartella winsxs) in questo modo:

analyzecomponentstore results

Pulizia dell'archivio componenti:

Oggi, la pulizia dell'hardware dei componenti deve essere attivata manualmente da un utente finale, eseguendo DISM o utilizzando la Pulizia guidata disco. Al fine di rendere Component Store Cleanup più utile per l'utente finale medio, verrà aggiunto a un'attività di manutenzione, risparmiando automaticamente spazio su disco per gli utenti finali. Per abilitarlo, verrà apportata una modifica per consentire la disinstallazione dei driver di posta in arrivo sostituiti senza richiedere un riavvio (oggi, tutte le installazioni di driver/disinstallazioni eseguite da CBS richiedono un riavvio).

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

  2. Strumento Pulizia disco, pulsante Pulizia file di sistema.

    disk cleanup tool

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

6
Jeff Atwood

C'è un comando Nice che ripulisce dopo un'installazione di Windows 7 SP1 (mi ha salvato circa 3 GB):

DISM /online /cleanup-Image /spsuperseded

Deve essere eseguito da un prompt dei comandi con privilegi elevati

101
GvS

TL; DR

winsxs contiene effettivamente hard link . Non prende più additional dati come pensi.

Un hard link è come un "collegamento" o "puntatore" a un file reale che si trova da qualche parte sul disco. Un hard link non occupa spazio da solo sul disco rigido: funge semplicemente da reindirizzamento.

Poiché le winsx sono costituite da collegamenti reali, l'eliminazione di questi collegamenti non libererà spazio. I file attuali continueranno a rimanere in varie posizioni sul disco.


winsx non è un problema

... è una soluzione! (Bene, principalmente.)

Un riassunto, "Contrassegnato come risposta di Ronnie Vernon, MVP, Moderatore", dice qui :

Wow, lunga discussione su hardlink e winsx. Comunque qui ci sono alcuni punti riassuntivi di ciò che ho capito su come tutto funziona.

Per iniziare rispondendo alla domanda dell'OP con la risposta perfetta pubblicata sopra da Andre.Ziegler, non toccare winsxs. Forse alcuni file possono essere tagliati come mp3, avi, ecc. Ma il resto dei file di sistema dovrebbe essere lasciato solo . Anch'io uso Link Shell Extension come postato sopra da Ronnie Vernon, un modo semplice per vedere quali sono collegati (freccia rossa) e che sono semplici file.

Prima di arrivare qui ho visto in molti posti persone che chiedevano lo strumento di pulizia dopo aver installato SP1 per Windows 7 come vsp1cln. Non esiste uno strumento dedicato, è stato integrato nel servizio Pulitura disco. Una nota che vorrei fare qui è che anche se l'opzione dice che rimuoverà alcune centinaia di MB dopo aver ripulito il mio disco, il servizio ha rimosso circa 3 GB di file in eccesso, quindi varia da sistema a sistema. Divertente, ora ho ancora più spazio di quello che avevo prima di installare SP1. Bello, MS.

Per quanto riguarda gli hard link, mi sono divertito dalla confusione creata intorno a loro. Non sono un fanatico di Linux, e di solito uso solo i collegamenti software ... sono abbastanza per me, ma le persone non hanno capito come funzionano quelle dure e come vengono contate le dimensioni.

Un gruppo di file selezionati, collegamenti o meno, sarà sempre conteggiato come somma. Ciò significa che se prendo un file da 10 MB e creo 2 hard link, la selezione di tutti e tre avrà 30 MB e questa è la dimensione corretta, perché diversamente dai soft link relativi alla voce della tabella file master originale del file e avere 0 byte, gli hard link sono correlati ai dati stessi , hanno la loro propria voce in MFT ma puntano allo stesso indirizzo dati, ovviamente avendo come dimensione la dimensione dei dati effettivi, stesse volte, attributi e così via sopra. Perché, di seguito.

Quanto rimane sul disco? Semplice: esattamente quanto i report delle proprietà del disco . Non selezionare tutti i file, nascosti e non nascosti su C e fare confronti, o using tools che lo fa automaticamente perché non mostrerà l'effettivo utilizzo dell'HDD. Perché? Perché:

  1. questa operazione crea un elenco di tutti i file selezionati, inclusi i collegamenti reali come file separati, prende ciascuno di essi e aggiunge le dimensioni, le proprietà dell'unità conteggia i dati effettivi memorizzati
  2. non tutti i file verranno conteggiati, le cartelle protette dai percorsi e i file dalla lettura non verranno conteggiati e le informazioni sul volume di sistema di solito dispongono di file molto grandi protetti in questo modo
  3. quel numero è utile solo in caso di trasferimento di file, se i file, i collegamenti, ecc. devono essere copiati su DVD o NAS, questo è quanto dovrebbero occupare, e i collegamenti non saranno conservati poiché sono funzionalità specifiche NTFS, non disponibili o disponibili in diverse forme sotto ISO, UDF, NFS e altri file system, ma saranno clonati.

Fai un test ... copia un file da 10 MB, a.exe, da una diversa unità e nota come lo spazio libero diminuisce di 10 MB. Creare un collegamento reale (mklink/H b.exe a.exe). Ora questi due file selezionati useranno " 20MB nelle proprietà di selezione , ma in realtà solo 10 MB verificati nelle proprietà dell'unità , che avranno lo stesso spazio libero che ha fatto/fa dopo la copia del file. Elimina uno, uno dei due, lo spazio libero rimarrà lo stesso. Ora elimina l'ultimo e lo spazio aumenterà di 10 MB. C'è stato qualche danno? NO.

Che cos'è winsxs? Un dllcache molto migliore. Dove con il dllcache in XP abbiamo avuto copie di file che in realtà sono state aggiunte all'utilizzo delle dimensioni da quando sono state clonate, questo migliora l'utilizzo ma non la protezione totale (contro i virus). Se un programma di disinstallazione falso pensa di dover rimuovere alcune librerie di runtime da System32, eliminerebbe solo i collegamenti, ma non i dati, quindi i collegamenti verrebbero ricreati mantenendo l'utilizzo dello spazio dei dati al minimo possibile, meglio dell'archiviazione di winsx in taxi e le cabine a fianco dei file originali. Anche i winsx portano la serializzazione, compartimentando i file con lo stesso nome ma versioni diverse, a scopo di svantaggio, che è una cosa buona/cattiva, li rende pigri a programmare correttamente ma aiuta quando non vogliono più codificarli.

L'ho fatto per aiutare qualcuno che atterra qui per le stesse ragioni che ho fatto ... un eccessivo "uso dello spazio" da parte di winsx dopo SP1. E spero sia stato utile.

44
Mateen Ulhaq

Questi duplicati e backup sono estremamente fastidiosi quando si dispone di spazio su disco limitato.

Essendo in quel luogo, l'unico modo che ho trovato che non mettesse a repentaglio la stabilità del sistema operativo era di usare generosamente il "Comprimi contenuti per risparmiare spazio su disco" impostazione.

Comprimendo tutte le directory di backup nella directory di Windows, sono riuscito a ridurre la dimensione della directory da 6.5 GB a 5 GB, senza effetti secondari riconoscibili. Usarlo su alcune delle tue cose al di fuori della directory Window potrebbe allungare ancora di più i tuoi 10 GB.

33
eran

Se hai Vista e hai SP2 installato, puoi ripulire i vecchi file di sistema con il nuovo Service Pack Clean-Up Tool .

  1. Fare clic su Start> Tutti i programmi> Accessori> Prompt dei comandi o fare clic su Start> Esegui e digitare cmd per aprire il prompt dei comandi di Windows
  2. Esegui il comando "Compcln.exe". Il percorso è "c:\Windows\System32\compcln.exe".
  3. Agli utenti verrà chiesto se mantenere Vista SP2 permanentemente nel sistema.
  4. Digitare "Y" e premere Invio, il sistema inizierà a eseguire la pulizia dei componenti di Windows.
27
Tomas Andrle

In Windows 8 è possibile ridurre la dimensione della cartella WinSxS da rimozione delle funzionalità di Windows :

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

La cosa importante è il/Remove parametro che è nuovo per Windows 8 .

Il maggior spazio disponibile in WinSxS viene utilizzato con Windows Update che vengono installati nel tempo. In Windows 8/Windows 10 è possibile rilevare e rimuovere gli aggiornamenti che vengono sostituiti dagli aggiornamenti più recenti (come i più recenti cumulativi IE Aggiornamenti) eseguire questo comando:

dism.exe /online /cleanup-image /startcomponentcleanup

o eseguendo la procedura guidata di pulizia del disco e selezionare "Pulizia di Windows Update"

enter image description here

enter image description here

enter image description here

Assicurati inoltre di aver installato l'aggiornamento dello stack di manutenzione http://support.Microsoft.com/kb/2821895 .

Questo aggiornamento esegue una pulizia approfondita di WinSxS e comprime tutti i file DLL/Exe, da WinSxS che non sono attualmente in uso, in un file delta più piccolo:

enter image description here

Guarda le diverse dimensioni del file.

Windows 8.1 aggiunge nuovi comandi DISM . Il /startcomponentcleanup ottiene un nuovo parametro /ResetBase che rende permanente l'ultimo aggiornamento e rimuove tutti i vecchi file per risparmiare più spazio.

È anche possibile eseguire un nuovo comando dism /online /cleanup-image /analyzecomponentstore per analizzare la cartella WinSxS:

enter image description here

Ti dice ora quando dovresti eseguire la pulizia per risparmiare spazio.

21
magicandre1981

È possibile utilizzare VSP1CLN.EXE per rendere permanente SP1, che in base a questa pagina libererà i componenti sostituiti da SP1.

20
Ben Lings

Buone notizie! C'è ora un metodo ufficialmente sanzionato , da Microsoft, per Windows 7 SP1, per pulire la cartella WinSXS .

  1. Installa HotFix 2852386 - puoi scaricarlo manualmente o attendere che arrivi attraverso il tuo Windows Update
  2. Aggiunge una nuova opzione per la pulizia del disco Wizard (sotto Pulisci file di sistema) che è possibile abilitare per "Pulizia di Windows Update". Spunta questa opzione.
  3. Clicca OK

Avvertenza: potrebbe non essere possibile disinstallare determinati aggiornamenti di Windows dopo aver eseguito la pulizia della cartella WinSxS.

9
Mark Henderson

Dism ++ è ciò che stai cercando ( https://www.chuyu.me/en/index.html ).

Potrai risparmiare gigabyte di spazio ...

Dovrai selezionare "Sostituiti assembly WinSxS". Se lo fai, ti verrà dato un avviso che questi aggiornamenti installati non possono essere disinstallati. Fare clic su OK, quindi eseguire la scansione

 enter image description here

Ti darà un'idea di quanto spazio risparmierai. Hit cleanup, e dovrebbe chiarire lo spazio.

2
user425154

Spero che sarà utile avere un semplice oneliner in quanto altrimenti la grande risposta di Jeff Atwood manca dell'interruttore /ResetBase.

Attenzione : Questo interruttore aiuta notevolmente a ridurre le dimensioni della cartella WinSxS, ma elimina completamente le versioni precedenti dei componenti, quindi non sarà possibile eseguire il rollback degli eventuali aggiornamenti installati prima. Ma se il tuo sistema si comporta bene, dovresti essere sicuro (specialmente se non sei in ambiente di produzione)

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

Funziona in Windows 8.1 e versioni successive

1
maoizm

Oltre alle soluzioni di cui sopra, un modo per guadagnare spazio significativo è comprimere l'intero contenuto della cartella. Tuttavia, questo non può essere fatto usando Explorer (sono necessari i diritti appropriati), almeno a partire da Windows 7.

Queste istruzioni mostra come ottenere ciò:

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

Note/suggerimenti:

  1. Raggruppamento indica il modo consigliato per eseguire questi comandi, se eseguiti manualmente. Normalmente, non dovrebbero esserci problemi (eccetto alcuni file saltati, perché sono in uso), ma il risultato per ogni gruppo dovrebbe essere controllato

  2. Ho eseguito questi passaggi su vari sistemi operativi di installazione a casa e al lavoro: Win7x64, Win10x64, Windows Server 2008R2 e Windows Server 2012 e non ho visto alcun problema finora.

  3. Alcuni passaggi richiedono un po 'di tempo, specialmente il tempo di compressione. La maggior parte dei passaggi verrà ripetuta e mostrerà i file elaborati. Minimizzare il comando La finestra del prompt potrebbe guadagnare un po 'di velocità.

0
Alexei