我运行基于 KVM 的虚拟化服务器(即 Proxmox),其中一些基于 Debian 的机器在 KVM VM 中运行。Proxmox 可以创建 VM 的备份,还可以压缩 VM 磁盘映像。
我们知道,备份大小会随着时间的推移而增加,因为每个虚拟机磁盘上存储的数据越来越多,虚拟机磁盘的“干净”块也越来越多地变“脏”(即包含剩余的旧文件)。因此,即使我用rm -rf
它删除了此类虚拟磁盘上的所有文件,实际上备份的大小也会相同,因为这不会清除虚拟机磁盘的所有块。
dd if=/dev/zero of=/BIG.txt
我可以通过执行类似以下操作来“清除”虚拟机磁盘rm -f /BIG.txt
- 这样我就创建了一个充满零的大文件,它将占用所有磁盘空间,在我删除它之后,它的前块将包含零。缺点是磁盘会暂时变满,这会影响每个想要写入任何内容的程序。
但也许还有其他方法可以用零清除未使用的磁盘块,以便备份可以以更好的速率压缩这样的磁盘?一些基于 Windows 的程序提供“清除未使用的磁盘空间”选项(例如 CCleaner),但我需要 Linux 的这个选项。