From: Nathan Cutler Date: Thu, 15 Dec 2016 17:23:41 +0000 (+0100) Subject: doc: add verbiage to rbdmap manpage X-Git-Tag: v10.2.8~114^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=da4e0b56c60f4bc2c67daa5dfe4d5255ab8bfc03;p=ceph.git doc: add verbiage to rbdmap manpage Fixes: http://tracker.ceph.com/issues/18262 Signed-off-by: Nathan Cutler (cherry picked from commit fbac4a081547d83bb2436cd60b0b7ee7250f8a6c) --- diff --git a/doc/man/8/rbdmap.rst b/doc/man/8/rbdmap.rst index 145a1e2cbfc..cbb57df541d 100644 --- a/doc/man/8/rbdmap.rst +++ b/doc/man/8/rbdmap.rst @@ -16,16 +16,87 @@ Synopsis Description =========== -**rbdmap** is a shell script that can be run manually by the system -administrator at any time, or automatically at boot time by the init system -(sysvinit, upstart, systemd). The script looks for an environment variable -``RBDMAPFILE``, which defaults to ``/etc/ceph/rbdmap``. This file is -expected to contain a list of RBD images and, possibly, parameters to be -passed to the underlying ``rbd`` command. The syntax of -``/etc/ceph/rbdmap`` is described in the comments at the top of that file. - -The script mounts devices after mapping, and unmounts them before -unmapping. +**rbdmap** is a shell script that automates ``rbd map`` and ``rbd unmap`` +operations on one or more RBD (RADOS Block Device) images. While the script can be +run manually by the system administrator at any time, the principal use case is +automatic mapping/mounting of RBD images at boot time (and unmounting/unmapping +at shutdown), as triggered by the init system (a systemd unit file, +``rbdmap.service`` is included with the ceph-common package for this purpose). + +The script takes a single argument, which can be either "map" or "unmap". +In either case, the script parses a configuration file (defaults to ``/etc/ceph/rbdmap``, +but can be overrided via an environment variable ``RBDMAPFILE``). Each line +of the configuration file corresponds to an RBD image which is to be mapped, or +unmapped. + +The configuration file format is:: + + IMAGESPEC RBDOPTS + +where ``IMAGESPEC`` should be specified as ``POOLNAME/IMAGENAME`` (the pool +name, a forward slash, and the image name), or merely ``IMAGENAME``, in which +case the ``POOLNAME`` defaults to "rbd". ``RBDOPTS`` is an optional list of +parameters to be passed to the underlying ``rbd map`` command. These parameters +and their values should be specified as a comma-separated string:: + + PARAM1=VAL1,PARAM2=VAL2,...,PARAMN=VALN + +This will cause the script to issue an ``rbd map`` command like the following:: + + rbd map POOLNAME/IMAGENAME --PARAM1 VAL1 --PARAM2 VAL2 + +(See the ``rbd`` manpage for a full list of possible options.) + +When run as ``rbdmap map``, the script parses the configuration file, and for +each RBD image specified attempts to first map the image (using the ``rbd map`` +command) and, second, to mount the image. + +When run as ``rbd unmap``, the script parses the configuration file, and +attempts to first unmount, and then unmap, each image specified. + +If successful, the ``rbd map`` operation maps the image to a ``/dev/rbdX`` +device, at which point a udev rule is triggered to create a friendly device +name symlink, ``/dev/rbd/POOLNAME/IMAGENAME``, pointing to the real mapped +device. + +In order for mounting/unmounting to succeed, the friendly device name must +have a corresponding entry in ``/etc/fstab``. + +When writing ``/etc/fstab`` entries for RBD images, it's a good idea to specify +the "noauto" (or "nofail") mount option. This prevents the init system from +trying to mount the device too early - before the device in question even +exists. (Since ``rbdmap.service`` +executes a shell script, it is typically triggered quite late in the boot +sequence.) + + +Examples +======== + +Example ``/etc/ceph/rbdmap`` for two RBD images called "bar1" and "bar2", both +in pool "foopool":: + + foopool/bar1 id=admin,keyring=/etc/ceph/ceph.client.admin.keyring + foopool/bar2 id=admin,keyring=/etc/ceph/ceph.client.admin.keyring + +Each line in the file contains two strings: the image spec and the options to +be passed to ``rbd map``. These two lines get transformed into the following +commands:: + + rbd map foopool/bar1 --id admin --keyring /etc/ceph/ceph.client.admin.keyring + rbd map foopool/bar2 --id admin --keyring /etc/ceph/ceph.client.admin.keyring + +If the images had XFS filesystems on them, the corresponding ``/etc/fstab`` +entries might look like this:: + + /dev/rbd/foopool/bar1 /mnt/bar1 xfs noauto 0 0 + /dev/rbd/foopool/bar2 /mnt/bar2 xfs noauto 0 0 + +After creating the images and populating the ``/etc/ceph/rbdmap`` file, making +the images get automatically mapped and mounted at boot is just a matter of +enabling that unit:: + + systemctl enable rbdmap.service Options