Benoit Cattié

Catégorie GNU/Linux › Distributed FileSystem

Fil des billets - Fil des commentaires

RedHat rachète Gluster Inc

lundi, octobre 10 2011, par Benoit Cattié

Un petit article pour annoncer le rachat de Gluster Inc par Redhat.

L'accord a été signé le 4 octobre.

Redhat explique le rachat de Gluster afin de renforcer sa stratégie de développement du cloud computing.

Quelques liens :

Le communiqué de presse : http://www.redhat.com/promo/storage...

Quelques questions/réponses de RedHat : http://www.redhat.com/promo/storage...

L'article sur le blog de Brian Stevens : http://www.redhat.com/promo/storage...


Catégorie: Distributed FileSystem | aucun commentaire | aucun rétrolien

GlusterFS : Striped Volumes

vendredi, septembre 9 2011, par Benoit Cattié

Un petit chapitre consacré aux 'Striped Volumes'.

Nous disposons de 4 serveurs gluster. Dans le mode 'striped volume', nous devons créer un nombre de srtipe égal aux nombres de briques du gluster (a savoir 4 dans notre cas)

Création du volume :

gluster volume create striped-volume stripe 4 \
server-01:/home/glusterfs-SV \
server-02:/home/glusterfs-SV \
server-03:/home/glusterfs-SV \
server-04:/home/glusterfs-SV

Creation of volume striped-volume has been successful. Please start the volume to access data.

Status du volume :

# gluster volume info
Volume Name: striped-volume
Type: Stripe
Status: Created
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server-01:/home/glusterfs-SV
Brick2: server-02:/home/glusterfs-SV
Brick3: server-03:/home/glusterfs-SV
Brick4: server-04:/home/glusterfs-SV

On lance le volume

# gluster volume start striped-volume
Starting volume striped-volume has been successful

On monte le volume :

mount -t glusterfs server-01:/striped-volume /mnt/gluster-SV/

Un test rapide :

for i in `seq 1 20`;do dd if=/dev/zero of=/mnt/gluster-SV/test$i bs=1M count=10; done

Alors la petite surprise, un "ls" sur chaque brique du gluster montre des fichiers de 10M sur chaque noeud. Apparemment cela viens du comportement du "ls" qui ne se base pas sur la taille du fichier mais de l offset du dernier bytes. En utilisant 'du', la par contre on a bien le comportement désiré : a savoir le fichier découpé sur toutes les briques du gluster. C'est d'ailleurs indiqué dans la FAQ

server-03:~# du -h /home/glusterfs-SV/*
2.6M	/home/glusterfs-SV/test1
2.6M	/home/glusterfs-SV/test10
2.6M	/home/glusterfs-SV/test11
2.6M	/home/glusterfs-SV/test12
2.6M	/home/glusterfs-SV/test13
2.6M	/home/glusterfs-SV/test14
2.6M	/home/glusterfs-SV/test15
2.6M	/home/glusterfs-SV/test16
2.6M	/home/glusterfs-SV/test17
2.6M	/home/glusterfs-SV/test18
2.6M	/home/glusterfs-SV/test19
2.6M	/home/glusterfs-SV/test2
2.6M	/home/glusterfs-SV/test20
2.6M	/home/glusterfs-SV/test3
2.6M	/home/glusterfs-SV/test4
2.6M	/home/glusterfs-SV/test5
2.6M	/home/glusterfs-SV/test6
2.6M	/home/glusterfs-SV/test7
2.6M	/home/glusterfs-SV/test8
2.6M	/home/glusterfs-SV/test9

Lorsqu'on accède à un fichier on viens bien du coup que toutes les briques du gluster sont sollicitées :

16:58:22.416984 IP server-02.24010 > client-01.1013:
16:58:22.416986 IP server-02.24010 > client-01.1013: 
16:58:22.416989 IP server-02.24010 > client-01.1013: 

16:58:22.363600 IP server-03.24010 > client-01.1012:
16:58:22.363603 IP server-03.24010 > client-01.1012:
16:58:22.363605 IP server-03.24010 > client-01.1012:

Du coup cassons une brique voir ce qu'il se passe :

client-01:~# cat /mnt/gluster-SV/test16
cat: /mnt/gluster-SV/test16: Transport endpoint is not connected

client-01:~# dd if=/dev/zero of=/mnt/gluster-SV/test777 bs=1M count=100
dd: opening `/mnt/gluster-SV/test777': Input/output error

Plus aucun fichier n'est accessible ... et impossible de créer le moindre fichier.

Après relance de la brique HS (et un petit laps de temps), tout refonctionne comme avant

Essayons maintenant de rajouter une brique au volume. Sur un striped volume, on ne peux rajouter qu'un multiple du nombre de stripe (4 dans notre cas). Idem pour les replicated volume.

Du coup on va rajouter 4 briques à notre volume :

server-01:~# gluster volume add-brick striped-volume \
server-01:/home/glusterfs-SV2 \
server-02:/home/glusterfs-SV2 \
server-03:/home/glusterfs-SV2 \
server-04:/home/glusterfs-SV2
# gluster volume info

Volume Name: striped-volume
Type: Distributed-Stripe
Status: Started
Number of Bricks: 2 x 4 = 8
Transport-type: tcp
Bricks:
Brick1: server-01:/home/glusterfs-SV
Brick2: server-02:/home/glusterfs-SV
Brick3: server-03:/home/glusterfs-SV
Brick4: server-04:/home/glusterfs-SV
Brick5: server-01:/home/glusterfs-SV2
Brick6: server-02:/home/glusterfs-SV2
Brick7: server-03:/home/glusterfs-SV2
Brick8: server-04:/home/glusterfs-SV2

On passe du coup en "Distributed-Stripe". Pas moyen a priori d'augmenter uniquement le nombre de stripe en rajoutant une brique.

Si on recrée des fichiers, ils sont distribués entre les 2 groupes de stripes :

client-01:~# for i in `seq 1 10`;do dd if=/dev/zero of=/mnt/gluster-SV/test3$i bs=1M count=10; done

server-01:~# du -h /home/glusterfs-SV2/*
2.6M	/home/glusterfs-SV2/test33
2.6M	/home/glusterfs-SV2/test34
2.6M	/home/glusterfs-SV2/test35
2.6M	/home/glusterfs-SV2/test38
2.6M	/home/glusterfs-SV2/test39

server-01:~# du -h /home/glusterfs-SV/*
2.6M	/home/glusterfs-SV/test1
2.6M	/home/glusterfs-SV/test10
2.6M	/home/glusterfs-SV/test11
2.6M	/home/glusterfs-SV/test12
2.6M	/home/glusterfs-SV/test13
2.6M	/home/glusterfs-SV/test14
2.6M	/home/glusterfs-SV/test15
2.6M	/home/glusterfs-SV/test16
2.6M	/home/glusterfs-SV/test17
2.6M	/home/glusterfs-SV/test18
2.6M	/home/glusterfs-SV/test19
2.6M	/home/glusterfs-SV/test2
2.6M	/home/glusterfs-SV/test20
2.6M	/home/glusterfs-SV/test3
2.6M	/home/glusterfs-SV/test31
2.6M	/home/glusterfs-SV/test310
2.6M	/home/glusterfs-SV/test32
2.6M	/home/glusterfs-SV/test36
2.6M	/home/glusterfs-SV/test37
2.6M	/home/glusterfs-SV/test4
2.6M	/home/glusterfs-SV/test5
2.6M	/home/glusterfs-SV/test6
2.6M	/home/glusterfs-SV/test7
2.6M	/home/glusterfs-SV/test8
2.6M	/home/glusterfs-SV/test9

Tant qu'on est dans l'ajout de brique testons les commandes de rebalancing

server-01:~# gluster volume rebalance striped-volume start
starting rebalance on volume striped-volume has been successful

server-01:~# gluster volume rebalance striped-volume status
rebalance step 2: data migration in progress : rebalanced 2 files of size 20971520 (total files scanned 12)

server-01:~# gluster volume rebalance striped-volume status
rebalance completed: rebalanced 9 files of size 94371840 (total files scanned 41)

Ce qui donne du coup

server-01:~# du -h /home/glusterfs-SV/*
2.6M	/home/glusterfs-SV/test1
2.6M	/home/glusterfs-SV/test13
2.6M	/home/glusterfs-SV/test15
2.6M	/home/glusterfs-SV/test16
2.6M	/home/glusterfs-SV/test19
2.6M	/home/glusterfs-SV/test2
2.6M	/home/glusterfs-SV/test31
2.6M	/home/glusterfs-SV/test310
2.6M	/home/glusterfs-SV/test32
2.6M	/home/glusterfs-SV/test36
2.6M	/home/glusterfs-SV/test37
2.6M	/home/glusterfs-SV/test4
2.6M	/home/glusterfs-SV/test5
2.6M	/home/glusterfs-SV/test7
2.6M	/home/glusterfs-SV/test8
2.6M	/home/glusterfs-SV/test9

root@server-01:~# du -h /home/glusterfs-SV2/*
2.6M	/home/glusterfs-SV2/test10
2.6M	/home/glusterfs-SV2/test11
2.6M	/home/glusterfs-SV2/test12
2.6M	/home/glusterfs-SV2/test14
4.0K	/home/glusterfs-SV2/test15
2.6M	/home/glusterfs-SV2/test17
2.6M	/home/glusterfs-SV2/test18
2.6M	/home/glusterfs-SV2/test20
2.6M	/home/glusterfs-SV2/test3
2.6M	/home/glusterfs-SV2/test33
2.6M	/home/glusterfs-SV2/test34
2.6M	/home/glusterfs-SV2/test35
2.6M	/home/glusterfs-SV2/test38
2.6M	/home/glusterfs-SV2/test39
2.6M	/home/glusterfs-SV2/test6
4.0K	/home/glusterfs-SV2/test7

Par contre coté client, on voit apparaitre des fichiers un peu étranges :

-rw-r--r-- 1 root root 10485760 2011-09-01 12:24 test15
-rw-r--r-- 1 root root 10485760 2011-09-02 13:50 .test15.gfs10485760

-rw-r--r-- 1 root root 10485760 2011-09-01 12:23 test7
-rw-r--r-- 1 root root 10485760 2011-09-02 13:49 .test7.gfs10485760

La FAQ indique qu'il s'agit de fichier temporaire crées lors du rebalancing lorsque ces fichiers sont utilisés et qu'on peu les effacés si le fichier original est correct ... Plutôt étrange.


Catégorie: Distributed FileSystem | aucun commentaire | aucun rétrolien

GlusterFS : Replicated Volumes

mercredi, août 31 2011, par Benoit Cattié

Un petit chapitre consacré aux 'Replicated Volumes'.

Nous disposons de 4 serveurs gluster. Dans le mode 'replicated volume', nous devons créer un nombre de réplicats égal aux nombres de briques du gluster (a savoir 4 dans notre cas)

Création du volume :

gluster volume create replicated-volume replica 4 \
server-01:/home/glusterfs-RV \
server-02:/home/glusterfs-RV \
server-03:/home/glusterfs-RV \
server-04:/home/glusterfs-RV

Creation of volume replicated-volume has been successful. Please start the volume to access data.

Status du volume :

# gluster volume info

Volume Name: replicated-volume
Type: Replicate
Status: Created
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server-01:/home/glusterfs-RV
Brick2: server-02:/home/glusterfs-RV
Brick3: server-03:/home/glusterfs-RV
Brick4: server-04:/home/glusterfs-RV

On lance le volume

# gluster volume start replicated-volume
Starting volume replicated-volume has been successful

On monte le volume :

mount -t nfs server-01:/replicated-volume /mnt/gluster-RV/

Un test rapide :

for i in `seq 1 20`;do dd if=/dev/zero of=/mnt/gluster-RV/test$i bs=1M count=10; done

Ce qui donne sur le montage NFS :

client-01:~# ll /mnt/gluster-RV/
total 204888
drwxr-xr-x 2 root root     4096 2011-08-31 12:48 ./
drwxr-xr-x 3 root root     4096 2011-08-31 12:26 ../
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test1
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test10
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test11
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test12
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test13
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test14
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test15
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test16
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test17
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test18
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test19
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test2
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test20
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test3
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test4
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test5
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test6
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test7
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test8
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test9

Les fichiers sont bien répliqués sur chaque brique du gluster :

server-01:~# ll /home/glusterfs-RV/
total 204888
drwxr-xr-x 2 root root     4096 2011-08-31 12:48 ./
drwxr-xr-x 4 root root     4096 2011-08-31 12:19 ../
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test1
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test10
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test11
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test12
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test13
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test14
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test15
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test16
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test17
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test18
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test19
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test2
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test20
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test3
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test4
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test5
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test6
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test7
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test8
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test9

server-02:~# ll /home/glusterfs-RV/
total 204888
drwxr-xr-x 2 root root     4096 2011-08-31 12:48 ./
drwxr-xr-x 4 root root     4096 2011-08-31 12:19 ../
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test1
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test10
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test11
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test12
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test13
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test14
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test15
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test16
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test17
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test18
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test19
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test2
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test20
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test3
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test4
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test5
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test6
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test7
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test8
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test9

[...]

On casse une brique du gluster (kill -9)

server-01:~# gluster peer status
Number of Peers: 3

Hostname: server-03
Uuid: 3cbd07b9-65ff-4ea6-a55e-afae48d7dad5
State: Peer in Cluster (Connected)

Hostname: server-04
Uuid: 7c17079e-a75c-4618-8237-5a7256c3cc2d
State: Peer in Cluster (Connected)

Hostname: server-02
Uuid: 48e33e29-67b5-4613-9cba-e32155a92900
State: Peer in Cluster (Disconnected)

Sur le client tout les fichiers sont bien présent :

client-01:~# ll /mnt/gluster-RV/
total 204888
drwxr-xr-x 2 root root     4096 2011-08-31 12:48 ./
drwxr-xr-x 3 root root     4096 2011-08-31 12:26 ../
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test1
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test10
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test11
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test12
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test13
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test14
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test15
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test16
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test17
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test18
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test19
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test2
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test20
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test3
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test4
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test5
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test6
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test7
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test8
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test9

Créons des fichiers avec une brique HS :

client-01:~# for i in `seq 1 10`;do dd if=/dev/zero of=/mnt/gluster-RV/test2$i bs=1M count=10; done

La création de fichiers se passe bien. On relance la brique HS.

Les fichiers se répliquent sur la brique HS une fois qu'ils sont accédés depuis le client.

server-03:~# ll /home/glusterfs-RV/
-rw-r--r-- 1 root root        0 2011-08-31 12:54 test21
-rw-r--r-- 1 root root        0 2011-08-31 12:55 test210
-rw-r--r-- 1 root root        0 2011-08-31 12:54 test22

client-01:~# cat /mnt/gluster-RV/test210 > /dev/null

server-03:~# ll /home/glusterfs-RV/
-rw-r--r-- 1 root root        0 2011-08-31 12:54 test21
-rw-r--r-- 1 root root 10485760 2011-08-31 12:55 test210
-rw-r--r-- 1 root root        0 2011-08-31 12:54 test22


Catégorie: Distributed FileSystem | aucun commentaire | aucun rétrolien

GlusterFS : Distributed Volumes

samedi, août 27 2011, par Benoit Cattié

Un petit chapitre consacré aux 'Distributed Volumes'

Création du volume

gluster volume create distributed-volume server-05:/home/glusterfs-DV \
server-10:/home/glusterfs-DV \
server-11:/home/glusterfs-DV \
server-12:/home/glusterfs-DV

On regarde le status du volume :

gluster volume info

Volume Name: distributed-volume
Type: Distribute
Status: Created
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server-05:/home/glusterfs-DV
Brick2: server-10:/home/glusterfs-DV
Brick3: server-11:/home/glusterfs-DV
Brick4: server-12:/home/glusterfs-DV

On lance le volume :

gluster volume start distributed-volume

On monte le volume :

mount -t nfs server-11:/distributed-volume /mnt/gluster-DV/

Un test rapide :

for i in `seq 1 20`;do dd if=/dev/zero of=/mnt/gluster-DV/test$i bs=1M count=10; done

Ce qui donne sur le montage NFS :

ll /mnt/gluster-DV/
total 204800
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test1
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test10
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test11
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test12
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test13
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test14
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test15
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test16
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test17
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test18
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test19
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test2
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test20
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test3
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test4
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test5
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test6
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test7
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test8
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test9

On voit bien que les fichiers sont répartis sur chaque briques du volume :

server-12:~# ll /home/glusterfs-DV
total 71680
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test10
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test11
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test12
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test15
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test20
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test3
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test7

server-05:~# ll /home/glusterfs-DV
total 40960
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test1
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test2
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test5
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test9

server-10:~# ll /home/glusterfs-DV
total 51200
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test13
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test16
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test19
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test4
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test8

server-11:~# ll /home/glusterfs-DV
total 40960
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test14
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test17
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test18
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test6

Passons aux choses un peu plus fun.

demon glusterd crashé (simulé par un kill -9)

server-05:~# gluster peer status
Number of Peers: 3

Hostname: server-10
Uuid: c6f1e99f-e048-45ab-a682-5e2ca91733ef
State: Peer in Cluster (Disconnected)

Hostname: server-11
Uuid: a166c2f3-30e2-43fb-80fd-8f01c3f9842e
State: Peer in Cluster (Connected)

Hostname: server-12
Uuid: 67976b5a-54df-4184-b305-1a4a50f9474e
State: Peer in Cluster (Connected)

Ce qui se traduit sur le volume par l'impossibilité d'accéder à certains fichiers (ceux hébergés sur le nœud crashé) :

server-09:~# ll /mnt/gluster-DV/
total 153600
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test1
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test10
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test11
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test12
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test14
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test15
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test17
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test18
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test2
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test20
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test3
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test5
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test6
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test7
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test9

On relance le démon :

/etc/init.d/glusterd start
server-05:~# gluster peer status
Number of Peers: 3

Hostname: server-10
Uuid: c6f1e99f-e048-45ab-a682-5e2ca91733ef
State: Peer in Cluster (Connected)

Hostname: server-11
Uuid: a166c2f3-30e2-43fb-80fd-8f01c3f9842e
State: Peer in Cluster (Connected)

Hostname: server-12
Uuid: 67976b5a-54df-4184-b305-1a4a50f9474e
State: Peer in Cluster (Connected)

Les fichiers sont de nouveaux disponibles :

server-09:~# ll /mnt/gluster-DV/
total 204800
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test1
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test10
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test11
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test12
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test13
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test14
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test15
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test16
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test17
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test18
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test19
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test2
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test20
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test3
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test4
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test5
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test6
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test7
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test8
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test9

Testons maintenant la création de fichiers lorsqu'une brique du volume est HS

for i in `seq 1 20`;do dd if=/dev/zero of=/mnt/gluster-DV/test2$i bs=1M count=10; done
10485760 octets (10 MB) copiés, 0,261619 s, 40,1 MB/s
[...]
dd: ouverture de `/mnt/gluster-DV/test26': Erreur d'entrée/sortie
[...]
dd: ouverture de `/mnt/gluster-DV/test213': Erreur d'entrée/sortie
dd: ouverture de `/mnt/gluster-DV/test214': Erreur d'entrée/sortie

C'est plutôt moche .... a voir si avec le client natif (FUSE) ca marche mieux. On verra ca par la suite.

Autre soucis, pour monter le volume via NFS, on mount sur une adresse IP unique (celle d'un des serveurs du gluster). En cas de crash de ce serveur, l'accès aux données est impossible. Il doit être possible via une VIP de contourner ce probleme. L'utilisation du client natif gluster permet aussi de s'affranchir de ce problème.

Testons donc le client natif glusterfs.

Pour monter le volume :

mount -t glusterfs server-11:/distributed-volume /mnt/gluster-DV/

# mount
server-11:/distributed-volume on /mnt/gluster-DV type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)

Première constatation, ca a l'air beaucoup plus rapide que le NFS.

La même problématique apparait lorsque qu'un serveur du gluster crash, la création de fichier sur le volume échoue pour certains fichiers

Noeud final de transport n'est pas connecté

Par contre lorsque le serveur sur lequel le montage a été fait crash, l'accès aux données fonctionne toujours. C'est d'ailleur mentionné dans la doc :

Note: The server specified in the mount command is only used to fetch the gluster configuration
volfile describing the volume name. Subsequently, the client will communicate directly with the
servers mentioned in the volfile (which might not even include the one used for mount).

Par contre les fichiers présent sur ce serveurs sont du coup inaccessible sur le montage.


Catégorie: Distributed FileSystem | aucun commentaire | aucun rétrolien

GlusterFS : Présentation

mardi, août 23 2011, par Benoit Cattié

GlusterFS est un système de fichier distribué POSIX.

Actuellement la version stable est la 3.2 (3.3 en beta).

Il se découpe 2 parties:

  • le démon glusterd pour gérer les volumes distribués
  • le client gluster pour accéder aux volumes.

L'accès aux volumes peut se faire de 2 manières : soit avec l'utilisation du client gluster (basé sur FUSE et donc en user-space). Cette méthode est actuellement la méthode recommandée par gluster.

Depuis la version 3.1 l'accès aux volumes peux aussi se faire en NFS en se passant donc du client FUSE.

Une fonctionnalité de "geo-replication" a été intégrée depuis la version 3.2. Elle permet de répliquer un volume glusterFS afin d'en assurer une redondance. Cette géo-réplication est continue et asynchrone. Elle fonctionne sur le principe master/slave.

Autres nouveautés de la version 3.2, l'amélioration des outils de monitoring des volumes. (GlusterFS Volume Top / GlusterFS Volume Profile) ainsi que la gestion des quotas et des ACL.

glusterfs implémente 5 types de volumes avec des caractéristiques différentes :

Distributed Volumes

Les fichiers sont distribués sur chacune des briques du volumes. 
Ce type de volume permet d'étendre la capacité de stockage mais n'assure aucune redondance. 
Si une brique est HS, les fichiers hébergés sur cette briques sont indisponible.

Replicated Volumes

Les fichiers sont répliqués sur chaque briques du volume. 
Ce type de volume permet d'assurer une redondance des données, mais l'ajout d'une brique n'augmente pas la taille du volume
Elle permet juste d'ajouter une redondance supplémentaire.

Striped Volumes

Les fichiers sont découpés et répartis sur chaque briques du volumes.
Ce type de volume est très proche d'un RAID 0
Les données sont réparties sur les volumes assurant ainsi de bonnes performances. 
La perte d'une brique rend inaccessible l'intégralité des fichiers du volume

Distributed Striped Volumes

Très similaire aux Striped Volumes, hormis que les stripes ne sont pas répartis sur toutes les briques des volumes.
On peux avoir 6 briques dans le volume en découpant uniquement les fichiers sur 2 briques.

Distributed Replicated Volumes

Meme logique que les Distributed Striped Volumes : on réplique le fichier _x_ fois sur un ensemble de _y_ volumes.
Ce type de volume permet d'étendre la capacité de stockage tout en assurant une redondance des données.

Quelques liens :


Catégorie: Distributed FileSystem | aucun commentaire | aucun rétrolien