没有可用磁盘空间

没有可用磁盘空间

我遇到了一个奇怪的情况,因为 Linux df 命令说没有可用磁盘空间

[root@backup cache]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              72G   70G     0 100% /
/dev/sda1             190M   11M  170M   7% /boot
tmpfs                 248M     0  248M   0% /dev/shm

du -sh /*

[root@backup cache]# du -sh /*
4.0K    /bacula-restores
7.4M    /bin
5.4M    /boot
3.6T    /data
116K    /dev
55M     /etc
204K    /home
76M     /lib
16K     /lost+found
12K     /media
0       /misc
16K     /mnt
8.0K    /mount
0       /net
8.0K    /opt
0       /proc
2.3G    /root
32M     /sbin
8.0K    /selinux
168K    /share
8.0K    /srv
0       /sys
361M    /test
20K     /tmp
3.2G    /usr
1.5G    /var

你能告诉我问题出在哪里吗?我的空间在哪里?我搞不清楚 :(

答案1

尝试:

$ lsof +L1 

这将找到链接数小于 1 的文件(文件已被删除但仍在写入)。

当 du 和 df 不匹配时。

答案2

简短版本:用于lsof查找未链接但仍打开的文件。重新启动保存该文件的应用程序(或者如果您懒得做,则重新启动整个系统),您将恢复可用空间。

长版本:很可能您有一个由应用程序打开并正在写入的文件,但已从文件系统取消链接(删除)。

与 NTFS 不同,ext 中有一种引用计数。这意味着当您删除文件时,只需删除对它的引用。在程序中打开文件会添加引用。因此,您必须找出哪个程序保存了该文件。这就是为什么在 UNIX 中进行文件操作时,您经常会看到对链接/取消链接的引用。通常使用工具来查找文件lsof

这种行为的好处是,您永远不会遇到 Windows 中经常出现的“文件已打开,因此无法删除”错误。您还可以替换系统文件,例如共享库,并且您的软件将使用旧库,直到重新启动(并从磁盘加载新库),而不必重新启动软件升级(再次是 Windows)。您现在看到的坏处是。文件系统中可见文件的大小通常与磁盘上的数据量不匹配。

答案3

或者在这种情况下穷人lsof会是(对于Linux)

ls -l /proc/*/fd/ | grep deleted

答案4

您可能还想检查您的 inode 是否已耗尽df -i

相关内容