VirtualBox - 如何释放未使用的 VDI 磁盘空间?

Lan*_*nes 15 virtualbox

因此,如果我在 virtualbox 来宾中有一个动态存储,如果来宾中有许多未使用的地方,我该如何减小 VDI 的大小?

所以我的意思是我知道实际上虚拟机来宾大约有 3 GB 大,但 VDI 文件是 10 GB,因为有一段时间来宾那么大。但它现在只有 3 GB 大。如何减小 VDI 的大小?这样它就只有 3 GB 大?(不,没有关于客人的任何快照)

Kar*_*los 18

看看vboxmanage modifyhd:它允许您使图像更紧凑。

使用 --compact 选项,可用于压缩磁盘映像,即删除仅包含零的块。这将再次缩小动态分配的图像;它将减少映像的物理大小而不影响虚拟磁盘的逻辑大小。压缩既适用于基础镜像,也适用于作为快照一部分创建的差异镜像。

为了使此操作有效,需要先使用合适的软件工具将来宾系统中的可用空间清零。对于 Windows 来宾,您可以使用Microsoft 提供的sdelete工具。在压缩虚拟磁盘映像之前,在来宾中执行 sdelete -c 以将可用磁盘空间归零。对于 Linux,请使用支持 ext2/ext3 文件系统的 zerofree 实用程序。

  • *使用* `sdelete -z` *不是 -c!* 参见 https://superuser.com/questions/747820/what-is-the-different-between-sdelete-c-and-z -- -c 选项只是用随机数据覆盖以进行“安全擦除”(稍微磨损 SSD)。 (2认同)

小智 7

小心——MS 在某些时候改变了“-c”(干净)和“-z”(零)的含义。为了安全起见,运行“sdelete /?” 查看您应该使用哪个选项:

C:\> sdelete /?

SDelete - Secure Delete v1.6
Copyright (C) 1999-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

usage: sdelete [-p passes] [-s] [-q] <file or directory> ...
       sdelete [-p passes] [-z|-c] [drive letter] ...
   -a         Remove Read-Only attribute
   -c         Clean free space
   -p passes  Specifies number of overwrite passes (default is 1)
   -q         Don't print errors (Quiet)
   -s or -r   Recurse subdirectories
   -z         Zero free space (good for virtual disk optimization)
Run Code Online (Sandbox Code Playgroud)