« LINUX:Glusterfs - Clients » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 205 : | Ligne 205 : | ||
fichier:close() | fichier:close() | ||
---- | ---- | ||
====Script en Bash==== | |||
Le script Bash suivant va utiliser le script Lua décrit ci-dessus. On le nomme "checkgluster.boucle.bat". Il est placé dans le répertoire "/manager/glusterfs". | |||
Voici son contenu: | |||
---- | |||
#!/usr/bin/bash | |||
CHEMIN="/manager/glusterfs" | |||
cd $CHEMIN | |||
# on peut choisir de traiter les entrées du fichier /etc/fstab ou son propre fichier fstab | |||
# cas type "glusterfs" dans //manager/glusterfs/fstab | |||
FICHIER="$CHEMIN/fstab" | |||
# cas du type "glusterfs" dans /etc/fstab | |||
#FICHIER="/etc/fstab" | |||
# bouclage infini !!!! | |||
<span style="color:red">for (( ; ; )) | |||
do</span> | |||
# affichage de la date | |||
DT=`/usr/bin/date` | |||
echo $DT > $CHEMIN/mnt.log | |||
# récupération des serveurs actifs du cluster | |||
/usr/bin/lua gluster.lua | |||
TAILLE=`/usr/bin/wc -c gluster.txt | /usr/bin/awk '{printf("%s",$1)}' ` | |||
# démontage du volume si le serveur distante est inactive | |||
while IFS= read -r glm | |||
do | |||
IFS=$' :\t' read -r -a arr <<< "$glm" | |||
if [ "${arr[3]}" == "glusterfs" ] | |||
then | |||
MACHINEM=`/usr/bin/mount | grep "${arr[2]}" | /usr/bin/awk -F ":" '{printf("%s",$1)}' ` | |||
if [ "$MACHINEM" != "" ] | |||
then | |||
MACHINE=`/usr/bin/grep $MACHINEM gluster.txt` | |||
if [ "$MACHINE" == "" ] | |||
then | |||
/usr/bin/umount ${arr[2]} | |||
echo "Démontage de ${arr[2]} - La machine ${arr[0]} est inactive" >> $CHEMIN/mnt.log | |||
fi | |||
fi | |||
fi | |||
done <<< "$(/usr/bin/sed '/^#/ d' < $FICHIER | /usr/bin/grep 'glusterfs')" | |||
# traitement s'il y a des serveurs actifs dans le cluster | |||
if [ "$TAILLE" != "0" ] | |||
then | |||
# démontage des volumes si la ligne commence par "##" | |||
while IFS= read -r glm | |||
do | |||
IFS=$' \t' read -r -a arr <<< "$glm" | |||
if [ "${arr[2]}" == "glusterfs" ] | |||
then | |||
if /usr/bin/mountpoint -q "${arr[1]}" | |||
then | |||
/usr/bin/umount ${arr[1]} | |||
echo "${arr[1]} démonté" >> $CHEMIN/mnt.log | |||
else | |||
echo "${arr[1]} est déjà démonté" >> $CHEMIN/mnt.log | |||
fi | |||
fi | |||
done <<< "$(/usr/bin/grep '^##' $FICHIER | grep 'glusterfs' | /usr/bin/sed 's/#//g')" | |||
# montage des volumes non montés | |||
while IFS= read -r glm | |||
do | |||
IFS=$' :\t' read -r -a arr <<< "$glm" | |||
if [ "${arr[3]}" == "glusterfs" ] | |||
then | |||
if /usr/bin/mountpoint -q "${arr[2]}" | |||
then | |||
echo "${arr[2]} est déjà monté" >> $CHEMIN/mnt.log | |||
else | |||
MACHINE=`/usr/bin/grep ${arr[0]} gluster.txt` | |||
if [ "$MACHINE" == "" ] | |||
then | |||
MACHINE=`/usr/bin/head -n 1 gluster.txt` | |||
fi | |||
/usr/bin/mount -t "${arr[3]}" -o "${arr[4]}" "$MACHINE:${arr[1]}" "${arr[2]}" | |||
echo "${arr[2]} est monté sur la machine $MACHINE" >> $CHEMIN/mnt.log | |||
fi | |||
fi | |||
done <<< "$(/usr/bin/sed '/^#/ d' < $FICHIER | /usr/bin/grep 'glusterfs')" | |||
# état des montages | |||
echo "=====================================================================" >> $CHEMIN/mnt.log | |||
/usr/bin/df -h >> $CHEMIN/mnt.log | |||
fi | |||
# pause de 60 secondes avant le passage suivant | |||
<span style="color:red">sleep 60 | |||
done</span> | |||
exit 0 | |||
---- | |||