我的 Azure 服务依赖于一个巨大的文件树,我尝试处理该文件树使用 VHD。我目前计划创建一个 VHD 文件,安装它,将其格式化为 NTFS 并启用 NTFS 透明压缩,然后将文件树复制到那里。然后我将 VHD 文件上传到 Windows Azure Blob 存储。当 Azure 实例启动时,它将下载 VHD 文件,安装它并透明地使用它,就像它在本地文件夹中一样。
一切听起来都很棒,但是文件树大约有 800 兆字节。启用 NTFS 压缩后,它可以装入 600 兆字节的 VHD 文件中。但是,如果我压缩文件树,它占用大约 400 兆字节。
我希望文件尽可能小,无需解压 - 这样就可以“挂载”并透明地使用它。这就像 VHD,但压缩效果更好。
我能否获得压缩率更高的 VHD?
答案1
然而,VHD 已经缩小得相当好了,就像任何普通硬盘一样,它们可能会产生碎片,并且根据 VHD 的类型,可能需要定期缩小以保持其较小。您可以尝试在上传 VHD 之前缩小它,看看这是否会有所改善。
http://blogs.technet.com/b/tonyso/archive/2008/10/09/hyper-v-how-to-shrink-a-vhd-file.aspx
答案2
似乎下面链接中的人设法将一堆超过 180 GB 大小的大型虚拟机压缩到只有 25 GB 大小的 VHDX 驱动器中!
我所遵循的主要技术是激活所谓的重复数据删除在 VHDX 驱动器中(在服务器上运行,可以与 Win 8.1 及更高版本一起工作),然后按照标准对虚拟磁盘进行碎片整理和压缩。
如果碎片整理真的会对大小产生影响,我会感到非常惊讶,但这就是他所做的。
使用 7zip 进一步打包甚至可以压缩到 16 GB,但失去了虚拟磁盘的灵活性。