
В этом материале будет рассмотрено несколько возможностей использования GlusterFS с Samba4, а так же анализ производительности каждого варианта.
Я использую SLES11 SP3, все примеры будут на базе него, но думаю в других дистрибутивах все делается примерно так же. GlusterFS можно загрузить с официального сайта проекта, есть уже скомпилированные сборки под все основные серверные дистрибутивы Linux.
В примере используется GlusterFS 3.4.2 и Samba 4.1.6.
С samba4 не все так просто. Можно собрать samba4 самому, но тогда не забывайте при сборке собирать пакет с модулем vfs glusterfs. Я же пошел по более простому пути, а именно перекомпилял сборку от Sernet, т.к. в этом случае ненужно писать init скрипты, да и структура файлов samba сразу верная, не требуется при компилировании указывать скрипту что и куда положить. Сборку можно получить на портале Sernet после регистрации.
И так, нам нужно в конечном итоге получить samba4 с модулем vfs glusterfs, устанавливаем sernet-samba-4.1.6-7.src.rpm, правим spec файл sernet-samba-4.1.spec, в котором нужно сделать следующее:
Ищем строку
%define vfs_modules_common vfs_audit,vfs_cap,vfs_catia,vfs_cacheprime,vfs_expand_msdfs,vfs_extd_audit,vfs_fake_perms,vfs_netatalk,vfs_recycle,vfs_streams_depot,vfs_aio_fork
добавляем в конце ,vfs_glusterfs
Ищем столбецCONF_OPTS="\
Добавляем в него--enable-glusterfs \
Далее запускаем сборку rpm по нашему spec файлуrpmbuild -bb sernet-samba-4.1.spec
На выходе получаем нужные нам rpm'ки sernet-samba, которые уже включают в себя нужный нам модуль.Samba4 можно использовать с glusterfs в любой роли, будь то контроллер домена или же просто классический файловый сервер. Есть несколько путей использования этих двух продуктов в связке, при чем один путь из двух обладает почему-то гораздо большей популярностью, хотя и медленнее другого.
Я не буду рассматривать в этом материале пошаговый план создания хранилища glusterfs, до меня на хабре это уже делалось не раз, да и ничего сложного в этом процессе нет. Можно обратится к официальной инструкции или поискать материал на habrahabr. Будем считать локальный volume под названием samba4_volume у вас уже есть.
И так, вариант первый, самый простой, но и самый медленный, просто монтируем glusterfs volume допустим в /data и указываем в smb.conf шару на этот путь.
В файле /etc/fstab добавляем
localhost:/samba4_volume /data glusterfs defaults,_netdev 0 0
Как добавить шару в smb.conf думаю объяснять не нужно.В этом случае кстати vfs модуль вам вообще не нужен, и то что описано в начале статьи можно не проделывать.
Вариант второй, более производительный.
Используем модуль vfs и подключаем volume напрямую к samba4.
Пример нужной нам части smb.conf
[data]
comment = For samba export of volume test
vfs objects = glusterfs
glusterfs:volfile_server = localhost
glusterfs:volume = samba4_volume
kernel share modes = no
path = /
read only = no
guest ok = yes
Соответственно если у вас samba4 скомпилирована без этого модуля этот вариант работать не будет.Пора проверить скорость работы каждого варианта. Вначале я проверял скорость копирования по сети на шару одного большого файла, потом проверил копирование папки windows (куча мелких файлов), в процентном соотношении разницы по скорости между разными вариантами я не заметил, поэтому решил не снимать скриншоты, устойчивая скорость при копировании одного большого файла более наглядна по моему мнению.
Для начала тестируем скорость работы напрямую с файловой системой ext4, без glusterfs.

Скорость около 50 Мб\с по гигабитной сети, вполне себе нормальный результат.
Проверяем скорость при использовании первого варианта. Volume glusterfs просто примонтирован через /etc/fstab

Скорость сразу обвалилась в два раза от эталона, ужасный в общем-то результат…
Проверим скорость при использовании модуля vfs

Скорость проседает в полтора раза от эталона.
На деле как мы видим проблема с производительность у GlusterFS на данный момент имеются в любом случае, если вы решите перевести свое корпоративное хранилище на GlusterFS имеющий одну или несколько нод с репликацией имейте ввиду, производительность такого хранилища в любом случае снизится. Да, скорость можно поднять, если добавить Striped ноды, но на это нужны железные ресурсы, которые не у всех есть. В моем же случае я хотел использовать репликацию на другой сервер для отказоустойчивости, видя положение дел я пока поставил на паузу данный проект.
Разработчики обещают в новой версии 3.5 поднять производительность, остается только ждать…