Какое максимальное количество файлов может содержать папка Unix?
Думаю, будет столько же, сколько файлов.
Зависит от файловой системы, http://en.wikipedia.org/wiki/Comparison_of_file_systems
Во всех текущих файловых системах Unix каталог может содержать практически неограниченный количество файлов. Принимая во внимание, что "неограниченный" ограничен дисковым пространством и inodes - все, что закончится первым.
В старых проектах файловых систем (ext2, УФС, HFS +) вещи имеют тенденцию замедляться, если у вас много файлов в каталоге. Обычно становится неприятно около 10 000 файлов. С новыми файловыми системами (ReiserFS, XFS, ZFS, UFS2) вы можете иметь миллионы файлов в каталоге, не замечая общих проблем с производительностью.
Но наличие такого количества файлов в каталоге не является хорошо протестированным, и есть много инструментов, которые не справляются с этим. Например, скрипты периодического обслуживания системы могут препятствовать этому.
Я с радостью использовал каталог с несколькими миллионами файлов в UFS2 и не видел никаких проблем, пока не захотел удалить каталог - это заняло несколько ДНЕЙ.
Смотря сколько inodes файловая система была создана с помощью. Выполнение
df -i
даст вам количество свободных индексов. Это практический предел того, сколько файлов может содержать файловая система и, следовательно, каталог.
Я полагаю, вы думаете о хранении большого количества файлов в одном месте, не так ли?
Большинство современных файловых систем Unix могут много файлов в одном каталоге, но такие операции, как отслеживание путей, перечисление файлов и т. д., включают линейный поиск по списку файлов и замедляются, если список становится слишком большим.
Я припоминаю, как слышал, что пара тысяч - это слишком много для большинства практических целей. Типичное решение - разбить группировку. То есть,
/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/
и сохраните файлы в соответствующем подкаталоге в соответствии с хешем их basename
. Выберите удобный хеш, для простых случаев подойдет первый символ.
Кристиан Чупиту пишет в комментариях, что XFSи, возможно, другие очень новые файловые системы, используйте log(N)
доступные для поиска структуры для хранения содержимого каталогов, поэтому это ограничение значительно улучшился.
ext3
один из наиболее распространенных форматов файловой системы Linux становится действительно вялым, если у вас есть около 20k + файлов в каталоге. Независимо от того, сколько файлов он может вместить, вам следует избегать размещения такого количества файлов в одном каталоге.
Судя по оставленному вами комментарию, я думаю, вам все равно, сколько файлов / папок может размещать ваша FS.
Вероятно, вам стоит подумать об использовании ModRewrite и переписать site.com/username на site.com/?user= или что-то в этом роде и сохранить все свои данные в базе данных. Создание одной папки для каждого пользователя обычно не требуется (и не очень хорошая идея).
Тем не менее, каждая файловая система имеет ограничения и df
может сказать вам, сколько inodes доступно на каждом разделе вашей системы.