いろんなサーバー設定研究所

インフラエンジニアに役立つ各種設定やTipsを提供します Windows Server、Linux など

*

Windows Server 2008R2 以前のサーバーOSでC:\Windows\Tempが増加し続ける原因

   

C:\Windows\Tempが増加し続けているぞ…

DI_IMG_5697-thumb-1000xauto-17805

Windows Server 2008 R2を運用していたら、システム領域がなぜか増加し続け、ディスクを圧迫する状況に陥ったのでこの原因をメモ。Windows Server 2008 R2 以前の環境であれば起こり得る事象なので、何故かOSのシステム領域が増加し続けたらチェックしてみてください。

具体的には、C:\Windows\Temp フォルダーに cab_XXX_X が生成されディスクの容量を圧迫している場合の対処方法について紹介しています。


C:\Windows\Tempが増加し続ける原因

OSをクリーンインストールし大量のWindows Update等を行った場合、Windows Module Installer Serviceのログである”C:\Windows\Logs\CBS\CBS.log”のサイズが2GB以上になってしまう事があります。

通常このログはmakecabコマンドによりキャビネット化されますが、ログが2GB以上になってしまった場合にはmakecabの仕様によりCABファイルに変換する事が出来ず、この残骸がC:\Windows\Temp残り続けてしまう事があるのです。

参考
http://blogs.technet.com/b/askcorejp/archive/2015/04/16/c-windows-temp-cab-xxx-x-x.aspx

現象が発生するまでの詳細なメカニズム

  1. Windows Update等を行った際「C:\Windows\logs\CBS\CbsPersist_xxxxxxxxxxx.log」にWindows Module Installer Service のログが書き込まれる。
  1. 本来このlogは「makecab」コマンドにより次のcabファイル「Windows\logs\CBS\CbsPersist_xxxxxxxxxxx.cab」に圧縮される。
  1. しかし「makecab」では2GBまでのファイルしか扱う事ができないため、「CbsPersist_xxxxxxxxxxx.log」が肥大化したり、何らかの要因でまた壊れていた場合正常にcabファイルを作ることができなくなる。
  1. 結果「C:\Windows\Temp」にこの残骸が残り、C:\Windows\Tempフォルダの肥大化が発生する。

この現象の根本解決方法

ログ圧縮にWindows Server がmakecabを使用してしまっている以上、makecabの仕様により根本解決する事はできません。不運にもこの現象が発生してしまった場合、都度次のファイルを削除するようにしましょう。

C:\Windows\temp\cab_XXX_X
C:\Windows\logs\CBS\CbsPersist_xxxxxxxxxxx.log
C:\Windows\logs\CBS\CbsPersist_xxxxxxxxxxx.cab

Windows Server 2012 以降では発生するか?

Windows Server 2012 以降では、このログのローテーションが見直されたため、C:\Windows\Temp が肥大化する事はありません

 - Windows Server