![文件系统中有 15 GB 未计算的空间](https://linux22.com/image/60919/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%B8%AD%E6%9C%89%2015%20GB%20%E6%9C%AA%E8%AE%A1%E7%AE%97%E7%9A%84%E7%A9%BA%E9%97%B4.png)
[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