Что происходит, если существует слишком много файлов в соответствии с единственным каталогом в Linux?

Ответ вы можете найти в https://github.com/angular/angular-cli/issues/10862

. Я вам его коротко:

[ 115] первый вариант:

sudo npm uninstall @schematics/angular 

и

sudo npm i @schematics/angular

, если не работает, то:

Удалить папка node_modules в вашем домашнем каталоге.

10
задан datasn.io 18 March 2009 в 09:13
поделиться

6 ответов

ARG_MAX собирается не согласиться с этим..., например, комната-rf * (в то время как в каталоге) собирается сказать "слишком много аргументов". Утилиты, которые хотят сделать некоторый globbing (или оболочка) будут иметь некоторое повреждение функциональности.

Если тот каталог доступен общественности (позволяет, говорят через ftp или веб-сервер), можно встретиться с дополнительными проблемами.

Эффект на любую данную файловую систему зависит полностью от той файловой системы. Как часто к этим файлам получают доступ, какова файловая система? Помните, Linux (по умолчанию) предпочитает сохранять файлы, к которым недавно получают доступ, в памяти при помещении процессов в подкачку, в зависимости от настроек. Этот каталог вручен через http? Google собирается видеть и проверить его? Если так, Вы, возможно, должны были бы скорректировать давление кэша VFS и swappiness.

Править:

ARG_MAX является пределом в масштабе всей системы тому, сколько аргументов может быть представлено точке входа программы. Так, позволяет, берут 'комнату' и пример "комната-rf *" - оболочка собирается повернуться '*' в разделенный пробелами список файлов, который в свою очередь становится аргументами 'комнате'.

То же самое собирается произойти с ls и несколькими другими инструментами. Например, ls нечто* мог бы повредиться, если слишком много файлов запускаются с 'нечто'.

Я советовал бы (какая фс используется) разбивать его в меньшие блоки каталога, просто по этой причине одни.

6
ответ дан 3 December 2019 в 22:39
поделиться

Мой опыт с большими каталогами на ext3 и dir_index включенный:

  • Если Вы знаете название файла, Вы хотите получить доступ, нет почти никакого штрафа
  • Если Вы хотите сделать операции, которые должны читать в целой записи каталога (как простое ls на том каталоге), потребуется несколько минут впервые. Затем каталог останется в кэше ядра и больше не будет никакого штрафа
  • Если количество файлов становится слишком высоким, Вы сталкиваетесь с ARG_MAX и др. проблемы. Это в основном означает это wildcarding (*) не всегда работает как ожидалось больше. Это - то, только если Вы действительно хотите выполнить операцию на всех файлах сразу

Без dir_index однако, Вы действительно завинчены :-D

3
ответ дан 3 December 2019 в 22:39
поделиться

Когда Вы случайно будете выполнять "ls" в том каталоге, или будете использовать заполнение клавишей Tab или хотеть выполнить "комнату *", Вы будете в большой проблеме. Кроме того, могут быть проблемы производительности в зависимости от Вашей файловой системы.

Это полагало, что хорошая практика группирует Ваши файлы в каталоги, которые называют первые 2 или 3 символа имен файлов, например.

aaa/
   aaavnj78t93ufjw4390
   aaavoj78trewrwrwrwenjk983
   aaaz84390842092njk423
   ...
abc/
   abckhr89032423
   abcnjjkth29085242nw
   ...
...
3
ответ дан 3 December 2019 в 22:39
поделиться

Большинство дистрибутивов использует Ext3 по умолчанию, который может использовать индексацию B-дерева для больших каталогов. Некоторые дистрибутивы имеют это dir_index функция включила по умолчанию в других, которых необходимо будет включить ей сами. При включении его нет никакого замедления даже для миллионов файлов.

Видеть если dir_index опция активирована, делают (как корень):

tune2fs -l /dev/sdaX | grep features

Активировать dir_index опцию (как корень):

tune2fs -O dir_index /dev/sdaX
e2fsck  -D /dev/sdaX

Замена /dev/sdaX с разделом, для которого Вы хотите активировать его.

3
ответ дан 3 December 2019 в 22:39
поделиться

Очевидный ответ является папкой, будет чрезвычайно трудным для людей использовать задолго до технического предела, (время, потраченное для чтения вывода из ls для одного, их десятки других причин), там серьезное основание, почему Вы не можете разделить на sub папки?

0
ответ дан 3 December 2019 в 22:39
поделиться

Не каждая файловая система поддерживает такое количество файлов.

На некоторых из них (ext2, ext3, ext4) очень легко достичь предела inode.

0
ответ дан 3 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

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