如何使用Ubuntu压缩VHD文件?

我使用Windows Server 2008r2和angular色Hyper-V。 客户系统是Ubuntu 12.04 LTC。 它位于dynamic虚拟硬盘上。

我想压缩这个VHD(真正的大小是50GB,磁盘上是360GB)。 但是我不能这样做,因为Ubuntu文件系统不是NTFS我需要什么(gparted,sdelete,…)来解决这个问题?

主要的问题是文件系统不是NTFS,而是ext4

答案:

1)下载systemrescuecd

http://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/3.8.1/systemrescuecd-x86-3.8.1.iso/download

2)将这个.iso添加到任务操作系统Ubuntu

3)启动这个虚拟机

4)使用zerofree

zerofree /dev/sda1 

5)closures此虚拟机

6)使用Hyper-Vpipe理器(编辑 – >碎片整理)

这个VHD是360 Gb。 现在70 GB。

关掉虚拟机,备份虚拟硬盘,然后运行另一台虚拟机(我使用SystemRescueCD,因为它体积小,速度快),它具有可用的ext4分区,即SysRescue的HD(但不装载它!)。 从SysRescue VM运行ext4分区上的' zerofree ', closures该VM,然后使用pipe理网站压缩VHD。

我可以证实:zerofree正在努力压缩虚拟磁盘文件

但是:您不需要使用任何应急CD或在另一个虚拟机中安装VHDX:

 sudo apt-get install zerofree 

以安全模式启动,然后运行:

 zerofree /dev/sda1 

之后,我们必须开始虚拟磁盘文件的优化。 在托pipeVHDX文件的服务器上,创build以下文件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 

这个过程似乎是

  • 备份你当前的VHD文件。
  • 使用快照pipe理器删除/合并任何快照。
  • 零填写未使用的磁盘空间

 sudo apt-get install secure-delete sudo sfill -llz . 

这将创build一个名为oooooooo.ooo的文件,填充0秒。 你应该重复所有分区上的sfill命令。

请注意,这也不是很快,如果没有几天完成,则需要几小时。

  • 紧凑
  • 利润

1)下载systemrescuecd

http://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/3.8.1/systemrescuecd-x86-3.8.1.iso/download

2)将这个.iso添加到任务操作系统Ubuntu

3)启动这个虚拟机

4)使用zerofree

zerofree / dev / sda1

5)closures此虚拟机

6)使用Hyper-Vpipe理器(编辑 – >碎片整理)

我曾尝试在第二代机器上启动Systemrescuecd。 但它没有工作,所以我创build了一个新的第一代机器,并添加了VHDX。 systemrescuecd开始了。 我没有做任何操作。 删除第一代机器,并把VHDX放回原来的机器。 然后Ubuntu根本没有启动。 只有Grub菜单。

在这里看到我的post: Hyper-V Ubuntu vhdx scsi ide

所以要注意这一点,并采取备份(我没有这个时间)…

您可以通过检查以下文件中的一些参数来执行此操作:/ sys / block // queue / discard_granularity / sys / block // queue / discard_max_bytes如果其中一个为0,则可能不支持您的硬件+软件configuration。

这里有一个完整的教程在做这个: http : //www.1337admin.org/uncategorized/compacting-virtual-disks-on-generation-2-linux-hyper-v-2012-r2-vms/