From 084db49ed3816b49d88d7eb73e9727b4397d32ab Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 8 Apr 2014 14:34:15 -0700 Subject: [PATCH] remove mkcephfs Fixes: #7552 Signed-off-by: Sage Weil --- ceph.spec.in | 2 - debian/ceph.install | 2 - doc/install/upgrading-ceph.rst | 2 +- doc/rados/configuration/mon-config-ref.rst | 16 +- doc/rados/operations/crush-map.rst | 2 +- doc/rados/operations/operating.rst | 4 +- doc/radosgw/config.rst | 8 +- doc/start/ceph.conf | 20 +- man/Makefile.am | 1 - man/mkcephfs.8 | 164 ------ src/.gitignore | 1 - src/Makefile.am | 5 +- src/ceph_mon.cc | 2 +- src/init-ceph.in | 4 +- src/mkcephfs.in | 564 --------------------- src/sample.ceph.conf | 16 +- 16 files changed, 23 insertions(+), 790 deletions(-) delete mode 100644 man/mkcephfs.8 delete mode 100644 src/mkcephfs.in diff --git a/ceph.spec.in b/ceph.spec.in index ee9dbd97eb3a..9a09f59e9e4e 100644 --- a/ceph.spec.in +++ b/ceph.spec.in @@ -417,7 +417,6 @@ fi %{_sbindir}/ceph-disk-udev %{_sbindir}/ceph-create-keys %{_sbindir}/rcceph -/sbin/mkcephfs /sbin/mount.ceph %dir %{_libdir}/ceph %{_libdir}/ceph/ceph_common.sh @@ -456,7 +455,6 @@ fi %{_mandir}/man8/ceph-mon.8* %{_mandir}/man8/ceph-mds.8* %{_mandir}/man8/ceph-osd.8* -%{_mandir}/man8/mkcephfs.8* %{_mandir}/man8/ceph-run.8* %{_mandir}/man8/ceph-syn.8* %{_mandir}/man8/ceph-post-file.8* diff --git a/debian/ceph.install b/debian/ceph.install index a0647a5f51e0..f9e1159d33fa 100644 --- a/debian/ceph.install +++ b/debian/ceph.install @@ -5,7 +5,6 @@ usr/sbin/ceph-create-keys usr/sbin/ceph-disk usr/sbin/ceph-disk-activate usr/sbin/ceph-disk-prepare -sbin/mkcephfs usr/bin/ceph-clsinfo usr/bin/ceph-debugpack usr/bin/ceph-mon @@ -28,6 +27,5 @@ usr/share/man/man8/ceph-osd.8 usr/share/man/man8/ceph-run.8 usr/share/man/man8/ceph-rest-api.8 usr/share/man/man8/crushtool.8 -usr/share/man/man8/mkcephfs.8 usr/share/man/man8/monmaptool.8 usr/share/man/man8/osdmaptool.8 diff --git a/doc/install/upgrading-ceph.rst b/doc/install/upgrading-ceph.rst index b06b3e402938..78a94e2b1a50 100644 --- a/doc/install/upgrading-ceph.rst +++ b/doc/install/upgrading-ceph.rst @@ -207,7 +207,7 @@ ceph-deploy ----------- The ``ceph-deploy`` tool is now the preferred method of provisioning new clusters. -For existing clusters created via ``mkcephfs`` that would like to transition to the +For existing clusters created via the obsolete ``mkcephfs`` tool that would like to transition to the new tool, there is a migration path, documented at `Transitioning to ceph-deploy`_. Cuttlefish to Dumpling diff --git a/doc/rados/configuration/mon-config-ref.rst b/doc/rados/configuration/mon-config-ref.rst index e3a53e4a2dce..ae98d4b85d09 100644 --- a/doc/rados/configuration/mon-config-ref.rst +++ b/doc/rados/configuration/mon-config-ref.rst @@ -152,15 +152,15 @@ Bootstrapping Monitors In most configuration and deployment cases, tools that deploy Ceph may help bootstrap the Ceph Monitors by generating a monitor map for you (e.g., -``mkcephfs``, ``ceph-deploy``, etc). A Ceph Monitor requires a few explicit +``ceph-deploy``, etc). A Ceph Monitor requires a few explicit settings: -- **Filesystem ID**: The ``fsid`` is the unique identifier for your object - store. Since you can run multiple clusters on the same hardware, you must - specify the unique ID of the object store when bootstrapping a monitor. - Deployment tools usually do this for you (e.g., ``mkcephfs`` or - ``ceph-deploy`` can call a tool like ``uuidgen``), but you may specify the - ``fsid`` manually too. +- **Filesystem ID**: The ``fsid`` is the unique identifier for your + object store. Since you can run multiple clusters on the same + hardware, you must specify the unique ID of the object store when + bootstrapping a monitor. Deployment tools usually do this for you + (e.g., ``ceph-deploy`` can call a tool like ``uuidgen``), but you + may specify the ``fsid`` manually too. - **Monitor ID**: A monitor ID is a unique ID assigned to each monitor within the cluster. It is an alphanumeric value, and by convention the identifier @@ -169,7 +169,7 @@ settings: by a deployment tool, or using the ``ceph`` commandline. - **Keys**: The monitor must have secret keys. A deployment tool such as - ``mkcephfs`` or ``ceph-deploy`` usually does this for you, but you may + ``ceph-deploy`` usually does this for you, but you may perform this step manually too. See `Monitor Keyrings`_ for details. For additional details on bootstrapping, see `Bootstrapping a Monitor`_. diff --git a/doc/rados/operations/crush-map.rst b/doc/rados/operations/crush-map.rst index 6ea4083d2b4d..60bed3e0d5f3 100644 --- a/doc/rados/operations/crush-map.rst +++ b/doc/rados/operations/crush-map.rst @@ -27,7 +27,7 @@ possibility of concurrent failures, it may be desirable to ensure that data replicas are on devices using different shelves, racks, power supplies, controllers, and/or physical locations. -When you create a configuration file and deploy Ceph with ``mkcephfs``, Ceph +When you create a configuration file and deploy Ceph with `ceph-deploy``, Ceph generates a default CRUSH map for your configuration. The default CRUSH map is fine for your Ceph sandbox environment. However, when you deploy a large-scale data cluster, you should give significant consideration to developing a custom diff --git a/doc/rados/operations/operating.rst b/doc/rados/operations/operating.rst index 8c62ed5cdbfa..46d2f961660f 100644 --- a/doc/rados/operations/operating.rst +++ b/doc/rados/operations/operating.rst @@ -256,7 +256,7 @@ To stop a Ceph daemon on another node, use the following syntax:: Running Ceph as a Service ------------------------- -When you deploy Ceph Argonaut or Bobtail with ``mkcephfs``, you operate +When you deploy Ceph Argonaut or Bobtail with ``ceph-deploy``, you operate Ceph as a service (you may also use sysvinit). @@ -356,4 +356,4 @@ To stop a Ceph daemon on another node, use the following syntax:: .. _Valgrind: http://www.valgrind.org/ .. _Upstart: http://upstart.ubuntu.com/index.html -.. _initctl: http://manpages.ubuntu.com/manpages/raring/en/man8/initctl.8.html \ No newline at end of file +.. _initctl: http://manpages.ubuntu.com/manpages/raring/en/man8/initctl.8.html diff --git a/doc/radosgw/config.rst b/doc/radosgw/config.rst index 4d54e761bcf7..b334c64f6900 100644 --- a/doc/radosgw/config.rst +++ b/doc/radosgw/config.rst @@ -27,13 +27,7 @@ the socket path and a log file. For example:: Redeploy Ceph Configuration =========================== -If you deploy Ceph with ``mkcephfs``, manually redeploy ``ceph.conf`` to the -hosts in your cluster. For example:: - - cd /etc/ceph - ssh {host-name} sudo tee /etc/ceph/ceph.conf < ceph.conf - -If you used ``ceph-deploy``, push a new copy to the hosts in your cluster. +If you use ``ceph-deploy``, push a new copy to the hosts in your cluster. For example:: ceph-deploy config push {host-name [host-name]...} diff --git a/doc/start/ceph.conf b/doc/start/ceph.conf index 9f6655ba7a86..110697908083 100644 --- a/doc/start/ceph.conf +++ b/doc/start/ceph.conf @@ -14,15 +14,8 @@ filestore xattr use omap = true - # For Bobtail (v 0.56) and subsequent versions, you may - # add settings for mkcephfs so that it will create and mount - # the file system on a particular OSD for you. Remove the comment `#` - # character for the following settings and replace the values - # in braces with appropriate values, or leave the following settings - # commented out to accept the default values. You must specify the - # --mkfs option with mkcephfs in order for the deployment script to - # utilize the following settings, and you must define the 'devs' - # option for each osd instance; see below. + # For ceph-deploy, you can control what type of file system + # is created via these options. #osd mkfs type = {fs-type} #osd mkfs options {fs-type} = {mkfs options} # default for xfs is "-f" @@ -45,17 +38,8 @@ [osd.0] host = {hostname} - # For Bobtail (v 0.56) and subsequent versions, you may - # add settings for mkcephfs so that it will create and mount - # the file system on a particular OSD for you. Remove the comment `#` - # character for the following setting for each OSD and specify - # a path to the device if you use mkcephfs with the --mkfs option. - - #devs = {path-to-device} - [osd.1] host = {hostname} - #devs = {path-to-device} [mds.a] host = {hostname} \ No newline at end of file diff --git a/man/Makefile.am b/man/Makefile.am index be071b17bb67..e29154ae7c28 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -4,7 +4,6 @@ dist_man_MANS = \ ceph-osd.8 \ ceph-mds.8 \ ceph-mon.8 \ - mkcephfs.8 \ ceph-fuse.8 \ ceph-syn.8 \ crushtool.8 \ diff --git a/man/mkcephfs.8 b/man/mkcephfs.8 deleted file mode 100644 index 0341f495214f..000000000000 --- a/man/mkcephfs.8 +++ /dev/null @@ -1,164 +0,0 @@ -.TH "MKCEPHFS" "8" "April 29, 2013" "dev" "Ceph" -.SH NAME -mkcephfs \- create a ceph file system -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.\" Man page generated from reStructuredText. -. -.SH SYNOPSIS -.nf -\fBmkcephfs\fP \-c \fIceph.conf\fP [ \-\-mkfs ] [ \-a, \-\-all\-hosts [ \-k -\fI/path/to/admin.keyring\fP ] ] -.fi -.sp -.SH DESCRIPTION -.sp -\fBmkcephfs\fP is used to create an empty Ceph file system, possibly -spanning multiple hosts. The ceph.conf file describes the composition -of the entire Ceph cluster, including which hosts are participating, -which daemons run where, and which paths are used to store file system -data or metadata. -.sp -The mkcephfs tool can be used in two ways. If \-a is used, it will use -ssh and scp to connect to remote hosts on your behalf and do the setup -of the entire cluster. This is the easiest solution, but can also be -inconvenient (if you don\(aqt have ssh to connect without prompting for -passwords) or slow (if you have a large cluster). -.sp -Alternatively, you can run each setup phase manually. First, you need -to prepare a monmap that will be shared by each node: -.sp -.nf -.ft C -# prepare -master# mkdir /tmp/foo -master# mkcephfs \-c /etc/ceph/ceph.conf \e - \-\-prepare\-monmap \-d /tmp/foo -.ft P -.fi -.sp -Share the \fB/tmp/foo\fP directory with other nodes in whatever way is -convenient for you. On each OSD and MDS node: -.sp -.nf -.ft C -osdnode# mkcephfs \-\-init\-local\-daemons osd \-d /tmp/foo -mdsnode# mkcephfs \-\-init\-local\-daemons mds \-d /tmp/foo -.ft P -.fi -.sp -Collect the contents of the /tmp/foo directories back onto a single -node, and then: -.sp -.nf -.ft C -master# mkcephfs \-\-prepare\-mon \-d /tmp/foo -.ft P -.fi -.sp -Finally, distribute \fB/tmp/foo\fP to all monitor nodes and, on each of -those nodes: -.sp -.nf -.ft C -monnode# mkcephfs \-\-init\-local\-daemons mon \-d /tmp/foo -.ft P -.fi -.SH OPTIONS -.INDENT 0.0 -.TP -.B \-a, \-\-allhosts -Performs the necessary initialization steps on all hosts in the -cluster, executing commands via SSH. -.UNINDENT -.INDENT 0.0 -.TP -.B \-c ceph.conf, \-\-conf=ceph.conf -Use the given conf file instead of the default \fB/etc/ceph/ceph.conf\fP. -.UNINDENT -.INDENT 0.0 -.TP -.B \-k /path/to/keyring -When \fB\-a\fP is used, we can specify a location to copy the -client.admin keyring, which is used to administer the cluster. The -default is \fB/etc/ceph/keyring\fP (or whatever is specified in the -config file). -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-mkfs -Create and mount the file systems specified in the ceph.conf for -OSD data storage using mkfs.$type. The \fBdevs\fP option in ceph.conf -must specify the device(s) and the \fBosd mkfs type\fP option must -specify the file system type (normally one of btrfs, xfs, or ext4). -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-no\-copy\-conf -By default, mkcephfs with \-a will copy the new configuration to -/etc/ceph/ceph.conf on each node in the cluster. This option -disables that behavior. -.UNINDENT -.SH SUBCOMMANDS -.sp -The sub\-commands performed during cluster setup can be run individually with -.INDENT 0.0 -.TP -.B \-\-prepare\-monmap \-d dir \-c ceph.conf -Create an initial monmap with a random fsid/uuid and store it and -the ceph.conf in dir. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-init\-local\-daemons type \-d dir -Initialize any daemons of type type on the local host using the -monmap in dir. For types osd and mds, the resulting authentication -keys will be placed in dir. For type mon, the initial data files -generated by \-\-prepare\-mon (below) are expected in dir. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-prepare\-mon \-d dir -Prepare the initial monitor data based on the monmap, OSD, and MDS -authentication keys collected in dir, and put the result in dir. -.UNINDENT -.SH AVAILABILITY -.sp -\fBmkcephfs\fP is part of the Ceph distributed file system. Please refer -to the Ceph documentation at \fI\%http://ceph.com/docs\fP for more -information. -.SH SEE ALSO -.sp -\fBceph\fP(8), -\fBmonmaptool\fP(8), -\fBosdmaptool\fP(8), -\fBcrushtool\fP(8) -.SH COPYRIGHT -2010-2013, Inktank Storage, Inc. and contributors. Licensed under Creative Commons BY-SA -.\" Generated by docutils manpage writer. -. diff --git a/src/.gitignore b/src/.gitignore index 82e077c33d4f..5bcddeaefc37 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -55,7 +55,6 @@ Makefile /keyring /librados-config /massif.out.* -/mkcephfs /mnt /monmaptool /mount.ceph diff --git a/src/Makefile.am b/src/Makefile.am index edec05e67ec8..47e79005078f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -241,9 +241,8 @@ bin_SCRIPTS += \ ceph-crush-location BUILT_SOURCES += init-ceph -su_sbin_SCRIPTS += mkcephfs -shell_scripts += init-ceph mkcephfs +shell_scripts += init-ceph @@ -268,7 +267,7 @@ admin-tools: monmaptool osdmaptool crushtool ceph-authtool base: core-daemons admin-tools \ cephfs ceph-syn ceph-conf \ rados librados-config \ - init-ceph mkcephfs ceph_mon_store_converter ceph-post-file + init-ceph ceph_mon_store_converter ceph-post-file # version stuff diff --git a/src/ceph_mon.cc b/src/ceph_mon.cc index 0aa6b20f9cc8..bde7f00618ed 100644 --- a/src/ceph_mon.cc +++ b/src/ceph_mon.cc @@ -452,7 +452,7 @@ int main(int argc, const char **argv) bufferlist magicbl; err = store->get(Monitor::MONITOR_NAME, "magic", magicbl); if (!magicbl.length()) { - derr << "unable to read magic from mon data.. did you run mkcephfs?" << dendl; + derr << "unable to read magic from mon data" << dendl; prefork.exit(1); } string magic(magicbl.c_str(), magicbl.length()-1); // ignore trailing \n diff --git a/src/init-ceph.in b/src/init-ceph.in index 846bd573cef7..8a8063c73398 100644 --- a/src/init-ceph.in +++ b/src/init-ceph.in @@ -14,7 +14,7 @@ . /lib/lsb/init-functions -# if we start up as ./mkcephfs, assume everything else is in the +# if we start up as ./init-ceph, assume everything else is in the # current directory too. if [ `dirname $0` = "." ] && [ $PWD != "/etc/init.d" ]; then BINDIR=. @@ -348,7 +348,7 @@ for name in $what; do # for the mon data and admin socket. if so, run # ceph-create-keys. this is the case for (normal) # chef and ceph-deploy clusters, which is who needs - # these keys. it's also true for default installs + # these keys. it's also true for legacy installs # via mkcephfs, which is fine too; there is no harm # in creating these keys. get_conf mon_data "/var/lib/ceph/mon/ceph-$id" "mon data" diff --git a/src/mkcephfs.in b/src/mkcephfs.in deleted file mode 100644 index 28385686a509..000000000000 --- a/src/mkcephfs.in +++ /dev/null @@ -1,564 +0,0 @@ -#!/bin/sh -# -# mkcephfs -# -# This tool is designed to be flexible. There are two ways to go: -# -# The easy way does everything for you using ssh keys. This does not -# scale well for large clusters. -# -# master$ mkcephfs -a -c /etc/ceph/ceph.conf -# -# Alternatively, you can use whatever file distribution and/or job -# launching you want. -# -# master$ mkdir /tmp/foo -# master$ mkcephfs -d /tmp/foo -c /etc/ceph/ceph.conf --prepare-monmap -# -# ...copy/share /tmp/foo with all osd and mds nodes at /tmp/bar... -# -# osd$ mkcephfs -d /tmp/bar --init-local-daemons osd -# mds$ mkcephfs -d /tmp/bar --init-local-daemons mds -# -# ...gather contents of /tmp/bar's back into /tmp/foo... -# -# master$ mkcephfs -d /tmp/foo --prepare-mon -# -# ...distribute /tmp/foo to each monitor node... -# -# mon$ mkcephfs -d /tmp/foo --init-local-daemons mon -# -# master$ cp /tmp/foo/keyring.admin /etc/ceph/keyring # don't forget! -# -# In the degenerate case (one node), this is just -# -# mkdir /tmp/foo -# mkcephfs -c ceph.conf -d /tmp/foo --prepare-monmap -# mkcephfs -d /tmp/foo --init-local-daemons mds -# mkcephfs -d /tmp/foo --init-local-daemons osd -# mkcephfs -d /tmp/foo --prepare-mon -# mkcephfs -d /tmp/foo --init-local-daemons mon -# cp /tmp/foo/keyring.admin /etc/ceph/keyring -# -# or simply -# -# mkcephfs -a -c ceph.conf -# - -set -e - -trap 'echo "\nWARNING: mkcephfs is now deprecated in favour of ceph-deploy. Please see: \n http://github.com/ceph/ceph-deploy"' EXIT - -# if we start up as ./mkcephfs, assume everything else is in the -# current directory too. -if [ `dirname $0` = "." ] && [ $PWD != "/etc/init.d" ]; then - BINDIR=. - LIBDIR=. - ETCDIR=. -else - BINDIR=@bindir@ - LIBDIR=@libdir@/ceph - ETCDIR=@sysconfdir@/ceph -fi - -usage_exit() { - echo "usage: $0 -a -c ceph.conf [-k adminkeyring] [--mkfs]" - echo " to generate a new ceph cluster on all nodes; for advanced usage see man page" - echo " ** be careful, this WILL clobber old data; check your ceph.conf carefully **" - exit -} - -. $LIBDIR/ceph_common.sh - - -allhosts=0 -mkfs=0 -preparemonmap=0 -prepareosdfs="" -initdaemon="" -initdaemons="" -preparemon=0 - -numosd= -useosdmap= -usecrushmapsrc= -usecrushmap= -verbose=0 -adminkeyring="" -conf="" -dir="" -moreargs="" -auto_action=0 -manual_action=0 -nocopyconf=0 - -while [ $# -ge 1 ]; do -case $1 in - -v ) - verbose=1; - ;; - --dir | -d) - [ -z "$2" ] && usage_exit - shift - dir=$1 - ;; - --allhosts | -a) - allhosts=1 - auto_action=1 - ;; - --prepare-monmap) - preparemonmap=1 - manual_action=1 - ;; - --prepare-osdfs) - [ -z "$2" ] && usage_exit - shift - prepareosdfs=$1 - manual_action=1 - ;; - --init-daemon) - [ -z "$2" ] && usage_exit - shift - initdaemon=$1 - manual_action=1 - ;; - --init-local-daemons) - [ -z "$2" ] && usage_exit - shift - initlocaldaemons=$1 - manual_action=1 - ;; - --prepare-mon) - preparemon=1 - manual_action=1 - ;; - --mkbtrfs | --mkfs) - mkfs=1 - ;; - --no-copy-conf) - nocopyconf=1 - ;; - --conf | -c) - [ -z "$2" ] && usage_exit - shift - conf=$1 - ;; - --numosd) - [ -z "$2" ] && usage_exit - shift - numosd=$1 - moreargs="$moreargs --numosd $1" - ;; - --osdmap) - [ -z "$2" ] && usage_exit - shift - useosdmap=$1 - moreargs="$moreargs --osdmap $1" - ;; - --crushmapsrc) - [ -z "$2" ] && usage_exit - shift - usecrushmapsrc=$1 - moreargs="$moreargs --crushmapsrc $1" - ;; - --crushmap) - [ -z "$2" ] && usage_exit - shift - usecrushmap=$1 - moreargs="$moreargs --crushmap $1" - ;; - -k) - [ -z "$2" ] && usage_exit - shift - adminkeyring=$1 - ;; - *) - echo unrecognized option \'$1\' - usage_exit - ;; -esac -shift -done - - -[ -z "$conf" ] && [ -n "$dir" ] && conf="$dir/conf" - -if [ $manual_action -eq 0 ]; then - if [ $auto_action -eq 0 ]; then - echo "You must specify an action. See man page." - usage_exit - fi -elif [ $auto_action -eq 1 ]; then - echo "The -a option cannot be combined with other subcommands; see man page." - usage_exit -fi - -### prepare-monmap ### - -if [ $preparemonmap -eq 1 ]; then - echo "preparing monmap in $dir/monmap" - - # first, make a list of monitors - mons=`$CCONF -c $conf -l mon | egrep -v '^mon$' | sort` - args="" - - type="mon" - for name in $mons; do - id=`echo $name | cut -c 4- | sed 's/^\\.//'` - get_conf addr "" "mon addr" - if [ -z "$addr" ]; then - echo "$0: monitor $name has no address defined." 1>&2 - exit 1 - fi - args=$args" --add $id $addr" - done - - if [ -z "$args" ]; then - echo "$0: no monitors found in config, aborting." 1>&2 - exit 1 - fi - - # build monmap - monmap="$dir/monmap" - echo $BINDIR/monmaptool --create --clobber $args --print $monmap || exit 1 - $BINDIR/monmaptool --create --clobber $args --print $monmap || exit 1 - - # copy conf - cp $conf $dir/conf - - exit 0 -fi - - -### init-daemon ### - -if [ -n "$initdaemon" ]; then - name=$initdaemon - type=`echo $name | cut -c 1-3` # e.g. 'mon', if $name is 'mon1' - id=`echo $name | cut -c 4- | sed 's/^\\.//'` - name="$type.$id" - - # create /var/run/ceph (or wherever pid file and/or admin socket live) - get_conf pid_file "/var/run/ceph/$name.pid" "pid file" - rundir=`dirname $pid_file` - if [ "$rundir" != "." ] && [ ! -d "$rundir" ]; then - mkdir -p $rundir - fi - get_conf asok_file "/var/run/ceph/$name.asok" "admin socket" - rundir=`dirname $asok_file` - if [ "$rundir" != "." ] && [ ! -d "$rundir" ]; then - mkdir -p $rundir - fi - - if [ $type = "osd" ]; then - $BINDIR/ceph-osd -c $conf --monmap $dir/monmap -i $id --mkfs --mkkey - - get_conf osd_data "/var/lib/ceph/osd/ceph-$id" "osd data" - get_conf osd_keyring "$osd_data/keyring" "keyring" - $BINDIR/ceph-authtool -p -n $name $osd_keyring > $dir/key.$name - fi - - if [ $type = "mds" ]; then - get_conf mds_data "/var/lib/ceph/mds/ceph-$id" "mds data" - get_conf mds_keyring "$mds_data/keyring" "keyring" - test -d $mds_data || mkdir -p $mds_data - echo "creating private key for $name keyring $mds_keyring" - $BINDIR/ceph-authtool --create-keyring --gen-key -n $name $mds_keyring - $BINDIR/ceph-authtool -p -n $name $mds_keyring > $dir/key.$name - fi - - if [ $type = "mon" ]; then - get_conf mon_data "/var/lib/ceph/mon/ceph-$id" "mon data" - mkdir -p "$mon_data" - if ! find "$mon_data" -maxdepth 0 -empty | read foo; then - echo "ERROR: $name mon_data directory $mon_data is not empty." - echo " Please make sure that it is empty before running mkcephfs." - exit 1 - fi - $BINDIR/ceph-mon -c $conf --mkfs -i $id --monmap $dir/monmap --osdmap $dir/osdmap -k $dir/keyring.mon - fi - - exit 0 -fi - - -## init-local-daemons ## - -if [ -n "$initlocaldaemons" ]; then - get_name_list "$initlocaldaemons" - for name in $what; do - type=`echo $name | cut -c 1-3` # e.g. 'mon', if $name is 'mon1' - id=`echo $name | cut -c 4- | sed 's/^\\.//'` - num=$id - name="$type.$id" - - check_host || continue - - $0 -d $dir --init-daemon $name - done - exit 0 -fi - - -### prepare-osdfs ### - -if [ -n "$prepareosdfs" ]; then - name=$prepareosdfs - type=`echo $name | cut -c 1-3` # e.g. 'mon', if $name is 'mon1' - id=`echo $name | cut -c 4- | sed 's/^\\.//'` - name="$type.$id" - - get_conf osd_data "/var/lib/ceph/osd/ceph-$id" "osd data" - get_conf osd_journal "$osd_data/journal" "osd journal" - get_conf fs_path "$osd_data" "fs path" # mount point defaults so osd data - get_conf fs_devs "" "devs" - get_conf fs_type "" "osd mkfs type" - - if [ -z "$fs_devs" ]; then - # try to fallback to old keys - get_conf tmp_btrfs_devs "" "btrfs devs" - if [ -n "$tmp_btrfs_devs" ]; then - fs_devs="$tmp_btrfs_devs" - else - echo "no devs defined for $name" - exit 1 - fi - fi - if [ -z "$fs_type" ]; then - # try to fallback to to old keys - get_conf tmp_devs "" "btrfs devs" - if [ -n "$tmp_devs" ]; then - fs_type="btrfs" - else - echo No filesystem type defined! - exit 1 - fi - fi - - first_dev=`echo $fs_devs | cut '-d ' -f 1` - get_conf fs_opt "" "osd mount options $fs_type" - if [ -z "$fs_opt" ]; then - if [ "$fs_type" = "btrfs" ]; then - #try to fallback to old keys - get_conf fs_opt "" "btrfs options" - fi - if [ -z "$fs_opt" ]; then - if [ "$fs_type" = "xfs" ]; then - fs_opt="rw,noatime,inode64" - else - #fallback to use at least rw,noatime - fs_opt="rw,noatime" - fi - fi - fi - [ -n "$fs_opt" ] && fs_opt="-o $fs_opt" - get_conf osd_user "root" "user" - - if [ -n "$osd_journal" ] && echo "fs_devs" | grep -q -w "$osd_journal" ; then - echo "ERROR: osd journal device ($osd_journal) also used by devs ($fs_devs)" - exit 1 - fi - - test -d $osd_data || mkdir -p $osd_data - - if [ -n "$osd_journal" ]; then - test -d $osd_journal || mkdir -p `dirname $osd_journal` - fi - - umount $fs_path || true - for f in $fs_devs ; do - umount $f || true - done - - get_conf mkfs_opt "" "osd mkfs options $fs_type" - if [ "$fs_type" = "xfs" ] && [ -z "$mkfs_opt" ]; then - echo Xfs filesystem found add missing -f mkfs option! - mkfs_opt="-f" - fi - modprobe $fs_type || true - mkfs.$fs_type $mkfs_opt $fs_devs - mount -t $fs_type $fs_opt $first_dev $fs_path - chown $osd_user $fs_path - chmod +w $fs_path - - exit 0 -fi - - - -### prepare-mon ### - -if [ $preparemon -eq 1 ]; then - - if [ -n "$useosdmap" ]; then - echo "Using osdmap $useosdmap" - cp $useosdmap $dir/osdmap - else - echo "Building generic osdmap from $conf" - $BINDIR/osdmaptool --create-from-conf $dir/osdmap -c $conf - fi - - # import crush map? - get_conf crushmapsrc "" "crush map src" mon global - if [ -n "$crushmapsrc" ]; then - echo Compiling crush map from $crushmapsrc to $dir/crushmap - $BINDIR/crushtool -c $crushmapsrc -o $dir/crushmap - fi - get_conf crushmap "$usecrushmap" "crush map" mon global - if [ -n "$crushmap" ]; then - echo Importing crush map from $crushmap - $BINDIR/osdmaptool --import-crush $crushmap $dir/osdmap - fi - - # admin keyring - echo Generating admin key at $dir/keyring.admin - $BINDIR/ceph-authtool --create-keyring --gen-key -n client.admin $dir/keyring.admin - - # mon keyring - echo Building initial monitor keyring - cp $dir/keyring.admin $dir/keyring.mon - $BINDIR/ceph-authtool -n client.admin --set-uid=0 \ - --cap mon 'allow *' \ - --cap osd 'allow *' \ - --cap mds 'allow' \ - $dir/keyring.mon - - $BINDIR/ceph-authtool --gen-key -n mon. $dir/keyring.mon --cap mon 'allow *' - - for k in $dir/key.* - do - kname=`echo $k | sed 's/.*key\.//'` - ktype=`echo $kname | cut -c 1-3` - kid=`echo $kname | cut -c 4- | sed 's/^\\.//'` - kname="$ktype.$kid" - secret=`cat $k` - if [ "$ktype" = "osd" ]; then - $BINDIR/ceph-authtool -n $kname --add-key $secret $dir/keyring.mon \ - --cap mon 'allow rwx' \ - --cap osd 'allow *' - fi - if [ "$ktype" = "mds" ]; then - $BINDIR/ceph-authtool -n $kname --add-key $secret $dir/keyring.mon \ - --cap mon "allow rwx" \ - --cap osd 'allow *' \ - --cap mds 'allow' - fi - done - - exit 0 -fi - - - - - -### do everything via ssh ### - -if [ $allhosts -eq 1 ]; then - - verify_conf - - # do it all - if [ -z "$dir" ]; then - dir=`mktemp -d -t mkcephfs.XXXXXXXXXX` || exit 1 - echo "temp dir is $dir" - trap "rm -rf $dir ; exit" INT TERM EXIT - fi - - $0 --prepare-monmap -d $dir -c $conf - - # osd, mds - get_name_list "osd mds" - for name in $what; do - type=`echo $name | cut -c 1-3` # e.g. 'mon', if $name is 'mon1' - id=`echo $name | cut -c 4- | sed 's/^\\.//'` - num=$id - name="$type.$id" - - check_host || continue - - if [ -n "$ssh" ]; then - rdir=`mktemp -u /tmp/mkfs.ceph.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX` || exit 1 - echo pushing conf and monmap to $host:$rdir - do_cmd "mkdir -p $rdir" - scp -q $dir/conf $host:$rdir - scp -q $dir/monmap $host:$rdir - - if [ $nocopyconf -eq 0 ]; then - # also put conf at /etc/ceph/ceph.conf - scp -q $dir/conf $host:/etc/ceph/ceph.conf - fi - else - rdir=$dir - - if [ $nocopyconf -eq 0 ]; then - # also put conf at /etc/ceph/ceph.conf - cp $dir/conf /etc/ceph/ceph.conf - fi - fi - - if [ $mkfs -eq 1 ] && [ "$type" = "osd" ]; then - do_root_cmd "$0 -d $rdir --prepare-osdfs $name" - fi - - do_root_cmd "$0 -d $rdir --init-daemon $name" - - # collect the key - if [ -n "$ssh" ]; then - echo collecting $name key - scp -q $host:$rdir/key.$name $dir - #cleanup no longer need rdir - do_cmd "rm -r $rdir" - fi - done - - # prepare monitors - $0 -d $dir --prepare-mon $moreargs - - # mons - get_name_list "mon" - for name in $what; do - type=`echo $name | cut -c 1-3` # e.g. 'mon', if $name is 'mon1' - id=`echo $name | cut -c 4- | sed 's/^\\.//'` - num=$id - name="$type.$id" - - check_host || continue - - if [ -n "$ssh" ]; then - rdir=`mktemp -u /tmp/mkfs.ceph.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX` || exit 1 - echo pushing everything to $host - ssh $host mkdir -p $rdir - scp -q $dir/* $host:$rdir - - if [ $nocopyconf -eq 0 ]; then - # also put conf at /etc/ceph/ceph.conf - scp -q $dir/conf $host:/etc/ceph/ceph.conf - fi - else - rdir=$dir - - if [ $nocopyconf -eq 0 ]; then - # also put conf at /etc/ceph/ceph.conf - cp $dir/conf /etc/ceph/ceph.conf - fi - fi - - do_root_cmd "$0 -d $rdir --init-daemon $name" - - if [ -n "$ssh" ]; then - #cleanup no longer need rdir - do_cmd "rm -r $rdir" - fi - done - - # admin keyring - if [ -z "$adminkeyring" ]; then - get_conf adminkeyring "/etc/ceph/keyring" "keyring" global - fi - echo "placing client.admin keyring in $adminkeyring" - cp $dir/keyring.admin $adminkeyring - - exit 0 -fi - diff --git a/src/sample.ceph.conf b/src/sample.ceph.conf index 139a05cf2162..9039b0d55433 100644 --- a/src/sample.ceph.conf +++ b/src/sample.ceph.conf @@ -283,14 +283,11 @@ ;osd recovery max active = 3 - # You may add settings for mkcephfs so that it will create and mount - # the file system for you. Remove the comment `#` character for + # You may add settings for ceph-deploy so that it will create and mount + # the correct type of file system. Remove the comment `#` character for # the following settings and replace the values in parenthesis # with appropriate values, or leave the following settings commented - # out to accept the default values. You must specify the --mkfs - # option with mkcephfs in order for the deployment script to - # utilize the following settings, and you must define the 'devs' - # option for each osd instance; see below. + # out to accept the default values. #osd mkfs type = {fs-type} #osd mkfs options {fs-type} = {mkfs options} # default for xfs is "-f" @@ -347,18 +344,11 @@ ;[osd.0] ; host = delta - # If 'devs' is not specified, you're responsible for - # setting up the 'osd data' dir (e.g. `mkdir /var/lib/ceph/osd/ceph-0`) - ;devs = /dev/sdx - ;[osd.1] ; host = epsilon -; devs = /dev/sdy ;[osd.2] ; host = zeta -; devs = /dev/sdx ;[osd.3] ; host = eta -; devs = /dev/sdy -- 2.47.3