# Howto GlusterFS

TODO : Description, vocabulaire (peer, brick, volume)...

## Configuration d'un nouveau cluster

### Installation

~~~
# apt install glusterfs-server
~~~

### Création du cluster

~~~
srv1# gluster peer probe <adresse IP srv2>
peer probe: success. 
~~~

Note : srv1 et srv2 doivent pouvoir communiquer entre eux sans restriction au niveau réseau.

Vérification :

~~~
# gluster peer status
Number of Peers: 1

Hostname: xxx
Uuid: xxxxx
State: Peer in Cluster (Connected)
~~~

### Création d'un volume

Ici _/srv/gluster/_ est un montage d'un volume dédié pour GlusterFS et le volume à créer se nomme _foovol_.

Créer le répertoire sur chaque serveur :

~~~
# mkdir /srv/gluster/foovol
~~~

Puis sur un des serveurs, créer le volume GlusterFS

~~~
# gluster volume create foovol replica 2 <IP srv1>:/srv/gluster/foovol <IP srv2>:/srv/gluster/foovol
volume create: foovol: success: please start the volume to access data
# gluster volume start foovol
volume start: foovol: success
~~~

Vérification :

~~~
# gluster volume info
[…]
~~~

Sur la machine cliente, on peut maintenant monter le volume :

~~~
# echo "srv1:/foovol /mnt/foovol glusterfs defaults  0   0" >>/etc/fstab
# mkdir /mnt/foovol
# mount /mnt/foovol
~~~

## Administration

~~~
# gluster volume status all
# gluster volume status all clients
# gluster volume status all (mem|fd|inode|callpool)
~~~

# Lister les peers

~~~
# gluster peer status
~~~

# Lister les volumes

~~~
# gluster volume list
~~~

# Voir la santé du volume "foo"

~~~
# gluster volume heal foo info
~~~

# Forcer un 'heal' pour le volume "bar"

~~~
#  gluster volume heal bar
~~~

# Cas pratiques 

## Récupération d'un split-brain - Forcer l'utilisation d'un réplicas comme source de résolution

Dans une situation de split-brain, on peut avoir :

~~~
# gluster volume heal foo info
Brick tic.example.net:/srv/gluster/foovol
<gfid:1b82dc4fd-3d3f-4dc1-89a9-0783b2c10bc> - Is in split-brain

Status: Connected
Number of entries: 1

Brick tac.example.net:/srv/gluster/foovol
<gfid:1b82dc4fd-3d3f-4dc1-89a9-0783b2c10bc> - Is in split-brain

Status: Connected
Number of entries: 1
~~~

Dans ce cas, on peut définir que c'est le réplica "tic" qui va être utilisé pour rétablir le reste du cluster avec la commande : 

~~~
# gluster volume heal foo split-brain source-brick tic.example.net:/srv/gluster/foovol gfid:1b82dc4fd-3d3f-4dc1-89a9-0783b2c10bc
Healed gfid:1b82dc4fd-3d3f-4dc1-89a9-0783b2c10bc
~~~

[Plus de documentation](https://docs.gluster.org/en/v3/Troubleshooting/resolving-splitbrain/)
