# WSL2 磁碟空間清理 ## 問題發現 工作上很常使用 Docker Image 去建立相關的 container,因為會一直做測試,導致 cache 檔案愈來愈大。後來執行 `docker system prune -a` 指令後,發現C 槽空間仍然被大量佔用,特別是在 WSL2 環境下。 發現一個驚人的事情 drivers 的空間被占用到很誇張,所以這篇筆記就是要去解決磁碟空間的問題。 :::success drivers 454G 425G 29G 94% /usr/lib/wsl/drivers :::  > Q: 為什麼 `docker system prune -a` 無法完全釋放空間? A: 因為 WSL2 的虛擬硬碟檔案 (vhdx) 不會自動縮小,**需要手動壓縮**。 ## 解決方法 ### 步驟 1: 關閉 Docker Desktop 1. 完全關閉 Docker Desktop 2. 在命令提示字元(CMD)中執行: ```bash wsl --shutdown ```  ### 步驟 2: 清理虛擬硬碟空間 1. 透過 Powershell 找尋 ext4.vhdx ,會在`C:\Users\{使用者名稱}\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_{版本}\LocalState` 資料夾底下,並查看大小 ``` (Get-ChildItem -Recurse | Measure-Object -Property Length -Sum).Sum / 1GB ```  2. 開啟命令提示字元(CMD) 3. 在命令提示字元(CMD)中執行,會跳出一個視窗 ```bash diskpart ```  接著開始解壓縮檔案。 ``` select vdisk file="C:\Users\[你的使用者名稱]\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu[你的版本]\LocalState\ext4.vhdx" compact vdisk detach vdisk exit ```  依序做完後就可以回去檢查是否已經清掉大部分的空間。 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up