Зеркалируемое хранилище файлов на базе GlusterFS

Ответить
admin
Администратор
Сообщения: 199
Зарегистрирован: 05 янв 2011, 04:19

Зеркалируемое хранилище файлов на базе GlusterFS

Сообщение admin »

GlusterFS — это распределённая, параллельная, линейно масштабируемая файловая система с возможностью защиты от сбоев. С помощью InfiniBand RDMA или TCP/IP GlusterFS может объединить хранилища данных, находящиеся на разных серверах, в одну параллельную сетевую файловую систему. GlusterFS работет в пользовательском пространстве при помощи технологии FUSE, поэтому не требует поддержки со стороны ядра операционной системы и работает поверх существующих файловых систем (ext3, XFS, reiserfs и т. п.). В отличие от других распределённых файловых систем, таких как Lustre и Ceph, для работы GlusterFS не требуется отдельный сервер для хранения метаданных.



1. Установка серверной части GlusterFS.


Так как GlusterFS доступен в стандартном репозитории Ubuntu 10,04, достаточно выполнить:

#apt-get install glusterfs-server




Для организации хранилища на сервере будем использовать каталог /glusterfshome.


Приводим файл конфигурации /etc/glusterfs/glusterfsd.vol на серверах в следующий вид:

volume posix
type storage/posix
option directory /glusterfshome
end-volume
volume locks
type features/locks
subvolumes posix
end-volume
volume brick
type performance/io-threads
option thread-count 8
subvolumes locks
end-volume
volume server
type protocol/server
option transport-type tcp
# далее через запятую нужно перечислить IP или имена хостов клиентов
# можно использовать маски вида 192.168.*,
option auth.addr.brick.allow 10.250.30.201,10.250.30.205
subvolumes brick
end-volume



Запускаем сервер GlusterFS:


#/etc/init.d/glusterfs-server start





2. Настройка клиента GlusterFS.


Для установки клиентской части GlusterFS выполняем:

#aptitude install glusterfs-client




Хранилище будем монтировать в каталог /home.


Приводим файл конфигурации клиента /etc/glusterfs/glusterfs.vol в следующий вид:

volume remote1
type protocol/client
option transport-type tcp
option remote-host 10.250.30.201# Ubuntuserver1
option remote-subvolume brick
end-volume
volume remote2
type protocol/client
option transport-type tcp
option remote-host 10.250.30.205 # UbuntuServer2
option remote-subvolume brick
end-volume
volume replicate
type cluster/replicate
subvolumes remote1 remote2
end-volume
volume writebehind
type performance/write-behind
option window-size 1MB
subvolumes replicate
end-volume
volume cache
type performance/io-cache
option cache-size 512MB
subvolumes writebehind
end-volume





Монтируем файловую систему GlusterFS в каталог /home:


#glusterfs —f /etc/glusterfs/glusterfs.vol /home



или

#mount —t glusterfs /etc/glusterfs/glusterfs.vol /home


Теперь о небольших граблях. Gluster-FS не монтируется при ребуте через fstab, т.к. модуль fuse не загружается автоматически. Можно пересобрать ядро, но мы поступим проще.
Добавляем в конец /etc/initramfs-tools/modules:

fuse



Выполняем:

update-initramfs -u -k `uname -r`



Для автоматизации монтирования во время загрузки в /etc/fstab сдедует добавить:

/etc/glusterfs/glusterfs.vol /home glusterfs defaults 0 0




В итоге мы получаем два сервера, на которых есть папки /glusterfshome (например, с файловой системой ext3 или ext4). В этих папках хранятся все данные, как в обычной папке локальной системы. На каждом из серверов эти папки монтируются в /home с файловой системой glusterfs. Тоесть в данном случае сервера являются и клиентами. При работе пользователя с папкой /home на одном сервере, все произведённые изменения так же отражаются на втором сервере в папке /home.




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


В качестве клиентов не обязательно должны выступать сами сервера, это может быть любой другой компьютер или сервер сети.
Ответить