135 lines
3.7 KiB
Bash
135 lines
3.7 KiB
Bash
#!/bin/bash
|
|
|
|
LOG_FILE="/var/log/glusterfs-check.log"
|
|
STEPS=7 # Nombre total d'étapes dans le script
|
|
|
|
# Supprimer les anciens logs
|
|
if [ -f "$LOG_FILE" ]; then
|
|
rm "$LOG_FILE"
|
|
fi
|
|
|
|
# Fonction de journalisation
|
|
log() {
|
|
echo "$(date) : $1" >> $LOG_FILE
|
|
}
|
|
|
|
# Fonction de progression
|
|
progress() {
|
|
local step=$1
|
|
local total=$2
|
|
local percent=$(( 100 * step / total ))
|
|
echo -ne "Progress: [${percent}%]...\r"
|
|
}
|
|
|
|
step=1
|
|
|
|
log "Script de vérification GlusterFS démarré."
|
|
progress $step $STEPS
|
|
|
|
# Vérification de l'état du service glusterd
|
|
if ! systemctl is-active --quiet glusterd; then
|
|
log "Le service glusterd n'est pas actif. Tentative de démarrage."
|
|
sudo systemctl start glusterd
|
|
if ! systemctl is-active --quiet glusterd; then
|
|
log "Échec du démarrage du service glusterd."
|
|
exit 1
|
|
else
|
|
log "Service glusterd démarré avec succès."
|
|
fi
|
|
else
|
|
log "Le service glusterd est déjà actif."
|
|
fi
|
|
|
|
step=$((step + 1))
|
|
progress $step $STEPS
|
|
|
|
# Vérification de l'état des pairs GlusterFS
|
|
peers_status=$(sudo gluster peer status | grep "Peer in Cluster" | wc -l)
|
|
|
|
if [ "$peers_status" -ne 2 ]; then
|
|
log "Tous les pairs ne sont pas en ligne. Tentative de reconnexion des pairs."
|
|
|
|
# Ajout des adresses IP de vos pairs
|
|
peers=("192.168.1.50" "192.168.1.80" "192.168.1.110")
|
|
|
|
for peer in "${peers[@]}"; do
|
|
sudo gluster peer probe $peer
|
|
done
|
|
|
|
# Revérification de l'état des pairs
|
|
peers_status=$(sudo gluster peer status | grep "Peer in Cluster" | wc -l)
|
|
|
|
if [ "$peers_status" -ne 2]; then
|
|
log "Échec de la reconnexion de tous les pairs."
|
|
exit 1
|
|
else
|
|
log "Tous les pairs sont maintenant en ligne."
|
|
fi
|
|
else
|
|
log "Tous les pairs sont en ligne."
|
|
fi
|
|
|
|
step=$((step + 1))
|
|
progress $step $STEPS
|
|
|
|
# Vérification de l'état du volume
|
|
volume_status=$(sudo gluster volume info volume_applicatif | grep "Status: Started" | wc -l)
|
|
|
|
if [ "$volume_status" -ne 1]; then
|
|
log "Le volume volume_applicatif n'est pas démarré. Tentative de démarrage."
|
|
sudo gluster volume start volume_applicatif
|
|
if [ "$?" -ne 0 ]; then
|
|
log "Échec du démarrage du volume volume_applicatif."
|
|
exit 1
|
|
else
|
|
log "Volume volume_applicatif démarré avec succès."
|
|
fi
|
|
else
|
|
log "Le volume volume_applicatif est déjà démarré."
|
|
fi
|
|
|
|
step=$((step + 1))
|
|
progress $step $STEPS
|
|
|
|
# Vérification des briques du volume
|
|
brick_status=$(sudo gluster volume status volume_applicatif detail | grep "N/A" | wc -l)
|
|
|
|
if [ "$brick_status" -ne 0 ]; then
|
|
log "Certaines briques du volume volume_applicatif ne sont pas en ligne."
|
|
# Tentative de remonter les briques
|
|
sudo gluster volume heal volume_applicatif
|
|
fi
|
|
|
|
step=$((step + 1))
|
|
progress $step $STEPS
|
|
|
|
# Vérification du montage des volumes
|
|
if mountpoint -q /mnt/montage_applicatif; then
|
|
log "Le volume GlusterFS est déjà monté."
|
|
else
|
|
log "Tentative de montage du volume GlusterFS."
|
|
sudo mount -t glusterfs 192.168.1.50:/volume_applicatif /mnt/montage_applicatif
|
|
if [ "$?" -ne 0 ]; then
|
|
log "Échec du montage des volumes GlusterFS. Tentative de diagnostic."
|
|
|
|
# Diagnostic supplémentaire
|
|
mount_output=$(sudo mount -t glusterfs 192.168.1.50:/volume_applicatif /mnt/montage_applicatif 2>&1)
|
|
log "Sortie de la commande de montage : $mount_output"
|
|
|
|
# Vérification de l'accès au volume
|
|
glusterfs_output=$(sudo gluster volume status volume_applicatif 2>&1)
|
|
log "Statut du volume GlusterFS : $glusterfs_output"
|
|
|
|
exit 1
|
|
else
|
|
log "Volumes GlusterFS montés avec succès."
|
|
fi
|
|
fi
|
|
|
|
step=$((step + 1))
|
|
progress $step $STEPS
|
|
|
|
log "Script de vérification GlusterFS terminé avec succès."
|
|
progress $STEPS $STEPS
|
|
echo ""
|