Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
formation:anfbigdata [2016/12/14 16:50] equemene [Gestion du tiering] |
formation:anfbigdata [2016/12/15 18:59] (Version actuelle) equemene |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Travaux pratiques GlusterFS ====== | + | ====== Travaux pratiques GlusterFS pour ANF Bigdata ====== |
- | GlusterFS ou la quête de la simplicité | + | Support de Travaux pratiques dans le cadre de [[https://indico.mathrice.fr/event/5/|Des données au BigData : exploitez le stockage distribué]] |
+ | ===== CQQCOQP (Comment ? Quoi ? Qui, Combien ? Où ? Quand ? Pourquoi ?) ===== | ||
+ | |||
+ | * **Pourquoi ?** Survoler les principales fonctionnalités de GlusterFS et se faire sa propre idée | ||
+ | * **Quoi ?** Tester au travers d'exemples simples en appliquant le modèles STNPPNFP | ||
+ | * **Quand ?** Jeudi 15 décembre de 9h à 12h | ||
+ | * **Combien ?** 12GB d'espace disque, 3GB de RAM, 5 VM | ||
+ | * **Où ?** Sur une machine unique, dans en environnement VirtualBox | ||
+ | * **Qui ?** Pour des admin'sys soucieux d'expérimenter rapidement | ||
+ | * **Comment ?** En appliquant une série de commandes simples au travers d'un terminal | ||
===== Objectif de la séance ===== | ===== Objectif de la séance ===== | ||
- | C'est de donner un aperçu des différentes fonctionnalités de GlusterFS dans un environnement, en insistant sur sa simplicité d'installation, de configuration, d'administration. | + | C'est de donner un aperçu des différentes fonctionnalités de GlusterFS dans un environnement propre, en insistant sur sa simplicité d'installation, de configuration, d'administration. |
===== Préparation de la séance ===== | ===== Préparation de la séance ===== | ||
Ligne 591: | Ligne 600: | ||
</code> | </code> | ||
- | Cette commande prend autour de 50 secondes sur une machine lente. | + | Cette commande prend un peu moins d'une minute sur une machine lente. |
Lançons maintenant une lecture tout aussi parallèle | Lançons maintenant une lecture tout aussi parallèle | ||
Ligne 598: | Ligne 607: | ||
</code> | </code> | ||
- | Cette commande prend autour de 12 secondes. | + | Cette commande ne prend quelques quelques secondes. |
Il est possible de voir comment sont distribués les fichiers sur les différents serveurs : | Il est possible de voir comment sont distribués les fichiers sur les différents serveurs : | ||
Ligne 672: | Ligne 681: | ||
<code> | <code> | ||
ssh root@peer1 gluster volume rebalance MyGlusterLinear status | ssh root@peer1 gluster volume rebalance MyGlusterLinear status | ||
+ | </code> | ||
+ | Nous avons une sortie comparable à ce qui suit : | ||
+ | <code> | ||
Node Rebalanced-files size scanned failures skipped status run time in h:m:s | Node Rebalanced-files size scanned failures skipped status run time in h:m:s | ||
--------- ----------- ----------- ----------- ----------- ----------- ------------ -------------- | --------- ----------- ----------- ----------- ----------- ----------- ------------ -------------- | ||
Ligne 685: | Ligne 697: | ||
</code> | </code> | ||
- | </code> | + | <code> |
- | root@peer2: 494 | + | root@peer2: 347 |
root@peer1: 335 | root@peer1: 335 | ||
- | root@peer4: ls: impossible d'accéder à /MyGlusterLinear/File.*: Aucun fichier ou dossier de ce type | ||
root@peer4: 0 | root@peer4: 0 | ||
+ | root@peer4: ls: impossible d'accéder à /MyGlusterLinear/File.*: Aucun fichier ou dossier de ce type | ||
root@peer3: 318 | root@peer3: 318 | ||
</code> | </code> | ||
Ligne 695: | Ligne 707: | ||
La redistribution n'est pas parfaite, mais elle reste correcte ! | La redistribution n'est pas parfaite, mais elle reste correcte ! | ||
- | Replaçons maintenant la brique issue de **peer2** par celle disponible de **peer4** : | + | Supprimons maintenant la brique issue de **peer1** à partir de **peer2** : |
<code> | <code> | ||
- | ssh root@peer2 gluster volume replace-brick MyGlusterLinear peer1:/MyGlusterLinear peer4:/MyGlusterLinear | + | ssh root@peer2 gluster volume remove-brick MyGlusterLinear peer1:/MyGlusterLinear start |
</code> | </code> | ||
+ | Le message suivant indique que la procédure a démarré | ||
<code> | <code> | ||
- | volume replace-brick: success: replace-brick commit force operation successful | + | volume remove-brick start: success |
+ | ID: 92c17fc7-9980-4c73-83fd-fd011a8be530 | ||
+ | </code> | ||
+ | |||
+ | Contrôlons la progression de la migration des données issues de la demande de suppression : | ||
+ | <code> | ||
+ | ssh root@peer2 gluster volume remove-brick MyGlusterLinear peer1:/MyGlusterLinear status | ||
+ | </code> | ||
+ | |||
+ | Une fois terminé, nous avons pour la même commande précédente : | ||
+ | <code> | ||
+ | Node Rebalanced-files size scanned failures skipped status run time in h:m:s | ||
+ | --------- ----------- ----------- ----------- ----------- ----------- ------------ -------------- | ||
+ | peer1.gluster.zone 335 5.2KB 335 0 0 completed 0:0:13 | ||
+ | </code> | ||
+ | |||
+ | Relançons la commande pour voir la distribution sur les différents serveurs | ||
+ | <code> | ||
+ | clush -w root@peer[1-4] 'ls /MyGlusterLinear/File.* | wc -l' | ||
+ | </code> | ||
+ | Nous obtenons : | ||
+ | <code> | ||
+ | root@peer1: 0 | ||
+ | root@peer1: ls: impossible d'accéder à /MyGlusterLinear/File.*: Aucun fichier ou dossier de ce type | ||
+ | root@peer4: 0 | ||
+ | root@peer4: ls: impossible d'accéder à /MyGlusterLinear/File.*: Aucun fichier ou dossier de ce type | ||
+ | root@peer2: 347 | ||
+ | root@peer3: 653 | ||
+ | </code> | ||
+ | Les fichiers ont bien disparu de **peer1** et se sont retrouvés sur **peer3** ! | ||
+ | |||
+ | Validons la suppression | ||
+ | <code> | ||
+ | ssh root@peer2 'echo y | gluster volume remove-brick MyGlusterLinear peer1:/MyGlusterLinear commit' | ||
+ | </code> | ||
+ | |||
+ | Un petit message nous invite à la prudence, pour, au pire, restaurer les données : | ||
+ | <code> | ||
+ | Removing brick(s) can result in data loss. Do you want to Continue? (y/n) volume remove-brick commit: success | ||
+ | Check the removed bricks to ensure all files are migrated. | ||
+ | If files with data are found on the brick path, copy them via a gluster mount point before re-purposing the removed brick. | ||
</code> | </code> | ||
Ligne 712: | Ligne 765: | ||
Status: Started | Status: Started | ||
Snapshot Count: 0 | Snapshot Count: 0 | ||
- | Number of Bricks: 3 | + | Number of Bricks: 2 |
Transport-type: tcp | Transport-type: tcp | ||
Bricks: | Bricks: | ||
Brick1: peer2:/MyGlusterLinear | Brick1: peer2:/MyGlusterLinear | ||
- | Brick2: peer4:/MyGlusterLinear | ||
Brick3: peer3:/MyGlusterLinear | Brick3: peer3:/MyGlusterLinear | ||
Options Reconfigured: | Options Reconfigured: | ||
Ligne 723: | Ligne 775: | ||
nfs.disable: on | nfs.disable: on | ||
</code> | </code> | ||
- | |||
- | Si nous regardons la répartitions des fichiers avec | ||
- | <code> | ||
- | clush -w root@peer[1-4] 'ls /MyGlusterLinear/File.* | wc -l' | ||
- | </code> | ||
- | Nous avons : | ||
- | <code> | ||
- | root@peer3: 318 | ||
- | root@peer1: 347 | ||
- | root@peer2: 335 | ||
- | root@peer4: 347 | ||
- | </code> | ||
- | Nous voyons que la "charge" de **peer1** a été transféré sur **peer4**. Cependant, en regardant la signature des fichiers, nous constatons qu'ils sont vides sur **peer1**. | ||
- | |||
Effaçons ces fichiers et démontons le volume monté sur le client : | Effaçons ces fichiers et démontons le volume monté sur le client : | ||
Ligne 743: | Ligne 781: | ||
sudo umount /media/MyGlusterLinear | sudo umount /media/MyGlusterLinear | ||
</code> | </code> | ||
+ | |||
+ | <note important>Il ne faut utiliser la commande ''replace-brick'' **uniquement** dans le cadre d'un volume ''replica'' !</note> | ||
===== Création d’un volume de type ''striped'' (équivalent RAID0) ===== | ===== Création d’un volume de type ''striped'' (équivalent RAID0) ===== | ||
Ligne 1268: | Ligne 1308: | ||
</code> | </code> | ||
+ | Montage du volume sur le client | ||
+ | <code> | ||
+ | sudo mkdir /media/MyGlusterReplica | ||
+ | sudo mount -t glusterfs -o noatime peer1:MyGlusterReplica /media/MyGlusterReplica | ||
+ | sudo chmod 777 /media/MyGlusterReplica | ||
+ | sudo chmod o+t /media/MyGlusterReplica | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | seq -w 1000 | /usr/bin/time xargs -P 1000 -I '{}' bash -c "echo Hello File '{}' > /media/MyGlusterReplica/File.'{}'" | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | clush -w root@peer[1-4] 'ls /MyGlusterReplica/File.* | wc -l' | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | root@peer1: 1000 | ||
+ | root@peer3: 1000 | ||
+ | root@peer4: 1000 | ||
+ | root@peer2: 1000 | ||
+ | </code> | ||
Résilience des disques | Résilience des disques | ||