Ubuntu 10.04.3 LTS x86_64,我看到以下内容/var/log/messages:
EXT4-fs warning (device sda3): ext4_dx_add_entry: Directory index full!
Run Code Online (Sandbox Code Playgroud)
来自 dumpe2fs 的相关信息:
Filesystem features: has_journal ext_attr resize_inode dir_index filetype
needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg
dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Free blocks: 165479247
Free inodes: 454382328
Block size: 2048
Inode size: 256
Run Code Online (Sandbox Code Playgroud)
我已经阅读了一些其他问题,例如ext3_dx_add_entry: Directory index full and rm on a directory with Millions files;这些让我觉得在某个地方一定有一个包含大量项目的目录。
由于它是一个相当复杂的目录组织,我有一个基本问题:如何找到生成这些消息的目录?
小智 4
下面一行将列出每个目录中有多少个文件,并按前十个进行排序。它将从您当前的工作目录递归运行,因此我不建议您从 / 运行它,除非您完全不知道大目录可能在哪里。
find . -type f | awk '{dir=gensub(/(.+\/).+/,"\\1","g (file://1%22,%22g/)"); dir_list[dir]++} END {for (d in dir_list) printf "%s %s\n",dir_list[d],d}d' | sort -nr |head
Run Code Online (Sandbox Code Playgroud)
输出将类似于以下内容:
[user@localhost ~]# find . -type f | awk '{dir=gensub(/(.+\/).+/,"\\1","g (file://1%22,%22g/)"); dir_list[dir]++} END {for (d in dir_list) printf "%s %s\n",dir_list[d],d}d' | sort -nr | head
2048 ./test19/
2048 ./test18/
2048 ./test17/
2048 ./test16/
2048 ./test15/
2048 ./test14/
2048 ./test13/
2048 ./test12/
2048 ./test11/
2048 ./test10/
Run Code Online (Sandbox Code Playgroud)
如果您对运行这样的一行有点谨慎,只需搜索本身大小超过 50k 左右的所有目录即可。再次发现将是你的朋友:
find ./ -type d -size +50k
Run Code Online (Sandbox Code Playgroud)
如果您有多个挂载点,df -i 将帮助您缩小哪个挂载点耗尽或已经耗尽 inode 的范围。
| 归档时间: |
|
| 查看次数: |
3157 次 |
| 最近记录: |