Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

Windows Server 2012のWinSxSフォルダーを安全にクリーンアップする方法

Windows Server 2012のWinSxSフォルダーを安全にクリーンアップする方法を解説する前に、まず「WinSxSフォルダーとは何か」「どのようなファイルが保存されているのか」「なぜ時間の経過とともにサイズが増大し続けるのか」を理解しておきましょう。

WinSxSフォルダーとは何か

Windows Server 2003の時代には、追加機能をインストールする際、インストールウィザードがCD-ROMへのセットアップディスク挿入、またはWindows Server 2003のインストールパッケージが格納されたフォルダーへのパス指定を求めていました。しかし、MicrosoftはWindows Server 2008でこの方針を変更し、役割や機能の展開に必要なすべてのバイナリファイルを%windir%\WinSxS(WinSxSは「Windows Side By Side」の略)フォルダーに格納するようになりました。その結果、追加の役割をインストールするたびにインストールメディアを探してサーバーに接続する必要はなくなりました。もちろん、この方式ではOSが必要とするディスク容量は大幅に増加します。

ここで重要なのは、システムの中核となるコンポーネントがWinSxSフォルダー内に配置されているため、このフォルダーからファイルを手動で削除しては絶対にいけないという点です。

では、なぜWinSxSフォルダーのサイズは増え続けるのでしょうか?答えはシンプルで、「更新プログラム」のためです。各機能の更新プログラムをインストールすると、WinSxSフォルダーには更新対象機能の旧バージョンと新バージョンの両方が保存されます。このアーキテクチャのおかげで、インストール済みの更新プログラムをいつでも安全にアンインストールし、機能を旧バージョンへ戻すことが可能になっています。

ヒント: Windows 7 SP1では、使用しなくなった更新プログラムを削除することでWinSxSフォルダーのサイズを縮小できます。

システムは正常に起動・動作しており、追加の役割を展開する予定もないのに、ディスクの空き容量が不足している——インストールパッケージのためにシステムドライブ上の数ギガバイトが占有され続けるのは非合理的に思えます。残念ながら、Windows Server 2008ではこれらのファイルをシステムに損傷を与えずに削除することは困難でした。しかし、Microsoftは新しいサーバーOSであるWindows Server 2012で、「Features on Demand(オンデマンド機能)」と呼ばれる新機能を実装し、この弱点を改善しました。

Windows Server 2012のFeatures on Demand(オンデマンド機能)とは

Features on Demand機能を使用すると、WinSxSフォルダーから未使用の役割のバイナリファイルを削除できるため、システムファイルが占有するディスク容量を削減できます。後になって削除済みの役割を復元する必要が生じた場合は、Windows Server 2012のインストールイメージ、Windows Updateサービス、または元のコンテンツが置かれたネットワーク共有から必要なファイルを取得できます。

次のPowerShellコマンドを実行すると、すべてのシステム役割と機能の情報を取得できます。

Get-WindowsFeature

実行結果を見ると、各役割の状態が「Install State」列に表示されます。取り得る状態は以下の通りです。

  • Installed: 役割または機能がインストールされており、現在システムで使用中
  • Available: 役割はサーバーにインストールされていないが、必要なファイルはすべてディスク上にあり、いつでもインストール・有効化可能
  • Removed: 役割または機能はサーバーにインストールされておらず、インストールに必要なファイルもディスクから削除済み

したがって、GUIまたはPowerShell(Install-WindowsFeatureコマンド)から役割をインストールすると状態は「Available」から「Installed」へ変わり、削除(Uninstall-WindowsFeatureコマンド)するとその逆になります。

Windows Server 2012から不要な役割を削除する

役割をディスク(WinSxSフォルダー)から削除するには、PowerShellを使用します。この目的のためには、Uninstall-WindowsFeatureコマンドレットに特別な引数-Removeを指定します。

例えば、DHCPサーバーの役割のバイナリファイルを削除するには、次のコマンドを使用します。

Uninstall-WindowsFeature –Name DHCP –Remove

次のコマンドは、Active Directoryドメインサービス(AD DS)のファイルを削除します。

Uninstall-WindowsFeature AD-Domain-Services -Remove

さらにPowerShellを使えば、より複雑なコマンドを作成することもできます。次のコマンドは、Windows Serverの未使用の役割・機能のインストールファイルをすべて一括削除します。

Get-WindowsFeature | Where-Object {$_.InstallState -Eq “Available”} | Uninstall-WindowsFeature -Remove

この例では、ファイルサーバーの役割のみがインストールされている環境で、WinSxSフォルダーのサイズが8GBから5GBに減少しました。悪くない結果ですよね?しかも、WinSxSフォルダーのクリーンアップに使ったのはたった1つのコマンドだけです。

削除した役割・機能をWindows Server 2012に再インストールする方法

もう1つの例として、Windows Server 2012のある役割をインストールしたいものの、そのインストールパッケージがすでにWinSxSフォルダーから削除されているケースを考えてみましょう。この場合、GUIのサーバーマネージャーまたはPowerShellを使って、役割をいくつかの方法で復元できます。

役割ファイルの復元を開始する前に、インストールされているWindows Server 2012エディションのインデックス番号を特定する必要があります。そのためには、Windows Server 2012のインストールメディア(sourcesフォルダー内のinstall.wimイメージファイル)が必要です。次のPowerShellコマンドを実行してください。

Get-WindowsImage –ImagePath <path_to_wim_file>\sources\install.wim

お使いの環境にインストールされているWindows Serverのバージョンを見つけ、そのインデックス(Index行の値)を控えてください。この例では、Windows Server 2012 Datacenterでインデックスは4です。

同じ操作はDISMユーティリティでも実行できます。

dism.exe /get-imageinfo /imagefile:d:\sources\install.wim

サーバーマネージャーを使って削除済みの役割をインストールする

サーバーマネージャーコンソールを開き、役割と機能の追加ウィザードを起動します。インストールしたい役割または機能を選択すると、ウィザードは「この役割のインストールに必要な一部のファイルが見つからないため、代替ソースパスを指定する必要がある」と警告します。[代替ソースパスの指定(Specify an alternate source path)]ボタンをクリックしてください。

[パス(Path)]フィールドに、install.wimファイルへの完全なパスと、インストールされているOSエディションのインデックスを次の形式で指定します。

WIM:D:\Sources\Install.wim:4

[OK]ボタンをクリックすると、インストールする役割に必要なすべてのファイルがWinSxSフォルダーにコピーされます。

必要に応じて、WIMファイルが格納されたフォルダーへのパスや、WinSxSフォルダーへのネットワークパスを指定することもできます。さらに、グループポリシー(コンピューターの構成/管理用テンプレート/システム/オプションコンポーネントのインストールおよびコンポーネントの修復に関する設定を指定する)を使用して、このパスをサーバーグループに対して一括指定することも可能です。多数のWindows Server 2012サーバーを展開する必要がある場合、この最後の方法は非常に便利です。こうしたクリーンアップによる総効果は、数百ギガバイトに達することもあります。

PowerShellを使って削除済みの役割を復元する

同じ操作は、PowerShellコマンド1つでも実行できます。例えば、ADDS(Active Directoryドメインサービス)の役割ファイルを復元する場合は、次のコマンドを実行します。

Install-WindowsFeature AD-Domain-Services -Source WIM:D:\Sources\Install.wim:4

まとめ

本記事では、Windows Server 2012の新機能「Features on Demand」について解説しました。この機能を使えば、サーバー役割のインストールパッケージ(バイナリファイル)をWinSxSフォルダーから削除できます。削除した役割も、Windows Server 2012のインストールメディアさえあれば、必要になったときに簡単に復元可能です。

なお、Windows 8のFeatures on Demandは少し仕組みが異なります。これは、これまで使用してきたPowerShellコマンドレットがWindows 8には存在しないためです。代わりとなるのは(やや不便ですが)、/Disable-Featureパラメーターを付けたDISMコマンドです。また、WinSxSフォルダーの内容は圧縮することもできます。詳細については「WinSxSフォルダーのクリーンアップと圧縮方法」の記事を参照してください。

ヒント: Windows 8.1でWinSxSフォルダーのサイズを削減する方法の詳細については、こちらの関連記事をご覧ください。

  1. Windows 11/10のWinSxSフォルダとは?巨大化する理由と安全なクリーンアップ方法を徹底解説

    Windows 11/10/8/7を使用している方の多くは、WinSxSフォルダの存在に気づき、その巨大なサイズに驚いた経験があるのではないでしょうか。まだご存じない方のために説明すると、このフォルダはC:\Windows\Winsxsにあり、非常に大きな容量を占めています。筆者の場合、約5GBに達し、約6,000個のフォルダと25,000個のファイルを含み、Windowsフォルダ全体の約40%を占めています。Windows XPでは25〜50MB程度だったこのフォルダが、Windows Vista以降のOSではなぜこれほど大きくなるのか、不思議に思う方は多いはずです。 本記事では、このWin

  2. Windows 10のヒント:WinSxSフォルダーをクリーンアップしてディスク容量を節約する方法

    Windows 10でWinSxSフォルダーをクリーンアップする方法: WinSxSは、Windows 10に存在する特別なフォルダーで、Windows Updateやインストール関連のファイル、さらにバックアップファイルが保存されています。元のシステムファイルに問題が発生した場合でも、このバックアップから簡単に復元できるようになっています。しかし、これらのバックアップファイルは大量のディスク容量を消費します。将来使うかどうかもわからないデータのために、貴重なディスク容量を占有され続けるのは避けたいところですよね。この記事では、WinSxSフォルダーを安全にクリーンアップして、ディスク容量を節