У меня есть приложение, которое создает 16 ^ 5 файлов (1048576). Я могу настроить его так, чтобы все они создавались в одной и той же папке или были разделены так, как я хочу (имея 1, 2, 3 или 4 подпапки в каждой папке). Пример:
/*
или же
/a/*
.
.
.
/f/*
или же
/a/a/*
/a/b/*
.
.
.
/f/f/*
или же
/a/a/a/*
.
.
.
/f/f/f/*
или же
/a/a/a/a/*
/a/a/a/b/*
.
.
.
/f/f/f/f/*
Все файлы имеют менее 4 КБ. Я использую Ubuntu 12.10 64bit и раздел ext4 для хранения этого. Какая структура папок будет лучшей структурой для этого случая? Может быть, другая файловая система будет лучше всего подходит для этого случая, какие-нибудь идеи?
В любом случае я пытаюсь запустить этот алгоритм, я должен быть в состоянии открыть файлы 9999999:
user@pc$ ulimit
unlimited
user@pc$ cat /proc/sys/fs/file-max
9999999
user@pc$ cat /etc/sysctl.conf
fs.file-max = 9999999
Тем не менее, когда я запускаю его, сохраняя все в одной папке, вызов fopen завершается ошибкой около 999999 файлов:
user@pc$ ls database/ | wc -l
999958
Странно, но этот 999999 был моим предыдущим значением для file-max в системных файлах. Я, конечно, перезагрузил свою машину до того, как обновил значение, может быть, оно слишком велико, и тогда оно сохраняет последнее. Что может быть не так?