怎样把文件清零,使得vmware能回收存储空间?

正常情况下,在系统中删除一个文件,只会在文件系统层面把文件相应的 inode 信息删除,实际上数据仍存在于磁盘中。

在vmware环境中,vmware实际上可以回收磁盘未被使用的空间,把空间留给其他虚拟机使用。

所以,在删除文件的时候,可以将文件的数据清零,使vmware可以把空间回收。

在执行 dd 的时候,需要加上 oflag=direct,否则后面的 rm 命令执行后,如果系统没有来得及刷脏,这个文件对应的数据实际上还没被清零。

$ sudo dd if=/dev/zero of=/zerofile oflag=direct
$ sudo rm /zerofile

那如果文件已经被删除了,怎么把数据块清零? 可以用歪招。

比如,从 df -h 命令中看到文件系统有 50G 的可用空间,我们可以 dd 一个 45G 的新文件,再把这个文件删除。

$ sudo dd if=/dev/zero of=/new_file oflag=direct
$ sudo rm /new_file