正常情况下,在系统中删除一个文件,只会在文件系统层面把文件相应的 inode 信息删除,实际上数据仍存在于磁盘中。
在vmware环境中,vmware实际上可以回收磁盘未被使用的空间,把空间留给其他虚拟机使用。
所以,在删除文件的时候,可以将文件的数据清零,使vmware可以把空间回收。
在执行 dd 的时候,需要加上 oflag=direct,否则后面的 rm 命令执行后,如果系统没有来得及刷脏,这个文件对应的数据实际上还没被清零。
$ sudo dd if=/dev/zero of=/zerofile oflag=direct
$ sudo rm /zerofile
$ sudo rm /zerofile
那如果文件已经被删除了,怎么把数据块清零? 可以用歪招。
比如,从 df -h 命令中看到文件系统有 50G 的可用空间,我们可以 dd 一个 45G 的新文件,再把这个文件删除。
$ sudo dd if=/dev/zero of=/new_file oflag=direct
$ sudo rm /new_file
$ sudo rm /new_file