# GlusterFS Setup

Требования
GlusterFS поддерживает только 64bit системы, поэтому убедитесь, что хостовая машина может запустить GlusterFS и любые другие машины используют тоже 64bit системы.

Эта инструкция подоходит для Ubuntu 22.04 jammy

Инструкция
Запустите следующие команды на всех системах, которые будут использоваться для распределенной файловой системы.

# Добавление хостов в `/etc/hosts`
Мы хотим убедиться что наша машина может общаться друг с другом по именам, это можно сделать отредактировав следующим образом:

Редактируем  `/etc/hosts`

```bash
sudo nano /etc/hosts
```
Добавьте в него ваши адреса которые будут использоваться машинами, ниже приведен пример для моей машины GlusterFS, но такие записи нужно будет добавить на всех машинах где будет использоваться GlusterFS

```bash
127.0.0.1 localhost
127.0.1.1 elzim

192.168.68.109  elzim
192.168.68.105  pi4lab01
192.168.68.114  pi4lab02
```
# Установка GlusterFS
Настроим GlusterFS репозиторий. На время написания статьи GlusterFS-10 последний релиз.

```bash
sudo add-apt-repository ppa:gluster/glusterfs-10
```
Запускаем обновление репозиториев.

```bash
sudo apt update
```

```bash
sudo apt install glusterfs-server -y
```
Запускаем и включаем GlusterFS

```bash
sudo systemctl start glusterd
sudo systemctl enable glusterd
```
Связываем ноды
Это команда запускается только на хостовой машине. 

Перед запуском команды связывания, убедитесь, что вы запускаете команды от sudo.

```bash
sudo -s
```
Следующая команда будет связывать все ноды в кластер GlusterFS, он использует имена указанные в hosts, убедитесь, что вы внесли необходимые изменения в скрипт.

```bash
gluster peer probe pi4lab01; 
gluster peer probe pi4lab02;
```
Запустите команды которые покажут связанные хосты в кластер.
```bash
sudo gluster pool list
```

# Создание Gluster раздела
Давайте создадим дирректорию, которая будет использоваться в качестве раздела GlusterFS
> Команда ниже создается на всех нодах кластера.
> Note: You can name "volumes" to anything you like.

```bash
sudo mkdir -p /gluster/volumes
```
Теперь мы можем создать раздел на всех нодах кластера. Команда выполняется на хосте. 
```bash
sudo gluster volume create staging-gfs replica 3 elzim:/gluster/volumes pi4lab01:/gluster/volumes pi4lab02:/gluster/volumes force
```
Запустим раздел запустив команду ниже

```bash
sudo gluster volume start staging-gfs
```

Чтобы убедиться, что раздел автоматически примонтируется при перезагрузе или других обстоятельствах, нужно выполнить следующие шаги на всех машинах:

Переключитесь на супер пользователя: 
```
sudo -s
```
Добаврьте следующие строки в /etc/fstab файл используя команду
```
echo 'localhost:/staging-gfs /mnt glusterfs defaults,_netdev,backupvolfile-server=localhost 0 0' >> /etc/fstab
```
Примонтируйте раздел GlusterFS к /mnt директории с помощью команды:
```
mount.glusterfs localhost:/staging-gfs /mnt
```
Установите владельца /mnt дирректории и его содержимого root:docker используя команду: 
```
chown -R root:docker /mnt
```
Выйдите из рута
```
exit
```

Чтобы проверить, что GlusterFS раздел успешно смонтирован, запустите команду:
```
df -h
localhost:/staging-gfs                 15G  4.8G  9.1G  35% /mnt
```
Файлы созданные в папке  /mnt будут теперь отображаться во всех машинах где запущен GlusterFS.