diff options
author | Suren A. Chilingaryan <csa@suren.me> | 2019-10-06 04:43:13 +0200 |
---|---|---|
committer | Suren A. Chilingaryan <csa@suren.me> | 2019-10-06 04:43:13 +0200 |
commit | acd54ba601e34dafac063f94054bb80348e73dcd (patch) | |
tree | bb904bbf2d58e2a97d2649193c29d31f174ef8e1 /scripts/gluster.sh | |
parent | 55ae94fdb6a6508f30c0eb0f5dfe95a11ac9682f (diff) | |
download | ands-acd54ba601e34dafac063f94054bb80348e73dcd.tar.gz ands-acd54ba601e34dafac063f94054bb80348e73dcd.tar.bz2 ands-acd54ba601e34dafac063f94054bb80348e73dcd.tar.xz ands-acd54ba601e34dafac063f94054bb80348e73dcd.zip |
Script to fullhy clean-up outdated rc
Diffstat (limited to 'scripts/gluster.sh')
-rwxr-xr-x | scripts/gluster.sh | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/scripts/gluster.sh b/scripts/gluster.sh deleted file mode 100755 index a3ff186..0000000 --- a/scripts/gluster.sh +++ /dev/null @@ -1,177 +0,0 @@ -#! /bin/bash - -. opts.sh - -[ $? -ne 0 -o -z "$gpod" ] && { echo "No storage pods are running..." ; exit 1 ; } -[ -z "$1" ] && { echo "Usage: $0 <info|heal|migrate> <vol|all> [src] [dst]" ; exit 1 ; } -action=$1 -shift - - -function info { - vol=$1 - - status=$(gluster volume info "$vol" | grep -P 'Status' | awk '{ print $2 }' | tr -d '\r\n') - bricks=$(gluster volume info "$vol" | grep -P 'Number of Bricks' | awk '{ print $NF }' | tr -d '\r\n') - avail=$(gluster volume status "$vol" detail | grep Brick | wc -l) - online=$(gluster volume status "$vol" detail | grep Online | grep Y | wc -l) - - echo "Volume $vol: $status (Bricks: $bricks, Available: $avail, Online: $online)" -} - -function heal { - vol=$1 - - distributed=0 - gluster volume info "$vol" | grep "Type:" | grep -i "Distribute" &> /dev/null - [ $? -eq 0 ] && distributed=1 - - echo "Healing volume $vol" - echo "-------------------" - gluster volume heal "$vol" full - gluster volume heal "$vol" info - - if [ $distributed -eq 1 ]; then - echo "Rebalancing distributed volume $vol" - gluster volume rebalance "$vol" fix-layout start - fi - - - gluster volume status "$vol" -} - -function migrate { - vol=$1 - src=$2 - dst=$3 - - [ -z "$src" -o -z "$dst" ] && { echo "Source and destination servers are required" ; exit 1 ; } - - src_brick=$(gluster volume info $vol | grep -P '^Brick\d+:' | awk '{ print $2 }' | grep -P "^$src" | tr -d '\r\n' ) - dst_brick=${src_brick/$src/$dst} - - [ -z "$src_brick" -o -z "$dst_brick" ] && return 0 - - echo "Volume $vol: migrating failed brick" - echo " from $src_brick" - echo " to $dst_brick" - echo "Press enter to continue" - read - [ $? -ne 0 ] && exit - - gluster volume replace-brick $vol "$src_brick" "$dst_brick" commit force - heal $vol -} - - -function transport { - vol=$1 - transport=${2:-tcp,rdma} - echo "Changing $vol to transport $transport" - gluster volume stop "$vol" - gluster volume set "$vol" config.transport "$transport" - gluster volume start "$vol" -} - - - -function restart { - vol=$1 - - echo $vol - bricks=$(gluster volume info "$vol" | grep -P 'Number of Bricks' | awk '{ print $NF }' | tr -d '\r\n') - online=$(gluster volume status "$vol" detail | grep Online | grep Y | wc -l) - - if [ "$bricks" -ne "$online" ]; then - echo "Restarting $vol ($online bricks of $bricks are/is online)" - gluster --mode=script volume stop "$vol" - gluster --mode=script volume start "$vol" - fi -} - -function delete_failed { - vol=$1 - - bricks=$(gluster volume info "$vol" | grep -P 'Number of Bricks' | awk '{ print $NF }' | tr -d '\r\n') - online=$(gluster volume status "$vol" detail | grep Online | grep Y | wc -l) - - if [ "$online" == "0" ]; then - echo "Deleting $vol ($online bricks of $bricks are/is online)" -# gluster --mode=script volume stop "$vol" - gluster --mode=script volume delete "$vol" - fi -} - - -function lvm_clean { - used_bricks=`gluster volume info | grep "/brick_" | sed -r -e 's/.*brick_(.*)\/brick/\1/'` - - for ip in $(seq 1 3); do - echo "Node $ip" - echo "========" - lvm_bricks=`node $ip lvscan | grep brick | sed -r -e 's/.*brick_([0-9a-z]*)[^0-9a-z].*/\1/'` - - diff=$(echo $used_bricks $lvm_bricks | tr -d '\r' | tr ' ' '\n' | sort | uniq -u) - remove=$(echo "$diff $lvm_bricks" | tr -d '\r' | tr ' ' '\n' | sort | uniq -d) - - for id in $remove; do - echo "Removing ---------------------------------------------" - node $ip lvs -o name,time,size -S "'name =~ $id'" - echo "Removing ---------------------------------------------" - node $ip lvremove -y -S "'name =~ $id'" - done - done - - -} - -function lvm_remove_today { - for ip in $(seq 1 3); do - node $ip hostname -#lvdisplay -o name,time -S 'time since "2018-03-16"' - done -} - - -function heketi_cmd { - heketi "$@" -} - -function heketi_clean { - heketi_vols=`heketi topology info | grep "Name: vol_" | sed -r -e 's/.*(vol_[0-9a-z]+)\s*$/\1/'` - gluster_vols=`gluster volume info | grep "Name: vol_" | sed -r -e 's/.*(vol_[0-9a-z]+)\s*$/\1/'` - echo $heketi_vols - - diff=$(echo $gluster_vols $heketi_vols | tr -d '\r' | tr ' ' '\n' | sort | uniq -u) - remove=$(echo "$diff $gluster_vols" | tr -d '\r' | tr ' ' '\n' | sort | uniq -d) - - for vol in $remove; do - echo "Stopping and deleting volume $vol" - echo "---------------------------------" - gluster --mode=script volume stop "$vol" - gluster --mode=script volume delete "$vol" - done -} - -if [[ "$action" =~ ^heketi ]]; then - eval "$action" "$@" -elif [[ "$action" =~ ^lvm ]]; then - eval "$action" "$@" -elif [[ -z "$1" || "$1" =~ ^all ]]; then - all=0 - [ "$1" == "all_heketi" ] && all=1 - [[ "$1" =~ ^all ]] && shift - - vols=$(gluster volume info | grep -P '^Volume Name' | awk '{ print $NF }' | tr '\r\n' ' ') - for vol in $vols; do - if [ $all -eq 0 ]; then - [[ "$vol" =~ [0-9] ]] && continue - [[ "$vol" =~ ^vol_ ]] && continue - [[ "$vol" =~ ^heketi ]] && continue - fi - - eval "$action" "$vol" "$@" - done -else - eval "$action" "$@" -fi |