我正在运行 Oracle VM VirtualBox(版本:3.2.8)。在我的 VirtualBox 中,我曾经运行过 Ubuntu 操作系统。每当我创建包含大量数据的文件或文件夹(有时大小高达 1GB)时,磁盘空间就会自动增加。如果我从 Windows XP 检查文件大小(保存在单独分区中的 vdi 文件大小),它会显示 vdi 文件的增量大小。
如果我(永久)删除任何 1GB 大小的文件夹,它不会反映在磁盘空间中。这意味着从 Windows 中,如果我获取 vdi 文件属性,它不会显示可用空间的增加,即使我已经从 Ubuntu OS 永久删除了一个 1GB 文件夹。
如果在 Ubuntu 中发出该命令df -h
,它会显示正确的内容。
此问题与 VirtualBox 有关吗?有解决方法吗?
答案1
您看到的问题是,即使您删除了一些文件,动态磁盘仍会继续增长,例如,如果您从虚拟机中删除一个 2Gb 文件,则该空间不会从磁盘中减少,您需要在提到归零空间时进行删除,然后压缩虚拟机。您可以执行此操作以压缩 vdi 文件的大小:
答案2
我做过同样的事情,观察到了同样的行为。我相信这种行为是经过设计的。
承诺动态扩展
“创建新磁盘”向导在“固定大小存储”部分下指出:
创建固定大小的存储可能需要很长时间,具体取决于存储大小和硬盘的写入性能。
动态扩展分区的一个原因是,在主机上为虚拟机创建一个 32 GB 的文件需要很长时间。
动态扩展很有用
因此,假装文件实际上是 32 GB,直到它真正需要那么大时才很有用;如果您在安装操作系统和启动时只使用前 2 或 3 GB,那么您不想等待很长时间来创建新机器。
动态扩展确实发生
正如您和我所观察到的,这一切都按预期进行。
动态收缩不被承诺
巫师再次说道:
A动态扩展存储最初只占用物理硬盘上的一小部分空间。随着客户操作系统占用磁盘空间,它将动态增长(直至指定的大小)。
本段中没有任何地方表明软件会缩小磁盘。
动态收缩没有用
动态缩小分区的用处不大。它不会节省大量空间或时间。创建动态分区时,您与客户操作系统签订了一项协议,即硬盘驱动器将在需要时扩展到规定的最大大小。动态调整驱动器的大小以使其变小并使用节省的空间会在客户操作系统需要创建大文件时(例如在为休眠构建交换空间时)产生冲突。
不会发生动态收缩
再者,你和我都观察到,这种情况并没有发生。
结论
出于这些原因,我断定您获得的文件大小是正确的,而且几乎肯定是正确的。您可以根据需要多次创建 1 GB 的文件,但删除这些文件不会减少虚拟磁盘的大小。