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 :)