Windows 2008: Das WinSXS-Verzeichnis wächst unkontrolliert und blockiert den Server

62

Ich verwende einen (remote gehosteten) virtuellen Server mit Windows 2008 Server für einen Client. Anfangs hatte es 10 GB Speicherplatz. Während einiger Wochen, in denen auf dem Computer nichts anderes als normale Arbeit mit einem webbasierten Ticket-System ausgeführt wurde, begann Windows, sein berüchtigtes "winsxs" -Verzeichnis so stark zu füllen, dass sich am Ende die Festplatte befand voll und wir mussten weitere 5 GB bestellen. Jetzt, drei Wochen später, wurden diese 5 GB auch von winsxs verbraucht, und ich kann wieder nicht an der Maschine arbeiten. Winsxs ist jetzt 8 GB groß, der Rest des Windows-Verzeichnisses 5 GB.

Ich habe im Internet verschiedene Quellen gefunden, die das gleiche Problem beschreiben. Anscheinend speichert Windows 2008 alle Sprachversionen für alle DLLs, die während des normalen Aktualisierungsprozesses heruntergeladen werden. Das Löschen von Dingen dort wird als tödlich gefährlich beschrieben, da sie wichtige Komponenten enthalten. Ich habe kein Tool oder keine Anleitung gefunden, um die nicht mehr benötigten Dateien zu identifizieren und zu entfernen.

Was kann ich machen? Ist das normal und wenn ja, wie verwalten andere Server mit gleichermaßen begrenztem Speicherplatz? Kann ich etwas ein- oder ausschalten?

Von den vordefinierten Serverrollen ist nur "Dateidienste" (oder wie auch immer es in Englisch heißt, es ist ein Schweizer Server) aktiviert. Außerdem habe ich Apache, mySQL und Subversion installiert. Automatische Updates sind aktiviert.

Bearbeiten: Das Problem besteht weiterhin.

Hinweis: Mir ist bekannt, dass das WinSXS-Verzeichnis hauptsächlich aus Symlinks besteht und dass Benutzer aufgrund der Größe häufig in Panik geraten. Trotzdem habe ich von 15 GB Speicherplatz 1,5 MB für Programme und Daten und nichts mehr übrig. Ich bin froh, dass ich überhaupt auf die verdammte Maschine zugreifen kann. * Ich habe bereits 1 GB Daten freigegeben, die von Windows Windows innerhalb von 24 Stunden gefüllt wurden. Es ist wie in einem Horrorfilm. Was ich ausprobiert habe:

  • Das Installieren von SP2 (das mit compcln.exe geliefert wird) ist keine Option, da der Speicherplatz nicht einmal dafür ausreicht.
  • Auf dem Computer befindet sich keine vsp1clean.exe, wahrscheinlich, weil SP1 bereits mit dem System zusammengeführt wurde. Tatsächlich existiert nirgendwo eine Datei mit dem Namen * cln.exe.
  • Es gibt keine Schattenkopien. Schattenkopien sind nicht aktiv.
  • Soweit ich das beurteilen kann, sind keine Systemwiederherstellungspunkte aktiv.
  • Die einzige aktivierte Serverrolle ist "Dateiserver".
  • Die Standard-Bereinigungsfunktion (Rechtsklick auf Laufwerk C) bietet mir erstaunliche 2 MB an Papierkorbinhalten und temporären Internetdateien.
  • Die Verwendung eines der "cleanup winsxs" -Skripte ist für mich keine Option, sie sehen alle zu zwielichtig aus. Ich kann nichts direkt von Microsoft finden, das dieses Problem behebt.
Pekka 웃
quelle
Hast du das am Ende gelöst?
UpTheCreek
@UpTheCreek eigentlich leider nein! Der Anbieter räumte uns 5 GB zusätzlichen Speicherplatz auf dem VPS ein, den Windows glücklicherweise nicht ausfüllte. Das Windows-Verzeichnis belegt jedoch immer noch 20 GB. Der Vertrag läuft bald aus und wir werden die Hosting-Unternehmen wechseln.
Pekka 웃

Antworten:

24

Das WinSxS-Verzeichnis belegt nicht annähernd den vom Explorer angegebenen Speicherplatz, da es Hardlinks zu physischen Dateien und nicht zu tatsächlichen Dateien verwendet. Der Explorer hat nur Probleme mit der Angabe der Größe von Hardlinks.

Dieser Artikel über Festplattenspeicher (auf den hier verwiesen wird http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/ ) enthält eine hervorragende Erklärung für das WinSxS-Verzeichnis.

Problem mit der tatsächlichen Datenträgernutzung: Sie können versuchen, COMPCLN.EXE auszuführen, um festzustellen, ob Sie alte Service Pack- und Hotfix-Dateien bereinigen können. Ich würde mir auch alle Protokollierungsverzeichnisse ansehen, um zu sehen, ob noch etwas los ist.

Christopher_G_Lewis
quelle
Das hört sich gut an, aber das Windows-Verzeichnis scheint tatsächlich> 12 GB zu verbrauchen (es ist ein Speicherplatz von 15 GB, Programme und Arbeitsdaten belegen 2,5 GB, und es ist kein Speicherplatz mehr verfügbar). Compcln.exe existiert nicht im Jahr 2008, kennt jemand einen ähnlichen Befehl dort?
Pekka 웃
Möglicherweise nur W2K8 SP2: news.softpedia.com/news/…
Christopher_G_Lewis
SP2 klingt interessant, aber der Server ist so voll, dass ich ihn nicht einmal installieren kann. Ich habe den Anbieter einige Tage lang um zusätzlichen Speicherplatz gebeten, aber er hat sich in der Vergangenheit nicht als zu hilfreich erwiesen. Das ist wirklich beunruhigend und verursacht schwerwiegende Probleme. Ich eröffne ein Kopfgeld und füge ein paar Screenshots hinzu.
Pekka 웃
Ich vermute, dass ein erneutes Image des Computers und das Ausführen von Updates keine Option für Sie ist.
blueberryfields
Nur als allerletzte Möglichkeit, da ich viel Arbeit investiert habe, um alles einzurichten ... Das würde es wahrscheinlich lösen, aber ich würde mich sehr freuen, es zu umgehen.
Pekka 웃
18

Ich war im selben Boot wie Sie. Ich hatte 2008 5 brandneue VMs und beobachtete, wie diese im letzten Jahr immer mehr Speicherplatz benötigten. Lassen Sie mich mit windrstat veranschaulichen.

Hier ist ein Screenshot eines brandneuen Servers von 2008 :

Alt-Text 3,8 GByte Winsxs-Verzeichnis

Hier ist ein Screenshot eines Produktionsservers für 2008 :

Alt-Text 5.4GB Winsxs Verzeichnis

Endlich ein Screenshot eines brandneuen 2008R2 Servers : Alt-Text 5.4GB winsxs Verzeichnis

Soweit ich weiß, gibt es keine Möglichkeit, das Winsxs-Verzeichnis abzuschneiden. WinSxS steht für Windows Side-by-Side. In ihrem Versuch, die Auswirkungen der DLL-Hölle (dh Abhängigkeiten) zu reduzieren, hat Microsoft beschlossen, jede Version jeder DLL, die jemals auf Ihrem System installiert wurde, im Verzeichnis winsxs zu belassen.

Das bedeutet zwei Dinge (denke ich):

  1. Während es in winsxs einige harte Links gibt, sollten die einzigen harten Links die der aktuellen DLLs sein. Mit anderen Worten, die aktuellen DLLs, die im System aktiv sind, sind fest mit diesem Ordner verknüpft.

  2. Alle früheren Versionen der DLLs sind weiterhin verfügbar und werden im Verzeichnis winsxs gesichert. Wie Sie in allen Beispielen sehen können, würde das WINSXS-Verzeichnis, wenn es sich wirklich um "hauptsächlich harte Links" handelte, auf keinen Fall mehr als 50% Ihrer aktuellen Festplattenauslastung beanspruchen. Nun, selbst wenn es wahr wäre, dass das Winsxs-Verzeichnis "hauptsächlich aus Hardlinks besteht", würde eine Auslastung von 50% bedeuten, dass Ihr gesamtes C: -Laufwerk wieder mit dem Winsxs-Verzeichnis verknüpft wurde.

Ich habe alles versucht. Löschen alter Dateien, Deinstallieren von Patches, Löschen der Patch-Verzeichnisse "$". Alles.

Schließlich vergrößerte ich alle C: -Partitionen auf allen meinen Servern auf jeweils 30 GB. Dies wird nur eine vorübergehende Korrektur sein, da das Winsxs-Verzeichnis weiterhin wächst. Gute Nachrichten, denn mit der neuesten Version von NTFS können Sie Ihre Partitionen erweitern, ohne einen Neustart durchführen zu müssen. Wie praktisch.

WinSxS ist nicht nur ein nerviges Verzeichnis, sondern eine neue Methode für alle Windows-Entwickler. WinSxS wird in Kürze nicht mehr verfügbar sein. Entwickler verwenden WinSxS und sind abhängig davon, bis eine neue Methode zur DLL-Archivierung oder zur Auflösung von Abhängigkeiten verfügbar ist.

Auf jeder neuen Windows 2008/7 / Vista Box finde ich, dass eine 30GB C: fast richtig ist. Genug Platz (vorerst) für Patches, Protokolle und einige Anwendungen.

Ich kann es kaum erwarten, bis jemand all das herausfindet und anfängt, vor dem Patch erstellte DLLs mit Rogue-Manifesten zu reaktivieren , die zu Angriffs- / Exploit-Vektoren werden.

Joseph Kern
quelle
1
Vielen Dank, wenn keine wundersame Methode zum Abnehmen von WinSXS auftaucht, akzeptiere ich diese Antwort, um mich wissen zu lassen, dass ich nicht der einzige bin, dem dies passiert. Schade, dass es keine Lösung zu geben scheint. Ein Upgrade auf 30 GB ist schwierig zu rechtfertigen, da es sich um externes kostenpflichtiges Hosting handelt. Vielleicht
stufe
1
Ja, darüber bin ich auch nicht sonderlich begeistert. Es sieht so aus, als ob winsxs keine Sammlung von harten Links ist. Vielmehr werden Hardlinks in den Rest des Systems projiziert, aber auch darüber scheint es einige Meinungsverschiedenheiten zu geben. winvistaclub.com/f16.html ...
Joseph Kern
Ich wollte auch erwähnen, dass ich auf keinem der Server, die ich für Beispiele verwendet habe, Serverrollen aktiviert habe. Der Produktionsserver ist ein Apache Tomcat-Server. Und das Programm, mit dem ich den Speicherplatz auf der Festplatte gefunden habe, ist windirstat.info
Joseph Kern,
5
MS gibt mindestens 32 GB Festplattenspeicher an: microsoft.com/windowsserver2008/en/us/system-requirements.aspx
Christopher_G_Lewis
5

15 GB reichen meiner Erfahrung nach nicht aus, besonders wenn es sich um eine 64-Bit-Maschine mit einigen Aktivitäten handelt ...

Das Erweitern der VPS-Festplatte und der Systempartition sollte einfach sein, ohne dass etwas neu installiert werden muss, wie teuer es auch sein mag. Das Anbieten von weniger als 60 GB Systemdatenträger für ein modernes Windows Server-VPS scheint zunächst nicht durchdacht zu sein, auch wenn ~ 30 GB es für eine Weile verringern könnten: 7

Wenn Sie sich für eine 32-Bit-Installation entscheiden, wird ein gewisser Overhead vermieden, und wenn Sie sich für einen Server Core entscheiden, wird eine Menge davon entfernt. Mein 32-Bit-Server 2008 Core-Dateiserver, auf dem svnserve, dfs, printserving usw. ausgeführt werden und der regelmäßig aktualisiert wird, hat ungefähr 5 GB ... während mein 64-Bit-Server 2008 Standard Webanwendungen (asp.net und php unter Verwendung von IIS) bedient. nimmt gerade 30 GB auf. Beide Metriken schließen natürlich die Datenspeicher / Partitionen aus, nur das Windows-System, und beide sind nur Beispiele. Ich habe 64-Bit-Server 2008-Systemfestplatten, die derzeit zwischen 10 und 35 GB belegen.

Jedes Tool, Upgrade oder jede Anwendung, die Sie installieren, vergrößert das WINSXS-Verzeichnis und das Deinstallieren von Dingen hat nicht immer Auswirkungen auf WINSXS, da das System davon ausgeht, dass diese Abhängigkeiten von anderen Tools verwendet werden.

Oskar Duveborn
quelle
5

Dies ist wahrscheinlich zu spät für Sie und basiert nur auf Vista-Erfahrung, aber:

  1. Glauben Sie nicht denjenigen, die sagen, dass der Ordner nicht so groß ist, wie er angezeigt wird - das stimmt, aber wenn Ihnen der Speicherplatz ausgeht, war er zu groß.
  2. Die einzige Möglichkeit, die jemals vorgeschlagen wurde, besteht darin, die Anwendungen zu entfernen, die dem Ordner das Aufblähen hinzugefügt haben. Es gibt jedoch keine dokumentierte Möglichkeit, die Schuldigen zu finden.
  3. Meine "Heilung", nachdem ich keine zufriedenstellenden Antworten gefunden hatte, bestand darin, die größten (und unerwünschten) Ordner brutal zu entfernen, z.

    • 6 Versionen von 'Microsoft Natural Language Search' mit jeweils ~ 300kB
    • Viele orientalische Schriften, die ich nie verwenden werde (manchmal 6 vns davon, meistens identisch)
    • usw. usw.

Angenommen, Sie starten mit einem guten Backup (Image), versuchen Sie es und sehen Sie!

Martin Gerhold
quelle
4

Wenn es möglich ist, können Sie versuchen, WinSXS als Workaround auf eine andere Partition zu verschieben. Meines Wissens gibt es keine Möglichkeit, den Inhalt von WinSXS loszuwerden. Dieses süße kleine Ding befindet sich im Herzen des Vista / Win2008-Betriebs, also ... ich habe nichts Besseres gehört, als es auf eine andere Partition zu verschieben.

Hier ist ein Link zu einem Blog, in dem beschrieben wird, wie es gemacht wird: Klicken Sie auf

Ich würde vorschlagen, dass Sie eine vollständige Sicherung (noch besser: ein Image) Ihrer gesamten C: -Partition durchführen, bevor Sie die Prozedur ausführen. Wohlgemerkt, ich habe das nur unter Vista versucht, nicht unter Win2008 Server.

imagodei
quelle
Gute Idee, aber in meinem Fall (dies ist ein VPS ohne alternativen Speicher) ist dies leider keine Option.
Pekka 웃
--- und ein Bild zu machen ist aus dem gleichen Grund nicht so einfach - ansonsten würde ich eines machen und versuchen, es auf meinem eigenen Computer zur weiteren Prüfung auszuführen.
Pekka 웃
3

Wenn der Hauptschuldige WindowsUpdate ist, kann ich sagen, dass Ihre einzige Alternative zum Kauf von mehr Speicherplatz oder zur Durchführung von Systemdatei-Operationen darin besteht, das Wachstum zu begrenzen, das durch die auslöserfreudigen Updates von Microsoft verursacht wird.

Da Sie hauptsächlich eine Nicht-Microsoft-Anwendungsplattform verwenden, können Sie wahrscheinlich darauf verzichten, dass 90-95% der "wichtigen" Updates heruntergeladen werden.

Sie können also automatische Updates deaktivieren und dann SEHR selektiv auswählen, welche "wichtigen" Updates angewendet werden sollen. Wenden Sie nur solche Patches an, die Ihren Sicherheitsplan DIREKT gefährden. Die meisten "wichtigen" Updates beziehen sich wahrscheinlich nicht auf Ihr Sicherheitsszenario. In diesem Fall können Sie Ihren Sicherheitsplan möglicherweise ändern, um auf sie zu verzichten (z. B. keinen IE auf dem Server verwenden, alternative Dateidienste verwenden, die Netzwerksicherheit verschärfen). .

Matias Nino
quelle
3

Wenn WinDirStat und das Betriebssystem selbst (siehe Arbeitsplatz) dieselbe Menge an verwendetem Speicherplatz angeben, ist dies irrelevant, wenn die Größen nicht als feste Links gezählt werden. Wenn das Betriebssystem denkt, dass Ihnen der Platz ausgeht, sind Sie nicht mehr im Raum.

Ich habe dieses Problem auf einem Storage Server 2008 und einem DC (Server 2008). Auf dem DC wurden keine anderen Programme als Windows-Updates installiert. Beide Server belegen unter WinSXS 15 GB Speicherplatz. Der Speicherserver wurde von HP mit 40 GB auf C: vorinstalliert, daher leide ich auch unter diesem Problem. Bis zu 5 GB freier Speicherplatz.

Dies wurde in Windows 8 / Server 2013 behoben, indem überflüssige Updates (dism.exe / online / cleanup-image / startcomponentcleanup) mithilfe von DISM bereinigt wurden. Dies ist eindeutig ein Problem, das von den Verantwortlichen anerkannt wurde 2008.

NickIzk99
quelle
3

In Windows Server 2008 R2 können Sie mit DISM WinSxS bereinigen. Danach können Sie natürlich keine Updates mehr zurücksetzen. Hier ist eine Erklärung: http://www.sqlskills.com/blogs/glenn/how-to-reclaim-disk-space-in-your-windowswinsxs-directory-on-windows-server-2008-r2-sp1/

Zusammenfassend müssen Sie als Administrator den folgenden Befehl ausführen:

DISM.exe /online /Cleanup-Image /spsuperseded

Ich weiß, dass dies möglicherweise keine relevante Lösung für Sie ist, da Sie Windows Server 2008 haben (anscheinend nicht R2), aber ich fand diese Frage, als ich nach einer Lösung für R2 suchte, sodass sie für einige Leute nützlich sein könnte.

Ynhockey
quelle
Dadurch werden nur Pre-SP1-Dateien entfernt, keine Dateien aus Hotfixes, die später veröffentlicht wurden.
Hubert Kario
1

Ein paar Vorschläge:

  • Wo ist deine Auslagerungsdatei?

  • Richten Sie einen Testcomputer mit derselben Software ein, um festzustellen, ob Sie das Problem replizieren können. Dies ist definitiv nicht normal, und das einzige, was ich mir vorstellen kann, ist, dass etwas auf dieser Box eine DLL (oder ähnliches) ständig ändert und Windows daher ständig Backups davon erstellt.

15 GB sind für eine Windows 2008-Installation sehr günstig - mein Standard-C: -Laufwerk für Windows 2008-Builds ist 60 GB.

John Röthlisberger
quelle
Die 15 GB entsprechen der Größe des Pakets des Anbieters für virtuelles Hosting, und jede Erweiterung (wir haben mit 10 GB begonnen) ist sehr teuer. Das ist auch der Grund, warum ich die Auslagerungsdatei nicht woanders hin verschieben kann.
Pekka 웃
Oh, ich habe vergessen: Aus dem gleichen Grund ist das Replizieren der Maschine nicht so einfach. Es wird der letzte Ausweg sein, sofern nichts anderes funktioniert.
Pekka 웃
Also Anbieter wechseln.
TomTom
1

http://tech.xlab.si/2009/07/move-winsxs-folder/

Ich habe diesen Artikel gefunden, aber noch nie ausprobiert. Es sieht so aus, als gäbe es eine Möglichkeit, über den Ordner winsxs zu navigieren. Wenn jemand dies versuchen kann, bitte gehen Sie durch und lassen Sie es mich wissen

techsmarty
quelle
Das ist der Link von Imagodeis Antwort.
Cees Timmerman
1

Die von Microsoft angegebenen Systemanforderungen für Server 2008 lauten "Festplattenspeicher: Mindestens 32 GB oder mehr".

http://www.microsoft.com/windowsserver2008/en/us/system-requirements.aspx

Warum kann es Ihrer Meinung nach auf halbem Raum bequem laufen?

TessellatingHeckler
quelle
Ich miete eine VPS-Lösung von einem großen Hosting-Anbieter, bei dem es sich ursprünglich um ein 10-GB-Paket mit vorinstalliertem Server 2008 handelte. Ich nehme an, sie müssen irgendwie dafür gesorgt haben. Große Anbieter haben Windows-Pakete mit 10 GB oder 20 GB: Siehe z . B. bit.ly/h0AZsP . Mir wird vom Anbieter gesagt, dass meine ein Freak-Fall ist
Pekka 웃
Mein Fehler, ich habe Server 2008 R2 SP1-Anforderungen verknüpft. Server 2008 erfordert mindestens 8 GB - microsoft.com/latam/windowsserver2008/sysreqs.mspx - empfiehlt jedoch weiterhin 40 GB.
TessellatingHeckler
Danke für den Link. Es könnte jedoch sein, dass das Betriebssystem zwischen - ich werde nachforschen
Pekka 웃
0

Eine Option: Wenn es sich nur um ein billiges altes VPS handelt, das Sie für einfache Dinge verwenden, lohnt es sich, die NTFS-Komprimierung auf der Festplatte oder in bestimmten Ordnern zu aktivieren:

Dies könnte etwas Platz aus dem Laufwerk herausholen. In den Artikeln heißt es für XP, aber es sind die gleichen Schritte unter Win7 / 2008:

David d C e Freitas
quelle
0

Ich bin auf dasselbe Problem gestoßen. Sicher ist WinSxs teilweise schuld ... Aber ich denke, das Problem ist teilweise darauf zurückzuführen, dass Tools wie WinDirStat die Größe von Dateien und Junctions auf die gleiche Weise zu Dateien zählen. Eine Junction ist nur ein Zeiger auf die Datei, kein Duplikat aller Blöcke, aus denen die Datei besteht.

Ich habe festgestellt, dass VSS ein größerer Schuldiger an diesem Problem ist. Verwenden Sie die folgenden Befehle, um festzustellen, ob VSS zu viel Speicherplatz beansprucht, diesen Speicherplatz freigibt oder ein kleineres Limit festlegt:

vssadmin list shadowstorage

vssadmin ShadowStorage löschen / For = C: / On = C:

vssadmin Resize ShadowStorage / For = C: / On = C: / MaxSize = 20%

Clayton
quelle