01déc. 2011

Système de fichier distribué Glusterfs - volume en striping

gluster_logo

La suite des tests gluster, nous attaquons la mise en place d'un volume en striping.
Les serveurs de fichiers dispose d'une partition de 10Go qui sera exporté.

filer-1 / # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.9G  1.4G  8.0G  15% /
udev                   10M  116K  9.9M   2% /dev
shm                   249M     0  249M   0% /dev/shm
filer-2 ~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.9G  1.4G  8.0G  15% /
udev                   10M  116K  9.9M   2% /dev
shm                   249M     0  249M   0% /dev/shm


Configuration de base :


Il faut dans un premier temps le pool de confiance si ce dernier n'existe pas.
La procédure est décrite dans l'article volume répliqué et distribué


Configuration d'un volume en striping :


Nous allons créer le volume stripé sur 2 serveurs de stockage, le but étant d' aggreger l'espace de stockage (Raid-0).

  • La création du volume est extrêmement simple :
filer-1 ~ # gluster volume create test-volume stripe 2 transport tcp filer-1:/mnt filer-2:/mnt
Creation of volume test-volume has been successful. Please start the volume to access data.
  • On vérifie le volume
filer-2 ~ # gluster volume info
Volume Name: test-volume
Type: Stripe
Status: Created
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: filer-1:/mnt
Brick2: filer-2:/mnt
  • A présent on démarre le volume
filer-2 ~ # gluster volume start test-volume
  • On monte le volume depuis les clients
client-1 ~ # mount -t glusterfs filer-1:7997:/test-volume /glusterfs
client-1 ~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.9G  1.6G  6.0G  22% /
udev                   10M  112K  9.9M   2% /dev
shm                   249M     0  249M   0% /dev/shm
filer-1:/test-volume   20G  2.8G   16G  15% /glusterfs

Nous disposons bien d'un volume strippé.

Test divers :

  • Test en ecriture.
client-1 ~ # for i in `seq 0 2`; do dd if=/dev/zero of=/glusterfs/wap$i.img bs=300M count=1; done
client-1 ~ # du -h /glusterfs/*
301M	/glusterfs/wap0.img
301M	/glusterfs/wap1.img
301M	/glusterfs/wap2.img
filer-1 ~ # du -h /mnt/*
151M	/mnt/wap0.img
151M	/mnt/wap1.img
151M	/mnt/wap2.img
filer-2 ~ # du -h /mnt/*        
151M	/mnt/wap0.img
151M	/mnt/wap1.img
151M	/mnt/wap2.img
  • Voyons comment réagi le volume en cas de panne sur l'un des filer.
client-1 ~ # echo 'abcdefghij' > /glusterfs/test
client-1 ~ # ls -l /glusterfs
total 8
-rw-r--r-- 1 root root 11 Nov 12 00:38 test
filer-1 / # ls -l /mnt/
total 8
-rw-r--r-- 1 root root 11 Nov 12 00:38 test
filer-1 / # cat /mnt/test 
abcdefghij
filer-1 / #
filer-2 ~ # ls -l /mnt/
total 4
-rw-r--r-- 1 root root 0 Nov 12 00:38 test
filer-2 ~ # cat /mnt/test 
filer-2 ~ #
  • Simulation de panne sur filer-2

On désactive le filer-2

filer-2 ~ # halt
Broadcast message from root (pts/0) (Sat Nov 12 00:40:50 2011):
The system is going down for system halt NOW!

On écrit sur le point de montage depuis le client

client-1 ~ # rm /glusterfs/test 
rm: cannot remove `/glusterfs/test': Transport endpoint is not connected
client-1 ~ # cat /glusterfs/test 
cat: /glusterfs/test: Transport endpoint is not connected
client-1 ~ # touch /glusterfs/test2
touch: cannot touch `/glusterfs/test2': Input/output error

On réactive filer-2 et on vérifie que tout est ok.

filer-2 ~ # ls -l /mnt/
total 4
-rw-r--r-- 1 root root 0 Nov 12 00:38 test

On écrit sur le point de montage depuis le client

client-1 ~ # touch /glusterfs/test3
client-1 ~ # ls -l /glusterfs
total 12
-rw-r--r-- 1 root root 11 Nov 12 00:38 test
-rw-r--r-- 1 root root  0 Nov 12 00:44 test3
  • Simulation de panne sur filer-1

On eteint filer-1

filer-1 / # halt
Broadcast message from root (pts/0) (Sat Nov 12 00:47:43 2011):
The system is going down for system halt NOW!

On effectue un accès depuis client-1

client-1 ~ # ls -l /glusterfs/
ls: cannot access /glusterfs/: Transport endpoint is not connected


Les fichiers sont stockés à 50% sur chacun des filers et les en cas de panne les conséquences sont catastrophique.
Le benchmark devrait être intéressant :)

un commentaire

1. Le lundi 5 décembre 2011, 09:22 par Adolphus

C'est vraiment un bel article je vous remercie beaucoup. 08))