2009-11-03

GlusterFS

GlusterFS - распределенная файловая система. Примерами похожими на GlusterFS, является GFS, GPFS, Lustre, Hadoop, конечно со своими вариациями.

  1. Установка
  2. Настройка
  3. Основные понятия. Внутреннее устройство.
  4. Выводы
  5. Ссылки

Установка

Установка на системе Linux/Ubuntu сводится к выполнению
#sudo apt-get install glusterfs-server glusterfs-client glusterfs-examples
Установка для FreeBSD немного сложнее.
Install and start fuse:
# cd /usr/ports/sysutils/fusefs-kmod
# make && make install
# echo 'fusefs_enable="YES"' >> /etc/rc.conf
#
Install bison
# cd /usr/ports/devel/bison
# make && make install
А теперь хак :) специально для FreeBSD
# echo '#include ' > /usr/include/alloca.h 

А теперь сам GlusterFS server
# cd /tmp
# wget -b http://ftp.zresearch.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.7.tar.gz
# tar -xvf glusterfs-2.0.7.tar.gz
# cd glusterfs-2.0.7
#
# ./configure --enable-fuse-client
# make
# make install

Настройка

Конфигурирование достаточно простое
ARF - репликация:
- пример конфигурации
Unify - единое пространство:
- пример конфигурации

Запуск сервера
# glusterfs -f /etc/glusterfs/glusterfs-server.vol 

Монтирование раздела GlusterFS
# glusterfs -f /etc/glusterfs/glusterfs-client.vol /mnt/glusterfs

Основные понятия. Внутреннее устройство.


Рис.1 Пример использования GlusterFS, для организации
репликации папки /var/www/html на 2 сервера 10.0.0.12 и 10.0.0.13


В GlusterFS существует 2 основных понятия:
server (нода) - сервис слушающий некоторый порт и имеющий возможность писать и читать в указанную в конфигурации папку.
client (клиент) - клиентский сервис, который позволяет монтировать удаленные разпределенные server (ноды).

Выводы

Система глядит конечно странно. Очень похода на самый обычный рейд контроллер , который умеет делать RAID 1/RAID 0 / RAID 10 и JBOD. Конечно возможности конфигурирования больше и гибче, а также нет необходимости тратится на дорогие контролеры, достаточно самого просто. Все остальное организуется на софтверном уровне.

GlusterFS Unify = JBOD - хорошая простая система позволяющая объеденять несколько физических устройств расположеных на различных серверах, в одно логическое единое устройство с объемом равным суммарному объему всех устройств. То есть если есть 2 сервера на каждом из них по 3 винта 200 Гб, то можно создать раздел объемом 1.2 Тб.
Но у GlusterFS Unify - есть свой недостаток, для хранения месторасположения данных на серверах и устройствах , требуется NS (namespace) нода. NS (namespace) - нода является реестром данных для GlusterFS Unify. И при выходе ее из строя - весь дисковый массив - разрушается. Поэтому требуется обеспечивать 2-3 резервирование NS ноды.

GlsuterFS ARF - replication / Stripe - stripe :) - механизмы предоставляемые GlusterFS по постороению систем репликации и стрипа.

Важнейшей особеностью GlusterFS является, то что серверные ноды, ничего не знают про другие ноды, и являются полностью автономными и независимыми. Все распределение и обработкой , синхронизацией данных, занимается клиент (описывается в конфигурации клиента).
Также GlusterFS поддерживает механизм псевдо-нод , что позволяет иметь несколько уровней. К примеру существует 2 сервера на каждом по 3 винта по 200 Гб. Можно гибко создать единый Unify раздел размером по 600 Гб на каждом из серверов, а после этого объединить их в ARF (репликацию). Что позволяет при входе одного или нескольких винтов , или одного из серверов, сохранять работоспособность. После замены вышедшего из строя оборудования GlusterFS в режиме реально времени, без необходимости остановки приложения, синхронизирует разделы.

Ссылки

Официальный сайт: http://www.gluster.com/
Wikipedia: http://ru.wikipedia.org/wiki/GlusterFS
Описание на русском: http://www.insight-it.ru/net/scalability/glusterfs/
Тест производительности: http://wt.knc.ru/wiki/index.php/Производительность_параллельных_файловых_систем:_Lustre_и_GlusterFS

JBOD: http://ru.wikipedia.org/wiki/JBOD#JBOD
RAID: http://ru.wikipedia.org/wiki/RAID

3 коментарі:

Станислав сказав...

Как обстоят дела с гарантированностью записи? Можно ли с нодами работать асинхронно?

Necromant2005 сказав...

Да, ноды могут работать асинхронно. Это настраиватся в конфигах. Вообще я достаточно жестко гонял кластер. Начиная от внезаплоно отключения нод и винтов во время записи и заканчивая дропом пакетов между нодами. Работает стабильно и само востанавливается после сбоя. Не требуется никакой ручной работы, остановки ластера, перезпуска процессов.
Есдинтсвенное когда требутеся перезапуск, когда вносятся изменения в конфиги.

Garet сказав...

Могу посоветовать почитать эту статью по тестированию распределения контента в GlusteFS - http://sysadm.pp.ua/linux/glusterfs-setup.html .Очень толково написано, может кому-то понадобиться.