昨天 Windows C 碟空間不足案例的續集。Windows 2016 主機,系統碟 80GB 只剩 5GB 出現紅色警示,執行磁碟空間清理工具也擠不出什麼空間。

從空間使用統計發現元兇是 C:\Windows\WinSxS,竟用掉 37GB!。(延伸閱讀:分析 Windows 磁碟空間不足的正確姿勢)

WinSxS 是 Windows 存放系統元件、程式庫的位置,由於需同時保存新舊版本(SxS 是 Side by Side 的意思),一般大小在 10GB 左右,37GB 明顯異常。依微軟文件,WinSxS 的檔案不可隨意刪除,但理論上 Windows 有內部程序會清理 WinSxS 資料夾,卸載和刪除已由其他元件取代為較新版本之元件的套件。元件舊版將會在系統上保留一段時間,以供必要時進行復原。期間過後,較舊元件會自動從安裝中移除。

自動清除機制包含會在系統閒置時執行的工作排程,清除超過 30 天的舊版元件。但看來這台主機的自動清理機制因不明原因失效,WinSxS 長成 37GB 的阿肥。

DISM 工具有個 CleanUp-Image 作業可分析及清理 WinSxS,先試跑 AnalyzeComponentStore:

C:>dism /online /cleanup-image /analyzecomponentstore

部署映像服務與管理工具
版本: 10.0.14393.4169

映像版本: 10.0.14393.4169

[===========================99.9%========================= ]

元件存放區 (WinSxS) 資訊:

Windows 檔案總管所顯示的元件存放區大小 : 41.71 GB

元件存放區的實際大小 : 36.53 GB

與 Windows 共用 : 6.95 GB
備份和停用的功能 : 24.02 GB
快取和暫存資料 : 5.55 GB
上次清理的日期 : 2016-11-21 20:36:26

可收回的套件數目 : 28
建議使用元件存放區清理 : 是

操作順利完成。

C:>

解釋結果:

  1. 因為 WinSxS 有用到 Hard Link (兩個檔案指向同一份實體位置,只佔一份空間),故檔案總管統計的大小會偏大。
  2. 上次清理時間是六年前,自動清理機制不知何故失效,才導致 WinSxS 長成巨獸。

我決定跑 dism /online /cleanup-image /startcomponentcleanup 手動清理,進度條推進速度緩慢,期間 TiWork 程序會吃掉一整顆 CPU,不知忙什麼,但觀察 C 磁空間有逐步被釋放,就放著隔天再採收。

隔日檢查發現清理過程遇到 系統找不到指定的檔案 錯誤,但重跑分析已回收了約 25GB 空間,有達成目標:

元件存放區的實際大小 : 11.60 GB

與 Windows 共用 : 6.76 GB
備份和停用的功能 : 4.06 GB
快取和暫存資料 : 779.78 MB

小結:WinSxS 為 Windows 儲放系統元件、程式庫的資料夾,裡面的檔案不可任意刪除,由於需保存新舊版本、移除程式後仍需保留 30 天,故一般會佔用約 10GB 的空間。理論上會有自動程序定期清理不用的檔案,若自動清理失效,便可能持續增長(本案例長到 37GB),此時可手動執行排程或用 DISM 工具清理。


Comments

Be the first to post a comment

Post a comment