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