Introduction Ă  GlusterFS

13 mai 2021

Concepts

GlusterFS est un système de fichiers distribuĂ©, c’est Ă  dire qu’il permet d’agrĂ©ger du stockage (des “bricks”) reparti sur une grappe de machines dans un “volume” qu’il expose Ă  des clients. Plusieurs clients peuvent monter un mĂŞme volume et y accĂ©der simultanĂ©ment.

Ça permet d’avoir un stockage :

=> https://www.gluster.org/

Volumes

GlusterFS peut créer différent types de volumes :

Par rapport au “distribuĂ© et rĂ©pliquĂ©”, le “dispersĂ© et distribuĂ©” (~RAID 60) a l’avantage de “gâcher” moins d’espace de stockage en contrepartie d’une moindre tolĂ©rance aux pannes.

Typiquement on commence souvent avec un volume rĂ©pliquĂ© ou dispersĂ©, et lorsqu’on l’Ă©tend ça devient automatiquement distribuĂ© et rĂ©pliquĂ©/dispersĂ©.

=> https://docs.gluster.org/en/latest/Administrator-Guide/Setting-Up-Volumes/

Clients

Pour accéder à un volume GlusterFS, il existe différentes méthodes :

=> https://docs.gluster.org/en/latest/Administrator-Guide/Setting-Up-Clients/

Installation

GlusterFS est prĂ©sent dans les dĂ©pĂ´ts Debian, toutefois pour avoir une version plus rĂ©cente il est possible d’utiliser les dĂ©pĂ´ts du projet :

# ajout des dépôts tiers
wget -O - https://download.gluster.org/pub/gluster/glusterfs/8/rsa.pub | apt-key add -
echo deb [arch=amd64] https://download.gluster.org/pub/gluster/glusterfs/9/LATEST/Debian/buster/amd64/apt buster main > /etc/apt/sources.list.d/gluster.list

# installation de GlusterFS
apt-get install glusterfs-server

# outils pour LVM
apt-get install lvm2 thin-provisionning-tools

# outils pour XFS
apt-get install xfsprogs

=> https://download.gluster.org/pub/gluster/glusterfs/LATEST/

Configuration

Préparation du stockage

LVM

L’utilisation de LVM est recommandĂ©e, car ça permet de bĂ©nĂ©ficier de la fonction de snapshots de GlusterFS, sinon c’est optionnel. Plus spĂ©cifiquement, il faut utiliser le “thin-provisionning” de LVM pour que ça fonctionne.

# création du groupe de volumes LVM
vgcreate data-vg /dev/sdx

# création du groupement destiné à recevoir les volumes
lvcreate --type thin-pool --extents 100%FREE --name data-vg/thin-pool

# création du volume dans le groupement
lvcreate --type thin --virtualsize 500G --thinpool data-vg/thin-pool --name thin-vol

Système de fichiers

N’importe quel système de fichiers gĂ©rant les attributs POSIX Ă©tendus est censĂ© ĂŞtre supportĂ©, XFS est celui recommandĂ©, ext4 ou Btrfs sont Ă©galement valables.

# formatage du volume en XFS
mkfs.xfs -i size=512 /dev/mapper/data--vg-thin--vol

# montage du volume
mkdir -p /data/brick
echo '/dev/mapper/data--vg-thin--vol /data/brick xfs rw,inode64,noatime,nouuid 0 2' >> /etc/fstab
mount /data/brick

Création de la grappe

En partant du principe qu’on a trois serveurs, respectivement nommĂ©s : gfs01, gfs02 et gfs03. On crĂ©er le “trusted pool” avec ceux-ci :

# sur chaque membre, démarrer le service et l'activer au démarrage
systemctl enable --now glusterd

# depuis gfs01, sonder les autres membres pour les ajouter au groupement
gluster peer probe gfs02
gluster peer probe gfs03

On peut ensuite vĂ©rifier l’Ă©tat du groupement et la liste de ses membres :

gluster peer status
gluster pool list

Création du volume

C’est Ă  cette Ă©tape qu’on choisit si on veut faire du distribuĂ©, rĂ©pliquĂ© ou dispersĂ©. On va commencer avec de la rĂ©plication.

On crĂ©er un volume gv01 de type “replica 3”, c’est Ă  dire que la donnĂ©e sera copiĂ©e Ă  trois endroits, et si une machine devient indisponible, la donnĂ©e sera encore sur les deux autres :

gluster volume create gv01 replica 3 gfs01:/data/brick/gv01 gfs02:/data/brick/gv01 gfs03:/data/brick/gv01
gluster volume start gv01

On peut ensuite consulter l’Ă©tat du volume :

gluster volume info

La sortie devrait avoir une ligne indiquant Status: Started. Sinon pour comprendre ce qui ne vas pas il faudra aller consulter le journal d’Ă©vĂ©nements, par dĂ©faut /var/log/glusterfs/glusterd.log.

Montage du volume

Depuis les clients, il faut installer le paquet glusterfs-client dans la mĂŞme version que les serveurs, et simplement monter le volume :

mkdir -p /data/gv01
mount -t glusterfs -o defaults,noatime,_netdev gfs01:/gv01 /data/gv01

Le montage se fait via gfs01, mais une fois montĂ© mĂŞme si cette machine disparaĂ®t ça continuera de fonctionner. Par contre si gfs01 est indisponible au moment du montage, ça Ă©chouera. Si on veut avoir une sĂ©curitĂ© au montage on peut ajouter l’option backupvolfile-server=gfs02 par exemple.

Pour un montage persistent, ajouter cette ligne dans le fichier /etc/fstab :

gfs01:/gv01 /data/gv01 glusterfs defaults,noatime,_netdev 0 0

Extension du stockage

Le nombre de bricks Ă  ajouter doit un multiple du nombre de “replica” choisit, par exemple pour une grappe en “replica 3” il faudra ajouter les membres par groupe de 3 (exemples : 3, 6, 9, 12, …).

# extension du volume
gluster volume add-brick gv01 gfs04:/data/brick/gv01 gfs05:/data/brick/gv01 gfs06:/data/brick/gv01

# vérifer l'état du volume
gluster volume info gv01

# reabalancement des donnés
gluster volume rebalance gv01 start

# vérifier l'état du rebalacement
gluster volume rebalance gv01 status

Ressources