windows – /winsxs フォルダが大きくなるのはなぜですか?

disk-space windows winsxs

私が使っているVistaの仮想マシンは10GBの仮想ハードディスクしかなく、時間が経つと容量が足りなくなるのが心配です

TreeSizeを使って犯人を調べてみました

enter image description here

そして主犯は、その/winsxsや「Windows Side-By-Side-By-Side」フォルダです

enter image description here

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

オペレーティングシステムのすべてのコンポーネントはWinSxSフォルダにあります。各コンポーネントには、そのコンポーネントのバージョン、言語、プロセッサアーキテクチャを含むユニークな名前が付けられています。WinSxSフォルダは、コンポーネントがシステム上で発見される唯一の場所であり、システム上で見られるファイルの他のすべてのインスタンスは、コンポーネントストアからのハードリンクによって「投影」されます。最後のポイントを繰り返します – OS内の各ファイルの各バージョンの1つのインスタンス(または完全なデータコピー)だけがあり、そのインスタンスはWinSxSフォルダに位置しています。 だから、その観点から見て、WinSxSフォルダは、実際にダウンレベルのオペレーティングシステムで “フラット “と呼ばれる全体のOSの全体です。これは、システムファイルチェッカー(SFC)のような操作を実行したり、追加の機能やロールをインストールしたりする際にメディアを要求されなくなった理由でもあります

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

他にもたくさんの人が/winsxsフォルダの大きさに不満を持っています

同僚は最近、彼の2年ごとの仕事のラップトップの更新を受け、Vistaで彼の新しいラップトップをロードする途中だった。何らかの理由で、彼のハードドライブC:のみ25GBとはるかに大きなドライブDのために予約されたスペースの残りの部分にパーティションされました:

とにかく、多くのWindows Updateをロードした後、C:にはほとんどドライブスペースが残っておらず、なぜかWinSxSディレクトリが8GB以上に膨らんでいた

WinSxS (Windows Side-by-Side) ディレクトリが何のためにあるのかは知っていましたが、通常のオペレーティング・システムのアップデートで、なぜそのディレクトリがあんなに早く爆発するのか、よくわかりませんでした

安全のために重複したファイルがあることは気にしていませんが、ディスク容量不足で VM が爆発してしまうことは気にしています。そこで… /winsxs は何か安全な方法で削減することができるのでしょうか?それができるとは思えません

管理者は、いかなる理由があっても /winsxs ディレクトリをクリーンアウトしてはいけません。ディレクトリからの誤った削除を防ぐには、その子に継承されるディレクトリに強力なセキュリティ記述子を付けることで達成されます

もし /winsxs フォルダがこれ以上大きくなったら、この仮想マシンを再イメージ化しなければなりません

  175  Jeff Atwood  2009-07-15


ベストアンサー

Windows 7 SP1のインストール後にクリーンアップする素敵なコマンドがあります(それは私の約3GBを節約することができました)

DISM /online /cleanup-Image /spsuperseded

高架下のコマンドプロンプトから実行する必要があります

104  TJL  2011-03-09


TL;DR

winsxs は実際に ハードリンク を含んでいます。あなたが思っているほど追加のデータを取ることはありません

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

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


winsxsは問題ありません

…解決策だ!(まあ、ほとんどは)

まとめ、「MVP、司会者ロニー・ヴァーノンの回答としてマークされている」ここに書いてあります

うわー、ハードリンクと winsxs についての長い議論になりました。とにかく、ここでは私が理解していることをまとめてみました

OPの質問に答えるために、上のAndre.Zieglerさんの完璧な答えから始めますが、winsxsには触れないでください。mp3やaviなどのようにいくつかのファイルをトリミングすることはできますが、残りのシステムファイルはそのままにしておいてください。私もRonnie Vernon氏が上に投稿したリンクシェル拡張機能を使っていますが、どれがハードリンク(赤い矢印)でどれが単純なファイルかを簡単に見ることができます

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

ハードリンクについてですが、私はハードリンクをめぐる混乱を面白がっていました。私は linux オタクではありませんし、普段はソフトリンクだけを使っています…私にとってはそれで十分なのですが、ハードリンクがどのように機能するのか、サイズがどのようにカウントされるのかを人々は理解していませんでした

選択されたファイルのグループは、リンクであろうとなかろうと、常に合計としてカウントされます。これは、10MBのファイルを取り、2つのハードリンクを作成した場合、3つのファイルの選択は30MBになり、これが正しいサイズになることを意味しています。なぜ、以下

ドライブの残量は?簡単です: ドライブのプロパティのレポートと同じくらいです。C言語で非表示と非表示を問わず、すべてのファイルを選択して比較したり、HDDの実際の使用量が表示されないため、自動的に行うツールを使用したりしないようにしてください。なぜですか?それは何故かというと

  1. この操作は、ハードリンクを含むすべての選択されたファイルのリストを別々のファイルとして作成し、それらのそれぞれを取り、サイズを追加し、ドライブのプロパティは、実際の保存されたデータをカウントします
  2. すべてのファイルがカウントされるわけではなく、トラバースから保護されたフォルダや読み込みから保護されたファイルはカウントされず、システムボリューム情報には通常、このようにして保護された非常に大きなファイルがあります
  3. ファイルやリンクなどを DVD や NAS にコピーする必要がある場合、その数はファイル転送の場合にのみ有用です

テストを行います… 10MBのファイル、a.exeを別のドライブからコピーして、空き容量が10MB分減少していることに気付きます。ハードリンク(mklink /H b.exe a.exe)を作成します。今、選択されたこれらの2つのファイルは、選択プロパティで20MBを “使用 “されますが、実際には唯一の10MBは、それがしたように/ファイルのコピー後に同じ空き領域を持つことになりますドライブのプロパティで検証しました。どちらか1つを削除すると、空き領域は同じままになります。今、最後の1つを削除し、スペースが10MB増加します。何か害はありましたか?いいえ

winsxs とは何ですか?より優れた dllcache です。XP の dllcache では、クローン化されたファイルのコピーがあったため、実際にはサイズの使用量が増加していましたが、これは実際には使用量を改善しますが、(ウイルスからの)完全な保護ではありません。不正なアンインストーラが System32 からランタイムライブラリを削除する必要があると考えた場合、データではなくリンクを削除するだけで、リンクは再作成され、データスペースの使用量を可能な限り低く保ちます。また、winsxs は開発者のために、同じ名前でもバージョンが違うファイルをコンパートメント化するシリアル化をもたらします

私と同じ理由でここに来た人を助けるために、これを書きました…SP1 以降の winsxs による過剰な「スペースの使用」です。そしてそれが役に立つことを願っています

46  Mateen Ulhaq  2011-12-28


これらの複製やバックアップは、限られたディスク容量を持っているときに非常に迷惑です

その中で、OSの安定性を損なわない唯一の方法は、“コンテンツを圧縮してディスク容量を節約する”の設定を惜しみなく使うことでした

Windowsディレクトリの下にあるすべてのバックアップディレクトリを圧縮することで、ディレクトリサイズを6.5GBから5GBに減らすことができました。Windowsディレクトリの外にあるものに使用すると、10GBをさらに引き伸ばすことができます

34  eran  2009-07-19


Vista をお持ちで SP2 がインストールされている場合は、新しい Service Pack クリーンアップ ツールを使用して古いシステム ファイルをクリーンアップすることができます

  1. スタート] > [すべてのプログラム] > [アクセサリ] > [コマンドプロンプト]をクリックするか、[スタート] > [実行]をクリックしてcmdと入力し、コマンドプロンプトWindowsを開きます
  2. Compcln.exeを実行します。パスは “c:\Windows\System32 ゴメンジャクルン.exe “です
  3. ユーザーは、Vista SP2をシステムに永続的に維持するかどうかの質問を受けることになります
  4. Y “と入力してエンターキーを押すと、システムはWindowsコンポーネントのクリーンを実行し始めます

28  Tomas Andrle  2009-07-27


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

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 “を選択します

enter image description here

enter image description here

enter image description here

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

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

enter image description here

ファイルサイズの違いを見てみましょう

Windows 8.1 新しいDISMコマンドを追加しました。/startcomponentcleanupは新しいパラメータ/ResetBaseを取得し、前回のアップデートを恒久的なものにし、より多くのスペースを節約するために古いファイルをすべて削除します

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

enter image description here

これは、スペースを節約するためにいつクリーンアップを実行すべきかを教えてくれます

22  magicandre1981  2013-05-11


VSP1CLN.EXE を使って SP1 を恒久的なものにすることができます

20  Ben Lings  2009-07-22


グッドニュース!Windows 7 SP1 のために、WinSXS フォルダをクリーンアウトするための Microsoft から公式に認可された方法があります

  1. HotFix 2852386をインストール – 手動でダウンロードするか、Windows Updateを介して来るのを待つことができます
  2. これにより、ディスクのクリーンアップ ウィザード (システム ファイルのクリーンアップの下) に新しいオプションが追加され、”Windows Update のクリーンアップ” で有効にすることができます。このオプションにチェックを入れます
  3. Click OK

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

9  Mark Henderson  2013-10-09


Windows 8.1 Service Pack 1とWindows Server 2012 R2で、thereがついにこれを行う方法が出てきたようです

コンポーネントストア解析ツール

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

スキャンが終了すると、ユーザーは以下のような結果(winsxsフォルダの実際のサイズ)のレポートを取得します

analyzecomponentstore results

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

現在、Component Store Cleanupは、エンドユーザーがDISMを実行するか、ディスククリーンアップウィザードを使用して手動で起動する必要があります。一般的なエンドユーザーにとってComponent Store Cleanupがより便利になるように、メンテナンスタスクに追加され、エンドユーザーのディスク容量が自動的に節約されるようになります。これを可能にするために、再起動を必要とせずに置き換えられたinboxドライバをアンインストールできるように変更されます(現在、CBSによって行われたすべてのドライバのインストール/アンインストールは再起動を必要とします)

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

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

    disk cleanup tool

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

7  Jeff Atwood  2014-03-10


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

ギガバイトの容量を節約することができます

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

enter image description here

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

4  None  2017-02-27


ジェフ・アトウッドが/ResetBaseのスイッチを外してしまったという素晴らしい回答をしているので、シンプルなオネリを一つ持っていると助かると思います

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

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

Windows 8.1以降で動作します

1  maoizm  2018-05-27


前述の解決策の他に、大きなスペースを得るための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. いくつかのステップでは、特に圧縮にかなりの時間がかかります。ほとんどのステップでは、繰り返し処理が行われ、処理されたファイルが表示されます。コマンドプロンプトのウィンドウを最小化すると速度が上がるかもしれません

0  Alexei  2017-01-06


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

次は修正だ!

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

あなたが得るディスク容量の量は、システム、インストールされているプログラムなどに依存します

-4  Axxmasterr  2009-07-27


タイトルとURLをコピーしました