- OS CONFIG - http://osc.dondub.com -

Установка и настройка распределённой файловой системы GlusterFS в ОС CentOS 7.0

[1]GlusterFS [1] — это распределённая, параллельная, линейно масштабируемая файловая система с возможностью защиты от сбоев. GlusterFS может объединить хранилища данных, находящиеся на разных серверах, в одну параллельную сетевую файловую систему. GlusterFS разделена на серверную и клиентскую части.

В этой статье рассмотрим установку серверной и клиентской частей распределённой файловой системы Gluster версии 3.6.2 (на момент написания статьи — последняя версия) на операционной системе CentOS 7.0. Для этого нам понадобится не меньше 3-х машин: 2 сервера (или больше) и 1 клиентскую машину. Очень рекомендуется, чтобы на серверах имелись как минимум по одному дополнительному жёсткому диску.

Перед тем, как выполнить все действия, необходимо, чтобы на всех машинах была настроена сеть и желательно установлен Midnight Commander. Как всё это установить — можно найти здесь [2].

В наличии у нас имеются 2 сервера и 1 клиентская машина.

Сеть: 192.168.1.0/24.

1-й сервер: хост glusterfs-srv1, IP-адрес 192.168.1.21

2-й сервер: хост glusterfs-srv2, IP-адрес 192.168.1.22

Клиентская машина: хост glusterfs-client1, IP-адрес 192.168.1.23

1. Подготовка и установка необходимого программного обеспечения

На всех машинах:

Устанавливаем wget и attr

yum install wget attr -y

Затем открываем файл /etc/hosts

vi /etc/hosts

и в нём пропишем IP-адреса и хосты машин

192.168.0.21 glusterfs-srv1

192.168.0.22 glusterfs-srv2

192.168.0.23 glusterfs-client1

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

systemctl stop firewalld

systemctl disable firewalld

Добавляем необходимые репозитории:

cd /etc/yum.repos.d/

wget http://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo

и обновляемся

yum update

Теперь создадим каталог /mnt/data

mkdir /mnt/data

На серверах:

Устанавливаем серверную часть GlusterFS

yum install glusterfs-server

После этого подключаем новые жёсткие диски утилитой fdisk

fdisk /dev/sdb

Вводим n (add a new partition)

В Partition type выбираем p (primary)

Первый сектор: оставляем по умолчанию

Номер раздела: 1

Утилита снова предложит команду

Вводим w для применения изменений и выхода из fdisk

Затем создадим на жёстком диске файловую систему

mkfs.ext4 /dev/sdb1

и монтируем его в каталог /mnt/data

mount /dev/sdb1 /mnt/data

для того, чтобы новый жёсткий диск автоматически монтировался при загрузке сервера, открываем файл /etc/fstab

vi /etc/fstab

и впишем в него следующую строчку

/dev/sdb1 /mnt/data ext4 defaults 1 2

Запускаем службу GlusterFS и добавляем её в автозагрузку

systemctl start glusterd

systemctl enable glusterd

На клиентской машине

Устанавливаем клиентскую часть GlusterFS

yum install glusterfs-client

2. Объединение серверов в кластер

Чтобы сервера работали совместно, объединим их в кластер.

Для этого на 1-м сервере glusterfs-srv1 вводим команду:

gluster peer probe glusterfs-srv2

должно появиться сообщение о результате

peer probe: success

Возможно, потребуется также и на 2-м сервере glusterfs-srv2

gluster peer probe glusterfs-srv1

должно появиться сообщение о результате

peer probe: success

Затем на обоих серверах перезапускаем службу GlusterFS

systemctl restart glusterd

После этого на любом из серверов (можно на обоих) проверяем

gluster pool list

Должна появиться такая табличка

gluster_pool_list [3]

3. Настройка хранения и распределения данных

GlusterFS поддерживает 5 типов распределения данных, объединённых в том (volume):

Distributed Volume (распределённый) — распределение данных в случайном порядке между каталогами, входящими в том

Replicated Volume (реплицируемый) — зеркальное распределение данных (в каждом томе одинаковые файлы)

Striped Volume (разделенный по частям) — разбиение файлов по частям и хранение каждой части на отдельном сервере

Distributed Striped Volume (распределённый и разделенный по частям) — разбиение файлов на части и распределение по каталогам

Distributed Replicated Volume (распределённый и реплицируемый) — распределение данных в случайном порядке по каталогам, каждый из которых имеет свою зеркальную копию

Настройка Distributed Volume

На обоих серверах создадим папку /mnt/data/dv

mkdir /mnt/data/dv

На 1-м сервере glusterfs-srv1 создадим том dv-data и стартанём его

gluster volume create dv-data transport tcp glusterfs-srv1:/mnt/data/dv glusterfs-srv2:/mnt/data/dv force

gluster volume start dv-data

На клиентской машине создадим каталог /mnt/data/dv-data

mkdir /mnt/data/dv-data

и монтируем в него созданный том dv-data

mount.glusterfs glusterfs-srv1:/dv-data /mnt/data/dv-data

После монтирования тома в /mnt/data/dv-data можно копировать какие-либо данные. На клиентской машине они будут отображаться в исходном виде, на серверах же они будут распределены.

Для того, чтобы клиентская машина могла монтировать том при загрузке, необходимо открыть файл /etc/fstab

vi /etc/fstab

и добавить в него такую строку:

glusterfs-srv1:/dv-data /mnt/data/dv-data glusterfs defaults,_netdec 0 0

Если необходимо размонтировать том dv-data на клиентской машине, вводим команду:

umount /mnt/data/dv-data

Остановить и удалить том можно на 1-м сервере:

gluster volume stop dv-data

gluster volume delete dv-data

Настройка Replicated Volume

На обоих серверах создадим папку /mnt/data/rv

mkdir /mnt/data/rv

На 1-м сервере glusterfs-srv1 создадим том rv-data и стартанём его

gluster volume create rv-data replica 2 transport tcp glusterfs-srv1:/mnt/data/rv glusterfs-srv2:/mnt/data/rv force

gluster volume start rv-data

На клиентской машине создадим каталог /mnt/data/rv-data

mkdir /mnt/data/rv-data

и монтируем в него созданный том rv-data

mount.glusterfs glusterfs-srv1:/rv-data /mnt/data/rv-data

После монтирования тома в /mnt/data/rv-data можно копировать какие-либо данные. На клиентской машине они будут отображаться в исходном виде, а на серверах же они будут реплицированы, то есть сервера будут служить зеркалами друг для друга.

Для того, чтобы клиентская машина могла монтировать том при загрузке, необходимо открыть файл /etc/fstab

vi /etc/fstab

и добавить в него такую строку:

glusterfs-srv1:/rv-data /mnt/data/rv-data glusterfs defaults,_netdec 0 0

Если необходимо размонтировать том rv-data на клиентской машине, вводим команду:

umount /mnt/data/rv-data

Остановить и удалить том можно на 1-м сервере:

gluster volume stop rv-data

gluster volume delete rv-data

Настройка Striped Volume

На обоих серверах создадим папку /mnt/data/sv

mkdir /mnt/data/sv

На 1-м сервере glusterfs-srv1 создадим том sv-data и стартанём его

gluster volume create sv-data stripe 2 transport tcp glusterfs-srv1:/mnt/data/sv glusterfs-srv2:/mnt/data/sv force

gluster volume start sv-data

На клиентской машине создадим каталог /mnt/data/sv-data

mkdir /mnt/data/sv-data

и монтируем в него созданный том sv-data

mount.glusterfs glusterfs-srv1:/sv-data /mnt/data/sv-data

После монтирования тома в /mnt/data/sv-data можно копировать какие-либо данные. На клиентской машине они будут отображаться в исходном виде, а на серверах они будут разбиты на куски.

Для того, чтобы клиентская машина могла монтировать том при загрузке, необходимо открыть файл /etc/fstab

vi /etc/fstab

и добавить в него такую строку:

glusterfs-srv1:/sv-data /mnt/data/sv-data glusterfs defaults,_netdec 0 0

Если необходимо размонтировать том sv-data на клиентской машине, вводим команду:

umount /mnt/data/sv-data

Остановить и удалить том можно на 1-м сервере:

gluster volume stop sv-data

gluster volume delete sv-data

Настройка Distributed Striped Volume

На 1-м сервере создадим 2 каталога /mnt/data/dsv1 и /mnt/data/dsv3

mkdir /mnt/data/dsv1 /mnt/data/dsv3

а на 2-м — 2 каталога /mnt/data/dsv2 и /mnt/data/dsv4

mkdir /mnt/data/dsv2 /mnt/data/dsv4

На 1-м сервере glusterfs-srv1 создадим том dsv-data и стартанём его

gluster volume create dsv-data stripe 2 transport tcp glusterfs-srv1:/mnt/data/dsv1 glusterfs-srv2:/mnt/data/dsv2 glusterfs-srv1:/mnt/data/dsv3 glusterfs-srv2:/mnt/data/dsv4 force

gluster volume start dsv-data

На клиентской машине создадим каталог /mnt/data/dsv-data

mkdir /mnt/data/dsv-data

и монтируем в него созданный том dsv-data

mount.glusterfs glusterfs-srv1:/dsv-data /mnt/data/dsv-data

После монтирования тома в /mnt/data/dsv-data можно копировать какие-либо данные. На клиентской машине они будут отображаться в исходном виде, а на серверах они будут разбиты на куски и распределены по каталогам.

Для того, чтобы клиентская машина могла монтировать том при загрузке, необходимо открыть файл /etc/fstab

vi /etc/fstab

и добавить в него такую строку:

glusterfs-srv1:/dsv-data /mnt/data/dsv-data glusterfs defaults,_netdec 0 0

Если необходимо размонтировать том dsv-data на клиентской машине, вводим команду:

umount /mnt/data/dsv-data

Остановить и удалить том можно на 1-м сервере:

gluster volume stop dsv-data

gluster volume delete dsv-data

Настройка Distributed Replicated Volume

На 1-м сервере создадим 2 каталога /mnt/data/drv1 и /mnt/data/drv3

mkdir /mnt/data/drv1 /mnt/data/drv3

а на 2-м — 2 каталога /mnt/data/drv2 и /mnt/data/drv4

mkdir /mnt/data/drv2 /mnt/data/drv4

На 1-м сервере glusterfs-srv1 создадим том drv-data и стартанём его

gluster volume create drv-data replica 2 transport tcp glusterfs-srv1:/mnt/data/drv1 glusterfs-srv2:/mnt/data/drv2 glusterfs-srv1:/mnt/data/drv3 glusterfs-srv2:/mnt/data/drv4 force

gluster volume start drv-data

На клиентской машине создадим каталог /mnt/data/drv-data

mkdir /mnt/data/drv-data

и монтируем в него созданный том drv-data

mount.glusterfs glusterfs-srv1:/drv-data /mnt/data/drv-data

После монтирования тома в /mnt/data/drv-data можно копировать какие-либо данные. На клиентской машине они будут отображаться в исходном виде, на одном сервере они будут распределены по каталогам, а второй сервер будет выступать зеркалом первого.

Для того, чтобы клиентская машина могла монтировать том при загрузке, необходимо открыть файл /etc/fstab

vi /etc/fstab

и добавить в него такую строку:

glusterfs-srv1:/drv-data /mnt/data/drv-data glusterfs defaults,_netdec 0 0

Если необходимо размонтировать том drv-data на клиентской машине, вводим команду:

umount /mnt/data/drv-data

Остановить и удалить том можно на 1-м сервере:

gluster volume stop drv-data

gluster volume delete drv-data

4. Заключение

Готово! Теперь остаётся только выбрать наиболее удобный и подходящий тип (или несколько типов одновременно) монтирования, и пользоваться им.

Для написания данного мануала частично была использована статья Тестируем распределение контента в GlusterFS / Хабрахабр [4], в которой описано решение для Ubuntu Server