文件系统中有 15 GB 未计算的空间

文件系统中有 15 GB 未计算的空间
[nathanb /mnt/work] sudo du -hs .
23G .
[nathanb /mnt/work] df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        40G   38G  6.4M 100% /mnt/work

另外 15 GB 在哪里?

/dev/sdb1 on /mnt/work type ext4 (rw,nosuid,nodev,relatime,data=ordered)

更新以回复评论

[nathanb /mnt/work] sudo tune2fs -l /dev/sdb1
tune2fs 1.42.5 (29-Jul-2012)
Last mounted on:          /mnt/work
Inode count:              2621440
Block count:              10485752
Reserved block count:     524287
Free blocks:              3955615
Free inodes:              2522921
First block:              0
Block size:               4096
Fragment size:            4096

[nathanb /mnt/work] df -i .
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sdb1      2621440 29764 2591676    2% /mnt/work

[nathanb /mnt/work] sudo fsck -n /dev/sdb1
fsck from util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
Warning!  /dev/sdb1 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/sdb1: clean, 98519/2621440 files, 6530137/10485752 blocks

[nathanb /mnt/work] sudo lsof | grep deleted
[nathanb /mnt/work]

/mnt/work 下面没有挂载点

[nathanb /mnt/work] grep /mnt/work /proc/self/mountinfo
22 19 8:17 / /mnt/work rw,nosuid,nodev,relatime - ext4 /dev/sdb1 rw,data=ordered

好吧,所有的事情……似乎又开始发挥作用了。就像我不知道是什么导致了问题一样,我也不知道是什么解决了它。

[nathanb /mnt/work] df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        40G   22G   16G  59% /mnt/work

我卸载了几个 NFS 客户端,准备卸载和 fscking 卷,但我没有卸载所有这些客户端......并且我在卸载后立即进行了检查,空间并没有减少。但后来我做完其他工作回来后发现它没有被楔住。

烦人且令人沮丧……希望我知道问题是什么,这样我就可以给一些人一些积分……不过,感谢所有的帮助,如果这种情况再次发生,我会尝试进行更多取证。

答案1

鉴于文件系统是通过 NFS 导出的,因此差异很可能是由于删除的文件造成的...如果文件在 NFS 客户端上打开时被删除,则lsof服务器上将看不到它们,因为没有/proc/.../fd与它们对应的条目;但它们仍然会占用磁盘空间,如 所见df

诊断此问题需要在每个客户端上lsof使用该选项运行。-N

(这并不能解释您在从客户端卸载卷后恢复空间时看到的延迟,但这是我能想到的对其余症状的最佳解释。)

答案2

fuser -k -M -m /mnt/work应该跟。警告!它只是字面上杀死访问 /mnt/work 的进程。包括-TERM请求终止。

罪魁祸首是删除了保持打开状态的文件,du 看不到但df 可以看到。

例如

$ df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda6       209M   66M  128M  35% /boot
$ sudo du -sh .
64M     .
$  sudo fallocate -l 100M tmp_file
$ ls -lh tmp_file
-rw-r--r-- 1 root root 100M Feb  3 02:24 tmp_file
$ df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda6       209M  166M   28M  86% /boot
$ sudo du -sh .
164M    .
$ exec 20<tmp_file
$ sudo rm tmp_file
$ df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda6       209M  166M   28M  86% /boot
$ sudo du -sh .
64M     .

tmp_file 仍然打开。如果它被关闭,'df' 可以看到空闲。

$ exec 20<&-
$ df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda6       209M   66M  128M  35% /boot

相关内容