Automatische Komprimierung des Windows 8.1-Komponentenspeichers (WinSxS / DriverStore) deaktivieren?

5464
Quad5Ny

Windows 8.1 verfügt über eine neue geplante Task (Servicing \ StartComponentCleanup), mit der abgelöste und nicht verwendete Dateien automatisch aus dem Side-by-Side-Store-, DriverStore- und Treiber-Ordner gelöscht oder komprimiert werden.

Ich habe mich gefragt, ob jemand weiß, ob es möglich ist, die Bereinigung der Komponente beizubehalten, die Komprimierung jedoch zu überspringen, ohne die NTFS-Komprimierung oder die geplante Task zu deaktivieren.

Wenn einige Treiber / Dateien geladen / verwendet werden, scheint sie nach dem Komprimieren nicht zu dekomprimieren. Um sie zu dekomprimieren, müssen Sie "compact / U" als TrustedInstaller-Dienst manuell ausführen.

3
Die Verwendung von "fsutil behaviour set" zum Aktivieren des Flags "DisableCompression" ist keine Option. Dies hat dazu geführt, dass DISM einen Fehler mit 0x80070031 ERROR_COMPRESSION_DISABLED ausgibt. Quad5Ny vor 10 Jahren 0

3 Antworten auf die Frage

4
Troy

Wie messen Sie die Einsparungen bei der Kompression? In Ihren Zahlen stimmt etwas nicht, da ein RTM 8.1-Image allein durch die NTFS-Komprimierung der In-Box-Treiber (auf x64) etwa 114 MB einspart. Verwenden Sie einfach den Explorer, um die Größe von c: \ windows \ system32 \ driverstore zu ermitteln, und Sie werden feststellen, dass es etwa 114 MB Unterschied zwischen der "Größe" und der "Größe auf der Festplatte" gibt. / startcomponentcleanup führt die Arbeit, die bereits erledigt wurde, nicht erneut durch, sodass das Ausführen in Zukunft nur neue Treiber, Sicherungsdateien oder abgelöste Dateien komprimieren muss.

Bei einem RTM 8.1-Image muss sehr wenig in der Backup-Kategorie komprimiert werden, und es sollte nichts in der ersetzten Kategorie enthalten sein. Die ersetzte Kategorie ist die einzige Komprimierung, die übersprungen wird, wenn / startcomponentcleanup / resetbase anstelle von normal / startcomponentcleanup verwendet wird. Ich bin mir also nicht sicher, welchen Vorteil Sie in Bezug auf die Kompressionsleistung haben. Die Komprimierung abgelöster Bits (wenn Sie sie haben) dauert einige Zeit, aber Sie behalten die Möglichkeit, eine KB zu deinstallieren, und sparen dabei> 90% des Speicherplatzes.

Um die genauen Zahlen für die Auswirkungen von / startcomponentcleanup oder / startcomponentcleanup / resetbase auf winsxs zu sehen, führen Sie dism / online / cleanup-image / analysiscomponentstore vor und nach dem Start / startcomponentcleanup aus. Beachten Sie die Nummern "Sicherungen und deaktivierte Funktionen". Sie werden feststellen, dass nach der Ausführung des Befehls ein erheblicher Unterschied besteht. Wenn Sie / startcomponentcleanup erneut ausführen, sollten Sie auch feststellen, dass das zweite Mal ziemlich schnell abgeschlossen wird, da es nichts zu tun gibt.

Bearbeiten - Einige tatsächliche Zahlen zum Vergleich

Zum Beispiel auf einem X64-Computer, den ich gerade mit Januar-Patches für Dienstag (einschließlich optionaler Updates) aktualisiert habe. Nachfolgend wird beschrieben, wie die Komprimierung ausfällt. Dabei werden nur Änderungen durch Jan.-Patch betrachtet.

Hinweis: Die folgenden Einsparungen ergeben sich aus der Komprimierung, bei der es sich nicht um die Komprimierung von NTFS handelt. Daher werden die komprimierten Dateien nicht als komprimiert im Dateiexplorer angezeigt. NTFS-Komprimierung wird nur von / startcomponentcleanup für die Inbox-Treiberkomprimierung verwendet (die im Folgenden nicht enthalten ist und rund 114 MB an Einsparungen für den Treiberspeicher bedeutet).

Aktuelle Zahlen mit / startcomponentcleanup

+354.25 MB added for January updates - 34.14 MB saved by superseded package removal - 67.84 MB saved for Backups (99.86 MB compressed to 32.02 MB)  -203.36 MB saved for Superseded Components (220.25 MB compressed to 16.89 MB)  --------- 48.91 MB growth due to January updates after /startcomponentcleanup 

Aktuelle Zahlen mit / startcomponentcleanup / resetbase

Wenn Sie "/ startcomponentcleanup / resetbase" anstelle von "/ startcomponentcleanup" verwenden, sparen Sie weitere 16.89 MB. Jetzt können Sie keine verbleibenden Updates deinstallieren. Möglicherweise werden alle Komprimierungen wie oben beschrieben ausgeführt. außer für "Ersetzte Komponenten".

 48.91 MB growth due to January updates after /startcomponentcleanup - 16.89 MB savings due to /resetbase --------- 32.02 MB growth due to January updates after /resetbase 

Beispiel für die Verwendung von / Analysecomponentstore

Hier sind die Ergebnisse der Ausführung / Analyse des Komponentenspeichers nach dem Anwenden der Januar-Updates und nach der Ausführung von / startcomponentcleanup. Beachten Sie die Nummer "Sicherungen und deaktivierte Funktionen", da dies den nicht temporären Speicher angibt, der für den Komponentenspeicher (winsxs) erforderlich ist.

Nach dem Update vom Januar

Windows Explorer Reported Size of Component Store : 5.75 GB  Actual Size of Component Store : 5.51 GB  Shared with Windows : 4.49 GB **Backups and Disabled Features : 884.98 MB** Cache and Temporary Data : 161.29 MB  Date of Last Cleanup : 2014-01-14 10:04:32  Number of Reclaimable Packages : 3 Component Store Cleanup Recommended : Yes 

Nach dem Start von / startcomponentcleanup

Windows Explorer Reported Size of Component Store : 5.33 GB  Actual Size of Component Store : 5.21 GB  Shared with Windows : 4.49 GB **Backups and Disabled Features : 595.02 MB** Cache and Temporary Data : 139.23 MB  Date of Last Cleanup : 2014-01-14 10:38:59  Number of Reclaimable Packages : 0 Component Store Cleanup Recommended : No 
Die Regeln besagen, dass Sie dies als Kommentar und nicht als Antwort posten müssen: https://superuser.com/help/answering magicandre1981 vor 10 Jahren 0
Sie müssen 50 Ruf haben, um entweder den Fragenthread oder den Antwortthread zu kommentieren, den ich nicht habe. Troy vor 10 Jahren 0
@Troy You seem to have created two accounts somehow. (1) http://superuser.com/users/288115/troy and (2) http://superuser.com/users/289377/troy Kevin Panko vor 10 Jahren 0
Sie können diese Konten zusammenführen lassen und dann können Sie Änderungen an Ihren Posts vornehmen, ohne auf die Genehmigung zu warten: http://superuser.com/help/merging-accounts Kevin Panko vor 10 Jahren 0
@Troy ok Übrigens habe ich Ihnen eine PM auf msfn.org geschrieben magicandre1981 vor 10 Jahren 0
3
Troy

Es gibt keinen exponierten Mechanismus zum Deaktivieren des Komprimierungsteils der Wartungswartungsaufgabe.

Welche Wartungskomprimierung soll deaktiviert werden und warum? Die Wartungsaufgabe komprimiert Sicherungen und andere duplizierte Dateien sowie abgelöste Aktualisierungen. Wie Sie bereits erwähnt haben, werden die Inbox-Treiber mit der NTFS-Komprimierung komprimiert. Ist es nur die NTFS-Komprimierung von Inbox-Treibern, die Sie deaktivieren möchten, und warum?

Ich habe versucht, die gesamte Komprimierungsroutine zu deaktivieren, die der StartComponentCleanup-Schalter ausführt. Bei einer Neuinstallation von 8.1 gibt es etwa 600 Dateien, deren Komprimierungsrate im Durchschnitt etwa 1,5 zu 1 beträgt. Die Speicherkapazität beträgt jedoch nur 21 MB. - Ich bin sicher, dass die Komprimierung einige Vorteile haben muss, aber ich sehe es einfach nicht. Quad5Ny vor 10 Jahren 0
2
Quad5Ny

Nach einigem Experimentieren in einer VM scheint es so, als würde das Ausführen von DISM mit dem hinzugefügten Schalter "/ ResetBase" keine Dateien komprimieren, während noch abgelöste Komponenten bereinigt werden. Es gibt jedoch einen Haken. Wenn Sie ResetBase ausführen, wird die Möglichkeit zur Deinstallation von Updates entfernt.

Komplettlösung:

  • Bearbeiten Sie die Komponentenbereinigungsaufgabe
    1. Öffnen Sie taskschd.msc und navigieren Sie zu \ Microsoft \ Windows \ Servicing \.
    2. Doppelklicken Sie auf StartComponentCleanup
    3. Löschen Sie den benutzerdefinierten Handler auf der Registerkarte "Aktionen"
    4. Fügen Sie eine neue Aktion mit "C: \ Windows \ System32 \ Dism.exe" als Programm und "/ Online / Cleanup-Image / StartComponentCleanup / ResetBase" als Argumente hinzu


  • Dekomprimieren Sie \ Windows \ WinSxS \, \ Windows \ System32 \ drivers \ und \ Windows \ System32 \ DriverStore \
    1. Öffnen Sie eine erhöhte (Administrator) Eingabeaufforderung
    2. Navigieren Sie zum Basisordner, den Sie dekomprimieren möchten (Beispiel: Windows \ WinSxS).
    3. Geben Sie "Compact / U / S / A / I / Q" ein und warten Sie, bis der Vorgang abgeschlossen ist
    4. Geben Sie "PSExec -hsi cmd" ein.
    5. Navigieren Sie zu dem Basisordner, den Sie dekomprimieren möchten
    6. Geben Sie "Compact / U / S / A / I / Q" ein und warten Sie, bis der Vorgang abgeschlossen ist
    7. Geben Sie "Exit" ein
    8. Geben Sie "net start TrustedInstaller" ein.
    9. Geben Sie "runassystem_x64.exe" ein. Runfromtoken_x64.exe trustedinstaller.exe 1 cmd ""
    10. Navigieren Sie zu dem Basisordner, den Sie dekomprimieren möchten
    11. Geben Sie "Compact / U / S / A / I / Q" ein und warten Sie, bis der Vorgang abgeschlossen ist
    12. Geben Sie "Exit" ein
    13. Geben Sie "net stop TrustedInstaller" ein.

Hinweis: Sie werden aufgrund von unterschiedlichen ACLs für Dateien dreimal ausgeführt (einmal als Administrator, einmal als lokales System und einmal als TrustedInstaller-Dienst.

Hinweis: Wenn Sie das Windows-Datenträgerbereinigungsprogramm mit aktivierten "Gerätetreiberpaketen" oder "Windows Update-Bereinigung" ausführen, werden die Dateien unabhängig von den im Taskplaner (taskschd.msc) vorgenommenen Änderungen komprimiert. Quad5Ny vor 10 Jahren 0