Hyper-V
如何使用 Ubuntu 壓縮 VHD 文件?
我使用帶有 Hyper-V 角色的 windows server 2008r2。來賓系統是 Ubuntu 12.04 LTC。它位於動態虛擬硬碟上。
我想壓縮這個 VHD(實際大小是 50 GB,磁碟上有 360 GB)。但我不能這樣做,因為 Ubuntu 文件系統不是 NTFS。 我需要什麼(gparted,sdelete,…)來解決這個問題?
主要問題是文件系統不是NTFS,而是ext4。
答案:
- 下載systemrescuecd
- 將此 .iso 添加到 quest OS Ubuntu
3)啟動這個虛擬機
- 使用 zerofree
zerofree /dev/sda1
關閉此虛擬機
使用 Hyper-V 管理器(編輯 -> 碎片整理)
這個 vhd 是 360 Gb。現在 70 GB。
關閉 VM,備份 VHD,然後執行另一個虛擬機(我使用SystemRescueCD,因為它既小又快),它具有可用的 ext4 分區,即用於 SysRescue 的 HD(但不要安裝它!)。從 SysRescue VM,在 ext4 分區上執行“ zerofree ”,關閉該 VM,然後使用您的管理網站壓縮 VHD。
我可以確認:zerofree 正在壓縮虛擬磁碟文件
但是:您不需要使用任何救援 CD 或將 VHDX 掛載到另一個虛擬機中:
sudo apt-get install zerofree
啟動進入恢復模式,然後執行:
zerofree /dev/sda1
之後,我們必須開始優化虛擬磁碟文件。在託管 VHDX 文件的伺服器上,創建以下文件 ShrinkVhdx.ps1:
[CmdletBinding()] Param( $VHDFiles ) # Find the disks foreach($VHD in $VHDFiles){ Write-Verbose "Working on $VHD, please wait" Write-Verbose "Current size $([math]::truncate($(Get-VHD -Path $VHD).FileSize/ 1GB)) GB" Mount-VHD -Path $VHD -NoDriveLetter -ReadOnly Optimize-VHD -Path $VHD -Mode Full Write-Verbose "Optimize size $([math]::truncate($(Get-VHD -Path $VHD).FileSize/ 1GB)) GB" Dismount-VHD -Path $VHD Write-Verbose "" }
現在執行文件並享受釋放的磁碟空間:-)
ShrinkVhdx.ps1 .\hdd1.vhdx