[prev in list] [next in list] [prev in thread] [next in thread]
List: ceph-devel
Subject: Re: [PATCH] Add rc script for rbd map/unmap
From: Sage Weil <sage () inktank ! com>
Date: 2013-06-27 5:16:32
Message-ID: alpine.DEB.2.00.1306262213540.22797 () cobra ! newdream ! net
[Download RAW message or body]
Hi Laurent,
I went ahead and merged this.
Thanks!
sage
On Mon, 24 Jun 2013, Sage Weil wrote:
> Hi Laurent,
>
> I opened a github pull request for this at
>
> https://github.com/ceph/ceph/pull/378
>
> We might consider putting /etc/rbdmap in /etc/ceph/rbdmap to avoid
> polluting /etc... Dan, can you take a look?
>
> Thanks!
> sage
>
>
> On Fri, 21 Jun 2013, Laurent Barbe wrote:
>
> > Init script for mapping/unmapping rbd device on startup and shutdown.
> > On start, map rbd dev according to /etc/rbdmap, and force mount -a
> > On stop, umount file system depending on rbd and unmap all rbd
> > Since some distribution use symlink for /etc/mtab, the user-space attribute \
> > _netdev is not enough to umount file system before rbd dev. (also concern: #1790)
> >
> > Signed-off-by: Laurent Barbe <laurent@ksperis.com>
> > ---
> > src/init-rbdmap | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > src/rbdmap | 3 ++
> > 2 files changed, 106 insertions(+)
> > create mode 100755 src/init-rbdmap
> > create mode 100644 src/rbdmap
> >
> > diff --git a/src/init-rbdmap b/src/init-rbdmap
> > new file mode 100755
> > index 0000000..a2187ce
> > --- /dev/null
> > +++ b/src/init-rbdmap
> > @@ -0,0 +1,103 @@
> > +#!/bin/bash
> > +
> > +### BEGIN INIT INFO
> > +# Provides: rbdmap
> > +# Required-Start: $network
> > +# Required-Stop: $network
> > +# Default-Start: 2 3 4 5
> > +# Default-Stop: 0 1 6
> > +# Short-Description: Ceph RBD Mapping
> > +# Description: Ceph RBD Mapping
> > +### END INIT INFO
> > +
> > +DESC="RBD Mapping"
> > +RBDMAPFILE="/etc/rbdmap"
> > +
> > +. /lib/lsb/init-functions
> > +
> > +do_map() {
> > + if [ ! -f "$RBDMAPFILE" ]; then
> > + log_warning_msg "$DESC : No $RBDMAPFILE found."
> > + exit 0
> > + fi
> > +
> > + log_daemon_msg "Starting $DESC"
> > + # Read /etc/rbdtab to create non-existant mapping
> > + newrbd=
> > + RET=0
> > + while read DEV PARAMS; do
> > + case "$DEV" in
> > + ""|\#*)
> > + continue
> > + ;;
> > + */*)
> > + ;;
> > + *)
> > + DEV=rbd/$DEV
> > + ;;
> > + esac
> > + OIFS=$IFS
> > + IFS=','
> > + for PARAM in ${PARAMS[@]}; do
> > + CMDPARAMS="$CMDPARAMS --$(echo $PARAM | tr '=' ' ')"
> > + done
> > + IFS=$OIFS
> > + if [ ! -b /dev/rbd/$DEV ]; then
> > + log_progress_msg $DEV
> > + rbd map $DEV $CMDPARAMS
> > + [ $? -ne "0" ] && RET=1
> > + newrbd="yes"
> > + fi
> > + done < $RBDMAPFILE
> > + log_end_msg $RET
> > +
> > + # Mount new rbd
> > + if [ "$newrbd" ]; then
> > + log_action_begin_msg "Mounting all filesystems"
> > + mount -a
> > + log_action_end_msg $?
> > + fi
> > +}
> > +
> > +do_unmap() {
> > + log_daemon_msg "Stopping $DESC"
> > + RET=0
> > + # Unmap all rbd device
> > + for DEV in /dev/rbd[0-9]*; do
> > + log_progress_msg $DEV
> > + # Umount before unmap
> > + MNTDEP=$(findmnt --mtab --source $DEV --output TARGET | sed 1,1d | sort -r)
> > + for MNT in $MNTDEP; do
> > + umount $MNT || sleep 1 && umount -l $DEV
> > + done
> > + rbd unmap $DEV
> > + [ $? -ne "0" ] && RET=1
> > + done
> > + log_end_msg $RET
> > +}
> > +
> > +
> > +case "$1" in
> > + start)
> > + do_map
> > + ;;
> > +
> > + stop)
> > + do_unmap
> > + ;;
> > +
> > + reload)
> > + do_map
> > + ;;
> > +
> > + status)
> > + rbd showmapped
> > + ;;
> > +
> > + *)
> > + log_success_msg "Usage: rbdmap {start|stop|reload|status}"
> > + exit 1
> > + ;;
> > +esac
> > +
> > +exit 0
> > diff --git a/src/rbdmap b/src/rbdmap
> > new file mode 100644
> > index 0000000..9d34e9e
> > --- /dev/null
> > +++ b/src/rbdmap
> > @@ -0,0 +1,3 @@
> > +# RbdDevice Parameters
> > +#rbd/rbddevice id=client,keyring=/etc/ceph/ceph.client.keyring
> > +
> > --
> > 1.8.1.2
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
> >
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic