2012-05-31 22:35:33 +00:00
==============================
RBD Kernel Object Operations
==============================
2012-06-19 17:10:51 +00:00
.. important :: To use kernel object operations, you must have a running Ceph cluster.
2012-07-02 15:35:10 +00:00
Load the Ceph RBD Module
------------------------
To map an RBD image to a kernel object, first load the Ceph RBD module::
2012-05-31 22:35:33 +00:00
modprobe rbd
2012-07-03 15:46:14 +00:00
Get a List of RBD Images
------------------------
To mount an RBD image, first return a list of the images. ::
rbd list
2012-07-02 15:35:10 +00:00
Map a Block Device with `` rbd ``
-------------------------------
Use `` rbd `` to map an image name to a kernel object. You must specify the
image name, the pool name, and the client name. If you use `` cephx ``
authentication, you must also specify a secret. ::
2012-08-17 00:10:46 +00:00
sudo rbd map {image-name} --pool {pool-name} --name {client-name}
2012-07-02 15:35:10 +00:00
For example::
2012-08-17 00:10:46 +00:00
sudo rbd map foo --pool rbd myimage --name client.admin
2012-07-02 15:35:10 +00:00
2012-08-17 00:10:46 +00:00
If you use `` cephx `` authentication, you must also specify a secret. It may come from a keyring, a file containing the secret, or be specified explicitly on the command line. ::
2012-07-02 15:35:10 +00:00
2012-08-17 00:10:46 +00:00
sudo rbd map foo --pool rbd myimage --name client.foo --keyring /path/to/keyring
sudo rbd map foo --pool rbd myimage --name client.foo --keyfile /path/to/file
2012-07-02 15:35:10 +00:00
Map a Block Device with `` add ``
-------------------------------
To map an RBD image to a kernel object directly, enter the IP address of
the monitor, the user name, and the RBD image name as follows::
2012-05-31 22:35:33 +00:00
echo "{mon-ip-address} name={user-name} rbd {image-name}" | sudo tee /sys/bus/rbd/add
For example::
echo "10.20.30.40 name=admin rbd foo" | sudo tee /sys/bus/rbd/add
If you use `` cephx `` authentication, you must also specify a secret. ::
echo "10.20.30.40 name=admin,secret=/path/to/secret rbd foo" | sudo tee /sys/bus/rbd/add
A kernel block device resides under the `` /sys/bus/rbd/devices `` directory and
provides the following functions:
+------------------+------------------------------------------------------------+
| Function | Description |
+==================+============================================================+
| `` client_id `` | Returns the client ID of the given device ID. |
+------------------+------------------------------------------------------------+
| `` create_snap `` | Creates a snap from a snap name and a device ID. |
+------------------+------------------------------------------------------------+
| `` current_snap `` | Returns the most recent snap for the given device ID. |
+------------------+------------------------------------------------------------+
| `` major `` | |
+------------------+------------------------------------------------------------+
| `` name `` | Returns the RBD image name of the device ID. |
+------------------+------------------------------------------------------------+
| `` pool `` | Returns the pool source of the device ID. |
+------------------+------------------------------------------------------------+
| `` refresh `` | Refreshes the given device with the SDs. |
+------------------+------------------------------------------------------------+
| `` size `` | Returns the size of the device. |
+------------------+------------------------------------------------------------+
| `` uevent `` | |
+------------------+------------------------------------------------------------+
2012-07-03 15:46:14 +00:00
Show Mapped Block Devices
-------------------------
2012-07-02 15:35:10 +00:00
2012-07-03 15:46:14 +00:00
To show RBD images mapped to kernel block devices with the `` rbd `` command,
specify the `` showmapped `` option. ::
sudo rbd showmapped
2012-07-02 15:35:10 +00:00
Images are mounted as devices sequentially starting from `` 0 `` . To list all
devices mapped to kernel objects, execute the following::
2012-05-31 22:35:33 +00:00
ls /sys/bus/rbd/devices
2012-07-02 15:35:10 +00:00
Unmapping a Block Device
------------------------
2012-05-31 22:35:33 +00:00
2012-07-02 15:35:10 +00:00
To unmap an RBD image with the `` rbd `` command, specify the `` rm `` option
and the device name (i.e., by convention the same as the RBD image name). ::
2012-07-02 15:55:36 +00:00
sudo rbd unmap /dev/rbd/{poolname}/{imagename}
2012-07-02 15:35:10 +00:00
For example::
2012-05-31 22:35:33 +00:00
2012-07-02 15:55:36 +00:00
sudo rbd unmap /dev/rbd/rbd/foo
2012-05-31 22:35:33 +00:00
2012-07-02 15:35:10 +00:00
To unmap an RBD image from a kernel object, specify its index and use `` tee ``
to call `` remove `` as follows, but replace `` {device-number} `` with the number
of the device you want to remove::
2012-05-31 22:35:33 +00:00
2012-07-02 15:35:10 +00:00
echo {device-number} | sudo tee /sys/bus/rbd/remove
2012-05-31 22:35:33 +00:00