VirtualBox 允许您在虚拟机中运行 Linux,并且您经常会发现虚拟磁盘的大小不断增长,即使您已经清除了其中的文件。我将向您展示如何将这些卷缩小到原来的大小、压缩它们并节省磁盘空间。
如果你已经将 VirtualBox 与 Windows 来宾一起使用(在虚拟机术语中,“来宾”是在虚拟机中运行的操作系统),你可能已经习惯了当您从中删除文件时,VirtualBox 磁盘卷会缩小,因此它们仅占用物理磁盘上包含文件所需的空间。
这是 VirtualBox 动态分配功能的预期目的,但它不适用于 Linux guest 虚拟机。当使用 Linux 来宾时,许多用户发现磁盘增长到其完整大小,然后随着文件从其中删除而永远不会缩小。
这是由于 Linux 管理其文件系统以及与其 VirtualBox 主机交互的方式造成的。当出于性能原因删除文件时,Linux 不会“清零”(用空数据覆盖)文件,因此 VirtualBox 无法判断虚拟磁盘上的哪些数据是活动数据以及哪些数据被删除。
您可以通过自己将数据清零并告诉 VirtualBox 压缩卷,使其恢复到实际大小来解决此问题。这是如何完成的。
要从 Linux 来宾虚拟磁盘回收磁盘空间,您需要做的第一件事是确保启用动态分配。如果不是,您需要将磁盘转换为动态分配的磁盘。
接下来,备份您的虚拟磁盘。如果出现问题(例如命令输入错误,或者过程中途断电),您将面临丢失 Linux 虚拟机中所有数据的风险。
接下来,在 Linux 客户机上的终端中运行以下命令:
sudo dd if=/dev/zero of=/var/deleteme
此命令会将清零(空)数据写入文件 /var/deleteme,直到磁盘完全填满。这将覆盖您之前删除的所有文件,解决 Linux 不会自动覆盖已删除数据的问题。
请小心使用 dd 命令,因为它会在没有警告的情况下覆盖数据!运行命令和路径之前请仔细检查它们。
此过程可能需要一些时间,具体取决于卷的大小,因此请耐心等待,不要中断它。一旦完成,该进程将退出(可能会出现空间不足的错误)。一旦发生这种情况,您可以删除清零文件并关闭 Linux 来宾:
sudo rm -rf /var/deleteme <p> sudo shutdown now -h</p>
现在,虚拟磁盘上未使用的空间已被清零,VirtualBox 将能够通过收缩来回收主机上的空间它。最后一步是使用 vboxmanage 命令压缩虚拟磁盘映像。通过运行以下命令来执行此操作:
<code class="hljs ">vboxmanage modifymedium disk /path/to/image.vdi -compact</code>
您必须将 /path/to/image.vdi 更改为要压缩的虚拟磁盘的路径。如果您使用的是 Windows,则需要像这样使用 VBoxManage.exe:
VBoxManage.exe modifymedium disk /path/to/image.vdi -compact
如果您的 Windows 系统上的命令行无法使用 VBoxManage.exe,请继续阅读有关如何启用它的说明。
这种压缩 VirtualBox Linux guest 虚拟机的方法利用 dd 命令将空文件写入磁盘,以便 VirtualBox 可以识别空空间。
dd(数据复制器)命令可以转换和复制文件,也可以用于写入数据。传递给它的“if”选项提供输入文件(在本例中/dev/zero 提供零值数据或空数据的恒定流)。 “of”选项指定输出文件,并将此零数据流写入其中。这将持续到磁盘已满,因为 /dev/zero 永远不会停止提供空数据。
默认情况下,VBoxManage.exe 在 Windows 命令行上不可用。您可以通过更新 Windows 系统路径以包含 VirtualBox 安装目录来添加它,或者在使用它时调用可执行文件的完整路径:
& "C:/Path/To/VBoxManage.exe" modifymedium disk /path/to/image.vdi -compact
“&”符号,称为调用运算符,执行引用的命令。这允许您在可执行文件的路径中使用空格。
随着来宾的增长,您可以增加或减少其虚拟磁盘的大小。快照可让您获取虚拟机在某个时间点的状态并保存;如果您稍后想要回到当时的情况(例如在测试配置更改后),您可以简单地回滚,一切都会保持原样。
VirtualBox 是一款功能强大的虚拟化工具,专业开发人员可以使用它来构建和测试软件,家庭用户也可以使用它在现代计算机上运行旧软件和游戏,或者运行其他操作系统,而无需购买第二台机器。您可以在 MacOS、Windows 和 Linux 主机上运行 Windows、Linux、ChromeOS、Android 和其他操作系统。
您的更改已保存
电子邮件已发送
电子邮件已发送
请验证您的电子邮件地址。
发送确认电子邮件您已达到帐户中以下主题的上限。
以上是磁盘空间不足?从您的 Linux VirtualBox 虚拟机中回收它的详细内容。更多信息请关注PHP中文网其他相关文章!