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

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

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

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

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

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

  • СИФС: 25~30 с
  • СШФС: 45~55с
  • НФС(v3/v4): так медленно, что я не стал ждать (приблизительно 10 минут)

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

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

решение1

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

Связанный контент