User Tools

Site Tools


aix:script_mirrorcheck
[root@nim]/root/scripts/bin# cat check_mirror.sh
#!/usr/bin/ksh93
#@(#) Check Mirror compliance
# if one LV has miltiple copies, it will check all VG
# if it has the same number of copies, except for "test"
# v1.1 Manu  09-2016
# Add a file check_mirror.cfg with VG to exclude if needed

dir=`dirname $0`
. $dir/.env

exclude_hosts="test|lab"

if [ -e $configfile ]
then
  excludevg=$(cat $configfile | tr '\n' '|' | rev | cut -c2- | rev)
else
  excludevg="None"
fi

for vg in $(lsvg -o)
do
  nb=$(lsvg $vg | grep STALE | rev | cut -d' ' -f1)
  if [[ "$nb" != "0" ]]
  then
    echo "VG $vg $nb PPs stale"
  fi
done

copies=$(lsvg -o | grep -v "caavg_private" | egrep -v "$excludevg" | xargs lsvg -l | awk '{print $2,$3,$4}' | egrep "jfs|boot|paging" | while read i j k
do
  echo "scale=0;$k/$j" | bc
done | sort -u | wc -l | awk '{print $1}')

if [ "$copies" -gt "1" ]
then
  echo $(hostname) | egrep -q "${exclude_hosts}"
  if [ "$?" -ne 0 ]
  then
    echo "Mirroring error on host $(hostname -s)"
    if [ "$1" == "-v" ]
    then
      for vg in $(lsvg -o | grep -v "caavg_private")
      do
        badvg=0
        lsvg -l $vg | awk '{print $2,$3,$4}' | egrep "jfs|boot|paging" | while read i j k
        do
          copy=$(echo "scale=0;$k/$j" | bc)
          if [ "$copies" != "$copy" ]
          then
            badvg=1
          fi
        done
        if [ "$badvg" == "1" ]
        then
          echo bad VG: $vg
        fi
      done
    fi
  fi
  exit 1
else
  exit 0
fi
aix/script_mirrorcheck.txt · Last modified: 2021/01/01 21:21 (external edit)