WindowsやWindows Serverを長期間安定運用する上で定期的に実行しておきたいことの一つに、Windows Updateの繰り返しで肥大化していく「コンポーネントストア」の最適化があります。今回は、サポート終了目前のWindows Server 2012/2012 R2におけるコンポーネントストアの最適化を取り上げます。セキュリティ更新プログラムの提供も残り2回となりますが、「拡張セキュリティ更新プログラム(ESU)」を利用すれば後3年の付き合いになるかもしれません。その予定があるなら、知っておいて損はないでしょう。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Windows Updateの繰り返しで肥大化していく「コンポーネントストア」(C:\Windows\WinSxS)。これを放置しておくと、知らない間にC:ドライブを圧迫し、正常な稼働や新しい更新プログラムのインストールが失敗するなど、悪い影響を生じさせることがあります。
筆者の経験上、OSの起動や更新プログラムのインストールに余計に時間がかかったり、更新プログラムのインストールがなかなか進まなかったり、エラーで失敗したりする場合は、コンポーネントストアの最適化で改善することがあります(たまたまタイミングが合っただけで、コンポーネントストアの最適化は関係ないかもしれません)。
コンポーネントストアを最適化する最も簡単な方法は「ディスククリーンアップ(Cleanmgr.exe)」を管理者として起動して、「Windows Updateのクリーンアップ」を選択してクリーンアップを実行し、終わるまで気長に待つことです。
ディスククリーンアップはWindowsクライアントでは標準で利用できますし、「Windows Server 2016/2019/2022(デスクトップエクスペリエンス)」でも利用できます。「Server Core」インストールでは利用できません。
「Windows Server 2012/2012 R2(GUI使用サーバー)」インストールには、ディスククリーンアップが標準でインストールされることはありません。Windows Server 2012 R2以前では「サーバーの機能」で「デスクトップエクスペリエンス」を追加することで、ディスククリーンアップがインストールされ、利用できるようになります。
ただし、Windows Server 2008/2008 R2のときに、Windows Server 2008/2008 R2(フルインストール)にデスクトップエクスペリエンスをインストールすることなくディスククリーンアップを利用できるようにする方法として、「C:\Windows\WinSxS」の下のディレクトリから「Cleanmgr.exe」と「Cleanmgr.exe.mui」を適切な場所にコピーする方法が紹介されました。以下のMicrosoftの公式ドキュメントにもその方法が説明されています(画面1)。このドキュメントを読む限り、Windows Server 2012 R2以前ならこの方法が使えそうです。
デスクトップエクスペリエンスがインストールされていないWindows Server 2012(GUI使用サーバー)で試してみました。まず、PowerShellウィンドウを開き、次のコマンドラインを実行して、候補となるCleanmgr.exeとCleanmgr.exe.muiのパスを確認します。候補といったのは、Windows Updateでバイナリが更新されている場合、複数のバイナリが見つかる場合があるからです。
Get-Childitem -Path C:\Windows\WinSxS\amd64* cleanmgr.exe* -Recurse
使用したシステムは2023年7月までの品質更新プログラムがインストールされたものですが、目的のバイナリは1つずつしか見つかりませんでした。見つかったCleanmgr.exeを「C:\Windows\System32」に、Cleanmgr.exe.muiを「C;\Windows\System32\ja-jp」にそれぞれコピーします。ドキュメントには「移動」と書いてありますが、移動(move)やハードリンクの作成(fsutil hardlink create)はアクセス拒否エラーで失敗しました。
バイナリのコピー後にCleanmgr.exeを実行すると、ディスククリーンアップのウィンドウが表示されます。しかし、「削除するファイル」の項目が少ない気がします。目的の「Windows Updateのクリーンアップ」は存在しません(画面2)。
今度は、デスクトップエクスペリエンスがインストールされていないWindows Server 2012 R2(GUI使用サーバー)でも試してみました。
こちらでは複数のバイナリが見つかりましたが、ビルド番号を参考に最新のCleanmgr.exeとCleanmgr.exe.muiを特定し、それぞれを「C:\Windows\System32」と「C;\Windows\System32\ja-jp」にコピーします。コピー後にCleanmgr.exeを実行してみると、「サポートされない16ビットアプリケーション」と表示され、起動できませんでした(画面3)。インターネットを検索してみると、残念ながらWindows Server 2012 R2では「C:\Windows\WinSxS」からのコピーの方法はもう使えなくなったようです。
Windows Server 2012(GUI使用サーバー)とWindows Server 2012 R2(GUI使用サーバー)のそれぞれのインストールから、コピーしたCleanmgr.exeとCleanmgr.exe.muiを削除して元の状態に戻し、デスクトップエクスペリエンスをインストールします(再起動が要求されます)。こうしてインストールされたCleanmgr.exeは、正しく機能しました(画面4、画面5)。
Windows Server 2012/2012 R2は「2023年10月」にサポートが終了します。もう、2023年9月13日と10月1日に提供されるセキュリティ更新プログラムの2回しかありません。サポートが終了するシステムの更新のために、いまさらコンポーネントストアを最適化しても意味はないでしょう。
しかし、「拡張セキュリティ更新プログラム(Extended Security Update、ESU)」(Microsoft Azureでは無料、オンプレミスでは有料)を利用して後最大3年間、セキュリティ更新プログラムを受け取るつもりであり、まだ最適化したことがないという場合は、この機会に一度、最適化しておくことをお勧めします。
しかし、安定稼働している現在のシステムに、新たに「サーバーの機能」を追加することは、全くお勧めしません。Cleanmgr.exeを利用できなくても、コンポーネントストアの最適化はOS標準の「DISM」コマンドで次のコマンドラインを実行することで実施できます。この方法なら、そもそもCleanmgr.exeを利用できない、Server Coreインストールでも利用できます(画面6)。なお、「/ResetBase」はさらに縮小を期待できるオプションですが、Windows Server 2012 R2以降で利用できるオプションであり、Windows Server 2012では利用できません。
DISM /Online /Cleanup-Image /StartComponentCleanup [/ResetBase]
最後に、Cleanmge.exeによる「Windows Updateのクリーンアップ」も、DISMコマンドによるコンポーネントストアのクリーンアップも、実行が完了するまで数時間(早くても2〜3時間)要するので終わるまで我慢強くお待ちください。
岩手県花巻市在住。Microsoft MVP 2008 to 2023(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.