Яка максимальна кількість файлів, які може містити папка Unix?


20

Яка максимальна кількість файлів, які може містити папка Unix?

Я думаю, це буде те саме, що кількість файлів.


3
Набагато краще питання може бути: скільки я повинен використовувати? stackoverflow.com/questions/466521/…
Йоахім Зауер

1
Я б хотів, щоб URL-адреса мого сайту виглядала як site.com/username/ тощо, але думаю, що (якщо мені пощастить) отримати понад 2 мільйони користувачів, які мають більше 2 мільйонів папок, оскільки я не хочу використовувати такий сценарій, як PHP, з modrewrite, я дивився на інші можливості папок у папці

1
Зробіть собі послугу і створіть підкаталоги зі схемою переписування.
Пітер Ейзентрав

Відповіді:



14

У всіх поточних файлових системах Unix каталог може містити практично необмежену кількість файлів. Тоді як "необмежений" обмежений дисковим простором та індексами - все, що закінчується першим.

З більш старими проектами файлової системи ( ext2 , UFS , HFS + ) речі, як правило, повільно, якщо у вас в каталозі багато файлів. Зазвичай речі починають боліти близько 10 000 файлів. З новішими файловими системами ( ReiserFS , XFS , ZFS , UFS2 ) ви можете мати мільйони файлів у каталозі, не бачачи загальних вузьких місць продуктивності.

Але наявність у каталозі стільки файлів недостатньо перевірена, і є безліч інструментів, які цього не вдається. Наприклад, періодичні сценарії технічного обслуговування системи можуть заграти.

Я щасливо використав каталог з декількома мільйонами файлів на UFS2 і не бачив жодних проблем, поки не захотів видалити каталог - це займало кілька днів.


12

Залежить від того, з якою кількістю вузлів була створена файлова система. Виконання

df -i 

дасть вам кількість вільних вводів. Це практична межа кількості файлів, а отже, може містити каталог.


1
Однак у багатьох файлових системах є ліміт файлів у каталозі, незалежно від кількості вільних вкладів.

1
так, але питання, орієнтоване на файлові системи UNIX, і наскільки я знаю, всі сучасні файлові системи UNIX не обмежують кількість файлів у каталозі.

6

Я припускаю, що ви думаєте зберегти багато файлів в одному місці, ні?

Більшість сучасних файлових систем Unix можуть розміщувати багато файлів в одному каталозі, однак такі операції, як наступні шляхи, перелік файлів тощо, передбачають лінійний пошук через список файлів і повільніші, якщо список стає занадто великим.

Я, здається, пригадую, що чує, що для більшості практичних застосувань пара тисяч занадто багато Типовим рішенням є розбити групування. Це є,

/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/

і зберігати свої файли у відповідному під-каталозі відповідно до їх хешу basename. Виберіть зручний хеш, перший символ може зробити для простих випадків.


Крістіан Цюпіту пише в коментарях, що XFS і, можливо, інші дуже нові файлові системи використовують log(N)структури пошуку, щоб зберігати вміст каталогів, тому це обмеження значно покращиться .


5
Деякі сучасні файлові системи, наприклад XFS, не передбачають лінійного пошуку. Технологія B-Tree XFS дозволяє йому безпосередньо переходити до блоків та / або розширень, що містять розташування файлу, використовуючи складні індекси (від uoks.uj.edu.pl/resources/flugor/IRIX/xfs-whitepaper.html ).
Крістіан Цюпіту

Ах! Я цього не знав. Спасибі. Додамо до тексту.
dmckee

1
Для ext3 потрібно активувати функцію "dir_index", пор. tune2fs (8).

0

ext3один з найпоширеніших форматів файлової системи Linux стає дуже млявим, якщо у вас в каталозі є близько 20k + файлів. Незалежно від кількості файлів, ви можете намагатися уникати такої кількості файлів в одному каталозі.


0

З коментаря, який ви залишили, я думаю, що вам не дуже важливо, скільки файлів / папок може розміщувати ваш FS.

Ви, мабуть, повинні подумати про використання ModRewrite та перезапис сайту.com/username для site.com/?user= або щось подібного та зберегти всі свої дані в базі даних. Створення однієї папки на користувача, як правило, не потрібно (і це не дуже гарна ідея).

Зважаючи на це, кожна файлова система має обмеження, і dfможе сказати вам, скільки входів доступно на кожному розділі вашої системи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.