![如何使用 Ubuntu 压缩 VHD 文件?](https://linux22.com/image/620458/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Ubuntu%20%E5%8E%8B%E7%BC%A9%20VHD%20%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我使用带有 Hyper-V 角色的 Windows Server 2008r2。客户系统是 Ubuntu 12.04 LTC。它位于动态虚拟硬盘上。
我想压缩这个 VHD(实际大小为 50 GB,磁盘上为 360 GB)。但我无法做到这一点,因为 Ubuntu 文件系统不是 NTFS。 我需要什么(gparted、sdelete、...)来解决这个问题?
主要问题是文件系统不是 NTFS,而是 ext4。
答案:
1)下载systemrescuecd
2)将此 .iso 添加到目标操作系统 Ubuntu
3)启动此虚拟机
4)使用 zerofree
zerofree /dev/sda1
5)关闭此虚拟机
6) 使用 Hyper-V 管理器(编辑 -> 碎片整理)
这个 vhd 原来是 360 GB。现在只有 70 GB。
答案1
答案2
我可以确认: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
答案3
这个过程似乎是
- 备份您当前的 VHD 文件。
- 使用快照管理器删除/合并任何快照。
- 将未使用的磁盘空间填零
即
sudo apt-get install secure-delete
sudo sfill -llz .
oooooooo.ooo
这将创建一个名为“ filled with s”的文件0
。我想你应该在所有分区上重复 sfill 命令。
请注意这也不快,需要几个小时甚至几天才能完成。
- 袖珍的
- 利润
答案4
我确实尝试在第二代机器上启动 Systemrescuecd。但是没有成功,所以我创建了一台新的第一代机器并将 VHDX 添加到其中。systemrescuecd 启动了。我没有做任何操作。移除第一代机器并将 VHDX 放回原始机器。然后 Ubuntu 根本无法启动。只有 Grub 菜单。
请参阅我的帖子: Hyper-V Ubuntu vhdx scsi ide
所以请注意这一点,并做好备份(这次我没有)......