#!/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 ""