Выбор файловой системы кластера для чтения / записи большого количества небольших файлов

Я настраиваю небольшой кластер Linux для своей лаборатории. В настоящее время у нас есть узел входа для задания submit и 3 вычислительных узла, и они подключаются через Gigabit LAN (к сожалению, не бесконечно).

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

Оказалось, что мои пользователи кластера очень часто читают и записывают файлы большого размера (один – <100 КБ) в общем хранилище. NFS очень плохо работает для небольших файлов ввода-вывода.

У меня есть простой тест производительности NFS / CIFS / SSHFS для записи небольших файлов. Время для распаковки 20000 небольших файлов (всего около 600 МБ) для каждой файловой системы:

  • CIFS : 25-30
  • SSHFS : 45 ~ 55s
  • NFS (v3 / v4) : так медленно, что я не дождался (оценка 10 минут)

CIFS / SSHFS работает очень хорошо по сравнению с NFS. Но это не общая практика использования CIFS / SSHFS для домашних папок Linux в сценарии компьютерного кластера (а CIFS не является действительно совместимой с Postix файловой системой AFAIK).

Как вы относитесь к выбору сетевой файловой системы для загрузки небольших файлов? Должен ли я заменить NFS на другие кластерные / распределенные файловые системы? Или есть способ оптимизировать NFS для небольших файлов?

Если бы у вас была достаточно большая настройка, я бы рекомендовал IBM Spectrum Scale (ранее GPFS), но, учитывая масштаб ваших операций, я предлагаю вам пойти с ZFS с помощью твиста: Set atime to off. Если вам не очень важно записывать время доступа к файлам, ZFS будет хорошо работать в вашем сценарии.