![即使我删除或清空回收站文件,Hyper-V 下的虚拟 XP/Ubuntu 的硬盘大小也不会减少?](https://linux22.com/image/1353759/%E5%8D%B3%E4%BD%BF%E6%88%91%E5%88%A0%E9%99%A4%E6%88%96%E6%B8%85%E7%A9%BA%E5%9B%9E%E6%94%B6%E7%AB%99%E6%96%87%E4%BB%B6%EF%BC%8CHyper-V%20%E4%B8%8B%E7%9A%84%E8%99%9A%E6%8B%9F%20XP%2FUbuntu%20%E7%9A%84%E7%A1%AC%E7%9B%98%E5%A4%A7%E5%B0%8F%E4%B9%9F%E4%B8%8D%E4%BC%9A%E5%87%8F%E5%B0%91%EF%BC%9F.png)
我在 Windows 8 上运行 Hyper-V,还有几个虚拟机,如 XP、Ubuntu 等。我已将硬盘设置为按需,因此它从小处开始。
现在我已经在我的虚拟 XP 上下载了一些文件,我注意到硬盘使用的空间大约为 12 GB,因此我决定删除一些文件,即使从回收站中删除,硬盘现在大约为 6GB,但问题是当我检查 VHDX 的读取大小时它仍然大约为 12GB !!
我尝试关闭电源并编辑/压缩硬盘,但其大小仍然相同!!
任何帮助都将受到赞赏。
谢谢。
答案1
删除大文件只会改变(虚拟)硬盘的很小一部分:块分配。文件的内容数据会保留在磁盘上,直到被覆盖。虚拟机管理程序/磁盘映像在文件系统级别不起作用。您必须用零覆盖数据才能成功压缩。使用 Linux(以及在文件完全填满时仍允许您删除文件的文件系统(btrfs 在这种情况下会出现问题)),您可以执行以下操作:
dd if=/dev/zero of=/filldisk.zero bs=100M ; rm /filldisk.zero
将来,您可以使用 删除虚拟机中的文件wipe -z
。可能有一个 Windows 工具可以执行相同操作。
答案2
只要以下任一条件成立,Hyper-V 就会压缩 VHD(或 VHDX):
1)它可以挂载 VHD 和底层文件系统,并使用文件系统内部的数据来确定 VHD 中哪些块不再被文件系统使用。
2) 客户机中的操作系统使用 ATA“trim”命令或 SCSI“unmap”命令向底层磁盘指示正在释放块并且其中的数据不再有用。
(1)除非文件系统是 Windows 非常熟悉的文件系统,否则无法工作,我怀疑虽然您没有提到它,但您在 Ubuntu 安装中并没有使用 NTFS。对于 Windows XP VM,首先在 XP 下对其进行碎片整理可能会有所帮助(这会使 VHD 在此过程中变得更大),然后在关闭 VM 的情况下对其进行压缩。
(2)仅适用于最新的 Windows 版本。您可能能够找到支持 trim 和/或 unmap 的 Ubuntu 版本或补丁。
答案3
您可以使用 SystemRescueCD 压缩 VHD
https://serverfault.com/questions/551053/how-can-i-compact-the-vhd-file-with-ubuntu- 这是这个问题的答案