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

Una macchina virtuale Vista che uso solo ha un disco rigido virtuale da 10 GB – e sono preoccupato per questo che esaurisce lo spazio nel tempo.

Ho usato TreeSize per controllare i colpevoli.

immettere qui la descrizione dell'immagine

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

immettere qui la descrizione dell'immagine

Qual è la cartella laterale di Windows? Beh, qui è spiegato abbastanza bene .

Tutti i componenti del sistema operativo si trovano nella cartella WinSxS – infatti chiamiamo questa località l'archivio dei componenti. Ogni componente ha un nome univoco che include la versione, la lingua e l'architettura del processre per cui è stato creato. La cartella WinSxS è l'unica posizione che il componente si trova nel sistema, tutte le altre istanze dei file visualizzate nel sistema vengono "proiettate" dal collegamento duro dall'archivio componenti. Permettethemes di ripetere l'ultimo punto: c'è una sola istanza (o una copia completa di dati) di ciascuna versione di ciascun file nel sistema operativo e quella istanza si trova nella cartella WinSxS. Quindi guardato da tale prospettiva, la cartella WinSxS è veramente l'interezza di tutto il sistema operativo, chiamato "piatto" nei sisthemes operativi di livello down. Ciò spiega anche perché non verrà più richiesto il supporto per i media durante l'esecuzione di operazioni come il file di controllo di sistema (SFC) o quando si installano funzioni e ruoli aggiuntivi.

Questo spiega perché la cartella inizia grande, ma non perché diventa 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 binario, rilasceremo una nuova versione dell'integer componente e questa nuova versione viene memorizzata accanto all'originale nell'archivio di componenti. La versione più alta del componente viene proiettata sul sistema, ma non viene toccata la versione precedente del negozio. La ragione di questa è la terza parte del perché il negozio di componenti diventa così grande.

Molti altri si lamentano della dimensione della cartella / winsxs :

Un collega ha recentemente ricevuto il suo aggiornamento each due anni di computer porttile e stava al centro del caricamento del suo nuovo porttile con Vista. Per qualche ragione, il suo disco rigido C: è stato partizionato a soli 25GB e il resto dello spazio riservato ad un drive molto più grande D :.

In each caso, dopo aver caricato molti aggiornamenti di Windows, è rimasto praticamente uno spazio su disco rimasto in C :, e per qualche motivo la directory WinSxS aveva fatto ballo a oltre 8 GB.

Mentre sapevo che cosa era la directory WinSxS (Windows Side-by-Side), non ero abbastanza sicuro perché quella directory avrebbe esplodere in size in modo veloce con i normali aggiornamenti del sistema operativo.

Non mi interessa davvero di avere tutti questi file duplicati per la sicurezza, ma mi interessa la esplosione del VM a causa di un errore di spazio su disco. Così .. può / winsxs essere abbassato in modo sicuro in qualsiasi modo? Non sembra che possa essere ..

Gli amministratori non dovrebbero, per qualunque motivo, prenderli su se stessi per pulire la directory / winsxs , in modo da impedire che Windows Update e MSI correttamente funzionino in seguito. Prevenire la cancellazione accidentale dalla directory viene eseguita mettendo un forte descrittore di protezione nella directory che eredita ai propri figli.

Se questa cartella / winsxs diventa più grande, dovrò rivedere questa macchina virtuale .. che non voglio davvero fare!

C'è un bel command che pulisce dopo un'installazione di Windows 7 SP1 (mi ha salvato circa 3 GB):

 DISM /online /cleanup-Image /spsuperseded 

Deve essere eseguito da un prompt di command elevato

TL; DR

winsxs contiene in realtà dei collegamenti duri . Non occupa più dati aggiuntivi come si pensa.

Un collegamento duro è come un 'scorciatoia' o un 'puntatore' a un file effettivo situato da qualche parte sul disco. Un collegamento duro non occupa in sé uno spazio di disco rigido: serve solo come reindirizzamento.

Poiché i winsx sono costituiti da collegamenti duri, eliminare questi collegamenti non libererà alcun spazio. I file reali continueranno a rimanere in diverse posizioni sul disco.


winsxs non è un problema

… è una soluzione! (Beh, per lo più .)

Una sintesi, "Segna come risposta da Ronnie Vernon, MVP, Moderatore", dice qui :

Wow, lunga discussione su hardlinks e winsxs. Comunque qui sono alcuni punti riepilogativi di quello che ho capito su come funziona tutto.

Per cominciare rispondendo alla domanda di OP con la risposta perfetta posta sopra da Andre.Ziegler, non toccate winsxs. Forse alcuni dei file possono essere tagliati come mp3, avi, ecc, ma il resto dei file di sistema dovrebbe essere lasciato da solo . Anch'io sto usando l'estensione Shell Link come sopra riportto da Ronnie Vernon, modo semplice per vedere quali sono legati duri (freccia rossa) e che sono file semplici.

Prima di arrivare qui ho visto in molti posti persone che chiedono lo strumento di pulizia dopo l'installazione di SP1 per Windows 7 come vsp1cln. Non esiste uno strumento dedicato, è integrato nel servizio di pulizia dei dischi. Una nota che vorrei fare qui è che anche se l'opzione dice che rimuoverà alcune centinaia di MB dopo aver ripulito la mia unità il servizio rimosso circa 3GB di file in eccesso, quindi varia da sistema a sistema. Divertente, ora ho ancora più spazio di quanto avessi prima di installare SP1. Bello, MS.

Per quanto riguarda i legami duri, mi sono divertito dalla confusione creata intorno a loro. Non sono un geek di linux, e di solito uso solo legami morbidi … sono abbastanza per me, ma la gente non ha capito come funzionano i duri e come si contano le size.

Un gruppo di file selezionati, collegati o no, verrà sempre conteggiato come una sum. Ciò significa che se prendo un file da 10 MB e creo due collegamenti duri, la selezione di tutti e tre avrà 30 MB e questa è la dimensione corretta, perché a differenza dei link morbidi legati alla voce originale della tabella File File del file hanno 0 byte, i collegamenti duri sono correlati ai dati stessi , hanno la propria voce in MFT ma puntano allo stesso indirizzo di dati, ovviamente avendo come dimensione le size dei dati reali, le stesse volte, gli attributi e così via. Perché, qui sotto.

Quanto rimane nell'unità? Semplice: esattamente come le relazioni delle properties; del drive . Non andare selezionando tutti i file nascosti e non nascosti su C e facendo i confronti o utilizzando strumenti che lo fanno automaticamente perché non mostrerà l'utilizzo effettivo del disco rigido. Perché? Perché:

  1. tale operazione elabora un elenco di tutti i file selezionati, inclusi i collegamenti duri come file separati, prende ciascuno di essi e aggiunge le size, le properties; delle unità contengono i dati memorizzati effettivi
  2. non tutti i file verranno contati, le cartelle protette dal traversing ei file dalla lettura non verranno conteggiati e le informazioni sul volume di sistema di solito hanno file molto grandi protetti in questo modo
  3. tale numero è utile solo nei casi di trasferimento di file, se i file, i collegamenti, ecc devono essere copiati su DVD o NAS, è quanto occuperebbero ei collegamenti non verranno conservati in quanto sono caratteristiche specifiche di NTFS, non disponibili o disponibili in forms diverse in sisthemes ISO, UDF, NFS e altri file, ma saranno clonati.

Crea un test … copia un file da 10 MB, a.exe, da un'altra unità e nota come lo spazio libero scende dal 10 MB. Creare un collegamento duro (mklink / H b.exe a.exe). Ora questi due file selezionati utilizzeranno 20 MB nelle properties; di selezione , ma in realtà solo 10 MB verifica nelle properties; dell'unità , che avrà lo stesso spazio libero di quello che ha fatto / dopo la copia del file. Eliminare uno, uno uno, lo spazio libero rimarrà lo stesso. Ora cancellare l'ultimo e lo spazio aumenterà di 10 MB. C'era stato qualche danno? NO.

Che cosa è winsxs? Un dllcache molto migliore. Dove con il dllcache in XP avevamo copie di file che effettivamente aggiunti all'utilizzo di size poiché sono stati clonati, questo migliora effettivamente l'utilizzo ma non la protezione totale (contro i virus). Se un programma di disinstallazione del rogue pensa di rimuovere alcune libre di runtime da System32, elimina solo i collegamenti, ma non i dati, i collegamenti verrebbero ricreati, mantenendo l'utilizzo dello spazio di dati al minimo ansible, meglio che archiviare winsx in cabine e avendo i taxi lungo il lato dei file originali. Anche i winsxs portno la serializzazione, compartimentando file con lo stesso nome ma versione diversa, per il dev, che è una cosa buona / ctriggers, li rende pigri per codificare correttamente, ma aiuta quando non vogliono più codificare.

Ho fatto questo per aiutare qualcuno che cade qui per le stesse ragioni che ho fatto … eccessivo "utilizzo dello spazio" da winsx dopo SP1. E spero che sia utile.

Questi duplicati e backup sono estremamente fastidiosi quando hanno spazio sul disco limitato. Essere in quel luogo, l'unico modo in cui ho scoperto che non compromettere la stabilità del sistema operativo era utilizzare generosamente l'impostazione " Comprimere i contenuti per salvare spazio su disco ". Comprendo tutte quelle directory di backup sotto la directory di Windows, sono riuscito a ridurre le size della directory da 6,5 ​​GB a 5 GB, senza effetti collaterali riconoscibili. Usarlo su alcune delle tue cose al di fuori della directory Window ti estenderà ancora di più i 10 GB.

Se si dispone di Vista e dispone di SP2, è ansible 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 oppure fare clic su Start> Esegui e digitare cmd per aprire Windows prompt dei comandi
  2. Eseguire il command "Compcln.exe". Il path è "c: \ Windows \ System32 \ compcln.exe".
  3. Gli utenti verranno chiesti se mantenere permanente Vista SP2 nel sistema.
  4. Digitare "Y" e premere Invio, il sistema avvia l'esecuzione dei componenti della window pulita.

È ansible utilizzare VSP1CLN.EXE per rendere permanente SP1, che in base a questa pagina libererà i componenti superseded -by-SP1.

In Windows 8 è ansible ridurre le size della cartella WinSxS rimuovendo le funzioni di Windows :

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

La cosa importnte è il parametro di rimozione che è nuovo per Windows 8 .

Il più spazio in WinSxS viene utilizzato per WindowsUpdate che si installa nel tempo. In Windows 8 / Windows 10 è ansible rilevare e rimuovere gli aggiornamenti che vengono sostituiti da aggiornamenti più recenti (come gli aggiornamenti cumulativi più recenti di IE) eseguire questo command:

 dism.exe /online /cleanup-image /startcomponentcleanup 

o eseguire la procedura guidata per la pulizia del disco e select "Pulizia di Windows Update"

immettere qui la descrizione dell'immagine

immettere qui la descrizione dell'immagine

immettere qui la descrizione dell'immagine

Assicurarsi inoltre di aver installato l'aggiornamento di stack di assistenza http://support.microsoft.com/kb/2821895 .

Questi aggiornamenti eseguono una pulizia profonda di WinSxS e comprimono tutti i file DLL / Exe, da WinSxS che non sono attualmente in uso, in un file delta più piccolo:

immettere qui la descrizione dell'immagine

Guarda le diverse size dei 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 file vecchi per salvare più spazio.

È inoltre ansible eseguire un nuovo command dism /online /cleanup-image /analyzecomponentstore per analizzare la cartella WinSxS:

immettere qui la descrizione dell'immagine

Ti dice ora quando si deve eseguire la pulizia per risparmiare spazio.

Buone notizie! Adesso è disponibile un metodo sanzionato ufficialmente , da Microsoft, per Windows 7 SP1, per eliminare la cartella WinSXS .

  1. Installare HotFix 2852386 – è ansible scaricare manualmente o attendere che venga eseguito tramite Windows Update
  2. Questo aggiunge una nuova opzione alla procedura guidata di pulizia del disco (sotto pulisci i file di sistema) che è ansible abilitare per "Pulizia di Windows Update". Seleziona questa opzione.
  3. Fare clic su OK

Caveat: potrebbe essere imansible disinstallare alcuni aggiornamenti di Windows dopo aver eseguito la pulizia della cartella WinSxS.

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

Al termine della scansione, l'utente ottiene un report dei risultati (dimensione effettiva della cartella winsxs) come questo:

risultati analitici di analisi

Pulizia dello spazio del componente:

Oggi, la pulizia del componente Store deve essere triggersta manualmente da un utente finale, eseguendo DISM o utilizzando la procedura guidata di pulizia dei dischi. Per rendere più utile il componente Store Cleanup per l'utente finale medio, verrà aggiunto un task di manutenzione che consente di salvare automaticamente lo spazio su disco per gli utenti finali. Per abilitare questa operazione, verrà apportta una modifica per consentire la disinstallazione dei driver di posta in sostituzione senza richiedere il riavvio (oggi tutte le installazioni / disinstallazioni del driver eseguite da CBS richiedono un riavvio).

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

  2. Pulsante Pulizia disco, Pulsante Pulsante file di sistema.

    strumento di pulizia del disco

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

Oltre alle soluzioni di cui sopra, un modo per get uno spazio significativo è quello di comprimere tutto il contenuto della cartella. Tuttavia, questo non può essere fatto utilizzando Explorer (sono necessari diritti propri), alless a partire da Windows 7.

Queste istruzioni mostrano come raggiungere questo objective:

 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. Il raggruppamento contrassegna il modo consigliato per eseguire questi comandi, se eseguito manualmente. Normalmente, non ci dovrebbero essere problemi (ad exception di alcuni file saltati, perché sono in uso), ma il risultato per each gruppo dovrebbe essere verificato

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

  3. Alcuni passi richiedono molto tempo, in particolare il tempo di compressione. La maggior parte dei passaggi si ripeterà e mostrerà i file elaborati. Ridurre al minimo la window del prompt dei comandi potrebbe get una certa velocità.

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

Risparmierai gigabyte di spazio …

Dovresti select "Assiemi sostituiti WinSxS". Se lo fai, ti darà un avviso che questi aggiornamenti installati non possono essere disinstallati. Fare clic su OK, quindi scansionare

immettere qui la descrizione dell'immagine

Ti darà un'idea di quanto spazio salverai. Pulire la pulizia, e dovrebbe chiarire lo spazio.

È ansible rimuovere questi file in modo sicuro. Se ne hai bisogno di nuovo, ti richiederà solo di installare altre cose.

Ora per la correzione!

  • Aprire Esplora risorse e passare a C: \ Windows \ System32. Cerca il file "vsp1cln.exe".
  • Fare clic con il button destro del mouse su questo file e select l'opzione "Esegui come amministratore".
  • Lo strumento di pulizia Vista Service Pack 1 rimuove tutti i file ridondanti che ha sostituito.

La quantità di spazio disponibile su disco dipenderà dal sistema, dai programmi installati, ecc.