Project

General

Profile

Bug #9073 » deploy.sh

Quick script to deply 1 OSD - Mark Kirkwood, 08/11/2014 09:15 PM

 
#!/bin/bash
# Simple script to deploy a mon + osd for testing/debugging
# (based to some extent on a script by Loic Dachary mentioned here:
# http://dachary.org/?p=2374)
#
# test with 0.80-685-g2bfb8d4 (works)
# test with 0.83-611-g4d2d4dd (fails)
#
# hang at osd mkfs:
#
# 7fbbc89e4800 -1 journal check: ondisk fsid d613adad-6e35-47d8-9f5d-e95f0170b4cd doesn't match expected 5390fcae-2ba8-497c-8dab-7265180bf82f, invalid (someone else's?) journal
# 7fbbc89e4800 -1 filestore(/data1/cephdata) could not find 23c2fcde/osd_superblock/0//-1 in index: (2) No such file or directory
#
# these are benign, we are hanging on a futex:
#
# Process 12648 attached
# futex(0x7fffaa3fcbac, FUTEX_WAIT_PRIVATE, 1, NULL
#
# this commit (4eb18dd) appears to be the cause:
#
# os/FileJournal: Update the journal header when closing journal
#
#
set -e
set -u

ACTION=${1-'all'}

MONIP=192.168.1.64
MONHOST=zmori
CEPH_DIR=/var/lib/ceph
CEPH_ETC=/etc/ceph
OSD_DATAPATH=/data1/cephdata
OSD_JOURNALPATH=/dev/sdc1

conf_create() {
echo "write conf file"
cat >> ${CEPH_ETC}/ceph.conf <<EOF
[global]
fsid = $(uuidgen)
mon_initial_members = ${MONHOST}
mon_host = ${MONIP}
auth cluster required = none
auth service required = none
auth client required = none
filestore_xattr_use_omap = true
osd pool default size = 1
EOF
}


mon_create() {
echo "create the mon ${MONHOST}"
ceph-mon --id ${MONHOST} --mkfs --keyring /dev/null
start ceph-mon id=${MONHOST}
sleep 5
ceph -s
}


osd_create() {
echo "create a single osd on ${MONHOST}"
OSD_ID=$(ceph osd create)
echo "osd has id ${OSD_ID}, add to crushmap"
ceph osd crush add osd.${OSD_ID} 1 root=default host=${MONHOST}

echo "make osd filesystem"
ceph-osd --id ${OSD_ID} --mkjournal --mkfs --osd-data ${OSD_DATAPATH} --osd-journal ${OSD_JOURNALPATH}
echo "link ${OSD_JOURNALPATH} to ${OSD_DATAPATH}/journal"
ln -s ${OSD_JOURNALPATH} ${OSD_DATAPATH}/journal
echo "link ${OSD_DATAPATH} to ${CEPH_DIR}/osd/ceph-${OSD_ID}"
ln -s ${OSD_DATAPATH} ${CEPH_DIR}/osd/ceph-${OSD_ID}

echo "start osd ${OSD_ID}"
start ceph-osd id=${OSD_ID}
sleep 5
ceph -s
}


clean() {
echo "stopping ceph (may fail)"
set +e
stop ceph-osd id=0
stop ceph-mon id=$MONHOST
stop ceph-all
set -e

echo "removing ceph files"
rm -f /etc/ceph/* /var/log/ceph/*
rm -rf /var/lib/ceph/* /data?/cephdata/*

echo "creating empty directories"
cd /var/lib/ceph; sudo mkdir bootstrap-mds bootstrap-osd mds mon osd tmp; cd -
}

# main entry
case ${ACTION} in
"conf") conf_create;;
"mon") mon_create;;
"osd") osd_create;;
"clean") clean;;
"all") echo "error - not implemented";;
esac
(1-1/17)