Быстрая скорость распределенной файловой системы для небольших файлов

Наша компания имеет пять миллионов пользователей, мы храним файл кода пользователя, пользователь может редактировать и добавлять свои файлы, как веб-IDE, файл пользователей списка веб-IDE. мы используем функции php для реализации этих операций, такие как readdir,file_get_contents и file_put_contents, мы использовали MooseFS, но когда мы читаем файлы в программе, в частности, медленную скорость загрузки.

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

2 ответа

Пять миллионов записей мало для реляционной базы данных. Интересно, почему вы чувствуете необходимость хранить их в файловой системе?

Каждый ли пользователь требует, чтобы при запуске загружались все файлы? Если да, я бы поинтересовался дизайном системы. Эта операция O(N) независимо от того, как вы его проектируете.

Если вы поместите эти пять миллионов небольших файлов в реляционную базу данных или базу данных NoSQL, а затем разрешите каждому пользователю подключаться к нему и запрашивать нужные ему файлы, то вы избавляетесь от необходимости многократно загружать их при запуске. Задача решена.

В любой распределенной файловой системе одним из наиболее важных аспектов при рассмотрении операций с небольшими файлами является задержка в сети - она ​​должна быть как можно меньше (например, 0,1 мс) между такими компонентами распределенной файловой системы. Лучший способ добиться этого - использовать надежный коммутатор и подключить все машины к одному коммутатору.

Кроме того, в распределенных файловых системах (особенно в MooseFS) лучшее - это масштабируемость - это означает, что чем больше у вас узлов (и чем больше распределены ваши вычисления, т. Е. Выполняются одновременно на более чем одном монтировании), тем быстрее работает кластер.

Если вы используете MooseFS, пожалуйста, ознакомьтесь с MooseFS 3.0, потому что операции с небольшими файлами улучшены по сравнению с версией 3.0. Пока это простой способ, потому что вам не нужно совершать "революцию" (перед обновлением не забудьте создать резервную копию / var / lib / mfs на главном сервере, то есть метаданных). MooseFS может хорошо обрабатывать небольшие файлы, так что, возможно, есть проблема в конфигурации?

Кроме того, в MooseFS (все еще учитывающей операции с небольшими файлами) одной из самых важных вещей является высокая тактовая частота процессора (например, 3,7 ГГц) с небольшим количеством ядер процессора и отключенные параметры энергосбережения в BIOS для главного сервера (поскольку главный сервер является однопоточный процесс). Для Chunkservers и Clients ситуация другая - они многопоточные, поэтому вы получите лучшие результаты при использовании многоядерных процессоров.

Кроме того, как указано в рекомендациях MooseFS в параграфе 4. "Виртуальные машины и MooseFS":

[...] мы не рекомендуем запускать компоненты MooseFS (особенно главный сервер) на виртуальных машинах.

Так что если вы запускаете MFS на виртуальных машинах, у вас могут быть плохие результаты.

Другие вопросы по тегам