При этом на машине дела с айнодами обстоят так (прошу не смущаться цифре в 100%, айноды свободные есть):
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/md2 19144704 18994479 150225 100% /
tmpfs 506008 7 506001 1% /lib/init/rw
udev 506008 1232 504776 1% /dev
tmpfs 506008 1 506007 1% /dev/shm
/dev/md1 131648 44 131604 1% /boot
Более подробно:
Using a filesystem with 4k blocks, and assuming the filenames are of
the same average length, you should be able to get approximately 200k
* (4**3) = 12.8 million files in a single directory. If you use a 2k
block filesystem, the limit will be approximately 200k * (2**3) = 1.6
million files in a single directory.
Как решить проблему? Найти папки, где произошло данное событие и удалить из них файлы.
http://kerneltrap.org/mailarchive/linux-kernel/2008/5/18/1865234
Добрый день!
ReplyDeleteСтолкнулся с данной проблемой(превышено количество файлов в директории). А есть мысли как эти файлы удалить? rm -rf /path/to/dir_with_many_files виснет (работало часов 8). ls в директории виснет.
Отформатировать файловую систему либо попробовать снять нагрузку (LIVECD) и таки rm -rf папки.
ReplyDeleteУ меня получилось таки считать эту папку. В моём случае(CentOS 5.5) самой "проходимой" читалкой списка файлов в директории оказалась команда: ls -1f, потом это дело скормить xarg. В конечной реализации получился такой вот oneliner:
ReplyDeleteexport i=0; time ( while [ true ]; do ls -1f | head -n 3 | egrep -q 'log' || break; ls -1f | head -n 10000 | xargs rm -f 2>/dev/null; export i=$(($i+10000)); echo "$i..."; done )
И его результат вывода:
29560000...
29570000...
29580000...
29590000...
29600000...
real 4129m46.723s
user 1m12.366s
sys 33m41.341s
Евгений, Вы, безусовно, правы, но если команда ls -1f что-то выдает, то значит переполнение еще не фатальное, если папка забита до упора, простой ls часто виснет и что-либо сделать с этим очень сложно.
ReplyDelete