[PowerShell] Convert Hyper-V .VHD เป็น .VHDX และ Optimize ขนาดของ Disk

สำหรับการแปลง VHD ไปเป็น VHDX และทำการลดขนาดของ Disk (Shink เป็นไปได้แนะนำให้ทำใน Mode Offine ครับ) โดยใน ฺBlog นี้สอนแบบ Offline ด้วยโดยมีขั้นตอน ดังนี้

  • จัดการไฟล์ VM ของ VHD เดิมให้เรียยร้อยก่อน อาทิ เช่น
    • ลบไฟล์ที่ไม่จำเป็น
    • ทำการ Disk Clear พื้นที่ Disk
  • CD เข้าไป Path ที่มีไฟล์ vhd
  • แปลงไฟล์ VHD ไปเป็น VHDX ด้วยคำสั่ง PowerShell ดังนี้
Convert-VHD -Path .\<ConvertDiskFile>.vhd -DestinationPath .\<NewDiskFile>.vhdx
  • เก็บขนาดพื้นที่ Disk ก่อนการแก้ไข
$sizeBefore = (Get-Item .\<NewDiskFile>.vhdx).length
Write-Host "Before $sizeBefore
  • Mount ไฟล์ Disk อันนี้ต้องดูด้วยว่าไฟล์ที่ Mount มาแล้วจะได้ Drive อะไรครับ กรณีที่ขอยกตัวอย่างเป็น Drive H: ครับ
    • ทำการ defrag disk
    • เคลียร์ข้อมูลพวก sand
defrag H: /d 
#จัดการกรณีที่ทำ SAND
defrag H: /x
defrag H: /k /l
defrag H: /x
defrag H: /k /l
  • Dismount Disk ออกมาครับ ด้วยคำสั่ง
Dismount-VHD .\<NewDiskFile>.vhdx
  • ทำการ Optimize เพื่อลดขนาด Virtual Disk ครับ เอาแบบ FULL เลยนะครับนานนึงนึงแต่ลดพื้นที่ได้เยอะ
Optimize-VHD .\<NewDiskFile>.vhdx -Mode Full
  • หาขนาดที่ลดลงได้ด้วยคำสั่ง
$sizeAfter = (Get-Item .\Win10TSY.vhdx).length
Write-Host "After $sizeAfter"
Write-Host "Total disk space Saved: $(($sizeBefore - $sizeAfter) /1Mb) MB"

Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.