Category Archives: Non classé

Déplacer plusieurs LUN vers un autre storage domain ou une autre classe de stockage sans surcharger la baie

Ce script lance une série de migrations de LUN, mais en prenant soin de n’en faire qu’une seule à la fois, pour ne pas surcharger la baie.

Il faudrait certainement ajouter quelques variables à ce script pour une meilleure personnalisation, mais voilà comment il fonctionne :

  •  lecture d’une liste de lun à migrer (liste_${AXIOM}_sd1.txt) vers un storage domain (/Bricks_FC_SD1)
  • migration des LUN
  • lecture d’une liste de lun à migrer (liste_${AXIOM}_sd2.txt) vers un autre storage domain (/Bricks_FC_SD2)
  • migration des LUN

$AXIOM correspondant au nom de l’axiom précisé en argument de la ligne de commande.

#!/bin/bash

# binaire axiomcli
AXIOMCLI="/tools/axiom-cli/axiomcli"

# script de login
LOGIN="/tools/axiom/login_pillar.sh"

# Temps d'attente avant verification fin migration (en s)
SLEEPTIME="600"

[ $# -ne 1 ] && { echo "verifier les params" ; exit; }

# Nom axiom concerne
AXIOM="$1"

set -- $(date +"%Y %m %d %H %M %S")
LOGFILE="${0}_$AXIOM-$1$2$3_$4:$5:$6.log"

echo "Logfile : $LOGFILE"
exec > $LOGFILE 2>&1

echo "Deplacement des luns de $AXIOM"

# Nom des fichiers contenant la liste des LUN a deplacer vers les storages domain FC
FICLISTELUNSD1="/tools/axiom/liste_${AXIOM}_sd1.txt"
FICLISTELUNSD2="/tools/axiom/liste_${AXIOM}_sd2.txt"

##############
EVENTAFTER=$(date --date="2 days ago" +%F)

NOMLUN=""

function check_migration_running () {
        TESTEDLUN=$1
        date +"%F %T"
        echo "check_migration_running $TESTEDLUN"
        echo "Attente $SLEEPTIME..."
        sleep $SLEEPTIME
        ${LOGIN} ${AXIOM}
        ${AXIOMCLI} event_log -list -details -after ${EVENTAFTER} > /tmp/event_log.txt
        ${AXIOMCLI} logout
        grep -A9 "CM_EVT_BG_COPY_COMPLETED" /tmp/event_log.txt | grep -q $TESTEDLUN
        migr_ended=$?
        return $migr_ended
}

function run_new_migration () {
        FICLISTE=$1
        date +"%F %T"
        echo "run_new_migration $FICLISTE"
                 # recup nom lun suivante
        NOMLUN=$(head -1 ${FICLISTE}.tmp)
        # Nom du SD
        if [[ ${FICLISTE} =~ "_sd1" ]]
        then
                SD="/Bricks_FC_SD1"
        else
                SD="/Bricks_FC_SD2"
        fi
        echo "migration $NOMLUN vers $SD"
        # migrer lun
        ${LOGIN} ${AXIOM}
        ${AXIOMCLI} lun -modify -lun $NOMLUN -storageDomain $SD -storageClass fcHd -copyPriority =auto
        ${AXIOMCLI} logout

        # supprimer nom lun de la liste
        echo "$NOMLUN supprimé de ${FICLISTE}.tmp"
        sed 1d ${FICLISTE}.tmp > ${FICLISTE}.tmp2
        mv ${FICLISTE}.tmp2 ${FICLISTE}.tmp
}

# Creation fichier temporaire liste des LUN a migrer
cat ${FICLISTELUNSD1} > ${FICLISTELUNSD1}.tmp
cat ${FICLISTELUNSD2} > ${FICLISTELUNSD2}.tmp

# Debut du process
run_new_migration ${FICLISTELUNSD1}

# tant que fichier non vide, migration vers SD1
while [[ -s ${FICLISTELUNSD1}.tmp ]]
do
        # verifier que la migration de la lun en cours est terminee
        # si oui lancer une nouvelle migration
        check_migration_running $NOMLUN && run_new_migration ${FICLISTELUNSD1}
done

# Attente avant de lancer la suite des migrations
sleep $SLEEPTIME
sleep $SLEEPTIME

run_new_migration ${FICLISTELUNSD2}
# tant que fichier non vide, migration vers SD2
while [[ -s ${FICLISTELUNSD2}.tmp ]]
do
        # verifier que la migration de la lun en cours est terminee
        # si oui lancer une nouvelle migration
        check_migration_running $NOMLUN && run_new_migration ${FICLISTELUNSD2}
done

D’autres scripts sur « administration en ligne de commande d’une baie Pillar Axiom«