如何使用Ubuntu压缩VHD文件?


9

我使用Windows Server 2008r2和Hyper-V角色。来宾系统是Ubuntu 12.04 LTC。它位于动态虚拟硬盘上。

我要压缩此VHD(实际大小为50 GB,磁盘上为360 GB)。但是我不能这样做,因为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添加到任务OS Ubuntu中

3)启动这个虚拟机

4)使用zerofree

zerofree /dev/sda1

5)关闭该虚拟机

6)使用Hyper-V管理器(编辑->碎片整理)

此vhd为360 Gb。现在70 GB。


1
如果您想回答自己的问题,请发布答案,而不是对问题本身进行编辑。
Massimo 2016年

考虑fstrim在2019年,特别是对下LVM EXT4 superuser.com/questions/1491437/...
亚历克·伊斯托明

Answers:


6

关闭虚拟机电源,备份VHD,然后运行另一个具有ext4分区的虚拟机(我使用SystemRescueCD,因为它又小又快),即SysRescue的HD(但不要挂载它)。从SysRescue VM中,在ext4分区上运行“ zerofree ”,关闭该VM的电源,然后使用您的管理网站压缩VHD。


我开始执行此操作(下载SystemRescueCD,然后执行zerofree / dev / sda1),但我不知道我可以在Windows中压缩该VHD(毕竟所有可用空间为空)
AmShegar 2013年


3

我可以确认: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

这取决于文件系统(如果它是XFS),那么您使用Zerofree不能走运。
布拉德

1

该过程似乎是

  • 备份当前的VHD文件。
  • 使用快照管理器删除/合并所有快照。
  • 零填充未使用的磁盘空间

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

这将创建一个名为的文件,oooooooo.ooo其中包含0s。我猜应该在所有分区上重复执行sfill命令。

请注意,这也不是很快的事情,要花费数小时甚至数天才能完成。

  • 紧凑
  • 利润

谢谢,但是我在使用hyper-v和vhd和linux的机器上没有互联网。所以我不能做“ sudo apt-get install secure-delete”
AmShegar


0

我确实尝试在第二代计算机中启动Systemrescuecd。但是它没有用,所以我创建了一个新的第一代计算机,并在其中添加了VHDX。systemrescuecd已启动。我没有做任何手术。卸下第一代计算机,然后将VHDX重新放回原始计算机。然后Ubuntu根本没有启动。只有Grub菜单。

在这里查看我的文章: Hyper-V Ubuntu vhdx scsi ide

因此请注意这一点,并进行备份(我这次没有)...


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.