Назад | Перейти на главную страницу

Ненадежный NFS с большим количеством файлов в каталоге

У меня есть каталог NFS, установленный на хосте. В этом каталоге сейчас 0,6 миллиона файлов журнала, а в конечном итоге будет 1,6 миллиона. Файлы небольшие, большинство из них меньше 1 МБ.

Проблема в том, что я не мог надежно найти все файлы за день в этом каталоге.

Если я запущу такую ​​команду ниже, я получу 4320 файлов за день, но я могу получить любое число от 1 до 4320, например:

$ find /mnt/log -type f -name "some-prefix-rolling.log.2015-07-05*" | wc -l
2548

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

Возможные варианты монтирования: ro, noatime, bg, hard, rsize = 32768, wsize = 32768, vers = 3.

Кто-нибудь знает, как исправить эту проблему?

Хотя хранение файлов в подкаталогах было бы идеальным, правильное (и ожидаемое) поведение - это не то, что вы видите. Несколько советов по поиску проблемы:

  • проверьте исходную файловую систему: если вы запустите свою команду непосредственно в источнике данных, правильно ли она выполняется?
  • для такого количества файлов ваша исходная файловая система должна быть XFS или ZFS. Избегайте EXT4 и BTRFS
  • попробуйте переключить кеширование на стороне клиента (Модуль FS-cache)
  • делает простой ls -al | wc -l возвращать последовательные результаты?

Этот пост дает некоторые из верхних пределов для файловых систем. Независимо от «жесткого ограничения» количества файлов, которые могут храниться в каталоге, вы очень быстро столкнетесь с проблемами производительности ... Десятки тысяч файлов, а не сотни тысяч, особенно если вы используете служебную программу. лайк найти который должен проанализировать весь каталог.