Présentation rapide du système de fichiers GlusterFS, avec quelques lignes de commandes pour prendre en main l'outil.

Cette documentation est assez simple et n'ira pas loin dans les détails. De plus, l'utilisation que j'ai effectué de GlusterFS n'est pas typée "production ready". Attention donc à l'utilisation des commandes ci-dessous.

Version Date Commentaire
1 07/2020 Création de l'article
1.1 08/2023 Mise à jour des liens de la documentation GlusterFS
💡
L'article date de 2020, et est en cours de mise à jour ! Les informations fournies ne sont peut-être plus complètement à jour. Il me reste à faire une partie "cluster"...

Le principe

Un système de fichiers distribué et répliqué, accessible en LAN ou WAN fonctionnant en mode "client serveur". L'intérêt est d'avoir un stockage identique entre les serveurs d'un même cluster. Ces machines ont toutes un daemon glusterd qui est le binaire "serveur".

GlusterFS vient s'exécuter dans l'environnement "fichiers". Il n'a pas pour vocation de remplacer des systèmes de fichiers comme EXT4, il vient "par-dessus". Pas besoin de charger des modules dans le noyau Linux, tout est exploité dans le "userspace". En tant que client, les outils FUSE et mount sont exploités, permettant de créer/monter des filesystem depuis l'environnement utilisateur. Les données sont stockées dans un sous-volume du GlusterFS, intitulé brick. Chaque brick est alors mis en place sur chaque serveur selon la configuration du cluster.

Pour s'assurer de l'intégrité des données, chaque fichier aura un hash unique, pas de métadonnée.

Les deux modes de fonctionnement :

  • Mode distribué : les données sont réparties sur les différents serveurs qui composent le cluster GlusterFS. Il n'y a pas de redondance des données. Si un stockage tombe en panne, c'est la perte des données sur le nœud en panne. (équivalent au RAID-0)
  • Mode répliqué : les données sont les mêmes sur tous les nœuds des serveurs du cluster (copie exacte). Ce type de mise en place nécessite au moins deux serveurs (nœuds). Si un nœud est HS, l'autre prendra le relais et "distribuera" les mêmes données que le nœud en panne. Les données sont saisies dans une "brick" (nom communément donné pour un sous-volume). (équivalent au RAID-1)

Il est possible de mixer les deux modes de fonctionnement pour avoir un stockage répliqué et distribué, permettant ainsi le meilleur des deux mondes (nécessite toutefois l'infrastructure qui va bien...).

Voici quelques avantages de l'utilisation de GlusterFS :

  • Flexibilité : GlusterFS peut être utilisé pour une variété de cas d'utilisation, y compris le stockage de fichiers, le stockage de blocs et le stockage d'objets. Il peut être déployé sur n'importe quelle plate-forme, y compris Linux, Windows et macOS.
  • Évolutivité : GlusterFS peut être mis à l'échelle pour répondre à vos besoins de stockage. Vous pouvez ajouter ou supprimer des nœuds à votre cluster GlusterFS sans avoir à apporter de modifications à votre application.
  • Disponibilité : GlusterFS est un système hautement disponible. Si un nœud tombe en panne, les données seront toujours accessibles via les autres nœuds du cluster.

Inconvénients : pas de système de cache (matériel ou logiciel).

Informations complémentaires

Une commande GlusterFS lancée sur une machine du cluster enverra l'information sur toutes les machines du cluster. Par formalisme, il est souhaitable de lancer les commandes depuis le serveur "master".

Les données étant répliquées entre les serveurs, le stockage utilisé sera le même partout, sur tous les serveurs. Veillez donc à avoir suffisamment d'espace disque sur chacune des machines.

Cet outil est exploité plutôt en interne d'un SI. En effet, la réplication étant de type asynchrone, la connexion entre les serveurs doit être fiable et surtout rapide. L'exploitation de GlusterFS depuis un accès WAN est possible, mais les performances s'en retrouveront dégradées dans certaines situations, si les fichiers sont lourds et que l'écriture est fréquente (selon les retours sur le web).

  • Red Hat est derrière le projet depuis 2013, mais est toujours maintenu par "Gluster core team"
  • à ce jour, la version stable est la 11.0, sortie en novembre 2022
  • Respect strict des normes POSIX

GlusterFS est un bon système de fichiers pour vos homelab, pour avoir un stockage redondé entre vos machines à moindre coût.

Pré-requis

  • Avoir un système à jour et une adresse IP fixe (idéalement, une carte réseau dédiée)
  • Disposer d'une seconde grappe de disque dur sur chaque serveur où placer le contenu/volume
  • Avoir renseigné le fichier /etc/hosts avec les IP et noms des serveurs pour le cluster
  • S'assurer que les machines peuvent communiquer entrent-elles (pare-feu, IPTables, etc.) sur les ports TCP et UDP 24007 et 24008. De plus, vous devrez ouvrir un port par brick, à partir du port TCP 49152. Si vous avez 3 bricks, alors vous devez ouvrir les ports TCP 49152, 49153 et 49154.

Installer GlusterFS sur un serveur

Pour installer GlusterFS sur un nœud Linux, exécutez la commande suivante :

$ sudo apt install glusterfs-server software-properties-common --no-install-recommends

L'installation se fait en quelques instants, pas besoin de redémarrer l'OS. Le service est OFF par défaut, penser à l'allumer (systemctl start glusterd && systemctl enable glusterd). La commande gluster peer status doit retourner "Number of peers: 0".

Créer un volume GlusterFS.

Une fois le paquet installé, vous pouvez créer un volume GlusterFS. Pour créer un volume GlusterFS, exécutez la commande suivante :

$ gluster volume create <volume_name> replica <number_of_replicas> transport tcp <brick1> <brick2> ...

Par exemple, pour créer un volume GlusterFS avec deux réplicas (sur deux disques durs) et deux briques, exécutez la commande suivante :

$ gluster volume create myvol replica 2 transport tcp /dev/sda1 /dev/sdb1

Monter le volume GlusterFS sur un client.

Une fois que vous avez créé un volume GlusterFS, vous pouvez le monter sur un client. Pour monter un volume GlusterFS sur un client, exécutez la commande suivante :

$ mount -t glusterfs <server_ip>:/<volume_name> /mnt/<mount_point>

Par exemple, pour monter le volume GlusterFS "myvol" sur le client à l'adresse IP 192.168.1.100, exécutez la commande suivante :

$ mount -t glusterfs 192.168.1.100:/myvol /mnt/myvol

Utiliser le volume GlusterFS.

Une fois que le volume GlusterFS est monté sur un client, vous pouvez l'utiliser comme n'importe quel autre système de fichiers. Vous pouvez copier des fichiers vers le volume, y accéder depuis un client ou y effectuer des opérations de stockage.

Pourquoi utiliser un volume GlusterFS ?

Ce type de volume peut avoir un intérêt dans les réseaux n'ayant pas de grosses contraintes techniques ni financières. Par exemple, il est utile d'avoir un volume GlusterFS entre plusieurs hôtes Docker (avec ou sans Swarm) pour y stocker des données partagées entre les hôtes, ou encore un espace de stockage des données pour de très légères bases de données.

Comment se connecter à un serveur proposant un stockage GlusterFS ?

Les clients ne sont pas les serveurs du cluster. Un client = un utilisateur.

$ sudo apt install glusterfs-client --no-install-recommends
$ modprobe fuse
$ sudo mkdir /mnt/glusterfs
$ sudo mount -t glusterfs servergfs:/gvol0 /mnt/glusterfs

Commandes à retenir

  • Voir le status des nœuds du cluster : $ gluster peer status
  • Affiche les informations complètes du volume : $ gluster volume info NomVolumeGlusterFS

Source

Partager l'article