Commit d11eaeca authored by Vitaly Lipatov's avatar Vitaly Lipatov

improve gluster scripts

parent 7ec0f82a
#!/bin/sh #!/bin/sh
# TODO: use brick hosts # TODO: use brick hosts
for i in multi cellar space1 lav lin-test ; do for i in server multi cellar space1 lav lin-test ; do
#for i in nun windsor virtualbox euclid asu snail ; do
#for i in virtualbox asu nun ; do #for i in virtualbox asu nun ; do
echo echo
echo "Connect to $i..." echo "Connect to $i..."
......
...@@ -55,7 +55,7 @@ opbrick() ...@@ -55,7 +55,7 @@ opbrick()
sshopbrick() sshopbrick()
{ {
echo "remove execute: ssh $host $1 $path/$2" >>$0.log echo "remote execute: ssh $host $1 $path/$2" >>$0.log
ssh $host $1 $path/$2 ssh $host $1 $path/$2
} }
...@@ -295,6 +295,8 @@ SELFILE= ...@@ -295,6 +295,8 @@ SELFILE=
SELHOST= SELHOST=
SELPATH= SELPATH=
ISDIR= ISDIR=
[ -n "$FORCEDIR" ] && ISDIR=1
if [ "$restore" = "--restore" ] ; then if [ "$restore" = "--restore" ] ; then
COUNT=1 COUNT=1
FILNUM=0 FILNUM=0
...@@ -355,6 +357,13 @@ if [ "$restore" = "--restore" ] ; then ...@@ -355,6 +357,13 @@ if [ "$restore" = "--restore" ] ; then
for i in $LISTBRICKS ; do for i in $LISTBRICKS ; do
set_host_path "$i" set_host_path "$i"
if [ -n "$ISDIR" ] ; then
RMCMD="rmdir -v"
else
RMCMD="rm -fv"
fi
RMFCMD="rm -fv"
# Удаляем всё, кроме OLDFILE # Удаляем всё, кроме OLDFILE
if [ ! "$OLDFILE" = "$WORKDIR/$host-$COUNT" ] ; then if [ ! "$OLDFILE" = "$WORKDIR/$host-$COUNT" ] ; then
# FIXME: Нельзя удалять, если OLDFILE на неактивном томе # FIXME: Нельзя удалять, если OLDFILE на неактивном томе
...@@ -364,18 +373,18 @@ if [ "$restore" = "--restore" ] ; then ...@@ -364,18 +373,18 @@ if [ "$restore" = "--restore" ] ; then
gfid=$(get_gfid "$file") gfid=$(get_gfid "$file")
if [ "$gfid" != "$GENGFID" ] ; then if [ "$gfid" != "$GENGFID" ] ; then
echo "gfid mismatch!!!! ($gfid and $GENGFID)" echo "gfid mismatch!!!! ($gfid and $GENGFID)"
[ -n "$GENGFID" ] && opbrick "rm -fv" "$(get_pgf_name $GENGFID)" [ -n "$GENGFID" ] && opbrick "$RMCMD" "$(get_pgf_name $GENGFID)"
[ -n "$GENGFID" ] && opbrick "$RMFCMD" "$(get_pgf_name $GENGFID)"
fi fi
[ -n "$gfid" ] && opbrick "rm -fv" "$(get_pgf_name $gfid)" [ -n "$gfid" ] && opbrick "$RMCMD" "$(get_pgf_name $gfid)"
[ -n "$gfid" ] && opbrick "$RMFCMD" "$(get_pgf_name $gfid)"
else else
[ -n "$GENGFID" ] && opbrick "rm -fv" "$(get_pgf_name $GENGFID)" [ -n "$GENGFID" ] && opbrick "$RMCMD" "$(get_pgf_name $GENGFID)"
[ -n "$GENGFID" ] && opbrick "$RMFCMD" "$(get_pgf_name $GENGFID)"
fi fi
if [ -n "$ISDIR" ] ; then opbrick "$RMCMD" "$file"
opbrick "rmdir -v" "$file" opbrick "$RMFCMD" "$file"
else
opbrick "rm -fv" "$file"
fi
echo "$path/$file ($host)" >>grf.removed.list echo "$path/$file ($host)" >>grf.removed.list
fi fi
......
./grf --restore "$@" sh -x ./grf --restore "$@"
...@@ -18,6 +18,8 @@ for GVOLUME in $LISTVOLUME ; do ...@@ -18,6 +18,8 @@ for GVOLUME in $LISTVOLUME ; do
done done
} }
#f
for GVOLUME in $LISTVOLUME ; do for GVOLUME in $LISTVOLUME ; do
./grflog $GVOLUME ./grflog $GVOLUME
./grf --restore --list grflog.task ./grf --restore --list grflog.task
......
...@@ -20,7 +20,6 @@ grep_dht_log() ...@@ -20,7 +20,6 @@ grep_dht_log()
# use mount # use mount
grep_dht_log $GLUSTERLOG | sed -e "s|.*dht_lookup_everywhere_cbk\] 0-\($VOLUME\)-dht: \(.*\)|\1: \2|g" > $0.$VOLUME.log grep_dht_log $GLUSTERLOG | sed -e "s|.*dht_lookup_everywhere_cbk\] 0-\($VOLUME\)-dht: \(.*\)|\1: \2|g" > $0.$VOLUME.log
truncate -c -s0 $GLUSTERLOG
sort -u < $0.$VOLUME.log >$0.$VOLUME.sorted.log sort -u < $0.$VOLUME.log >$0.$VOLUME.sorted.log
TASKFILE=$0.task TASKFILE=$0.task
...@@ -51,11 +50,11 @@ grep "multiple subvolumes" $0.$VOLUME.sorted.log >$0.$VOLUME.multiple.log ...@@ -51,11 +50,11 @@ grep "multiple subvolumes" $0.$VOLUME.sorted.log >$0.$VOLUME.multiple.log
cat $0.$VOLUME.multiple.log | sed -e "s|$VOLUME: multiple subvolumes (.*) have file \(.*\) (preferably rename the file in the backend.*|$LOCALPATH\1|g" | sort -u >>$TASKFILE cat $0.$VOLUME.multiple.log | sed -e "s|$VOLUME: multiple subvolumes (.*) have file \(.*\) (preferably rename the file in the backend.*|$LOCALPATH\1|g" | sort -u >>$TASKFILE
#[2015-10-30 19:43:41.209510] W [MSGID: 108008] [afr-self-heal-name.c:359:afr_selfheal_name_gfid_mismatch_check] 0-ftp-pub-replicate-1: GFID mismatch for <gfid:3adba740-39dd-409d-887e-a24002a86053>/release.addon 65a3fcb4-cecb-43af-9fc1-8843a28922c7 on ftp-pub-client-3 and 724bce6f-71ef-4def-b097-9b3e92c8ed0b on ftp-pub-client-2
grep afr_selfheal_detect_gfid_and_type_mismatch $GLUSTERLOG | sed -e "s|.*\(afr_selfheal_detect_gfid_and_type_mismatch\)\]|\1:|g" > $0.$VOLUME.gfid.log grep afr_selfheal_detect_gfid_and_type_mismatch $GLUSTERLOG | sed -e "s|.*\(afr_selfheal_detect_gfid_and_type_mismatch\)\]|\1:|g" > $0.$VOLUME.gfid.log
grep afr_selfheal_name_gfid_mismatch_check $GLUSTERLOG | sed -e "s|.*\(afr_selfheal_name_gfid_mismatch_check\)\]|\1:|g" >> $0.$VOLUME.gfid.log
sort -u < $0.$VOLUME.gfid.log >$0.$VOLUME.gfid.sorted.log sort -u < $0.$VOLUME.gfid.log >$0.$VOLUME.gfid.sorted.log
# Gfid mismatch detected # Gfid mismatch detected
echo >>$TASKFILE echo >>$TASKFILE
echo "# Gfid mismatch detected" >>$TASKFILE echo "# Gfid mismatch detected" >>$TASKFILE
...@@ -63,6 +62,10 @@ echo "# Gfid mismatch detected" >>$TASKFILE ...@@ -63,6 +62,10 @@ echo "# Gfid mismatch detected" >>$TASKFILE
# Gfid mismatch detected for <68ddfef8-250a-40c5-ae12-02acfefa08c6/i586-libdolphinprivate4-4.12.4-alt0.M70P.2.i586.rpm>, # Gfid mismatch detected for <68ddfef8-250a-40c5-ae12-02acfefa08c6/i586-libdolphinprivate4-4.12.4-alt0.M70P.2.i586.rpm>,
# 6878e176-c837-483d-84f5-37bf76b5d162 on ftp-pub-client-3 and # 6878e176-c837-483d-84f5-37bf76b5d162 on ftp-pub-client-3 and
# 0e22ad76-f4a4-45d4-9129-5ea54e6b9896 on ftp-pub-client-2. Skipping conservative merge on the file. # 0e22ad76-f4a4-45d4-9129-5ea54e6b9896 on ftp-pub-client-2. Skipping conservative merge on the file.
grep "Gfid mismatch detected for" $0.$VOLUME.gfid.sorted.log >$0.$VOLUME.mismatch.log grep "Gfid mismatch detected for" $0.$VOLUME.gfid.sorted.log >$0.$VOLUME.mismatch1.log
cat $0.$VOLUME.mismatch.log | sed -e "s|.*Gfid mismatch detected for \(<.*>\).*|$LOCALPATH/\1|g" | sort -u >>$TASKFILE grep "GFID mismatch for" $0.$VOLUME.gfid.sorted.log >$0.$VOLUME.mismatch2.log
#<gfid:3adba740-39dd-409d-887e-a24002a86053>/release.addon
cat $0.$VOLUME.mismatch1.log | sed -e "s|.*Gfid mismatch detected for <\(.*>\), .*|$LOCALPATH/<gfid:\1|g" | sort -u >>$TASKFILE
cat $0.$VOLUME.mismatch2.log | sed -e "s|.*GFID mismatch for \(<.*>/.*\) [0-9a-f].* on .* and .*|$LOCALPATH/\1|g" | sort -u >>$TASKFILE
truncate -c -s0 $GLUSTERLOG
...@@ -3,5 +3,5 @@ ...@@ -3,5 +3,5 @@
personal="snail lin-test nun lav asu multi euclid" personal="snail lin-test nun lav asu multi euclid"
servers="cellar windsor vbox space1 localhost" servers="cellar windsor vbox space1 localhost"
hosts="$personal $servers" hosts="$personal $servers"
clients="atlant grape buh" clients="atlant grape ant"
# builder builder64" # builder builder64"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment