]> git.proxmox.com Git - ceph.git/blob - ceph/src/multi-dump.sh
bump version to 12.2.10-pve1
[ceph.git] / ceph / src / multi-dump.sh
1 #!/bin/bash
2
3 #
4 # multi-dump.sh
5 #
6 # Dumps interesting information about the Ceph cluster at a series of epochs.
7 #
8
9 ### Functions
10 usage() {
11 cat <<EOF
12 multi-dump.sh: dumps out ceph maps
13
14 -D Enable diff-mode
15 -e <start-epoch> What epoch to end with.
16 -h This help message
17 -s <start-epoch> What epoch to start with. Defaults to 1.
18 -t <map-type> What type of map to dump. Defaults to osdmap.
19 Valid map types are: osdmap,
20 EOF
21 }
22
23 cleanup() {
24 [ -n ${TEMPDIR} ] && rm -rf "${TEMPDIR}"
25 }
26
27 die() {
28 echo $@
29 exit 1
30 }
31
32 dump_osdmap() {
33 for v in `seq $START_EPOCH $END_EPOCH`; do
34 ./ceph osd getmap $v -o $TEMPDIR/$v >> $TEMPDIR/cephtool-out \
35 || die "cephtool failed to dump epoch $v"
36 done
37 if [ $DIFFMODE -eq 1 ]; then
38 for v in `seq $START_EPOCH $END_EPOCH`; do
39 ./osdmaptool --print $TEMPDIR/$v > $TEMPDIR/$v.out
40 done
41 cat $TEMPDIR/$START_EPOCH.out
42 E=$((END_EPOCH-1))
43 for v in `seq $START_EPOCH $E`; do
44 S=$((v+1))
45 echo "************** $S **************"
46 diff $TEMPDIR/$v.out $TEMPDIR/$S.out
47 done
48 else
49 for v in `seq $START_EPOCH $END_EPOCH`; do
50 echo "************** $v **************"
51 ./osdmaptool --print $TEMPDIR/$v \
52 || die "osdmaptool failed to print epoch $v"
53 done
54 fi
55 }
56
57 ### Setup
58 trap cleanup INT TERM EXIT
59 TEMPDIR=`mktemp -d`
60 MYDIR=`dirname $0`
61 MYDIR=`readlink -f $MYDIR`
62 MAP_TYPE=osdmap
63 cd $MYDIR
64
65 ### Parse arguments
66 DIFFMODE=0
67 START_EPOCH=1
68 END_EPOCH=0
69
70 while getopts "De:hs:t:" flag; do
71 case $flag in
72 D) DIFFMODE=1;;
73
74 e) END_EPOCH=$OPTARG;;
75
76 h) usage
77 exit 0
78 ;;
79
80 s) START_EPOCH=$OPTARG;;
81
82 t) MAP_TYPE=$OPTARG;;
83
84 *) usage
85 exit 1;;
86 esac
87 done
88 [ $END_EPOCH -eq 0 ] && die "You must supply an end epoch with -e"
89
90 ### Dump maps
91 case $MAP_TYPE in
92 "osdmap") dump_osdmap;;
93
94 *) die "sorry, don't know how to handle MAP_TYPE '$MAP_TYPE'"
95 esac
96
97 exit 0