Présentation
C’est un outil de file system distribué qui se situe au dessus de la couche FS. A ne pas confondre avec les FS partagés tels que GFS2 ou ocfs2 par exemple. Ici un FS distribué serat en XFS, ext3, …
Il permet de faire de la concaténation ou du réplica entre des FS de plusieurs serveurs. Et gére les accés clients concurents.
Mise en place
J’ai mis en place deux VM qui serviront de serveur de fichiers: node1 et node2
Installation du cluster
- Packages à installer:
- serveurs
via yum il suffit d’installer1
2yum install glusterfs{-fuse,-server}
service glusterd start - clients:
1
yum install glusterfs-fuse
- serveurs
- Mise en place du cluster
A cette étape glusterfsd tourne sur chaque serveur. Maintenant il les faut les associer en cluster:
1 | # Attacher une machine au pool de stockage (a faire sur les 2) |
ATTENTION: pour que cela marche il faut bien sur désactiver le firewall ou ouvrir les ports utilisés par gluster fs. Sinon “gluster peer probe” retournerat ue impossibilité de se connecter au noeux.
Création d’un volume partagé
Glusterfs permet trois types de volume (ou une association des 3)
Volumes distribués: Les fichiers sont répartis aléatoirement entre chaque brique de stockage du volume.
Volumes repliqués: Une ou plusieurs copies des fichiers sont disponibles sur plusieurs briques du volume
Volumes agrégés par bande (striped): Les données sont découpées et réparties entre plusieurs briques du volume.
Pour mes besoins, je ne m’interesserait qu’aux volumes repliqués.
- Préparation des FS:
Il faut créer les FS à partager sur l’ensemble des noeudsCréation d’un volume gvol1 de type replica (2 replica):1
2
3
4
5pvcreate /dev/vdb
vgcreate node*_data /dev/vdb
lvcreate -L 1G -n lvexport node*_data
mkfs.ext4 /dev/mapper/node*_data-lvexport
mkdir -p /export && mount /dev/mapper/node*_data-lvexport /exportOn peut ajouter des acl sur le volume pour éviter un montage par n’importe qui:1
2gluster volume create gvol1 replica 2 transport tcp node1.hedwy.fr:/export/ node2.hedwy.fr:/export/
gluster volume start gvol1Etat de gvol11
gluster volume set gvol1 auth.allow 192.168.*
1
2
3
4
5
6
7
8
9
10
11
12gluster volume info
Volume Name: gvol1
Type: Replicate
Volume ID: c5111d8c-58e1-40f4-9ebc-ab362cebbfcf
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1.hedwy.fr:/export
Brick2: node2.hedwy.fr:/export
Options Reconfigured:
auth.allow: 192.168.* - Montage sur le client:
1
mount.glusterfs 192.168.100.191:/gvol1 /mnt/glusterfs
- Note: erreur lors de la création du volume
lors de la création glusterfsd peut se bloquer en affirmant que le FS est déja un volume glusterfs ou est contenu dans un volume alors que ce n’est pas le cas:1
2
3
4setfattr -x trusted.glusterfs.volume-id /export
setfattr -x trusted.gfid $brick_pat
setfattr -x trusted.gfid /export
rm /export/.glusterfsdTests
Le volume créé c’est comporté exactement comme attendu lors de mes tests: - Agrandissement: Aprés un agrandissement classique des deux FS /export, le volume monté à eut sa taille également augmentée
- Ecriture:
Ras lors de l’écriture/suppression/modification dans /mnt/glusterfs ou dans /export. Il faut juste noter que la synchro n’est réalisée qu’a partir du momment ou le volume glusterfs est monté au moins une fois (sinon les modif faites dans /export ne sont pas repercutées sur l’autre noeud). - Tolérance aux pannes: RAS de ce coté aussi. Tout se passe bien tant que l’on fait attention lors du redémarrage (si les deux noeuds sont HS).
Conclusions
Plutôt simple à mettre en place et à administrer (malgrés les problèmes liés aux différences de versions entre serveurs et clients). Ce n’est pourtant pas ce que je cherche.
En effet, lorsqu’un serveur est également client on se retrouve avec deux arborescence de montées.
Sources
Pour mon test j’ai utilisé ensentiellement deux tuto:
http://www.howtoforge.com/high-availability-storage-with-glusterfs-3.2.x-on-centos-6.3-automatic-file-replication-mirror-across-two-storage-servers
http://petitcodeur.fr/sysadmin/installation-glusterfs-centos.html