-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathceph_rados.sh
executable file
·112 lines (99 loc) · 2.93 KB
/
ceph_rados.sh
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
#!/bin/bash
#
# Utility script for operating ceph rados.
#
# Aug-05-2016 zhengq@cs.cmu.edu
#
SUDO="sudo"
if test $# -lt 1; then
echo "* Usage: $0 [start|stop|stat|kill|check|watch|ls|head]
=====================================================================
start | create a new rados cluster | sudo
stop | shutdown the running cluster | sudo
status | get the status of the running cluster | sudo
kill | terminate the running cluster | sudo
---------------------------------------------------------------------
check | print the version of ceph rados and exit |
---------------------------------------------------------------------
watch | monitor the status of a running cluster |
ls | list ALL objects in the cluster |
head | check the existence of a particular object |
=====================================================================
* On Ubuntu, ceph rados could be installed by:
sudo apt-get install ceph librados-dev
* Please use `basename $0` only for local testing and debugging
* `basename $0` currently only works with ceph 0.80.x"
exit 1
fi
set -x
me=$0
SCRIPT_DIR=$(cd -P -- `dirname $me` && pwd -P)
RADOS_RUN=/tmp/pdlfs-rados
TEMPLATE_CEPH_CONF=$SCRIPT_DIR/ceph.conf
CEPH_CONF=$RADOS_RUN/ceph.conf
prepare_rados() {
$SUDO rm -rf $RADOS_RUN/*
$SUDO mkdir -p $RADOS_RUN $RADOS_RUN/mon
$SUDO mkdir -p $RADOS_RUN/osd/ceph-0 $RADOS_RUN/osd/ceph-1 $RADOS_RUN/osd/ceph-2
$SUDO rm -f $CEPH_CONF
$SUDO sed "s/@localhost@/`hostname -s`/g; \
s/@rados_run@/${RADOS_RUN//\//\\\/}/g" \
$TEMPLATE_CEPH_CONF | $SUDO tee $CEPH_CONF
$SUDO rm -f /tmp/ceph.conf
$SUDO ln -fs $CEPH_CONF /tmp/ceph.conf
}
fix_pools() {
for pool in 'metadata' 'data'; do
ceph -c $CEPH_CONF osd pool set $pool min_size 1
ceph -c $CEPH_CONF osd pool set $pool size 1
done
for pool in 'rbd'; do
ceph -c $CEPH_CONF osd pool delete $pool $pool --yes-i-really-really-mean-it
done
}
kill_rados() {
$SUDO killall -9 ceph-mon
$SUDO killall -9 ceph-osd
}
force_kill_rados() {
$SUDO killall -9 ceph-mon &>/dev/null
$SUDO killall -9 ceph-osd &>/dev/null
}
COMMAND=$1
case $COMMAND in
ls)
rados -c $CEPH_CONF -p metadata ls
rados -c $CEPH_CONF -p data ls
;;
head)
rados -c $CEPH_CONF -p metadata stat $2
rados -c $CEPH_CONF -p data stat $2
;;
check)
ceph --version
;;
watch)
ceph -c $CEPH_CONF -w
;;
stat|status)
ceph -c $CEPH_CONF -s
;;
start)
force_kill_rados
prepare_rados
$SUDO mkcephfs -a -c $CEPH_CONF --no-copy-conf || exit 1
$SUDO ceph-mon -i a -c $CEPH_CONF || exit 1
fix_pools
$SUDO ceph-osd -i 0 -c $CEPH_CONF || exit 1
$SUDO ceph-osd -i 1 -c $CEPH_CONF || exit 1
$SUDO ceph-osd -i 2 -c $CEPH_CONF || exit 1
;;
stop|kill)
kill_rados
;;
*)
echo "Unrecognized command '$COMMAND' -- oops"
exit 1
;;
esac
exit 0