it-swarm.com.de

Warum wird der Ordner/winsxs so groß und kann er verkleinert werden?

Eine virtuelle Vista-Maschine, die ich verwende, verfügt nur über eine virtuelle 10-GB-Festplatte - und ich mache mir Sorgen, dass mit der Zeit nicht mehr genügend Speicherplatz zur Verfügung steht.

Ich habe TreeSize verwendet, um nach den Tätern zu suchen.

enter image description here

Und der Hauptschuldige ist, dass/winsxs oder "Windows Side-By-Side" -Ordner .

enter image description here

Was ist der Windows Side By Side-Ordner? Nun, das ist hier ziemlich gut erklärt .

Alle Komponenten des Betriebssystems befinden sich im Ordner "WinSxS". Tatsächlich wird dieser Speicherort als Komponentenspeicher bezeichnet. Jede Komponente hat einen eindeutigen Namen, der die Version, Sprache und Prozessorarchitektur enthält, für die sie erstellt wurde. Der WinSxS-Ordner ist der einzige Speicherort, an dem die Komponente auf dem System gefunden wird. Alle anderen Instanzen der Dateien, die auf dem System angezeigt werden, werden durch eine feste Verknüpfung mit dem Komponentenspeicher „projiziert“. Lassen Sie mich diesen letzten Punkt wiederholen - es gibt nur eine Instanz (oder eine vollständige Datenkopie) jeder Version jeder Datei im Betriebssystem, und diese Instanz befindet sich im Ordner WinSxS. Aus dieser Perspektive betrachtet ist der WinSxS-Ordner wirklich die Gesamtheit des gesamten Betriebssystems, was in Betriebssystemen untergeordneten Betriebssystemen als "flach" bezeichnet wird. Dies erklärt auch, warum Sie beim Ausführen von Vorgängen wie der Systemdateiprüfung (SFC) oder beim Installieren zusätzlicher Funktionen und Rollen nicht mehr zur Eingabe von Datenträgern aufgefordert werden.

Das erklärt, warum der Ordner groß anfängt, aber nicht, warum er mit der Zeit größer wird - die Antwort auf diese Frage lautet Wartung. In früheren Windows-Versionen war die atomare Wartungseinheit die Datei, in Windows Vista die Komponente. Wenn wir eine bestimmte Binärdatei aktualisieren, geben wir eine neue Version der gesamten Komponente frei, und diese neue Version wird neben der ursprünglichen Version im Komponentenspeicher gespeichert. Die höhere Version der Komponente wird auf das System projiziert, die ältere Version im Store wird jedoch nicht berührt. Der Grund dafür ist der dritte Teil, warum der Komponentenspeicher so groß wird.

Viele andere Leute beschweren sich auch über die Größe des Ordners/winsxs :

Ein Mitarbeiter hat kürzlich alle zwei Jahre eine Aktualisierung seines Arbeits-Laptops erhalten und war gerade dabei, seinen neuen Laptop mit Vista zu laden. Aus irgendeinem Grund war seine Festplatte C: auf nur 25 GB aufgeteilt, und der Rest des Speicherplatzes war für eine viel größere Festplatte D: reserviert.

Nachdem er viele Windows-Updates geladen hatte, war auf C: ohnehin kaum noch Speicherplatz auf dem Laufwerk vorhanden, und aus irgendeinem Grund hatte das WinSxS-Verzeichnis eine Größe von über 8 GB erreicht.

Obwohl ich wusste, wofür das WinSxS-Verzeichnis (Windows Side-by-Side) gedacht war, war ich mir nicht sicher, warum dieses Verzeichnis bei normalen Betriebssystemaktualisierungen so schnell explodieren würde.

Ich kümmere mich nicht wirklich darum, aus Sicherheitsgründen alle diese doppelten Dateien zu haben, aber ich kümmere mich darum, dass doVM explodiert, weil nicht genügend Speicherplatz vorhanden ist. Also .. can/Winsxs sicher in irgendeiner Weise reduziert werden? Es scheint nicht, dass es sein kann ..

Administratoren sollten es aus irgendeinem Grund unterlassen, das Verzeichnis/winsxs zu löschen. - Andernfalls können Windows Update und MSI möglicherweise nicht mehr ordnungsgemäß funktionieren. Um ein versehentliches Löschen aus dem Verzeichnis zu verhindern, wird eine starke Sicherheitsbeschreibung in das Verzeichnis eingefügt, die die untergeordneten Verzeichnisse erbt.

Wenn dieser/winsxs-Ordner größer wird, muss ich diese virtuelle Maschine neu erstellen .. was ich wirklichnicht tun möchte!

174
Jeff Atwood

Sieht aus wie es gibt endlich eine Möglichkeit, dies zu tun in Windows 8.1 Service Pack 1 und Windows Server 2012 R2 .

Analysetool für Komponentenspeicher:

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

Am Ende des Scans erhält der Benutzer einen Bericht über die Ergebnisse (tatsächliche Größe des Ordners winsxs) wie folgt:

analyzecomponentstore results

Bereinigung des Komponentenspeichers:

Heutzutage muss die Komponentenspeicherbereinigung manuell von einem Endbenutzer ausgelöst werden, entweder durch Ausführen von DISM oder mithilfe des Datenträgerbereinigungs-Assistenten. Damit Component Store Cleanup für den durchschnittlichen Endbenutzer nützlicher wird, wird es zu einer Wartungsaufgabe hinzugefügt, wodurch Endbenutzern automatisch Speicherplatz gespart wird. Um dies zu ermöglichen, wird eine Änderung vorgenommen, um die Deinstallation von abgelaufenen Inbox-Treibern ohne Neustart zu ermöglichen (heutzutage erfordern alle von CBS durchgeführten Treiberinstallationen/Deinstallationen einen Neustart).

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

  2. Datenträgerbereinigungstool, Schaltfläche Systemdateien bereinigen.

    disk cleanup tool

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

6
Jeff Atwood

Es gibt einen Nice-Befehl, der nach einer Installation von Windows 7 SP1 aufräumt (dadurch habe ich ungefähr 3 GB gespart):

DISM /online /cleanup-Image /spsuperseded

Muss über eine Eingabeaufforderung mit erhöhten Rechten ausgeführt werden

101
GvS

TL; DR

winsxs enthält tatsächlich harte Links . Es nimmt nicht so viele zusätzliche Daten auf, wie Sie denken.

Ein fester Link ist wie eine Verknüpfung oder ein Zeiger auf eine Datei, die sich irgendwo auf Ihrer Festplatte befindet. Ein Hardlink beansprucht von sich aus keinen Festplattenspeicher, sondern dient lediglich als Umleitung.

Da winsxs aus festen Links besteht, wird durch das Löschen dieser Links kein Speicherplatz freigegeben. Die eigentlichen Dateien verbleiben weiterhin an verschiedenen Orten auf Ihrer Festplatte.


winsxs ist kein problem

... es ist eine Lösung! (Nun, meistens.)

Eine Zusammenfassung, "Als Antwort markiert von Ronnie Vernon, MVP, Moderator", sagt hier :

Wow, lange Diskussion über Hardlinks und Winsxs. Trotzdem sind hier einige Punkte zusammengefasst, von denen ich verstanden habe, wie das alles funktioniert.

Um die Frage des OP mit der perfekten Antwort von Andre.Ziegler zu beantworten, berühren Sie nicht winsxs. Vielleicht können einige der Dateien wie MP3s, AVIs usw. gekürzt werden, aber der Rest der Systemdateien sollte in Ruhe gelassen werden . Ich verwende auch Link Shell Extension, wie oben von Ronnie Vernon gepostet, eine einfache Möglichkeit zu sehen, welche Dateien fest verlinkt sind (roter Pfeil) und welche einfache Dateien.

Bevor ich hierher kam, sah ich an vielen Stellen Leute, die nach der Installation von SP1 für Windows 7 nach dem Bereinigungstool fragten, wie vsp1cln. Es gibt kein spezielles Tool, alles wurde in den Dienst zur Datenträgerbereinigung integriert. Eine Anmerkung, die ich hier machen würde, ist, dass, selbst wenn die Option besagt, dass ein paar Hundert MB entfernt werden, nachdem ich mein Laufwerk bereinigt habe, der Dienst ungefähr 3 GB überschüssige Dateien entfernt hat, so dass es von System zu System variiert. Komisch, jetzt habe ich noch mehr Platz als vor der Installation von SP1. Schön, MS.

Was die harten Links angeht, amüsierte mich die Verwirrung, die um sie herum entstand. Ich bin kein Linux-Freak und benutze normalerweise nur weiche Links ... sie reichen mir, aber die Leute haben nicht verstanden, wie die harten funktionieren und wie die Größe gezählt wird.

Eine Gruppe ausgewählter Dateien, ob Links oder nicht, wird immer als Summe gezählt. Dies bedeutet, dass, wenn ich eine 10-MB-Datei nehme und 2 feste Verknüpfungen mache, die Auswahl aller drei 30 MB hat und dies die richtige Größe ist, da im Gegensatz zu den weichen Verknüpfungen, die sich auf den ursprünglichen Eintrag in der Master File Table beziehen, und 0 Bytes haben, feste Verknüpfungen beziehen sich auf die Daten selbst , einen eigenen Eintrag in MFT haben, aber auf dieselbe Datenadresse verweisen, offensichtlich die Größe der tatsächlichen Daten haben, dieselben Zeiten, Attribute und so auf. Warum unten.

Wie viel ist noch auf der Festplatte übrig? Einfach: genau so viel wie die Eigenschaften des Laufwerks anzeigen . Wählen Sie nicht alle in C ausgeblendeten und nicht ausgeblendeten Dateien aus und führen Sie Vergleiche durch, oder verwenden Sie Werkzeuge dies geschieht automatisch, da die tatsächliche Festplattennutzung nicht angezeigt wird. Warum? Weil:

  1. diese Operation erstellt eine Liste aller ausgewählten Dateien, einschließlich fester Verknüpfungen, als separate Dateien, nimmt jede von ihnen und addiert die Größen auf. Die Laufwerkseigenschaften zählen die tatsächlich gespeicherten Daten
  2. nicht alle Dateien werden gezählt, Ordner, die vor dem Durchlaufen geschützt sind, und Dateien, die vor dem Lesen geschützt sind, werden nicht gezählt, und die System-Volume-Informationen enthalten normalerweise sehr große Dateien, die nur auf diese Weise geschützt sind
  3. diese Nummer ist nur in Fällen von Dateiübertragung von Nutzen, wenn die Dateien, Links usw. auf DVD oder NAS kopiert werden müssen, so viel sie belegen würden und die Links nicht beibehalten werden, da es sich um NTFS-spezifische Funktionen handelt, die nicht verfügbar sind oder verfügbar in verschiedenen Formen unter ISO, UDF, NFS und anderen Dateisystemen, aber sie werden geklont.

Machen Sie einen Test ... kopieren Sie eine 10MB-Datei, a.exe, von einem anderen Laufwerk und stellen Sie fest, wie der freie Speicherplatz um die 10MB sinkt. Stellen Sie eine feste Verbindung her (mklink/H b.exe a.exe). Jetzt "verwenden" diese beiden ausgewählten Dateien 20 MB in den Auswahleigenschaften , aber tatsächlich nur 10 MB, die in den Laufwerkseigenschaften überprüft wurden , wodurch derselbe freie Speicherplatz wie nachher zur Verfügung steht die Dateikopie. Löschen Sie eine oder beide, der freie Speicherplatz bleibt gleich. Löschen Sie nun den letzten und der Speicherplatz erhöht sich um 10 MB. Wurde Schaden angerichtet? NEIN.

Was ist winsxs? Ein viel besserer DLL-Cache. Während mit dem DLL-Cache in XP Kopien von Dateien vorhanden waren, die seit dem Klonen tatsächlich zur Größenverwendung hinzugefügt wurden, verbessert dies zwar die Verwendung, aber nicht den vollständigen Schutz (gegen Viren). Wenn ein betrügerisches Deinstallationsprogramm glaubt, dass es einige Laufzeitbibliotheken von System32 entfernen muss, werden nur die Links, nicht jedoch die Daten gelöscht. Die Links werden dann neu erstellt, wobei der Speicherplatzbedarf so gering wie möglich gehalten wird, besser als wenn Winsxs in Cabs und mit archiviert werden die Fahrerhäuser neben den Originalakten. Auch Winsxs bringen Serialisierung, indem sie Dateien mit dem gleichen Namen, aber einer anderen Version unterteilen. Um des Entwicklers willen ist das eine gute/schlechte Sache. Es macht sie faul, richtig zu codieren, aber es hilft, wenn sie nicht mehr codieren wollen.

Ich habe dies getan, um allen zu helfen, die aus den gleichen Gründen hier landen, die ich getan habe ... übermäßige "Nutzung von Speicherplatz" durch winsxs nach SP1. Und ich hoffe es war hilfreich.

44
Mateen Ulhaq

Diese Duplikate und Backups sind äußerst ärgerlich, wenn der Speicherplatz begrenzt ist.

Die einzige Möglichkeit, die die Stabilität des Betriebssystems nicht gefährdet, besteht darin, die Einstellung "Inhalte komprimieren, um Speicherplatz zu sparen" großzügig zu verwenden.

Durch Komprimieren all dieser Sicherungsverzeichnisse unter dem Windows-Verzeichnis konnte ich die Verzeichnisgröße von 6,5 GB auf 5 GB reduzieren, ohne erkennbare Nebenwirkungen. Wenn Sie es für einige Ihrer Inhalte außerhalb des Windows-Verzeichnisses verwenden, würden Ihre 10 GB sogar noch größer.

33
eran

Wenn Sie Vista und SP2 installiert haben, können Sie alte Systemdateien mit dem neuen Service Pack Clean-up Tool bereinigen.

  1. Klicken Sie auf Start> Alle Programme> Zubehör> Eingabeaufforderung oder klicken Sie auf Start> Ausführen und geben Sie cmd ein, um die Windows-Eingabeaufforderung zu öffnen
  2. Führen Sie den Befehl "Compcln.exe" aus. Der Pfad lautet "c:\Windows\System32\compcln.exe".
  3. Benutzer werden gefragt, ob Vista SP2 dauerhaft im System verbleiben soll.
  4. Geben Sie "Y" ein und drücken Sie die Eingabetaste. Das System beginnt mit der Bereinigung der Windows-Komponenten.
27
Tomas Andrle

In Windows 8 können Sie die Größe des WinSxS-Ordners verringern, indem Sie Windows-Funktionen entfernen :

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

Das Wichtigste ist der/Remove -Parameter, der in Windows 8 neu ist.

Der meiste Speicherplatz in WinSxS wird von den WindowsUpdates genutzt, die Sie im Laufe der Zeit installieren. In Windows 8/Windows 10 können Sie Updates erkennen und entfernen, die durch neuere Updates ersetzt wurden (wie neuere kumulative IE Updates) führen Sie diesen Befehl aus:

dism.exe /online /cleanup-image /startcomponentcleanup

oder starten Sie den Datenträgerbereinigungsassistenten und wählen Sie "Windows Update Cleanup"

enter image description here

enter image description here

enter image description here

Stellen Sie außerdem sicher, dass Sie das Service-Stack-Update installiert haben http://support.Microsoft.com/kb/2821895 .

Diese Updates führen eine gründliche Bereinigung von WinSxS durch und komprimieren alle DLLs/Exe-Dateien von WinSxS, die derzeit nicht verwendet werden, in eine kleinere Delta-Datei:

enter image description here

Schauen Sie sich die verschiedenen Dateigrößen an.

Windows 8.1 fügt neue DISM-Befehle hinzu . Der /startcomponentcleanup erhält einen neuen Parameter /ResetBase, der Ihr letztes Update permanent macht und alle älteren Dateien entfernt, um mehr Platz zu sparen.

Sie können auch einen neuen Befehl dism /online /cleanup-image /analyzecomponentstore ausführen, um den WinSxS-Ordner zu analysieren:

enter image description here

Sie erfahren jetzt, wann Sie die Bereinigung ausführen sollten, um Speicherplatz zu sparen.

21
magicandre1981

Sie könnten VSP1CLN.EXE verwenden, um SP1 permanent zu machen, was laut dieser Seite abgelöste SP1-Komponenten freigibt.

20
Ben Lings

Gute Nachrichten! Es gibt jetzt eine offiziell genehmigte Methode von Microsoft für Windows 7 SP1, um Ihren WinSXS-Ordner zu bereinigen .

  1. HotFix 2852386 installieren - Sie können entweder manuell herunterladen oder darauf warten, dass es über Ihr Windows Update kommt
  2. Dies fügt der Datenträgerbereinigung Wizard (unter Systemdateien bereinigen) eine neue Option hinzu, die Sie für "Windows Update-Bereinigung" aktivieren können. Aktivieren Sie diese Option.
  3. OK klicken

Vorsichtsmaßnahme: Möglicherweise können Sie bestimmte Windows-Updates nicht deinstallieren, nachdem Sie die Bereinigung Ihres WinSxS-Ordners ausgeführt haben.

9
Mark Henderson

Dism ++ ist das, wonach Sie suchen ( https://www.chuyu.me/en/index.html ).

Sie sparen Gigabyte Platz ...

Sie müssen "Ersetzte WinSxS-Assemblys" auswählen. Wenn Sie dies tun, erhalten Sie eine Warnung, dass diese installierten Updates nicht deinstalliert werden können. Klicken Sie auf OK und scannen Sie dann

 enter image description here

Sie erhalten eine Vorstellung davon, wie viel Platz Sie sparen werden. Wenn Sie auf "Aufräumen" klicken, sollte dieser Raum frei werden.

2
user425154

Hoffe, es wird hilfreich sein, einen einfachen Oneliner zu haben, da ansonsten die großartige Antwort von Jeff Atwood den /ResetBase switch verpasst.

Achtung : Mit dieser Option können Sie die Größe des WinSxS-Ordners erheblich verringern. Mit werden frühere Versionen von Komponenten vollständig gelöscht, sodass Sie keine zuvor installierten Updates rückgängig machen können. Wenn sich Ihr System jedoch gut verhält, sollten Sie sicher sein (insbesondere, wenn Sie sich nicht in der Produktionsumgebung befinden).

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

Dies funktioniert in Windows 8.1 und höher

1
maoizm

Neben den oben genannten Lösungen besteht eine Möglichkeit, Speicherplatz zu gewinnen, darin, den gesamten Ordnerinhalt zu komprimieren. Dies kann jedoch nicht mit dem Explorer durchgeführt werden (es werden entsprechende Rechte benötigt), zumindest nicht ab Windows 7.

Diese Anleitung zeigt, wie dies erreicht wird:

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

Hinweise/Tipps:

  1. Die Gruppierung markiert die empfohlene Methode zum Ausführen dieser Befehle, wenn diese manuell ausgeführt werden. Normalerweise sollte es keine Probleme geben (außer bei einigen übersprungenen Dateien, da diese verwendet werden), aber das Ergebnis für jede Gruppe sollte überprüft werden

  2. Ich habe diese Schritte auf verschiedenen Betriebssystemen ausgeführt, die zu Hause und bei der Arbeit installiert wurden: Win7x64, Win10x64, Windows Server 2008R2 und Windows Server 2012. Bisher sind keine Probleme aufgetreten.

  3. Einige Schritte benötigen einige Zeit, insbesondere die Komprimierungszeit. In den meisten Schritten werden verarbeitete Dateien iteriert und angezeigt. Das Minimieren des Eingabeaufforderungsfensters kann etwas schneller werden.

0
Alexei