我最近有一个hadoop集群空间不足。我试图清理一些日志以获得一些磁盘空间。我执行命令 df -h
,它显示:
/dev/sda1 22G 20G 1.9G 92% /
/dev/sda3 1.8T 747G 960G 44% /data/1
/dev/sdb1 1.8T 755G 986G 44% /data/2
/dev/sdc1 1.8T 754G 987G 44% /data/3
/dev/sdd1 1.8T 745G 996G 43% /data/4
hdfs在目录下 /data
这很好。但是根目录 /
空间所剩无几。所以我用了这个工具 ncdu
它可以快速计算dir的磁盘使用率,它显示:
2.9TiB [##########] /data
1.5GiB [ ] /home
800.9MiB [ ] /usr
716.3MiB [ ] /var
349.1MiB [ ] /lib
293.8MiB [ ] /opt
没有大目录。我还尝试了如下命令 du -a | sort -n -r | head
,仍然找不到此不可见的目录或文件。有没有人知道其他方法来找出问题所在?
谢谢
2条答案
按热度按时间im9ewurl1#
可能有大文件隐藏在
/data
装入点或其他装入点。例如,如果您向/data/large.bin
然后在上面挂载另一个文件系统/data
,10g文件将实际上不可见。你可以通过装订来看看情况是否如此
/
到另一个位置:如果你测量
/tmp/slash
的用法您将只看到根文件系统上的内容。如果/tmp/slash/data
显示为已满则意味着那里有隐藏的数据。btxsgosb2#
我终于找到了答案。
因为我删除了一个大的日志文件,但没有回收文件系统中的空间,它仍然占用磁盘空间。这就是为什么命令的结果
du -h
以及df -h
不匹配。解决方案
命令
lsof
列出打开的文件。文件在我删除时被打开了。第二列显示打开此文件的进程的pid。键入上一行(114)中显示的文件描述符。现在空间被回收了。