From 302d8d5f61bbce4d68cbb41e106d5dae4617a0f4 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Wed, 15 Mar 2017 15:28:09 +0800 Subject: [PATCH] vstart.sh: extract start_{osd,mon,mgr,mds} into functions Signed-off-by: Kefu Chai --- src/vstart.sh | 477 ++++++++++++++++++++++++++------------------------ 1 file changed, 250 insertions(+), 227 deletions(-) diff --git a/src/vstart.sh b/src/vstart.sh index cfa08fe1b77d5..758f6a4bf6a82 100755 --- a/src/vstart.sh +++ b/src/vstart.sh @@ -370,141 +370,16 @@ wconf() { fi } -if [ "$debug" -eq 0 ]; then - CMONDEBUG=' - debug mon = 10 - debug ms = 1' - COSDDEBUG=' - debug ms = 1' - CMDSDEBUG=' - debug ms = 1' -else - echo "** going verbose **" - CMONDEBUG=' - debug mon = 20 - debug paxos = 20 - debug auth = 20 - debug ms = 1' - COSDDEBUG=' - debug ms = 1 - debug osd = 25 - debug objecter = 20 - debug monc = 20 - debug mgrc = 20 - debug journal = 20 - debug filestore = 20 - debug bluestore = 30 - debug bluefs = 20 - debug rocksdb = 10 - debug bdev = 20 - debug rgw = 20 - debug objclass = 20' - CMDSDEBUG=' - debug ms = 1 - debug mds = 20 - debug auth = 20 - debug monc = 20 - debug mgrc = 20 - mds debug scatterstat = true - mds verify scatter = true - mds log max segments = 2' - CMGRDEBUG=' - debug ms = 1 - debug monc = 20 - debug mgr = 20' -fi - -if [ -n "$MON_ADDR" ]; then - CMON_ARGS=" -m "$MON_ADDR - COSD_ARGS=" -m "$MON_ADDR - CMDS_ARGS=" -m "$MON_ADDR -fi - -if [ "$memstore" -eq 1 ]; then - COSDMEMSTORE=' - osd objectstore = memstore' -fi -if [ "$bluestore" -eq 1 ]; then - COSDMEMSTORE=' - osd objectstore = bluestore' -fi - -if [ -z "$CEPH_PORT" ]; then - CEPH_PORT=6789 - [ -e ".ceph_port" ] && CEPH_PORT=`cat .ceph_port` -fi - -[ -z "$INIT_CEPH" ] && INIT_CEPH=$CEPH_BIN/init-ceph - -# sudo if btrfs -test -d $CEPH_DEV_DIR/osd0/. && test -e $CEPH_DEV_DIR/sudo && SUDO="sudo" - -prun $SUDO rm -f core* - -test -d $CEPH_OUT_DIR || mkdir $CEPH_OUT_DIR -test -d $CEPH_DEV_DIR || mkdir $CEPH_DEV_DIR -$SUDO rm -rf $CEPH_OUT_DIR/* -test -d gmon && $SUDO rm -rf gmon/* - -[ "$cephx" -eq 1 ] && [ "$new" -eq 1 ] && test -e $keyring_fn && rm $keyring_fn - - -# figure machine's ip -HOSTNAME=`hostname -s` -if [ -n "$ip" ]; then - IP="$ip" -else - echo hostname $HOSTNAME - if [ -x "$(which ip 2>/dev/null)" ]; then - IP_CMD="ip addr" - else - IP_CMD="ifconfig" - fi - # filter out IPv6 and localhost addresses - IP="$($IP_CMD | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | head -n1)" - # if nothing left, try using localhost address, it might work - if [ -z "$IP" ]; then IP="127.0.0.1"; fi -fi -echo "ip $IP" -echo "port $CEPH_PORT" - - -[ -z $CEPH_ADM ] && CEPH_ADM=$CEPH_BIN/ceph - -ceph_adm() { - if [ "$cephx" -eq 1 ]; then - prun $SUDO "$CEPH_ADM" -c "$conf_fn" -k "$keyring_fn" "$@" - else - prun $SUDO "$CEPH_ADM" -c "$conf_fn" "$@" - 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 +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 + 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 + 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 + 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 + 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 - 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 + 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 -fi +} -# mds -if [ "$smallmds" -eq 1 ]; then - 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 + #valgrind --tool=massif $CEPH_BIN/ceph-mds $ARGS --mds_log_max_segments 2 --mds_thrash_fragments 0 --mds_thrash_exports 0 > 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 ms = 1' + COSDDEBUG=' + debug ms = 1' + CMDSDEBUG=' + debug ms = 1' +else + echo "** going verbose **" + CMONDEBUG=' + debug mon = 20 + debug paxos = 20 + debug auth = 20 + debug ms = 1' + COSDDEBUG=' + debug ms = 1 + debug osd = 25 + debug objecter = 20 + debug monc = 20 + debug mgrc = 20 + debug journal = 20 + debug filestore = 20 + debug bluestore = 30 + debug bluefs = 20 + debug rocksdb = 10 + debug bdev = 20 + debug rgw = 20 + debug objclass = 20' + CMDSDEBUG=' + debug ms = 1 + debug mds = 20 + debug auth = 20 + debug monc = 20 + debug mgrc = 20 + mds debug scatterstat = true + mds verify scatter = true + mds log max segments = 2' + CMGRDEBUG=' + debug ms = 1 + debug monc = 20 + debug mgr = 20' +fi + +if [ -n "$MON_ADDR" ]; then + CMON_ARGS=" -m "$MON_ADDR + COSD_ARGS=" -m "$MON_ADDR + CMDS_ARGS=" -m "$MON_ADDR +fi + +if [ "$memstore" -eq 1 ]; then + COSDMEMSTORE=' + osd objectstore = memstore' +fi +if [ "$bluestore" -eq 1 ]; then + COSDMEMSTORE=' + osd objectstore = bluestore' +fi + +if [ -z "$CEPH_PORT" ]; then + CEPH_PORT=6789 + [ -e ".ceph_port" ] && CEPH_PORT=`cat .ceph_port` +fi + +[ -z "$INIT_CEPH" ] && INIT_CEPH=$CEPH_BIN/init-ceph + +# sudo if btrfs +test -d $CEPH_DEV_DIR/osd0/. && test -e $CEPH_DEV_DIR/sudo && SUDO="sudo" + +prun $SUDO rm -f core* + +test -d $CEPH_OUT_DIR || mkdir $CEPH_OUT_DIR +test -d $CEPH_DEV_DIR || mkdir $CEPH_DEV_DIR +$SUDO rm -rf $CEPH_OUT_DIR/* +test -d gmon && $SUDO rm -rf gmon/* + +[ "$cephx" -eq 1 ] && [ "$new" -eq 1 ] && test -e $keyring_fn && rm $keyring_fn + + +# figure machine's ip +HOSTNAME=`hostname -s` +if [ -n "$ip" ]; then + IP="$ip" +else + echo hostname $HOSTNAME + if [ -x "$(which ip 2>/dev/null)" ]; then + IP_CMD="ip addr" + else + IP_CMD="ifconfig" + fi + # filter out IPv6 and localhost addresses + IP="$($IP_CMD | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | head -n1)" + # if nothing left, try using localhost address, it might work + if [ -z "$IP" ]; then IP="127.0.0.1"; fi +fi +echo "ip $IP" +echo "port $CEPH_PORT" + + +[ -z $CEPH_ADM ] && CEPH_ADM=$CEPH_BIN/ceph + +ceph_adm() { + if [ "$cephx" -eq 1 ]; then + prun $SUDO "$CEPH_ADM" -c "$conf_fn" -k "$keyring_fn" "$@" + else + prun $SUDO "$CEPH_ADM" -c "$conf_fn" "$@" + fi +} + +if [ "$new" -eq 1 ]; then + prepare_conf +fi + +if [ "$start_mon" -eq 1 ]; then + start_mon +fi + +# osd +if [ "$start_osd" -eq 1 ]; then + start_osd +fi + +# mds +if [ "$smallmds" -eq 1 ]; then + wconf <