Hebikuzure's Tech Memo

2015年3月28日

WinSxS フォルダーのクリーンアップ

Filed under: Windows Tips — hebikuzure @ 12:28 午後

WinSxS フォルダーのクリーンアップ
https://technet.microsoft.com/ja-jp/library/dn251565.aspx


Windows Vista / Windows Server 2008 以降の Windows では、Windows のコンポーネントや更新プログラムのインストールの際に WinSxS フォルダーが「ステージング」領域として利用され、必要なファイルがいったん WinSxS フォルダーにコピーされた後で実際のファイルの置き換えや配置がハードリンクの作成によって行われる動作になっています。この動作についてはサポート技術情報「Windows Vista および Windows Server 2008 で、Service Pack および修正プログラムの適用後にブート パーティションの使用領域が増加する」で解説されており、またこのブログでも以前に「Windows Vista では %windir%¥WinSxS フォルダーが肥大する」という記事で紹介しています。この記事はかなり古い物ですが今でもよくアクセスしされているので、ディスクの空き容量が不足している場合に WinSxS のサイズが大きくなっていることに気づかれる方が多いのでしょう。しかし WinSxS フォルダーにコピーされたファイルはコンポーネントや更新プログラムをアンインストールする際やファイルの破損を修復する際に必要となる場合があり、手動で削除してしまうと Windows の動作に支障が出る可能性があります。

残念ながら Windows Vista 以降の Windows では WinSxS を縮小する手段は用意されておらず、WinSxS のサイズが大きくディスクの空き容量が不足する場合、根本的に解決するには Windows を再インストールする必要がありました。

こうした問題を改善するため、Windows 8.1 / Windows Server 2012 R2 では WinSxS をクリーンアップするツールが用意されました。以下の記事に詳しい情報が掲載されています。

具体的な方法を簡単に解説していきましょう。

縮小可能なサイズを調べる

まず以前の記事でも触れていますが、WinSxS フォルダー内には実際にインストールされているコンポーネントや更新プログラムにハードリンクされている使用中のファイルと、ロールバック (コンポーネントや更新の削除) に備えたあるいバージョンのファイル (未使用のファイル)、一時的なキャッシュ ファイルなどが含まれています。WinSxS をクリーンアップする場合、使用中のファイルは削除できませんが未使用のファイルやキャッシュを削除して容量を削減することは可能です。そこでまず実際のクリーンアップを行う前に、WinSxS がどの程度縮小可能なのかを調べることができます。

現在の WinSxS を調査するには、管理者権限のコマンド プロンプトで以下のコマンドを実行します。

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

コマンドの完了まで少し時間がかかりますが、以下のように使用中のサイズと縮小可能なサイズが表示されます。

dism

表示される項目はそれぞれ以下のような意味を持っています

エクスプローラーによって検出された
コンポーネント ストアのサイズ
Windows エクスプローラーなどで表示した場合の WinSxS の見かけ上のサイズ
コンポーネント ストアの実際のサイズ ハードリンクを考慮に入れた実際の WinSxS のサイズ
Windows と共有 Windows のよって現に利用されているファイルのサイズ
バックアップおよび無効な機能 Windows によって現に利用されていないファイルのサイズ
キャッシュおよび一時的なデータ 一時ファイル
前回のクリーンアップ日 直前の WinSxS のクリーンアップ実行日
再利用できるパッケージの数 削除可能なパッケージ (コンポーネントや更新) の数
コンポーネント ストアのクリーンアップを推奨 クリーンアップを実行した方がよいかどうかの目安

「バックアップおよび無効な機能」と「キャッシュおよび一時的なデータ」が WinSxS で縮小可能なサイズです。

WinSxS のクリーンアップ

Windows 8 以降の Windwos では、WinSxS のクリーンアップを自動的に行うタスクがタスクスケジューラに登録されています。このタスクは Windows の自動メンテナンスの一部として定期的に実行されるように設定されています(Task Scheduler Library\Microsoft\Windows\Servicing\StartComponentCleanup)。

このタスクが実行されると、削除可能なファイルにマークが付けられ、30日後以降に自動的に削除されます。またタスクの実行時間は 1 時間に設定されているため、多数の削除可能なファイルがあると一度のタスク実行ではすべてのファイルが削除されない場合があります。

手動でクリーンアップを行う場合は、管理者権限のコマンド プロンプトで以下のコマンドを実行します。

Dism.exe /online /Cleanup-Image /StartComponentCleanup

このコマンドを手動で実行した場合、ファイルの削除はただちに行われます。また削除可能なすべてのファイルが削除されます。

すべての古いバージョンの削除

WinSxS をより縮小するには、すべての古いバージョンのファイルを削除します。ただしこれを行うと、インストール済みのサービス パックと更新プログラムをアンインストール (ロールバック) することができなくなります。ロールバックする必要がないことを十分に確認してから実行してください。

すべての古いバージョンを削除するには、管理者権限のコマンド プロンプトで以下のコマンドを実行します。

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

実行すると、ただちに古いバージョンのファイルを含むすべての削除可能なファイルが削除されます。

またサービスパックで利用されている領域が、次のコマンドでさらに縮小できます。管理者コマンド プロンプトで実行してください。

Dism.exe /online /Cleanup-Image /SPSuperseded

このコマンドを実行すると、サービス パックのアンインストールはできなくなります。

1件のコメント »

  1. […] Windows Serverの場合、「デスクトップエクスペリエンス」の機能を追加しないと明示的に「ディスクのクリーンアップ」が行えませんが、コマンドラインからdismコマンドを発行してWinSXS領域をお掃除できる模様です。企業内ではなるべく使わない(C:をがっつり確保するとか)、もしくはリリース管理でここまではOKの枠組をつくりませう。はい。 以下、MSDNの記事、hebikuzureさんの記事を参照。 https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-8.1-and-8/dn251565(v=win.10) https://hebikuzure.wordpress.com/2015/03/28/winsxs-%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%… […]

    ピンバック by WindowsUpdateで色々と遊ぶ | コのつく鯖缶日記 — 2018年4月29日 @ 1:58 午後


RSS feed for comments on this post. TrackBack URI

コメントを残す

WordPress.com で無料サイトやブログを作成.