GlusterFS - распределённая файловая система
GlusterFS, на самом деле, очень легка в настройке и установке. К тому же документация на сайте, несмотря на отсутствие перевода, очень простая. Поставить и первоначально настроить не сложно даже начинающему сисадмину. Из минусов, конечно, упоминают FUSE и требовательность к сети, а так же занимаемое место (например, залив файл на 10МБ в свежесозданную систему, можно обнаружить, что место уменьшилось на 20МБ - в скратой директории находится копия файла). Из плюсов - нет необходимости держать отдельно сервер метаданных, а так же, при некоторых режимах, можно восстановить файлы просто копированием их разделов (bricks, кирпечей)
Содержание
Установка
Для начала хотелось бы уточнить, что не рекомендуют делать эту систему на дисках, уже используемой ОС. А так же сервера должны друг друга видеть по именам, которые мы укажем. В моём примере это будет server1 и server2
- установка пакетов на всех серверах:
yum -y install centos-release-gluster41 sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Gluster-4.0.repo yum --enablerepo=centos-gluster40 -y install glusterfs-server glusterfs glusterfs-fuse systemctl restart glusterd systemctl enable glusterd
Это запустит сервер, отвечающий за оновной функционал распределённой файловой системы.
Если включен SeLinux:
setsebool -P nis_enabled on
И если включён FireWall
firewall-cmd --add-service=glusterfs --permanent firewall-cmd --reload
Типы распределения
В этих случаях файлы остаются целиком и можно просто их скопировать
- Distributed (распределённый) (аналог RAID0)
- Replicated (реплицируемый) (аналогично RAID1)
Теперь уже файлы делятся на части и заливаются на все сервера. Чем интересно: скорость чтения/записи выше. Я думаю, интересно там, где не очень страшно потерять данные (места для обработки данных, типа видео, хранения торрентов и т.д.)
- Striped (разделенный по частям)
Тут уже делим файл и распределяем
- Distributed Striped (распределённый и разделенный по частям)
А в этом случае файлы будут распределяться случайно, но и зеркалится. То есть смысл этой связки, как и предыдущей, при от 4 серверах
- Distributed Replicated (распределённый и реплицируемый)
Аналог с RAID не проглядывается? :)
Настройка реплики на 2 серверах
Но обоих серверах должна быть директория для этой ФС.
mkdir /gluster
На одном из серверов подключаем второй:
gluster peer probe
Смотрим статус:
gluster peer status
Peer in Cluster скажет о том, что всё ок.
Теперь объединяем:
gluster volume create vol0 replica 2 transport tcp server1:/gluster server2:/gluster
Если дисков 3, то replica 3 и 3 сервер с папкой в конце. server1:/gluster - это и есть brick, кирпичек нашей системы.
Смотрим, всё ли ок:
gluster volume info
Эта команда покажет информацию по всем томам (volume)
Монтирование
Монтируем папку любого сервера:
mount -t glusterfs server1:/vol0 /mnt
И всё. df -h или du -sh покажут вам, что папка подключена и можно с ней работать.
Просто, не так ли?
Разумеется, если пытаться эту систему разнести в разные места и между ними не наладить хорошую связь, тормозить это дело может очень даже существенно, учитите это. Gluster требователен к каналу!
Как сделать, чтобы gluster-систему видели и другие компьюеры в сети в виде обычной папки
Тут всё просто: мы монтировали /mnt в распределённой системе, а его просто можно "расшарить" средствами SAMBA или NFS.
Производительность glusterfs
На этом сайте немного подсказано про производительность системы
performance.write-behind-window-size: 65535 performance.read-ahead: off performance.cache-size: 1073741824 главная тут performance.read-ahead: off
Копировать бездумно не советую, а вот присмотреться к параметрам стоит