2017-12-06

Compact VHD / VHDx

有時候你會發現, Dynamic 的 VHD / VHDx 怎麼 Compact 都還是一樣大
一個 100GB 的 VHD 裡面明明只有 20GB 卻無法縮小
在許多年前我就有發現這個問題並自己摸索找到方法解決
只要進行以下步驟就可以縮小了
  1. 以唯讀模式將 vhd  mount 起來
  2. Compact
  3. unmount
  4. 再 Compact 一次
用 PowerShell Script 比較省事, 請參考以下指令照順序做就可以了

$VHDx = "D:\Hyper-V\Virtual Hard Disks\Disk.vhdx"
mount-vhd -path $VHDx -readonly
optimize-vhd -path $VHDx -mode full
dismount-vhd -path $VHDx
optimize-vhd -path $VHDx -mode full

需要注意的是 OS 必須有 Hyper-V Role 才有能力執行 optimize-vhd
如果只是裝了 Hyper-V Management Feature 是不行執行 Compact 的

後來才發現微軟有這個資訊的參考資料:
https://blogs.technet.microsoft.com/askcore/2012/09/20/compacting-a-dynamically-expanding-virtual-hard-disk-in-windows-server-2012/

因友人在 PTT 發文了之後才來問我, 所以才把這個技術資訊寫起來
他把問題描述得比較仔細, 有興趣可以看一下
https://www.ptt.cc/bbs/MIS/M.1510111615.A.75F.html

2020.12.01

1 則留言: