diff --git a/.gitattributes b/.gitattributes index 15d87b117de51006e3b3c7b31031d2931610c2aa..592d8e48130cdc9592f4670a054bfa49862c1408 100644 --- a/.gitattributes +++ b/.gitattributes @@ -947,6 +947,7 @@ doc/papers/2008/IEEE-SIG/speed.eps -text doc/papers/2008/IEEE-SIG/speed.jgr -text doc/papers/2008/IEEE-SIG/stationoverview.png -text doc/papers/2008/IEEE-SIG/telescope_overview.png -text +/lofstorman -text support/tool/CRAFT/documentatie/Admin_Handleiding_Craft.doc -text support/tool/CRAFT/documentatie/Database_ontwerp.vsd -text support/tool/CRAFT/documentatie/Handleiding_Craft.doc -text diff --git a/lofstorman b/lofstorman new file mode 100755 index 0000000000000000000000000000000000000000..26881b9ecb91b2f63b066dc5be9eacf9b39484ae --- /dev/null +++ b/lofstorman @@ -0,0 +1,360 @@ +#!/usr/bin/csh +# +# $Id:$ +# +# This script acts as the Lofar Storage manager +# +#set echo +set year=`date +%Y` +#set year="2007" +set tmpfile="/tmp/lofstorman$$.tmp" +set dialog=1 +set option="" +set pager="less" +if ($1 != "") then + set dialog=0 + set option="$1" + set pager="cat" +endif +while ( "${option}" !~ [Qq]* ) + if ( ${dialog}) then + echo '+----------------------------------------+' + echo '| Welcome to the Lofar Storage Manager |' + echo '+----------------------------------------+' + echo ' ' + echo 'Options:' + echo ' ' + echo 'du - Show disk usage (on-line and off-line)' + echo 'ols - Show short list of online data' + echo 'oll - Show long list of online data' + echo 'ofs - Show short list of offline data' + echo 'ofl - Show long list of offline data' + echo 'cpy - Copy online data to offline nodes' + echo 'arc - Show data in archive directories' + echo 'cks - Show checksum of tar files in archive directories' + echo 'grs - Show short list of GRID data' + echo 'grl - Show long list of GRID data' + echo 'grc - Show Grid candidate data from /data/archive' + echo 'grd - Move data to GRID (registrated user)' + echo 'cln - Cleanup /data/archive after grid upload' + echo 'f - Find an observation' + echo 'q - Quit' + echo ' ' + echo -n 'Enter selection: ' + set option=($<) + if ( ${option} =~ [Qq]* ) exit + endif +# +# "du" -- Show disk usage +# + if ("$option" == "du") then + foreach f(/tmp/list_df.log /tmp/lifs_df.log) + cat $f | \ + awk '\ + BEGIN {print "\nnode fill% free\n"; s= 0;} \ + {s+=$6; n+=1;print $1, $6, $5} \ + END{printf ("\nTotal free space: %2d%\n",100.-s/n)}' + end + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif +# +# ols -- Show short list of online data +# + if ("$option" == "ols") then + echo "Show short list of on-line data" + set nodes=`cat /tmp/list_catalog | awk '{print $1}'|uniq` + echo "" > $tmpfile + foreach node ($nodes) + echo "-------- $node ----------" >> $tmpfile + grep $node /tmp/list_catalog|sort|awk -F/ '{print $3}'|uniq|column -x -c 72 >> $tmpfile + end + $pager $tmpfile + echo "" + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif +# +# oll - Show long list of online data +# + if ("$option" == "oll") then + echo "Show long list of on-line data" + set nodes=`cat /tmp/list_catalog | awk '{print $1}'|uniq` + echo "" > $tmpfile + foreach node ($nodes) + echo "-------- $node ----------" >> $tmpfile + grep $node /tmp/list_catalog|sort|column -x -c 72 >> $tmpfile + end + $pager $tmpfile + rm -f $tmpfile + echo "" + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif +# +# ofs - Show short list of offline data +# + if ("$option" == "ofs") then + echo "Show short list of offline data" + set nodes=`cat /tmp/lifs_catalog | awk '{print $1}'|uniq` + echo "" > $tmpfile + foreach node ($nodes) + echo "-------- $node ----------" >> $tmpfile + grep $node /tmp/lifs_catalog|sort|awk -F/ '{print $3}'|uniq|column -x -c 72 >> $tmpfile + end + $pager $tmpfile + echo "" + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif +# + +# ofl - Show long list of offline data' + if ("$option" == "ofl") then + echo "Show long list of offline data" + set nodes=`cat /tmp/lifs_catalog | awk '{print $1}'|uniq` + echo "" > $tmpfile + foreach node ($nodes) + echo "-------- $node ----------" >> $tmpfile + grep $node /tmp/lifs_catalog|sort|column -x -c 72 >> $tmpfile + end + $pager $tmpfile + rm -f $tmpfile + echo "" + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif +# +# ofs - Show short list of offline data +# + if ("$option" == "ofs") then + echo "Show short list of offline data" + set nodes=`cat /tmp/lifs_catalog | awk '{print $1}'|uniq` + echo "" > $tmpfile + foreach node ($nodes) + echo "-------- $node ----------" >> $tmpfile + grep $node /tmp/lifs_catalog|sort|awk -F/ '{print $3}'|uniq|column -x -c 72 >> $tmpfile + end + $pager $tmpfile + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif +# +# cpy - Copy online data to storage nodes +# + if ("$option" == "cpy") then + set nrScp=`ps -ef | grep lofarsystem|grep list|grep scp` + if ($#nrScp > 0) then + echo "Another copy process is running" + if (${dialog}) then + echo -n "Do you really want to Continue? [n]" + set ans=($<) + if ($ans != "y") exit + else + exit + endif + endif + set src="list001 list002" + set seqnr=$2 + set lifsnode=$3 + set sblistb=$4 + set sbliste=$5 + if ($seqnr == "") then + echo -n "Enter a seq. number: " + set seqnr=($<) + endif + if ($lifsnode == "") then + echo -n "Enter a lifs node name: " + set lifsnode=($<) + endif + if ($sblistb == "") then + set sblistb=0 + echo -n "Enter a lowest subband nr[all]: " + set ans=($<) + if ($ans != "" ) set sblistb=$ans + endif + if ($sbliste == "") then + set sbliste=999 + echo -n "Enter a highest subband nr[all]: " + set ans=($<) + if ($ans != "" ) set sbliste=$ans + endif +# echo "Seq nr L${year}_0${seqnr} ${lifsnode} low_sb ${sblistb} high_sb ${sbliste}" +# exit + echo "Copy on-line data of L${year}_0${seqnr} to ${lifsnode}" + echo ssh lofarsystem@${lifsnode} mkdir -p /data/L${year}_0${seqnr} + ssh lofarsystem@${lifsnode} mkdir -p /data/L${year}_0${seqnr} + foreach listnode ( ${src} ) + set s="/data/L${year}_0${seqnr}" + set sbb=`ssh lofarsystem@${listnode} ls -1 $s` + set d="lofarsystem@${lifsnode}:/data" + foreach sb ($sbb) + set n=`echo $sb | awk -F. '{print substr ($1,3,2)}'` + if ( $n <= $sbliste && $n >= $sblistb ) then + set sec1=`date +%s` + echo "ssh lofarsystem@${listnode} rsync -av ${s}/${sb} /net/${lifsnode}/L${year}_0${seqnr}" + ssh lofarsystem@${listnode} "rsync -av ${s}/${sb} /net/${lifsnode}/L${year}_0${seqnr}" + set now=`date +%s` + @ elapsed= $now - $sec1 + set size=`du -xm|tail -1|awk '{print $1}'` + @ speed = $size / $elapsed + echo "Elapsed $elapsed seconds. Size $size MByte. Speed $speed MB/s" + endif + end + +# echo "ssh lofarsystem@${listnode} rsync -av ${s}/\* ${d}" +# ssh lofarsystem@${listnode} "rsync -av ${s} ${d}" + end + echo "" + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif +# +# grl - Show long list of GRID data' +# +# grs - Show short list of GRID data' + if ("$option" == "grs") then + echo "Show short list of grid data" + echo "" > $tmpfile + cat /tmp/grid_catalog_short >> $tmpfile + $pager $tmpfile + rm -f $tmpfile + echo -n "\nTotal volume present at grid: " + cat /tmp/grid_catalog | awk '{sum+=$5/1e6}END{printf("%12.3f GB\n",sum/1e3)}' + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif +# +# grl - Show long list of GRID data' +# + if ("$option" == "grl") then + echo "Show short list of grid data" + echo "" > $tmpfile + cat /tmp/grid_catalog | \ + gawk '{printf("%-30s %6.1d MB %s %s %s\n",$9,$5/1e6,$6,$7,$8)}'\ + >> $tmpfile + $pager $tmpfile + rm -f $tmpfile + echo -n "\nTotal volume present at grid: " + cat /tmp/grid_catalog | awk '{sum+=$5/1e6}END{printf("%12.3f GB\n",sum/1e3)}' + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif + +#grc - Show Grid candidate data from /data/archive + if ("$option" == "grc") then + cat /tmp/grid_catalog |awk '{print $9}'|sort > /tmp/lofst1_$$ + cat /tmp/lifs_archive |awk -F/ '{print $4}'|sort >/tmp/lofst2_$$ + diff -w /tmp/lofst1_$$ /tmp/lofst2_$$ |grep '>' > $tmpfile + cat $tmpfile |awk '{print substr($2,1,11)}'|uniq|column -x -c 72|$pager + rm -f $tmpfile + echo "" + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif + +# arc - Show data in archive directories' + if ("$option" == "arc") then + echo "Show data in archive directories" + set nodes=`cat /tmp/lifs_archive | awk '{print $1}'|uniq` + echo "" > $tmpfile + foreach node ($nodes) + echo "-------- $node ----------" >> $tmpfile + grep $node /tmp/lifs_archive|awk -F/ '{print $4}'|uniq|column -x -c 72 >> $tmpfile + end + $pager $tmpfile + echo "" + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif +# +# +# arc - Show checksum of tar files in archive directories' + if ("$option" == "cks") then + echo "Show checksum of tar files in archive directories" + cat /tmp/all_checksums|grep L2|\ + awk '{printf("%-30s %-8s %10d %-6s %6.1f %s \n",\ + $1, $2, $3, $4, $5, $6)}'|$pager + echo "" + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif + +# +# grd - Move data to GRID (registrated user)' +# + if ("$option" == "f") then + if ($2 == "") then + echo -n "Enter an observation number (w/wo year): " + set seq=($<) + else + set seq=$2 + endif + echo "" > $tmpfile + echo "In on-line catalog:" >> $tmpfile + grep $seq /tmp/list_catalog >> $tmpfile + echo "In off-line catalog:" >> $tmpfile + grep $seq /tmp/lifs_catalog >> $tmpfile + echo "In archive area:" >> $tmpfile + grep $seq /tmp/lifs_archive >> $tmpfile + echo "In Grid catalog:" >> $tmpfile + grep $seq /tmp/grid_catalog |\ + gawk '{printf("%-30s %6.1d MB %s %s %s\n",$9,$5/1e6,$6,$7,$8)}'\ + >> $tmpfile + $pager $tmpfile + rm -f $tmpfile + echo "" + endif +# +# cln - Cleanup /data/archive directories after grid upload +# + if ("$option" == "cln") then + echo "Cleanup data in archive directories after upload" + set nodes=`cat /tmp/lifs_archive | awk '{print $1}'|uniq` + foreach node ($nodes) + set list=`grep $node /tmp/lifs_archive|awk -F/ '{print $4}'|uniq` + @ cnt = 0 + foreach ms ($list) + set present=`grep $ms /tmp/grid_catalog|awk '{print $9}'` + if ($#present) then + #echo "Found: /${node}/archive/${present}" + echo ssh lofarsystem@${node} "rm -f /data/archive/${present}" + ssh lofarsystem@${node} "rm -f /data/archive/${present}" + @ cnt = ${cnt} + 1 + endif + end + echo "Total for ${node}: $cnt" + end + echo "" + if (${dialog}) then + echo -n "Hit return to continue" + set ans=($<) + endif + endif +# + if (! ${dialog}) exit +end