Category Archives: Pillar Axiom

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« 

Générer une geomap

Toujours dans la série »administration en ligne de commande d’une baie Pillar Axiom », ce script génère les geomaps de vos axioms, très utile pour vérifier l’étalement des LUN, ou voir les LUN impactées par un problème technique.

#!/bin/bash

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

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

DESTDIR="/tmp"

AXIOMLIST="axiom1"

for axiom in $AXIOMLIST
do
    set -- $(date +"%Y %m %d %H %M %S")
    GEOMAPFILE="geomap_${axiom}-$1$2$3_$4$5$6.csv"
    echo "#######################################"
    echo "Creation de la geomap de $axiom dans $DESTDIR"
    cd $(dirname $AXIOMCLI)
    ${LOGIN} $axiom
    $AXIOMCLI storage_allocation -list -details -lun -csv $DESTDIR/$GEOMAPFILE
    $AXIOMCLI logout
done

Création/présentation d’une nouvelle LUN sur Axiom

Dans la série de scripts d’administration en ligne de commande d’une baie Pillar Axiom, celui-ci crée puis présente une nouvelle LUN à un groupe d’hôte.

#!/bin/bash

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

#########################
LUNNAME="LUN001"
SIZE="550"
SLCU="/SLAMMER-01/1"
QOS="medium"
VG="/VG1"
LUNNUMBER="125"
STORAGECLASS="sataHd"
STORAGEDOM="/default"
HOSTGROUP="/Cluster1"
##########################
echo "#######################################"
echo "Creation de $LUNNAME de $SIZE Go, QoS $QOS, dans le VG $VG sur slammer $SLCU"
cd $(dirname $AXIOMCLI)
$AXIOMCLI lun -add -name $LUNNAME -storageDomain $STORAGEDOM -addressableCapacity $SIZE -allocatedCapacity $SIZE -priority $QOS -redundancy 1 -accessBias mixed -ioBias mixed 
    -slammerNode $SLCU -unmapped -volumeGroup $VG -cloneCapacity 0 
    -fibreChannelAccess -noIscsiAccess -storageClass $STORAGECLASS  -active -copyPriority auto -outputformat text

echo "Mapping de ${VG}/${LUNNAME} sur $HOSTGROUP avec lun num $LUNNUMBER"
$AXIOMCLI hostmap --add --lun ${VG}/${LUNNAME} -lunNumber ${LUNNUMBER} -hostGroup $HOSTGROUP

Pillar Axiom – Administration en ligne de commande

Voici une petite série de scripts bash, plutôt basiques, permettant de se passer de la GUI pour les tâches répétitives. Ils ont été testés sur Pillar Axiom 600. L’Axiom Command Line Interface (CLI) doit être téléchargée sur l’interface web du Pilot.