Vous avez des questions sur le Unix, Linux ? On peut y repondre ...
Des sous rubriques Astuces sont visibles uniquement pour les membres...Devenir membre
Vous n'êtes pas identifié.
pour synchroniser des clones:
fichier de conf:
more /usr/local/etc/clone.cfg
#user :passwd:scope:IP:nom:id
#prdlo2:password:0:16.92.23.9:Clone_Test_CFTDP_LUN_137:0100000000000000
adm:password:0:16.92.23.9:CFTDRP_CLONE_LUN 76:0100000000000000
adm:password:0:16.92.23.9:CFTDRP_CLONE_LUN 77:0100000000000000
adm:password:0:16.92.23.9:CFTDRP_CLONE_LUN 78:0100000000000000
adm:password:0:16.92.23.9:CFTDRP_CLONE_LUN 80:0100000000000000
adm:password:0:16.92.23.9:CFTDRP_CLONE_LUN 81:0100000000000000
#! /usr/bin/ksh
CFG=/usr/local/etc/clone.cfg
FLAG=/usr/local/flag
DATE=$(date +'%x,%X' )
mkdir -p $FLAG
if [[ -f ${FLAG}/clone_sync ]]
then
print -u2 "ERREUR: les clones sont deja synchronise"
print -u2 "supprimer ${FLAG}/clone_sync pour forcer le lancement du script $0"
exit 4
fi
echo "${date} " > ${FLAG}/clone_run
rm ${FLAG}/clone_status > /dev/null 2>&1
rm ${FLAG}/clone_fract > /dev/null 2>&1
# boucle pour coherance
cat ${CFG}|grep -v '^#' | while read ligne
do
IFS=:
set $ligne > /dev/null 2> /dev/null
USER="$1"
PASS="$2"
SC="$3"
IP="$4"
NAME="$5"
CID="$6"
PB="$7" #poubelle
#echo "${NAME}|${DATE}||0" >> ${FLAG}/clone_status
done
#
cat ${CFG}|grep -v '^#' | while read ligne
do
IFS=:
set $ligne > /dev/null 2> /dev/null
USER="$1"
PASS="$2"
SC="$3"
IP="$4"
NAME="$5"
CID="$6"
PB="$7" #poubelle
/opt/Navisphere/bin/naviseccli -User "${USER}" -Password "${PASS}" -Scope "${SC}" -h "${IP}" snapview -Listclone -name "${NAME}" -CloneId "${CID}" -CloneState -CloneCondition -PercentSynced > ${FLAG}/log 2>&1
STATUS=`cat ${FLAG}/log | grep "CloneCondition" |cut -d":" -f2 | tr -s ' ' '' ` >> /dev/null
STATUS1=`cat ${FLAG}/log | grep "CloneState" |cut -d":" -f2 | tr -s ' ' '' ` >> /dev/null
if [[ "$STATUS" = " Normal" && "$STATUS1" = " Synchronized" ]]
then
#status: 0 ==> debut de sync
#grep -v "${NAME}" ${FLAG}/clone_status > ${FLAG}/clone_status_$$
#grep "${NAME}" ${FLAG}/clone_status | sed "s/|0$/${DATE}|1/" >> ${FLAG}/clone_status_$$
#mv ${FLAG}/clone_status_$$ ${FLAG}/clone_status
continue
fi
if [[ "$STATUS" = " Normal" && "$STATUS1" = " Consistent" ]]
then
continue
fi
/opt/Navisphere/bin/naviseccli -User "${USER}" -Password "${PASS}" -Scope "${SC}" -h "${IP}" snapview -syncclone -name "${NAME}" -CloneId "${CID}" -o
echo "$NAME , $CID , $DATE"
if [[ "$?" != "0" ]]
then
echo "Erreur de syncclone $NAME , $CID , $DATE" >> ${FLAG}/clone_erreur
print -u2 "Erreur de syncclone $NAME , $CID , $DATE"
exit 2
fi
done
rm ${FLAG}/clone_run 2> /dev/null
Hors ligne
Pour vérifier le statut des clones:
#! /usr/bin/ksh
CFG=/usr/local/etc/clone.cfg
FLAG=/usr/local/flag
DATE=$(date +'%x,%X' )
mkdir -p $FLAG
# analyser CLONE apres CLONE pour connaitre son etat
COUNT=0
suite=0
CPT=0
NBREC=` cat /usr/local/etc/clone.cfg | grep -v '^#' | grep -v '^ *$' |wc -l | sed 's/ //g'`
rm /tmp/status$$.ksh 2> /dev/null
while :
do
echo $( date +'%x,%X'): TEST Synchronized des clones
cat ${CFG}|grep -v '^#' | while read LIG
do
CPT=$CPT
IFS=:
set $LIG
USER="$1"
PASS="$2"
SC="$3"
IP="$4"
NAME="$5"
CID="$6"
PB="$7" #poubelle
echo /opt/Navisphere/bin/naviseccli -User \"${USER}\" -Password \"${PASS}\" -Scope \"${SC}\" -h \"${IP}\" snapview -Listclone -name \"${NAME}\" -CloneId \"${CID}\" -CloneState -CloneCondition -PercentSynced >> /tmp/status$$.ksh
done
sync
sleep 2
CPT=` ksh /tmp/status$$.ksh | tee $FLAG/log | grep -c Synchronized `
echo "##$NBREC##"
echo "##$CPT##"
if [[ "$NBREC" == "$CPT" ]]
then
break
fi
echo "#############################" >> $FLAG/log_sync
date >> $FLAG/log_sync
cat $FLAG/log >> $FLAG/log_sync
echo "#############################" >> $FLAG/log_sync
echo on refait les tests ...
sleep 30
rm /tmp/status$$.ksh 2> /dev/null
done
echo ok
exit 0
rm /tmp/status$$.ksh
Hors ligne
pour fracturer les clones:
#! /usr/bin/ksh
CFG=/usr/local/etc/clone.cfg
REP=/usr/local/bin
FLAG=/usr/local/flag
DATE=$(date +'%x,%X' )
mkdir -p $FLAG
[[ "${1}" == "force" ]] || if ( ${REP}/clone_sync_status.ksh ) > /dev/null
then
echo test ok
fi
cat ${CFG}|grep -v '^#' | while read ligne
#cat ${FLAG}/clone_status |grep -v '^#' | grep '|1 *$' | grep -v '^ *$'| while read LIG
do
IFS=:
set $ligne > /dev/null 2> /dev/null
USER="$1"
PASS="$2"
SC="$3"
IP="$4"
NAME="$5"
CID="$6"
PB="$7" #poubelle
/opt/Navisphere/bin/naviseccli -User "${USER}" -Password "${PASS}" -Scope "${SC}" -h "${IP}" snapview -fractureclone -name "${NAME}" -CloneId "${CID}" -o
done
rm ${FLAG}/clone_sync 2> /dev/null
Hors ligne
script master:
more backup_clone.ksh
#! /usr/bin/ksh
# Commande unix pour s'assurer que les buffers sont bien ecrit sur les FS
echo Attention 6 minutes de pause pour synchro des disques
#sync
#sleep 2
#sync
#sleep 2
#sync
#sleep 2
umount /backup/rep1 2> /dev/null
umount /backup/rep2 2> /dev/null
umount /backup/rep3 2> /dev/null
umount /backup/rep4 2> /dev/null
umount /backup/rep5 2> /dev/null
REP=/usr/local/bin
FLAG=/usr/local/flag
cd $FLAG
rm clone_* 2> /dev/null
${REP}/clone_sync.ksh
# controle du status doit être "Synchronise" "Normal"
echo ${REP}/clone_sync_status.ksh
${REP}/clone_sync_status.ksh
if [[ $? != "0" ]]
then
print -u2 'probleme de controle du status doit être "Synchronise" "Normal"'
exit 3
fi
echo Sync 5 mn
sync
sleep 5
# controle du status doit etre "Synchronise" "Normal"
echo ${REP}/clone_sync_status.ksh
${REP}/clone_sync_status.ksh
if [[ $? != "0" ]]
then
print -u2 'probleme de controle du status doit etre "Synchronise" "Normal"'
exit 3
fi
# Fracture
echo ${REP}/clone_fracture.ksh
${REP}/clone_fracture.ksh
# controle du status doit etre "Fractured"
echo ${REP}/clone_fract_status.ksh
${REP}/clone_fract_status.ksh
# Montage des FS Clone (/backup/oracle/PRD/....)
mount /backup/rep1
mount /backup/rep2
mount /backup/rep3
mount /backup/rep4
mount /backup/rep5
# Demontge des FS clone
Hors ligne