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

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

У меня есть серия серверов (HP ProLiant, 34 сервера), каждый из которых имеет 500 ГБ места на жестком диске. Эти серверы являются частью вычислительного кластера, в котором выполняются процессы, которые можно разделить на две «фазы»:

Серверы не используют один и тот же корпус и подключаются через Gbit Ethernet.

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

Теперь, когда я могу использовать диски на серверах, я подумал об использовании распределенной файловой системы. Мой первоначальный подход (использованный благодаря успешным тестам в другом месте) заключался в использовании GlusterFS (распределенная + репликационная установка).

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

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

Все это для объяснения варианта использования, который затем вызывает вопрос: какая распределенная файловая система лучше всего подходит для «фазы 2»? Обратите внимание, что мне нужно что-то на уровне файла, например либо точка монтирования, либо виртуальное устройство.

Я считаю Ящерица и GfarmFS хорошо подходят для поставленной задачи.

Обе системы хранения используют серверы метаданных (т. Е. Каталогов), что позволяет выполнять операции с миллионами файлов с малой задержкой.
Ящерица "главный" (то есть сервер метаданных) использует ОЗУ (объем памяти составляет менее 3 ГиБ для 7_000_000 файлов), а GfarmFS сервер метаданных использует PostgreSQL.

Чтобы бросить мои 0,02 доллара:

Взгляни на цеф. Добавьте половину гигабайта памяти на каждый сервер (сделайте их всеми OSD) и назначьте три сервера как MDS / MON (в зависимости от нагрузки они могут запускать или не запускать другие интенсивные вещи). Используйте его как объектное хранилище, или как блочное устройство, или как файловую систему ... это зависит от вас ... Он может быть избыточным и может быть быстрым. Он масштабируется (с некоторыми настройками) до петабайты.

Файловые системы создают дрянные базы данных, а сетевые файловые системы еще хуже.

Фаза 2: мне кажется, что это база данных.

В наши дни есть много вариантов. Базовая база данных хранилища ключей / значений может быть относительно простой в настройке и обслуживании. Это отличная книга для выяснения возможных вариантов.

http://pragprog.com/book/rwdata/seven-databases-in-seven-weeks