[16] | 1 | #!/bin/ksh |
---|
| 2 | # |
---|
| 3 | # Usage : filehist |
---|
| 4 | # |
---|
| 5 | # Shell script will process required environment variables and |
---|
| 6 | # analyze GPFS filesystems which are mounted |
---|
| 7 | # |
---|
| 8 | |
---|
| 9 | PATH=/tmp/mmfs:/usr/lpp/mmfs/bin:/usr/lpp/mmfs/samples/util:/usr/lpp/mmfs/samples/debugtools:/usr/sbin:/bin:$PATH |
---|
| 10 | #check for required commands |
---|
| 11 | if ! which tsinode 1>/dev/null |
---|
| 12 | then |
---|
| 13 | print "filehist: tsinode not found. Run 'make tsinode' in /usr/lpp/mmfs/samples/util" |
---|
| 14 | return 1 |
---|
| 15 | fi |
---|
| 16 | if ! which tsfilehist.awk 1>/dev/null |
---|
| 17 | then |
---|
| 18 | print "filehist: /usr/lpp/mmfs/samples/debugtools/tsfilehist.awk not found" |
---|
| 19 | return 2 |
---|
| 20 | fi |
---|
| 21 | |
---|
| 22 | #get mount points for GPFS filesystems |
---|
| 23 | opsys=$(uname -s) |
---|
| 24 | if [[ $opsys = AIX ]]; then |
---|
| 25 | mtpts=$(mount|awk '$3 == "mmfs" {print $2":"substr($1,6)}') |
---|
| 26 | elif [[ $opsys = Linux ]]; then |
---|
| 27 | mtpts=$(mount|awk '$5 == "gpfs" {print $3":"substr($1,6)}') |
---|
| 28 | else |
---|
| 29 | print "$opsys not AIX or Linux" |
---|
| 30 | return 1 |
---|
| 31 | fi |
---|
| 32 | echo "Getting file histogram for: $mtpts" |
---|
| 33 | |
---|
| 34 | #get free space, blocksize of the filesystem, and nsd's |
---|
| 35 | for mf in $mtpts; do |
---|
| 36 | mp=${mf%:*}; fs=${mf#*:} |
---|
| 37 | df=$(df -k $mp | tail -1 | awk '{print $2 "k"}') |
---|
| 38 | blksz=$(tslsfs $fs -B | tail -1 | awk '{print $2/1024}') |
---|
| 39 | diskls="$(tslsdisk $fs -i 2>/dev/null)" |
---|
| 40 | integer disks=$(echo "$diskls"| wc -l) |
---|
| 41 | let bk=disks |
---|
| 42 | let bk4m=4096/blksz |
---|
| 43 | [[ $bk -lt $bk4m ]] && bk=$bk4m |
---|
| 44 | [[ $bk -lt 100 ]] && bk=100 |
---|
| 45 | echo "Writing output to $fs.filesum " |
---|
| 46 | echo "=======================\n$fs: $(hostname) $(date)\n=======================\n" > $fs.filesum |
---|
| 47 | df -k $mp >> $fs.filesum |
---|
| 48 | echo "\n" >> $fs.filesum |
---|
| 49 | mmlsfs $fs >> $fs.filesum |
---|
| 50 | echo "\n\n$diskls\n\n" >> $fs.filesum |
---|
| 51 | echo "Background: tsinode $mp | tsfilehist.awk availablespace=$df nbuckets=$bk blocksize=$blksz" |
---|
| 52 | tsinode $mp | tsfilehist.awk availablespace=$df nbuckets=$bk blocksize=$blksz >> $fs.filesum & |
---|
| 53 | |
---|
| 54 | done |
---|
| 55 | echo "Waiting for background processes to complete" |
---|
| 56 | wait |
---|