删除 41G 文件后 df 输出没有变化

删除 41G 文件后 df 输出没有变化

也许我对 df 的作用的理解不正确?

我想知道这里的问题是什么

1. 检查使用情况

$ sudo df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       443G  436G  4,6G  99% /

2. 识别大文件

$ sudo find /var/lib/libvirt -name WS19.qcow2 -exec ls -lh {} \;
-rw------- 1 root kvm 41G  7. Okt 2020  /var/lib/libvirt/images/WS19.qcow2

3.删除该文件

$ sudo find /var/lib/libvirt -name WS19.qcow2 -exec rm {} \;

4.再次检查使用情况

$ sudo df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       443G  436G  4,6G  99% /

因此,删除 41G 不会改变“df -h”输出。我做错了什么?rm我认为应该先删除它,而不是将其移至废纸篓(甚至检查了废纸篓。41G 文件不在那里)。

似乎btrfs filesystem df都没有捕捉到删除

sudo btrfs fi df /
Data, single: total=432.37GiB, used=427.79GiB

答案1

删除的文件可能被某个进程保持打开状态。您可以使用lsof | grep WS19.qcow2来发现受影响的进程;终止它会释放占用的空间。

请注意,最有可能的候选者是正在运行的虚拟机。将其关闭后,所有数据将永远消失(因为您已经删除了它的支持文件)。

答案2

您正在使用 Btrfs - 您知道是否启用了快照吗?尽管您从当前文件系统视图中删除了文件,但它仍保留在快照中。

btrfs subvolume list /应该会显示所有子卷。如果存在快照,您可以检查它们各自的磁盘空间使用情况。根据这里,你首先要做的是:

btrfs quota enable <your subvolume root>

进而

btrfs qgroup show <your subvolume>将显示每个单独子卷的详细信息。

或者,根据这里, 您可以使用btrfs 列表以获得更加用户友好的视图。

答案3

或者您的数据删除未同步。只需运行该命令sync就可以了。

答案4

/var/lib/libvirt/images/WS19.qcow2该文件可能是运行在 Linux 系统上的 VM(虚拟机)的磁盘文件。请注意,如果删除此文件,您将永久丢失 VM。

但如果您确实要删除此文件,请先停止虚拟机,删除该文件,然后您将能够在输出中看到回收的空间df

如果仍然没有,您可以使用以下命令检查,它将打印已删除文件的大小。

lsof |grep -B1 -i "WS19.qcow2" | awk '{s+=$9} END {print s }'

相关内容