blob: 7bcafbf4af2f609e3e2b41764b5d0abf1455ee2c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#!/bin/sh
# if we start up as ./init-ceph, assume everything else is in the
# current directory too.
if [ `dirname $0` = "." ] && [ $PWD != "/etc/init.d" ]; then
BINDIR=.
LIBDIR=.
ETCDIR=.
else
BINDIR=@bindir@
LIBDIR=@libdir@/ceph
ETCDIR=@sysconfdir@/ceph
fi
BINDBGDIR="/usr/lib/debug/usr/bin"
usage_exit() {
echo "usage: $0 [-c ceph.conf] <filename.tar.gz>"
exit
}
wait_pid_exit() {
pid=$1
for i in {1..10}; do
[ -e /proc/$pid ] || return
sleep 1
done
if [ -e /proc/$pid ]; then
echo Killing pid $pid
kill $pid
fi
}
. $LIBDIR/ceph_common.sh
dest_tar=""
while [ $# -ge 1 ]; do
case $1 in
--conf | -c)
[ -z "$2" ] && usage_exit
shift
conf=$1
;;
*)
if [ "$dest_tar" != "" ]; then
echo unrecognized option \'$1\'
usage_exit
fi
dest_tar=$1
;;
esac
shift
done
[ "$dest_tar" = "" ] && usage_exit
# get absolute path for dest_tar
[ `echo $dest_tar | cut -c 1` != "/" ] && dest_tar="`pwd`/$dest_tar"
bins="ceph-mon ceph-mds ceph-osd"
core_paths="/ $BINDIR $BINDBGDIR"
[ "$conf" = "" ] && conf=$ETCDIR/ceph.conf
log_path=`$CCONF -c $conf "log dir"`
[ -z "$conf" ] && usage_exit
tmp_path=`mktemp -d /tmp/ceph-debugpack.XXXXXXXXXX`
tmp_path_bin=$tmp_path/bin
tmp_path_bin_dbg=$tmp_path/bin.dbg
tmp_path_log=$tmp_path/out
tmp_path_core=$tmp_path/core
tmp_path_etc=$tmp_path/etc
echo tmp_path=$tmp_path
mkdir -p $tmp_path_bin
mkdir -p $tmp_path_bin_dbg
mkdir -p $tmp_path_log
mkdir -p $tmp_path_core
mkdir -p $tmp_path_etc
#copy the binaries
for name in $bins; do
[ -e $BINDIR/$name ] && cp $BINDIR/$name $tmp_path_bin
[ -e $BINDBGDIR/$name ] && cp $BINDBGDIR/$name $tmp_path_bin_dbg
done
# copy the logs
cp -rp $log_path/* $tmp_path_log
# copy cores (if exist)
for path in $core_paths; do
files="`find $path -maxdepth 1 -name 'core*'`"
if [ "$files" != "" ]; then
for core_file in `ls $path/core*`; do
tmp_core=`mktemp $tmp_path_core/core.XXXX`
cp $core_file $tmp_core
done
fi
done
# copy config
cp $conf $tmp_path_etc
# other output
$BINDIR/ceph -s > $tmp_path_log/ceph-s &
wait_pid_exit $!
$BINDIR/ceph osd dump -o $tmp_path_log/ceph-osd-dump &
wait_pid_exit $!
$BINDIR/ceph mds dump -o $tmp_path_log/ceph-mds-dump &
wait_pid_exit $!
$BINDIR/ceph pg dump -o $tmp_path_log/ceph-pg-dump &
wait_pid_exit $!
# now create a tarball
tmp_path_dir=`echo $tmp_path | cut -d / -f 3`
tar cvfz $dest_tar -C /tmp $tmp_path_dir
rm -fR $tmp_path
|