删除磁盘映像时VM运行完美?

use*_*188 -2 ubuntu image libvirt kvm-virtualization

有没有人有这样的经历,在虚拟机运行时不小心删除了使用过的磁盘映像?

我预计虚拟机会立即失败,但令人惊讶的是,它仍然可以完美运行。我曾尝试执行许多 I/O 命令,甚至通过“dd”创建非常大的文件,这些文件完全大于 vm 的内存大小。但它仍然活着。

谁能解释为什么?

服务器信息:ubuntu 12.04,从默认仓库安装了 KVM 和 libvirt。VM 的磁盘映像为 qcow2 格式。

arj*_*arj 7

删除文件实际上并不会删除文件,它会减少指向 inode 的名称数量。如果文件的名称数和打开的文件描述符数均达到 0,则数据将被删除。

因此,如果您删除某个应用程序仍然打开的文件,该应用程序仍然可以愉快地使用该文件。只有当最后一个文件描述符被关闭时,文件才会被删除(然后您会看到已用空间再次被回收)。


小智 5

当您删除具有打开文件描述符的文件时,直到文件描述符关闭它才真正被删除。您可能可以使用lsof | grep deleted命令找到该文件。

如果你想取消删除文件,试试这个:http : //www.serverwatch.com/tutorials/article.php/3822816/Recovering-Deleted-Files-With-lsof.htm