/ winsxsフォルダーが非常に大きくなり、小さくすることができるのはなぜですか?


174

私が使用しているVistaの仮想マシンには10 GBの仮想ハードディスクしかないため、時間の経過とともにスペースが不足することが心配です。

私が使用TreeSizeを犯人かどうかを確認するために..

ここに画像の説明を入力してください

そして、主な原因は、/winsxsその「Windows Side-By-Side」フォルダです。

ここに画像の説明を入力してください

Windows Side By Sideフォルダーとは何ですか?さて、それはここでかなりよく説明されています

オペレーティングシステムのすべてのコンポーネントはWinSxSフォルダーにあります。実際、この場所をコンポーネントストアと呼びます。各コンポーネントには、それが構築されたバージョン、言語、およびプロセッサアーキテクチャを含む一意の名前があります。WinSxSフォルダーは、システム上でコンポーネントが検出される唯一の場所です。システムに表示されるファイルの他のすべてのインスタンスは、コンポーネントストアからのハードリンクによって「投影」されます。最後のポイントを繰り返します。OSの各ファイルの各バージョンのインスタンス(または完全なデータコピー)は1つだけで、そのインスタンスはWinSxSフォルダーにあります。その観点から見ると、WinSxSフォルダーは実際にはOS全体であり、ダウンレベルオペレーティングシステムでは「フラット」と呼ばれます。

フォルダーが大きくなる理由は説明できますが、時間が経つにつれて大きくなる理由ではありません。その質問に対する答えはサービスです。Windowsの以前のバージョンでは、サービスの原子単位はファイルでしたが、Windows Vistaではコンポーネントです。特定のバイナリを更新すると、コンポーネント全体の新しいバージョンがリリースされ、その新しいバージョンは元のコンポーネントと一緒にコンポーネントストアに保存されます。コンポーネントの上位バージョンはシステムに投影されますが、ストア内の古いバージョンは変更されません。その理由は、コンポーネントストアが非常に大きくなる理由の3番目の部分です。

/ winsxsフォルダーのサイズについて不平を言う他の多くの人々

同僚は最近、2年ごとにラップトップの更新を受け取り、新しいラップトップにVistaをロードする途中でした。何らかの理由で、彼のハードドライブC:はわずか25GBに分割され、残りの領域ははるかに大きなドライブD:のために確保されました。

とにかく、多くのWindows Updateを読み込んだ後、彼はC:にドライブスペースをほとんど残さず、何らかの理由で、WinSxSディレクトリが8GB以上に膨らんでいました。

WinSxS(Windows Side-by-Side)ディレクトリの目的は知っていましたが、通常のオペレーティングシステムの更新でそのディレクトリのサイズが非常に速く爆発する理由はよくわかりませんでした。

安全のためにこれらすべての重複ファイルがあることはあまり気にしませんが、ディスク容量不足エラーによるVMの爆発気にます。だから、。/ winsxsを何らかの方法で安全に削減できますか? それはそうではないようです..

管理者は、何らかの理由で、/ winsxsディレクトリを削除するために自分でそれを行うべきではありません。そうすると、Windows UpdateとMSIがその後正しく機能しなくなる可能性があります。ディレクトリからの誤った削除を防ぐには、その子に継承するディレクトリに強力なセキュリティ記述子を配置します。

この/ winsxsフォルダーが大きくなった場合、この仮想マシンのイメージを再作成する必要があります..これは本当にしたくない!


24
TreeSize無料... この目的でwindirstat.infoを使用します;
スティーブシュネップ2009

6
VMを拡張してメインパーティションを拡張できませんか?
サムサフラン

1
これを使用することができます:windowsfixup.com/2009/05/…個人的にソースコードを見つけることができない限り、私はそれから離れるだろう
Sam Saffron

11
winsxsには多くのハードリンクがあるため、サイズも頻繁に過剰に報告されます。
グレッグD

4
スーパーユーザの最初の質問
puretppc

回答:


101

Windows 7 SP1のインストール後にクリーンアップする素晴らしいコマンドがあります(約3 GB節約できました)。

DISM /online /cleanup-Image /spsuperseded

管理者特権でのコマンドプロンプトから実行する必要があります


2
素晴らしい、Windows 7 SP1のクリーンアップを考えていた
Jeff Atwood

6
SP以外の更新バックアップも削除できるWindows 7の他のコマンドはありますか?
銀河

8
または、ディスククリーンアップツールの[システムファイルのクリーンアップ]オプションを使用して、Service Packバックアップファイルを削除することもできます。
ミチャウT

5
@Pies、最初にディスククリーンアップを実行しましたが、DSIMはまだ余分な〜3GB(フォルダーサイズではなく、%free disk spaceを測定)を取り除きました。したがって、両方を行う価値があります。
マットウィルキー

3
@UpTheCreek、あなたは確かですか?ディスククリーンアップを実行した後、システムファイルをクリーンアップします。C:\Windows\system32>DISM /online /cleanup-Image /spsuperseded Deployment Image Servicing and Management tool Version: 6.1.7600.16385 Image Version: 6.1.7600.16385 Service Pack Cleanup can't proceed: No service pack backup files were found. The operation completed successfully.
Cees Timmerman

44

TL; DR

winsxsには実際にハードリンクが含まれています。あなたが考えるほど多くの追加データを必要としません。

ハードリンクは、ディスク上のどこかにある実際のファイルへの「ショートカット」または「ポインター」のようなものです。ハードリンクはそれ自体でハードドライブのスペースを占有しません。単にリダイレクトとして機能します。

winsxsはハードリンクで構成されているため、これらのリンクを削除してもスペースは解放されません。実際のファイルは、ディスク上のさまざまな場所に残ります。


winsxsは問題ではありません

...それは解決策です!(まあ、主に。)

要約、「MVP、モデレーター、ロニー・バーノンによる回答としてマーク」はここにあります

うわー、ハードリンクとwinsxsについての長い議論。とにかく、すべてがどのように機能するかについて私が理解したことのいくつかの要約されたポイントがあります。

上記のAndre.Zieglerが投稿した完璧な回答でOPの質問に回答することから始めるには、winsxsに触れないでください。いくつかのファイルはmp3やaviなどのようにトリミングできますが、残りのシステムファイルはそのままにしておく必要があります。私も上記のRonnie Vernonが投稿したLink Shell Extensionを使用しています。どのリンクがハードリンク(赤い矢印)でどれがシンプルなファイルであるかを簡単に確認できます。

ここに来る前に、vsp1clnのようなWindows 7用のSP1をインストールした後、クリーンアップツールを要求する人々を多くの場所で見ました。専用のツールはなく、すべてディスククリーンアップサービスに統合されています。ここで1つの注意点は、ドライブのクリーンアップ後に数百MBを削除するというオプションが表示されたとしても、サービスは約3 GBの余分なファイルを削除するため、システムごとに異なります。面白いことに、今ではSP1をインストールする前よりもさらに多くのスペースがあります。いいね、MS。

ハードリンクに関して、私はそれらの周りに作成された混乱に楽しまれました。私はLinuxのオタクではありません。通常はソフトリンクのみを使用します。それで十分です。

リンクの有無にかかわらず、選択したファイルのグループは常に合計としてカウントされます。つまり、10MBのファイルを取得し、2つのハードリンクを作成すると、3つすべての選択が30MBになり、ファイルの元のマスターファイルテーブルエントリに関連するソフトリンクとは異なり、これが正しいサイズになります。 0バイト、ハードリンクはデータ自体に関連し、 MFTに独自のエントリがありますが、同じデータアドレスを指します。明らかに、サイズとして実際のデータのサイズ、同じ時間、属性などがあります。なぜ、以下。

ドライブにどれくらい残っていますか?シンプル:ドライブのプロパティレポートとまったく同じです。Cで非表示または非表示のすべてのファイルを選択して比較したり、実際にHDDの使用状況を表示しないため自動的に実行するツール使用したりないでください。どうして?なぜなら:

  1. その操作は、ハードリンクを含む選択したすべてのファイルのリストを個別のファイルとして作成し、それぞれを取得してサイズを追加します。ドライブのプロパティは実際に保存されたデータをカウントします
  2. すべてのファイルがカウントされるわけではなく、トラバースから保護されたフォルダーや読み取りからのファイルはカウントされず、システムボリューム情報には通常、この方法で非常に大きなファイルが保護されます
  3. その数は、ファイル転送の場合にのみ役立ちます。ファイルやリンクなどをDVDまたはNASにコピーする必要がある場合、それが占める量であり、NTFS固有の機能であるためリンクは保持されません。または、ISO、UDF、NFS、およびその他のファイルシステムでさまざまな形式で利用できますが、それらは複製されます。

テストを行います... 10MBのファイルa.exeを別のドライブからコピーし、空き領域が10MBずつ低下することを確認します。ハードリンクを作成します(mklink / H b.exe a.exe)。選択されたこれらの2つのファイルは、選択プロパティ20MBを「使用」しますが、実際にはドライブのプロパティ確認された10MBのみであり、ファイルのコピー後と同じ空き容量があります。いずれかを削除すると、空き領域は同じままになります。最後の1つを削除すると、スペースが10MB増えます。害はありましたか?番号。

winsxsとは何ですか?はるかに優れたdllcache。XPのdllcacheでは、クローンされてから実際にサイズ使用量に追加されたファイルのコピーがありましたが、実際には使用量は改善されますが、ウイルスに対する完全な保護はされません。不正なアンインストーラーがSystem32から一部のランタイムライブラリを削除する必要があると考えた場合、リンクのみを削除し、データは削除せず、リンクを再作成しますが、cabsにwinsxsをアーカイブして元のファイルの横にあるタクシー。また、winsxsは、開発者のために、同じ名前で異なるバージョンのファイルを区分化するシリアライゼーションをもたらします。これは良いことでも悪いことでもあります。適切にコーディングするのが面倒ですが、もうコーディングしたくないときに役立ちます

これは、SP1後のwinsxsによる過度の「スペースの使用」と同じ理由で、ここに着く人を助けるために行いました。そして、それが役に立てば幸いです。


この回答は、受け入れられた回答に完全に欠けている非常に重要な側面ではありませんか?
マフ

33

ディスクスペースが限られている場合、これらの複製とバックアップは非常に迷惑です。

その場所にいるので、OSの安定性を危険にさらさない唯一の方法は、「コンテンツを圧縮してディスク領域を節約する」設定をsetting しみなく使用することです。

これらすべてのバックアップディレクトリをWindowsディレクトリの下に圧縮することで、認識できる副作用なしに、ディレクトリサイズを6.5 GBから5 GBに減らすことができました。Windowディレクトリ以外の一部でこれを使用すると、10 GBをさらに拡張します。


2
私はそれを圧縮しようとしましたが、私は「Access denied」と言ってから、フォルダとpoqexec.logにアクセスしました。読み取りロックであると仮定しました。これをバイパスするものはありますか?
クインティンパー

1
実際、あなたはまだOSの安定性を危うくしています。WinSxSフォルダーは圧縮しないでください。実際、それは非常に悪い考えです。「compress winsxs」をグーグルで検索してください。
Hello71

6
この手法が良いアイデアかどうかはわかりません。winsxsツリーの多くのファイルはハードリンクです。これらのファイルの圧縮を有効にすると、ファイルのすべてのインスタンスが圧縮されますか?意図しないパフォーマンスの結果が生じる可能性があります。
duffbeer703

3
@FiascoLabs、これは4年前の質問であり、具体的には10GBドライブを指していることに気付いていますか?「誰もVistaを使用していない」と同様に述べることができます。今は本当かもしれませんが、質問された時点ではそうではありませんでした。
エラン

1
@eranしかしwinsxsに関するすべてのwin7の質問はこの質問の重複として閉じます
トビアスKienzler

27

Vistaがあり、SP2がインストールされている場合は、新しいService Pack Clean-up Toolを使用して古いシステムファイルをクリーンアップできます。

  1. [スタート]、[すべてのプログラム]、[アクセサリ]、[コマンドプロンプト]の順にクリックするか、[スタート]、[実行]の順にクリックし、cmdと入力してコマンドプロンプトウィンドウを開きます。
  2. コマンド「Compcln.exe」を実行します。パスは「c:\ Windows \ System32 \ compcln.exe」です。
  3. Vista SP2をシステムに永続的に保持するかどうかの質問がユーザーに表示されます。
  4. 「Y」と入力してEnterキーを押すと、システムはWindowsコンポーネントのクリーニングを実行し始めます。

Vista SP1でこれを見つけることができませんでした
10

ええ、それはおそらくVista SP2の新機能です。
トマスアンドル

4
私のために多くを保存していなかったが、私は、ツールが存在することを確認することができ、それは私のGを救っプラス
itj

Compcln.exeはW10にはありません。
ローリー・スターン

21

Windows 8あなたはでWinSxSフォルダのサイズを小さくすることができ、Windowsの機能を削除します

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

重要なのは、Windows 8で新しく追加された/ Removeパラメーターです。

WinSxSのほとんどのスペースは、時間の経過とともにインストールするWindowsUpdatesを使用します。Windows 8 / Windowsの10あなたができる新しいアップデートによって置き換えられるアップデートを検出して削除(新しい累積IEのアップデートなど)は、このコマンドを実行します:

dism.exe /online /cleanup-image /startcomponentcleanup

または、ディスククリーンアップウィザードを実行して、「Windows Update Cleanup」を選択します

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

また、サービススタックアップデートhttp://support.microsoft.com/kb/2821895をインストールしたことを確認してください

この更新プログラムは、WinSxSのディープクリーンアップを実行し、現在使用されていないWinSxSからのすべてのDLL / Exeファイルを小さなデルタファイルに圧縮します。

ここに画像の説明を入力してください

さまざまなファイルサイズを確認します。

Windows 8.1 は新しいDISMコマンドを追加します/startcomponentcleanup新しいパラメータを取得/ResetBaseあなたの最後の更新を永続的になり、より多くのスペースを節約するために、すべての古いファイルを削除します。

新しいコマンドdism /online /cleanup-image /analyzecomponentstoreを実行して、WinSxSフォルダーを分析することもできます。

ここに画像の説明を入力してください

スペースを節約するために、いつクリーンアップを実行する必要があるかがわかります。


2
これは、Windows 7 SP1でも利用可能になりました:support.microsoft.com/kb/2852386
Mark Henderson

ここではStartComponentCleanup、1809の前にディスク上で12.4 Gbでした。後のディスク上で6.54 GB StartComponentCleanupで、大幅に改善されました。92保留中の削除、保留中の名前変更はありません。で76812個のファイルWinSXS、コンピュータが、これは現在のインストールW10の典型的なものである1803に更新されたとき21452は、昨年10月に9月から日付がディスク上に2.90 GBのを取るか、我々はまだ詰まっていますか?
ローリー・スターン

1
@LaurieStearn私にはわからない。VMでWin10のみを実行し、Windows 8.1ホストシステムで新しいWin10バージョンごとに新しいVMを作成します。
magicandre1981


9

良いニュースです!WinSXSフォルダークリーンアップするために、Windows 7 SP1向けにMicrosoftから正式に認可された方法があります

  1. HotFix 2852386をインストールします -手動でダウンロードするか、Windows Updateが完了するまで待つことができます
  2. これにより、ディスククリーンアップウィザード(システムファイルのクリーンアップ中)に新しいオプションが追加され、「Windows Updateクリーンアップ」を有効にできます。このオプションにチェックマークを付けます。
  3. OKをクリック

警告:WinSxSフォルダーのクリーンアップを実行した後、特定のWindows Updateをアンインストールできない場合があります。


6

以下のように見える最後にこれを行う方法がある中でのWindows 8.1サービスパック1およびWindows Server 2012 R2

コンポーネントストア分析ツール:

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

スキャンの最後に、ユーザーは次のような結果のレポート(winsxsフォルダーの実際のサイズ)を取得します。

コンポーネントストアの結果を分析する

コンポーネントストアのクリーンアップ:

現在、コンポーネントストアクリーンアップは、DISMを実行するか、ディスククリーンアップウィザードを使用して、エンドユーザーが手動でトリガーする必要があります。コンポーネントストアクリーンアップを平均的なエ​​ンドユーザーにとってより便利にするために、メンテナンスタスクに追加され、エンドユーザーのディスク領域を自動的に節約します。これを可能にするために、リブートを必要とせずに、置き換えられたインボックスドライバーのアンインストールを許可するように変更が行われます(今日、CBSによって行われるすべてのドライバーのインストール/アンインストールにはリブートが必要です)。

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

  2. ディスククリーンアップツール、システムファイルのクリーンアップボタン。

    ディスククリーンアップツール

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


4
既に投稿された方法:superuser.com/a/594216/174557同じことを2回投稿する必要はありません;)
magicandre1981

2

Dism ++が探しているものです(https://www.chuyu.me/en/index.html)。

ギガバイトのスペースを節約できます...

「置換されたWinSxSアセンブリ」を選択する必要があります。これを行うと、インストールされたこれらの更新プログラムをアンインストールできないという警告が表示されます。[OK]をクリックして、スキャンします

ここに画像の説明を入力してください

これにより、どのくらいのスペースを節約できるかがわかります。クリーンアップを実行すると、そのスペースが空になります。


1
このプログラムの使用方法に関する特定の指示を提供する必要があります。Githubからプログラムを入手できますが、提供されたリンクにアクセスできません。
ラムハウンド

1
私はVMでこれを試しました-かなり速いようで、私が知る限りでは何も本当に壊れていません。いくつかの気の利いたポストインストール機能があるように見えるので、私はこれで遊ぶかもしれません(ドライバーのバックアップ!)。基本的な手順とスクリーンショットを使用して回答を編集しました。あなたは、うまくいけば、違いとすぐに賛成票を見るべきです
ジャーニーマンオタク

素晴らしいツール!WinSXSLiteとは異なり、動作し、ほぼ8Gbのスペースを解放しました。
サンキャッチャー

1

それ以外の場合はジェフ・アトウッドが/ResetBaseスイッチを逃すという素晴らしい答えとして、シンプルなワンライナーが1つあれば役立つことを願っています。

注意:このスイッチは大幅にWinSxSフォルダのサイズを小さくするのに役立ちます、しかし、完全にコンポーネントの以前のバージョンを削除しますので、あなたが前にインストールされているすべての更新をロールバックすることはできません。ただし、システムが正常に動作する場合は、安全である必要があります(特に本番環境ではない場合)

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

これはWindows 8.1以降で動作します


0

前述のソリューションに加えて、重要なスペースを確保する1つの方法は、フォルダーのコンテンツ全体を圧縮することです。ただし、少なくともWindows 7以降、エクスプローラーを使用してこれを行うことはできません(適切な権限が必要です)。

これらの指示はこれを達成する方法を示します:

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

メモ/ヒント:

  1. グループ化は、これらのコマンドを手動で実行する場合の実行方法として推奨されています。通常、問題はないはずです(いくつかのスキップされたファイルは使用中のため)。ただし、各グループの結果を確認する必要があります。

  2. Win7x64、Win10x64、Windows Server 2008R2、およびWindows Server 2012の自宅および職場でのさまざまなオペレーティングシステムのインストールでこれらの手順を実行しましたが、これまでのところ問題は見られませんでした。

  3. いくつかのステップ、特に圧縮時間にはかなり時間がかかります。ほとんどの手順は、処理されたファイルを繰り返し表示します。コマンドプロンプトウィンドウを最小化すると、速度が向上する場合があります。


-4

これらのファイルは安全に削除できます。再びそれらが必要になった場合は、さらにいくつかのものをインストールする必要があります。

修正に取り掛かります!

  • Windowsエクスプローラーを開き、C:\ Windows \ System32に移動します。ファイル「vsp1cln.exe」を探します。
  • このファイルを右クリックして、「管理者として実行」オプションを選択します。
  • Vista Service Pack 1クリーンアップツールは、置き換えられたすべての冗長ファイルを削除します。

獲得できるディスク容量は、システム、インストールされているプログラムなどによって異なります。


16
winsxsファイルを安全に削除できますか?確かですか?!
UpTheCreek
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.