之前有紀錄過,微軟有提供「Optimize-VHD」這個 Hyper-V 的 PowerShell cmdlet(官方文件),可以用來透過釋出沒有用到的空間來最佳化動態擴充的 VHDX 的大小。
而當最近當發現自己用 Hyper-V 架設的 GitLab 的 VHDX 檔案所占用的空間越來越大、遠遠超過實際的內容(實際檔案只有不到 100GB,但是檔案卻有 640GB…),想透過「Optimize-VHD」來縮小檔案的時候,卻發現它幾乎沒有用!?
後來查了一下,才發現微軟的 Optimize-VHD 主要應該還是以對應 Windows 的 NTFS 為主,對於 Linux 的檔案系統看來是沒辦法很好地去偵測檔案裡的那些區塊並沒有實際被用到、所以基本上無法有效地縮小檔案。