我一直主要使用固定大小的磁盘映像来管理 Oracle virtualbox,但我正在考虑切换到动态磁盘映像,因为我听说动态映像的性能与固定大小映像相似,除了扩展时。
不过,我经常做的一项操作是在使用 zip 程序备份固定大小的磁盘映像之前将其填充为零(以减小 zip 存档的大小)。我的问题是,当我将动态磁盘填充为零时,磁盘大小会增加到其最大声明值吗?(对于我的具体情况,我sdelete -z
在 Windows 分区上使用。)
还有一个问题是,有没有办法在不增加磁盘大小的情况下用零填充分区?
谢谢。
- 编辑 -
澄清一下,我之所以问这个问题是因为我想将压缩后的 VirtualBox 镜像的大小保持在最小。对固定大小的镜像进行零填充可以完成这项工作,因为零填充部分对压缩镜像几乎没有任何贡献。但是,如果我切换到动态磁盘,零填充似乎违背了使用动态大小镜像的目的。
我的问题的第二部分实际上是询问是否存在比零填充更好的替代方法,可以在不扩大磁盘大小的情况下删除未使用的扇区。
答案1
我刚刚测试过它(sdelete -z
在虚拟机中使用),磁盘填充为零将不会显著增加动态磁盘映像的大小。Virtualbox 非常智能,可以识别出当您将零写入已经为空的块时,磁盘无需再次写入该块。
但即使这样也不算太糟,因为零填充磁盘也能让你使用主机中的 Virtualbox Tools 再次压缩它:如何压缩 VirtualBox 的 VDI 文件大小?
当我将虚拟机零填充时,它将图像大小从~14.5GB 增加到~15.5GB,但并没有完全分配所有的磁盘空间,大约为 48GB。
事实上,通过零填充磁盘(通过sdelete -z
)将允许您正确释放已写入但已被您的 VM 操作系统释放的任何空间,然后您可以VBoxManage.exe modifyhd c:\path\to\thedisk.vdi --compact
在主机上运行命令以将动态磁盘映像正确压缩回其最小大小。