Сколько файлов в каталоге слишком многие? (Загрузка данных из сети)

Рабочий стол Ubuntu 9.04 CD достаточно.

Проверьте WindowsDualBoot

раздел: Изменение размеров Разделов Используя Установщик Ubuntu

19
задан 30 December 2009 в 15:50
7 ответов

Производительность варьируется соответственно файловая система, которую Вы используете.

  • FAT: забудьте это :) (хорошо, я думаю, что предел является 512 файлами на каталог),
  • NTFS: Althought это может содержать 4 миллиарда файлов на папку, это ухудшается относительно быстро - приблизительно тысяча, Вы начнете замечать проблемы производительности, несколько тысяч, и Вы будете видеть, что проводник, кажется, зависнуть долгое время.
  • EXT3: физический предел является 32 000 файлов, но перфект страдает после нескольких тысяч файлов также.

  • EXT4: теоретически безграничный

  • ReiserFS, XFS, JFS, BTRFS: это хорошие для большого количества файлов в каталоге, поскольку они более современны и разработаны для обработки многих файлов (другие были разработаны назад в дни, когда жесткие диски измерялись в МБ не ГБ). Производительность намного лучше для большого количества файлов (наряду с ext4), поскольку они оба используют алгоритм типа двоичного поиска для получения файла, Вы хотите (другие используют более линейный).

12
ответ дан 2 December 2019 в 20:18
  • 1
    Это неправильно. Там isn' t предел 32 000 файлов в EXT3. There' s предел 32 000 подкаталогов. I' ve получил каталог здесь с более чем 300 000 файлов, и он работает прекрасный. –  davidsheldon 31 December 2009 в 12:39
  • 2
    довольно верный - предел файла является всем filesystem' s ограничивают на inodes, но you' ре ограничено ссылками 32k (т.е. subdirs). –  gbjbaanb 1 January 2010 в 19:16

Сумма файлов в папке могла теоретически быть безграничной. Однако каждый раз, когда ОС получит доступ к определенной папке для поиска файлов, она должна будет обработать все файлы в папке. Меньше чем с 500 файлами Вы не могли бы заметить задержки. Но когда у Вас есть десятки тысяч файлов в единственной папке, простая команда списка папок (ls или dir) могла брать слишком долго. Когда к этим папкам можно будет получить доступ через FTP, это действительно будет слишком медленно...

Проблемы производительности не будут действительно зависеть от Вашей ОС, но от Вашей системной скорости процессора, емкостей диска и памяти. Если у Вас есть это много файлов, Вы могли бы хотеть объединить их в единственный архив и использовать систему архивирования, которая оптимизирована для содержания большого количества данных. Это могло быть zip-файлом, но еще лучше, сохранить их как блобы в базе данных с именем файла как первичный ключ.

3
ответ дан 2 December 2019 в 20:18
  • 1
    Но будет доступ к файлу, непосредственно удаляют узкие места с ищущими каталогами, или будет доступ к directy, все еще имеют базовый поисковый вызов? (Linux, debian) –  steve 30 December 2009 в 16:49
  • 2
    Доступ к файлу непосредственно смягчит эти проблемы. I' ve сделанные тесты на ext3 и доступ к файлу по имени в каталоге, содержащем 500 000 файлов, не значительно медленнее, чем один содержащий 1000. Очевидно, выполнение ls является проблемой. –  davidsheldon 31 December 2009 в 12:33
  • 3
    При знании точного имени доступ должен быть быстрым. Проблемой был бы главным образом любой код или команда, которая хочет получить список файлов. –  Wim ten Brink 1 January 2010 в 03:09

Мое эмпирическое правило состоит в том, чтобы разделить папки, если существует больше чем 1 000 файлов, и папка будет просмотрена (т.е. через Интернет или Проводник) или 5 000 файлов иначе.

1
ответ дан 2 December 2019 в 20:18

Как @skaffman указывает, пределы зависят от операционной системы. Вы, вероятно, будете затронуты пределами на более старые Ose. Я помню, что старая версия Соляриса была ограничена 32 768 файлами на каталог.

Обычное решение состоит в том, чтобы использовать своего рода хеширование, т.е. Cyrus, сервер IMAP разделяет пользователей алфавитным хешем:

/var/spool/imap/a/user/anna/
/var/spool/imap/a/user/albert/
/var/spool/imap/d/user/dan/
/var/spool/imap/e/user/ewan/
0
ответ дан 2 December 2019 в 20:18
  • 1
    Спасибо, I' d определенно имеют в распоряжении что-то, после того как dir имеет больше, чем 2k файлы!:) –  steve 30 December 2009 в 16:48
  • 2
    Этот вопрос имеет некоторые хорошие ответы: serverfault.com/questions/95444/… –  davey 30 December 2009 в 17:26
  • 3
    Мое общее эмпирическое правило - то, что больше, чем приблизительно 20 000 файлов в каталоге не являются хорошей идеей. Большинство современных файловых систем делает хорошо с который много файлов. После того как Вы поражаете 32k файлы в каталоге, некоторые файловые системы, такие как ext3 начнут иметь серьезные проблемы производительности. –  Phil Hollenback 30 December 2009 в 22:17
  • 4
    Phil - сделайте у Вас есть любая информация о проблемах производительности с по 32k файлам с ext3, I' m, не видя никого в данный момент с по 300k, Возможно, it' s что-то это isn' t влияние на мой шаблон использования. –  davidsheldon 31 December 2009 в 12:41
  • 5
    В моем предыдущем задании научное программное обеспечение генерировало бы много маленьких (немного k каждый) файлы в каталоге. Мы определенно видели это для > время чтения каталога файлов 32k поднялось бы чрезвычайно. Просто работая ' ls' на каталоге, с которым много файлов заняли бы минуту или больше. –  Phil Hollenback 7 January 2010 в 07:43

Я храню изображения для обслуживания веб-сервером, и у меня есть более чем 300 000 изображений в одном каталоге на EXT3. Я не вижу проблем производительности. Перед установкой этого я сделал тесты с изображениями 500k в каталоге и случайным образом доступ к файлам по имени, и не было никакого значительного замедления с 500k по изображениям 10k в каталоге.

Единственный недостаток, который я вижу, - то, что для синхронизации новых с секундой, разъединяют, я должен работать rsync по целому каталогу, и не может только сказать этому синхронизировать подкаталог, содержащий новую тысячу или около этого.

8
ответ дан 2 December 2019 в 20:18

При прямом доступе к файлу, количество файлов в каталоге не является никакой проблемой скорости.

Количество файлов, которые можно создать в единственном каталоге, зависится от файловой системы, которую Вы используете. При списке всех файлов в каталоге или поиске сортировка, и т.д. имея много файлов замедлит те операции.

gbjbaanb является неправильным в его ответе относительно максимального размера файла ext3. Обычно расширение ограничивает количество файлов на Вашем диске в целом. Вы не можете создать больше файлов затем, у Вас есть inodes в Вашей inode таблице. Он корректен в предложении reiserfs для большего количества производительности со многими файлами

0
ответ дан 2 December 2019 в 20:18

Проверенная папка с файлами размером 10К в NTFS (Windows 7, 64 бит). Папка с изображениями 10K в любом виде (список, значок и т. Д.) Работает и прокручивается без какой-либо заметной задержки.

0
ответ дан 2 December 2019 в 20:18

Теги

Похожие вопросы