WinSxS-Ordner von Windows 7 verschieben

Hinweis: Das Verschieben des WinSxS-Ordners führt leider dazu, dass die Installation von Windows Updates nicht mehr klappt (siehe Kommentare)!

Standardmäßig ist es nicht vorgesehen, den WinSxS-Ordner von Windows 7 zu verschieben. Selbst wenn ich bisher keine Probleme nach dem Verschieben von WinSxS festgestellt habe, was sich prinzipiell zukünftig ändern könnte, ist folgende Vorgehensweise als experimentell anzusehen. Außerdem sollte vor der Aktion selbstverständlich ein vollständiges Backup des Gesamtsystems angefertigt werden.

Das Verschieben des WinSxS-Ordners macht wirklich nur dann Sinn, wenn neben der Systemfestplatte eine weitere (permanent verfügbare) Festplatte existiert, in die der WinSxS-Ordner verschoben werden soll. Dieser Umstand führt jedoch möglicherweise zu Leistungseinbußen. Denn einige Dateien im Windows-Ordner referenzieren Dateien aus WinSxS (via "hard links"). Diese (zusätzlichen) Referenzen belegen (im Prinzip) keinen zusätzlichen Speicher. Das Verschieben einer mehrfach referenzierten Datei aus WinSxS führt jedoch potentiell dazu, dass sie auf der Zielfestplatte dupliziert wird ("hard links" können nur innerhalb einer Partition existieren), also nach wie vor Speicher auf der Systemfestplatte und anschließend auch noch auf der Zielfestplatte belegt. Erfahrungsgemäß ist nur ein kleiner Teil der Dateien aus WinSxS diesem Problem ausgesetzt, d. h. die meisten Dateien sind einfach referenziert, belegen also nach dem Verschieben nur noch Speicher auf der Zielfestplatte.

Das eigentliche Verschieben von WinSxS muss vollständig offline erfolgen, da einige Dateien aus diesem Ordner im Normalbetrieb in Benutzung sind. Bevor es richtig losgeht, sollte man sich zunächst den Volume-Namen des Ziellaufwerks in Form von "\\?\Volume{xxx}" notieren. Dazu zunächst die Eingabeaufforderung starten und den Befehl mountvol eingeben, der alle Volume-Namen je Bereitstellungspunkt (= Laufwerksbuchstabe) auflistet.

  1. Nun Computer neu starten und kurz bevor der "Windows wird gestartet"-Schriftzug erscheint, die Taste F8 drücken.
  2. Den Eintrag "Computer reparieren" auswählen und bestätigen.
  3. Nach Auswahl der Tastatureingabemethode und der Eingabe der Zugangsdaten eines administrativen Nutzers, die Auswahl Eingabeaufforderung treffen.
  4. Nun ermittelt man durch Ausprobieren das System- und Ziellaufwerk. Im Folgenden sollen <windir> den Windows-Pfad des Systemlaufwerks und <D> den Laufwerkbuschtaben des Ziellaufwerk darstellen.
  5. Folgender Befehl kopiert zunächst den WinSxS-Ordner auf das Ziellaufwerk:
    robocopy /MIR /R:0 /W:0 /COPYALL /DCOPY:T /NDL /NFL <windir>\winsxs <D>:\winsxs
  6. Nun wird der Quellordner gelöscht:
    rmdir /S /Q <windir>\winsxs
  7. Anschließend soll eine "Verknüpfung" zum WinSxS-Ordner auf dem Ziellaufwerk hergestellt werden. In diesem Zusammenhang soll der bereits weiter oben ermittelte Volume-Name verwendet werden, um eine Unabhängigkeit von Laufwerksbuchstaben zu ermöglichen:
    mklink /J <windir>\winsxs \\?\Volume{xxx}\winsxs
  8. Den Befehl exit eingeben und neustarten.
  9. Nach dem Neustart die Eingabeaufforderung als Administrator öffnen und den Befehl "sfc /scannow" ausführen. Dabei wird u. a. der WinSxS-Ordner auf Konsistenz geprüft.

Kommentare

Super, weil ich viel Software ausprobiere und am System rumspiele und deshalb viele Systembackups mache und zurückspiele. So sind die Backups um den winsxs-Ordner kleiner und gehen viel schneller (ein Backup eines laufenden Win7 in nur 8s, natürlich mit schneller SSD und der genialen Software "Snapshot" von Ehlert)

Hallo Alexander, erstmal vielen Dank für diese Idee!

Im Grunde hat deine Anleitung auch prima funktioniert, bis auf den letzten Schritt. Meine Beiden Systeme (PC & NB) wollten den Link, den mklink erstellte nicht akzeptieren. Ich hab ausgehend von deiner Lösung quer Beet herumprobiert ohne änderung des Problems, der Systemstart endete immer in einem BlueScreen :(

Endlich hatte ich eine Idee die auch Sinn ergab:

  • Die Laufwerksbuchstaben müssen zum Linkerzeugen denen des laufenden Systemes entsprechen, alsomklink /J c:\Windows\winsxs d:\Windows\winsxs
  • um das zu erreichen habe ich einfach das ohnehin leere Laufwerk c: mit mountvol gelöschtund die entsprechende \\?\Volume{xxx} ID zum neuen Laufwerk C: gemacht.

NACHTRAG:Das System läuft, aber nicht richtig. Zum Beispiel lässt sich jetzt kein einziges Update mehr instalieren. SFC /ScanNow giebt keinen Fehler aus, schreibt aber ohne Ende Daten nach ..\winsxs\pendingrenames - die dort für immer bleiben ... ein nochmaliger Scan verdoppelt die Anzahl.Ich gebe auf und benutze "nur" nur die Komprimierung ... muss fürs erste reichenEventuell findet sich ja zu einer anderen Zeit eine Lösung.Danke trotzdem! :)

Hallo Christian. Das stimmt leider. Ich habe es vorhin nochmal überprüft. Windows-Updates können nicht mehr installiert werden. Die Fehlermeldungen in dem Zusammenhang suggerieren, dass zumindest das Windows-Update sich darauf verlässt, dass sowohl der Windows als auch der winsxs-Ordner sich auf einem Laufwerk befinden (STATUS_NOT_SAME_DEVICE). Ich vermute, dass dies mit Hardlinks zu tun hat, die bekanntlich nur innerhalb eines Volumes existieren können. Einige Dateien die sowohl im Windows- als auch im winsxs-Ordner abgelegt werden, werden nicht als Kopie sondern als Mehrfachreferenzen auf ein Objekt erzeugt.

Es sieht also ganz danach aus, dass man den winsxs-Ordner nicht isoliert entkoppeln kann. Einzige Variante, die mir momentan einfällt und womöglich klappt, bestünde im Verschieben des ganzen Windows-Ordners. Es stellt sich jedoch die Frage, wie viel Sinn das macht.

Tja, das ganze System zu verschieben wäre auch eine Lösung des Platzproblems, aber es fon einer SSD auf eine HDD zu verschieben erscheint mir dann doch nicht sinnvoll - dann könnte ich ja auch die SSD weglassen ;)Alternativ werde ich mich wohl mit dem Gedanken anfreunden die SSD zu vergrössern, bzw. eine zweite gleich grosse als Raid 0 dazuzuhängen - da wird aber das Setup wieder zur Quälerei (ich hab es erst einmal hinbekommen dass Windows 7 auf einem Raid0 läuft) also denke ich wird die Systemplatte einfach durch eine Grössere ersetzt. Die CrucialBX200 zB. sollte mit 960GB (€229) das Problem erstmal dauerhaft beseitigen!Vielen Dank nochmal für deine Bemühungen!

Hallo Christian. Das Problem ist, dass mountvol in der "Computer reparieren"-Umgebung andere Volume-IDs verwendet als unter Windows selbst. Wenn die Volume-ID stimmt, dann gibt es keinen Bluescreen. Alternativ kann man natürlich auch mit Laufwerksbuchstaben arbeiten.

Danke für deine Antwort, ich hab mir im Nachhinein ohnehin gedacht "oh man, etwas nachdenken könntest du schon ..." ich kenne das ja, werde mich aber nie daran gewöhnen dass da, je nachdem was gerade startet, quasi eine Zufallszahl generiert wird ... 

Hallo Herr Schimpf,

vielen Dank! ihr Programm KB3172605 hat mir sehr geholfen! endlich mal etwas, was wirklich hält, was es verspricht! Danke!

von mir gibt es dafür fünf Sterne!

Neuen Kommentar schreiben