diff --git a/doc/dev/dev_cluster_deployement.rst b/doc/dev/dev_cluster_deployement.rst index 05b767ccca8..2f910750f79 100644 --- a/doc/dev/dev_cluster_deployement.rst +++ b/doc/dev/dev_cluster_deployement.rst @@ -12,7 +12,7 @@ It allows to deploy a fake local cluster on your machine for development purpose To start your development cluster, type the following:: - vstart.sh [OPTIONS]... [mon] [osd] [mds] + vstart.sh [OPTIONS]... In order to stop the cluster, you can type:: diff --git a/src/test/ceph_objectstore_tool.py b/src/test/ceph_objectstore_tool.py index c63e3ec2950..ac68228a4e4 100755 --- a/src/test/ceph_objectstore_tool.py +++ b/src/test/ceph_objectstore_tool.py @@ -152,7 +152,7 @@ def cat_file(level, filename): def vstart(new, opt=""): print("vstarting....", end="") NEW = new and "-n" or "-N" - call("MON=1 OSD=4 CEPH_PORT=7400 {path}/src/vstart.sh --short -l {new} -d mon osd {opt} > /dev/null 2>&1".format(new=NEW, opt=opt, path=CEPH_ROOT), shell=True) + call("MON=1 OSD=4 MDS=0 MGR=0 CEPH_PORT=7400 {path}/src/vstart.sh --short -l {new} -d {opt} > /dev/null 2>&1".format(new=NEW, opt=opt, path=CEPH_ROOT), shell=True) print("DONE") diff --git a/src/test/cephtool-test-mds.sh b/src/test/cephtool-test-mds.sh index 463f2d4557d..93ea99b4f85 100755 --- a/src/test/cephtool-test-mds.sh +++ b/src/test/cephtool-test-mds.sh @@ -18,7 +18,7 @@ source $(dirname $0)/detect-build-env-vars.sh CEPH_CLI_TEST_DUP_COMMAND=1 \ -MDS=1 MON=1 OSD=3 CEPH_START='mon osd mds' CEPH_PORT=7200 $CEPH_ROOT/src/test/vstart_wrapper.sh \ +MDS=1 MON=1 OSD=3 MGR=0 CEPH_PORT=7200 $CEPH_ROOT/src/test/vstart_wrapper.sh \ $CEPH_ROOT/qa/workunits/cephtool/test.sh \ --test-mds \ --asok-does-not-need-root diff --git a/src/test/cephtool-test-mon.sh b/src/test/cephtool-test-mon.sh index a3b1619ee13..8ca9dc8e393 100755 --- a/src/test/cephtool-test-mon.sh +++ b/src/test/cephtool-test-mon.sh @@ -20,7 +20,7 @@ source $(dirname $0)/detect-build-env-vars.sh CEPH_CLI_TEST_DUP_COMMAND=1 \ # uses CEPH_PORT going from 7202 7203 and 7204 because # it starts at 7202 and runs 3 mons (see vstart.sh) -MON=3 OSD=3 CEPH_START='mon osd' CEPH_PORT=7202 $CEPH_ROOT/src/test/vstart_wrapper.sh \ +MON=3 OSD=3 MDS=0 MGR=0 CEPH_PORT=7202 $CEPH_ROOT/src/test/vstart_wrapper.sh \ $CEPH_ROOT/qa/workunits/cephtool/test.sh \ --test-mon \ --asok-does-not-need-root diff --git a/src/test/cephtool-test-osd.sh b/src/test/cephtool-test-osd.sh index f5091a75f84..d513b287403 100755 --- a/src/test/cephtool-test-osd.sh +++ b/src/test/cephtool-test-osd.sh @@ -18,7 +18,7 @@ source $(dirname $0)/detect-build-env-vars.sh CEPH_CLI_TEST_DUP_COMMAND=1 \ -MON=1 OSD=3 CEPH_START='mon osd' CEPH_PORT=7201 $CEPH_ROOT/src/test/vstart_wrapper.sh \ +MON=1 OSD=3 MDS=0 MGR=0 CEPH_PORT=7201 $CEPH_ROOT/src/test/vstart_wrapper.sh \ $CEPH_ROOT/qa/workunits/cephtool/test.sh \ --test-osd \ --asok-does-not-need-root diff --git a/src/test/cephtool-test-rados.sh b/src/test/cephtool-test-rados.sh index f7766c2a792..1b8dd09413a 100755 --- a/src/test/cephtool-test-rados.sh +++ b/src/test/cephtool-test-rados.sh @@ -17,5 +17,5 @@ source $(dirname $0)/detect-build-env-vars.sh CEPH_CLI_TEST_DUP_COMMAND=1 \ -MON=1 OSD=3 CEPH_START='mon osd' CEPH_PORT=7205 $CEPH_ROOT/src/test/vstart_wrapper.sh \ +MON=1 OSD=3 MDS=0 MGR=0 CEPH_PORT=7205 $CEPH_ROOT/src/test/vstart_wrapper.sh \ $CEPH_ROOT/src/test/test_rados_tool.sh diff --git a/src/test/mon/run_test.sh b/src/test/mon/run_test.sh index a6cbff7fb73..ef2f6d063ec 100755 --- a/src/test/mon/run_test.sh +++ b/src/test/mon/run_test.sh @@ -57,7 +57,7 @@ make_fresh() { exit 1 fi - env CEPH_NUM_MON=3 CEPH_NUM_OSD=2 CEPH_NUM_MDS=1 \ + env MON=3 OSD=0 MDS=0 MGR=0 \ ./vstart.sh -n -l -d mon } diff --git a/src/test/vstart_wrapper.sh b/src/test/vstart_wrapper.sh index 2e05608799c..62cd6e16b8a 100755 --- a/src/test/vstart_wrapper.sh +++ b/src/test/vstart_wrapper.sh @@ -33,7 +33,7 @@ function vstart_setup() $CEPH_ROOT/src/vstart.sh \ --short \ -o 'paxos propose interval = 0.01' \ - -n -l $CEPH_START || return 1 + -n -l || return 1 export CEPH_CONF=$CEPH_DIR/ceph.conf crit=$(expr 100 - $(ceph-conf --show-config-value mon_data_avail_crit)) diff --git a/src/vstart.sh b/src/vstart.sh index cfa08fe1b77..015db3ad04f 100755 --- a/src/vstart.sh +++ b/src/vstart.sh @@ -57,6 +57,17 @@ export DYLD_LIBRARY_PATH=$CEPH_LIB:$DYLD_LIBRARY_PATH [ -z "$CEPH_NUM_FS" ] && CEPH_NUM_FS="$FS" [ -z "$CEPH_NUM_RGW" ] && CEPH_NUM_RGW="$RGW" +# if none of the CEPH_NUM_* number is specified, kill the existing +# cluster. +if [ -z "$CEPH_NUM_MON" -a \ + -z "$CEPH_NUM_OSD" -a \ + -z "$CEPH_NUM_MDS" -a \ + -z "$CEPH_NUM_MGR" ]; then + kill_all=1 +else + kill_all=0 +fi + [ -z "$CEPH_NUM_MON" ] && CEPH_NUM_MON=3 [ -z "$CEPH_NUM_OSD" ] && CEPH_NUM_OSD=3 [ -z "$CEPH_NUM_MDS" ] && CEPH_NUM_MDS=3 @@ -81,10 +92,6 @@ extra_conf="" new=0 standby=0 debug=0 -start_all=1 -start_mon=0 -start_mds=0 -start_osd=0 ip="" nodaemon=0 smallmds=0 @@ -108,7 +115,7 @@ keyring_fn="$CEPH_CONF_PATH/keyring" osdmap_fn="/tmp/ceph_osdmap.$$" monmap_fn="/tmp/ceph_monmap.$$" -usage="usage: $0 [option]... [\"mon\"] [\"mds\"] [\"osd\"]\nex: $0 -n -d --mon_num 3 --osd_num 3 --mds_num 1 --rgw_num 1\n" +usage="usage: $0 [option]... \nex: $0 -n -d --mon_num 3 --osd_num 3 --mds_num 1 --rgw_num 1\n" usage=$usage"options:\n" usage=$usage"\t-d, --debug\n" usage=$usage"\t-s, --standby_mds: Generate standby-replay MDS for each active\n" @@ -126,9 +133,6 @@ usage=$usage"\t-X disable cephx\n" usage=$usage"\t--hitset : enable hitset tracking\n" usage=$usage"\t-e : create an erasure pool\n"; usage=$usage"\t-o config\t\t add extra config parameters to all sections\n" -usage=$usage"\tmon : start just ceph MONs\n" -usage=$usage"\tosd : start just ceph OSDs\n" -usage=$usage"\tmds : start just ceph MDSes\n" usage=$usage"\t--mon_num specify ceph monitor count\n" usage=$usage"\t--osd_num specify ceph osd count\n" usage=$usage"\t--mds_num specify ceph mds count\n" @@ -236,18 +240,6 @@ case $1 in rgw_frontend=$2 shift ;; - mon ) - start_mon=1 - start_all=0 - ;; - mds ) - start_mds=1 - start_all=0 - ;; - osd ) - start_osd=1 - start_all=0 - ;; -m ) [ -z "$2" ] && usage_exit MON_ADDR=$2 @@ -303,7 +295,7 @@ esac shift done -if [ "$start_all" -eq 1 ]; then +if [ $kill_all -eq 1 ]; then $SUDO $INIT_CEPH stop fi @@ -328,12 +320,6 @@ else fi fi -if [ "$start_all" -eq 1 ]; then - start_mon=1 - start_mds=1 - start_osd=1 -fi - ARGS="-c $conf_fn" prunb() { @@ -370,9 +356,318 @@ wconf() { fi } +prepare_conf() { + local DAEMONOPTS=" + log file = $CEPH_OUT_DIR/\$name.log + admin socket = $CEPH_OUT_DIR/\$name.asok + chdir = \"\" + pid file = $CEPH_OUT_DIR/\$name.pid + heartbeat file = $CEPH_OUT_DIR/\$name.heartbeat +" + + wconf < /dev/null; then + for f in $CEPH_DEV_DIR/osd$osd/*; do btrfs sub delete $f &> /dev/null || true; done + fi + mkdir -p $CEPH_DEV_DIR/osd$osd + + local uuid=`uuidgen` + echo "add osd$osd $uuid" + ceph_adm osd create $uuid + ceph_adm osd crush add osd.$osd 1.0 host=$HOSTNAME root=default + $SUDO $CEPH_BIN/ceph-osd -i $osd $ARGS --mkfs --mkkey --osd-uuid $uuid + + local key_fn=$CEPH_DEV_DIR/osd$osd/keyring + echo adding osd$osd key to auth repository + ceph_adm -i "$key_fn" auth add osd.$osd osd "allow *" mon "allow profile osd" mgr "allow" + fi + echo start osd$osd + run 'osd' $SUDO $CEPH_BIN/ceph-osd -i $osd $ARGS $COSD_ARGS + done +} + +start_mgr() { + local mgr=0 + for name in x y z a b c d e f g h i j k l m n o p + do + [ $mgr -eq $CEPH_NUM_MGR ] && break + mgr=$(($mgr + 1)) + if [ "$new" -eq 1 ]; then + mkdir -p $CEPH_DEV_DIR/mgr.$name + key_fn=$CEPH_DEV_DIR/mgr.$name/keyring + $SUDO $CEPH_BIN/ceph-authtool --create-keyring --gen-key --name=mgr.$name $key_fn + ceph_adm -i $key_fn auth add mgr.$name mon 'allow *' + fi + + wconf < m #--debug_ms 20 + #$CEPH_BIN/ceph-mds -d $ARGS --mds_thrash_fragments 0 --mds_thrash_exports 0 #--debug_ms 20 + #ceph_adm mds set max_mds 2 + done +} + if [ "$debug" -eq 0 ]; then CMONDEBUG=' - debug mon = 10 + debug mon = 10 debug ms = 1' COSDDEBUG=' debug ms = 1' @@ -381,7 +676,7 @@ if [ "$debug" -eq 0 ]; then else echo "** going verbose **" CMONDEBUG=' - debug mon = 20 + debug mon = 20 debug paxos = 20 debug auth = 20 debug ms = 1' @@ -479,229 +774,17 @@ ceph_adm() { fi } -MONS="" -count=0 -for f in a b c d e f g h i j k l m n o p q r s t u v w x y z -do - if [ -z "$MONS" ]; - then - MONS="$f" - else - MONS="$MONS $f" - fi - count=$(($count + 1)) - [ $count -eq $CEPH_NUM_MON ] && break; -done - -DAEMONOPTS=" - log file = $CEPH_OUT_DIR/\$name.log - admin socket = $CEPH_OUT_DIR/\$name.asok - chdir = \"\" - pid file = $CEPH_OUT_DIR/\$name.pid - heartbeat file = $CEPH_OUT_DIR/\$name.heartbeat -" - - -if [ "$start_mon" -eq 1 ]; then - if [ "$new" -eq 1 ]; then - wconf < /dev/null; then - for f in $CEPH_DEV_DIR/osd$osd/*; do btrfs sub delete $f &> /dev/null || true; done - fi - mkdir -p $CEPH_DEV_DIR/osd$osd - - uuid=`uuidgen` - echo "add osd$osd $uuid" - ceph_adm osd create $uuid - ceph_adm osd crush add osd.$osd 1.0 host=$HOSTNAME root=default - $SUDO $CEPH_BIN/ceph-osd -i $osd $ARGS --mkfs --mkkey --osd-uuid $uuid - - key_fn=$CEPH_DEV_DIR/osd$osd/keyring - echo adding osd$osd key to auth repository - ceph_adm -i "$key_fn" auth add osd.$osd osd "allow *" mon "allow profile osd" mgr "allow" - fi - echo start osd$osd - run 'osd' $SUDO $CEPH_BIN/ceph-osd -i $osd $ARGS $COSD_ARGS - done +# osd +if [ $CEPH_NUM_OSD -gt 0 ]; then + start_osd fi # mds @@ -713,65 +796,8 @@ if [ "$smallmds" -eq 1 ]; then EOF fi -if [ "$start_mds" -eq 1 -a "$CEPH_NUM_MDS" -gt 0 ]; then - if [ "$CEPH_NUM_FS" -gt "0" ] ; then - if [ "$CEPH_NUM_FS" -gt "1" ] ; then - ceph_adm fs flag set enable_multiple true --yes-i-really-mean-it - fi - - fs=0 - for name in a b c d e f g h i j k l m n o p - do - ceph_adm osd pool create "cephfs_data_${name}" 8 - ceph_adm osd pool create "cephfs_metadata_${name}" 8 - ceph_adm fs new "cephfs_${name}" "cephfs_metadata_${name}" "cephfs_data_${name}" - fs=$(($fs + 1)) - [ $fs -eq $CEPH_NUM_FS ] && break - done - fi - - mds=0 - for name in a b c d e f g h i j k l m n o p - do - if [ "$new" -eq 1 ]; then - prun mkdir -p "$CEPH_DEV_DIR/mds.$name" - key_fn=$CEPH_DEV_DIR/mds.$name/keyring - wconf < m #--debug_ms 20 -#$CEPH_BIN/ceph-mds -d $ARGS --mds_thrash_fragments 0 --mds_thrash_exports 0 #--debug_ms 20 -#ceph_adm mds set max_mds 2 - done +if [ $CEPH_NUM_MDS -gt 0 ]; then + start_mds fi # Don't set max_mds until all the daemons are started, otherwise @@ -782,36 +808,18 @@ fi fs=0 for name in a b c d e f g h i j k l m n o p do + [ $fs -eq $CEPH_NUM_FS ] && break + fs=$(($fs + 1)) if [ "$CEPH_MAX_MDS" -gt 1 ]; then ceph_adm fs set "cephfs_${name}" allow_multimds true --yes-i-really-mean-it ceph_adm fs set "cephfs_${name}" max_mds "$CEPH_MAX_MDS" fi - fs=$(($fs + 1)) - [ $fs -eq $CEPH_NUM_FS ] && break done -if [ "$CEPH_NUM_MGR" -gt 0 ]; then - mgr=0 - for name in x y z a b c d e f g h i j k l m n o p - do - if [ "$new" -eq 1 ]; then - mkdir -p $CEPH_DEV_DIR/mgr.$name - key_fn=$CEPH_DEV_DIR/mgr.$name/keyring - $SUDO $CEPH_BIN/ceph-authtool --create-keyring --gen-key --name=mgr.$name $key_fn - ceph_adm -i $key_fn auth add mgr.$name mon 'allow *' - fi +# mgr - wconf <