照片來源:民報

公司或家裡都有 i7 桌機可用,左手筆電只是輔助,所以當年買筆電選了Vaio T13,以中階價位買到 i5+SSD+觸控螢幕+金屬外殼,十分划算。唯一美中不足就是小不啦嘰的 128GB SSD,扣掉還原 Partition 只剰 100G 左右。隨著軟體愈裝愈多,系統碟 C槽可用空間捉襟見肘,三不五時低於10%警戒線。每每看到C槽的刺眼紅條我就會焦慮,忙著刪暫存檔、移除軟體調頭寸。空間大戶非 Visual Studio 莫屬,用觸控螢幕測試Windows Phone 8.1 App,用Cordova寫Android App,酷是很酷,但模擬器動轍數GB起跳,令人驚心;而 Windows 習慣保留安裝程式以備日後修復或解除安裝,每次裝 Windows Update 也會耗用空間,刪掉系統檔案怕有後遺症,只能看著 Windows 資料夾日益肥大。

這麼下去不是辦法,一咬牙買了第二顆 SSD(T13擴充槽規格特殊,還得花半顆SSD的價錢買轉換頭 orz),自此筆電多了 X 槽。移除 VS2013、Office 2013 改裝到新磁碟,不少檔案似乎綁死 C 槽,擠出空間沒想像多。今天在筆電安裝 Visual Studio 2015,安裝程式預估兩顆磁碟總共要用掉 22GB,有種不祥預感,果不其然,C槽又要爆了…

由 WinDirStat 分析結果,抓到幾個大咖,Windows 暴增到 42GB,ProgramData/Package Cache 用掉 7GB!

探了來歷,極有可能是Visual Studio的傑作。依MSDN部落格文章提到,就算安裝在其他磁碟,Visual Studio還是固定會佔用不少系統碟空間:

  • Shared runtimes like the .NET Framework and Visual C/C++ which require installing into the system drive.
  • Packages shared with other products that have their own installation folders like SQL Server and Windows SDK
  • Components shared with other applications like Office or services like IIS
  • Windows Installer and package caches

換句話說,有些檔案註定只能裝在系統碟,由不得我作主 orz

爬文找到一個好解法,將 Package Cache 移到 X 槽,並將 C 槽原目錄指向新位置,不需要 Hacking 改 Registry,就能輕鬆轉移空間:

  1. 將 C:\ProgramData\Package Cache 目錄搬到 X:\DirJunction\ProgramData\Package Cache
  2. 使用 mklink /J 指令建立目錄連接( Directory Junction
    mklink /J "C:\ProgramData\Package Cache" "X:\DirJunction\ProgramData\Package Cache" 

目錄連接對程式甚至OS來說是透明的,存取時跟位於該實體位置的資料夾沒有兩樣,搬移後幾乎無感,很完美的解決方案。

同樣原理可應用在其他歸檔備用性質的目錄搬移,騰出寶貴 C 槽空間,但仍有些限制。由於原目錄必須完全搬移後刪除,該目錄不能有任何檔案在執行中或被鎖定,另一方面,顧及第二磁碟故障時作業系統至少要能開機,搬移對象以「備而不用」性質為佳,安裝檔、舊版元件的封存資料夾,或是不涉及Windows服務/ActiveX元件的高可攜性軟體是較好的選擇,另外應避免有特殊NTFS權限要求的資枓夾,以免搬移後權限改變造成問題。

陸續搬了\Program Files (x86)\Windows Kits、\Program Files (x86)\Android、ProgramData\Package Cache,挪出15GB,但空間仍不充裕。於是我把腦筋動到高達 22GB 的Windows\Installers,但它是個系統隱藏資料夾,搬動可能引發災難。爬文學到,並不是每個 Installers 檔案都有保存價值,有些孤兒快取檔(Orphaned Cache)是可以放心刪除的。不過文章提到Microsoft Installer CleanUp 工具已隨XP退役、WICleanUp 工具年代久遠,我不確定是否可用在Windows 8,考慮後,決定採行打安全牌-手動搬檔。

Installer 目錄下的msi、msp 採隨機檔名,看不出所以然,在增加作者及標題欄位可以提供一些線索:

標題不是給人看的文字,但從關鍵字可看出端倪,看起來 Office 安裝檔是吃光空間的主謀集團,依大小、標題、修改時間判斷,很多還是重複檔案。

猜得到檔案用途,動手搬移心裡就篤多了,我選擇不刪除檔案,而是將檔案搬移到X槽,待日後要移除或修復時再由X槽複製還原。

C槽剩餘空間來到34GB的安全水位,開心!


Comments

# by Kirin

覺得很受用>< 雖然缺點空間很小.. 但是真的速度有差!! 該考慮把筆電換上SSD了

# by Michael Cheng

iTunes 的 iPhone/iPad Backup 我也是用 mklink 轉夠至 External HDD 解決﹐就算是 MacBook 也可以同樣用 Hard Link 解決佔位問題。

# by BOB

請問後來使用上有出現異常嗎 ? 有搬移過 windows 下的 winsxs 目錄嗎?

# by Jeffrey

to BOB, 只有遇到一次,Windows 8.1升級到Windows 10時,windows目錄會更名windows.old,再複製成windows目錄,結果部分檔案沒複製過去,詳情:http://blog.darkthread.net/post-2015-12-05-vs2015-setup-hang-diagnostic.aspx

# by mick

請問一下,那Windows/Installer,這個資料夾也是先複製搬移到其他槽後,就刪掉嗎? 在重新連結過去這樣?

# by Jeffrey

to mick, Installer 我只將貌似用不到的 msi/msp 搬到其他糟,計劃日後遇到修復或解除安裝找不到檔案時再手動將檔案搬回,並沒有整個目錄搬移用 mklink 導向。

Post a comment