У меня есть файловая система с несколькими сотнями миллионов файлов (несколько петабайт), и я хочу получить почти все, что вернет stat, и сохранить его в какой-то базе данных. Прямо сейчас у нас есть программа MPI, которая подает имена каталогов из центральной очереди и рабочие узлы, которые прерывают NFS (которая может справиться с этим, не слишком стараясь) с помощью вызовов stat. Затем рабочие узлы нажимают на postgres для сохранения результатов.
Хотя это работает, но очень медленно. Один запуск займет более 24 часов в современном кластере с 30 узлами.
Есть ли у кого-нибудь идеи разбить структуру каталогов вместо централизованной очереди (у меня сложилось впечатление, что точные алгоритмы для этого являются NP сложными)? Кроме того, я рассматривал вопрос о замене postgres чем-то вроде автосохранения MongoDB с несколькими маршрутизаторами (поскольку postgres в настоящее время является огромным узким местом).
Я в основном просто ищу идеи о том, как можно улучшить эту настройку.
К сожалению, об использовании чего-то вроде подсистемы аудита ядра 2.6, вероятно, не может быть и речи, поскольку было бы крайне сложно (политически) запустить ее на каждой машине, которая попадает в эту файловую систему.
Если это имеет значение, каждая машина (несколько тысяч), использующая эту файловую систему, работает под управлением Linux 2.6.x.
Фактическая основная цель этого - найти файлы, которые старше определенной даты, чтобы у нас была возможность удалить их. Мы также хотим собрать данные о том, как используется файловая система.