没有可用磁盘空间

11 linux disk-space-utilization

我有奇怪的情况,因为 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

你能告诉我哪里有问题吗?我的空间在哪里?我想不通:(

rkt*_*hkr 27

尝试:

$ lsof +L1 
Run Code Online (Sandbox Code Playgroud)

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

对于 du 和 df 不匹配的那些时候。


peh*_*hrs 9

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

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

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

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


Dan*_*tta 6

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

ls -l /proc/*/fd/ | grep deleted
Run Code Online (Sandbox Code Playgroud)