linux-yocto/Documentation/ABI/testing/sysfs-bus-rbd
Ilya Dryomov 9b60e70b3b rbd: add support for single-major device number allocation scheme
Currently each rbd device is allocated its own major number, which
leads to a hard limit of 230-250 images mapped at once.  This commit
adds support for a new single-major device number allocation scheme,
which is hidden behind a new single_major boolean module parameter and
is disabled by default for backwards compatibility reasons.  (Old
userspace cannot correctly unmap images mapped under single-major
scheme and would essentially just unmap a random image, if that.)

$ rbd showmapped
id pool image snap device
0  rbd  b100  -    /dev/rbd0
1  rbd  b101  -    /dev/rbd1
2  rbd  b102  -    /dev/rbd2
3  rbd  b103  -    /dev/rbd3

Old scheme (modprobe rbd):

$ ls -l /dev/rbd*
brw-rw---- 1 root disk 253, 0 Dec 10 12:24 /dev/rbd0
brw-rw---- 1 root disk 252, 0 Dec 10 12:28 /dev/rbd1
brw-rw---- 1 root disk 252, 1 Dec 10 12:28 /dev/rbd1p1
brw-rw---- 1 root disk 252, 2 Dec 10 12:28 /dev/rbd1p2
brw-rw---- 1 root disk 252, 3 Dec 10 12:28 /dev/rbd1p3
brw-rw---- 1 root disk 251, 0 Dec 10 12:28 /dev/rbd2
brw-rw---- 1 root disk 251, 1 Dec 10 12:28 /dev/rbd2p1
brw-rw---- 1 root disk 250, 0 Dec 10 12:24 /dev/rbd3

New scheme (modprobe rbd single_major=Y):

$ ls -l /dev/rbd*
brw-rw---- 1 root disk 253,   0 Dec 10 12:30 /dev/rbd0
brw-rw---- 1 root disk 253, 256 Dec 10 12:30 /dev/rbd1
brw-rw---- 1 root disk 253, 257 Dec 10 12:30 /dev/rbd1p1
brw-rw---- 1 root disk 253, 258 Dec 10 12:30 /dev/rbd1p2
brw-rw---- 1 root disk 253, 259 Dec 10 12:30 /dev/rbd1p3
brw-rw---- 1 root disk 253, 512 Dec 10 12:30 /dev/rbd2
brw-rw---- 1 root disk 253, 513 Dec 10 12:30 /dev/rbd2p1
brw-rw---- 1 root disk 253, 768 Dec 10 12:30 /dev/rbd3

(major 253 was assigned dynamically at module load time)

The new limit is 4096 images mapped at once, and it comes from the fact
that, as before, 256 minor numbers are reserved for each mapping.
(A follow-up commit changes the number of minors reserved and the way
we deal with partitions over that number.)

If single_major is set to true, two new sysfs interfaces show up:
/sys/bus/rbd/{add,remove}_single_major.  These are to be used instead
of /sys/bus/rbd/{add,remove}, which are disabled for backwards
compatibility reasons outlined above.

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
2013-12-31 20:31:59 +02:00

2.5 KiB

What: /sys/bus/rbd/ Date: November 2010 Contact: Yehuda Sadeh yehuda@newdream.net, Sage Weil sage@newdream.net Description:

Being used for adding and removing rbd block devices.

Usage: [snap name]

$ echo "192.168.0.1 name=admin rbd foo" > /sys/bus/rbd/add

The snapshot name can be "-" or omitted to map the image read/write. A will be assigned for any registered block device. If snapshot is used, it will be mapped read-only.

Removal of a device:

$ echo > /sys/bus/rbd/remove

What: /sys/bus/rbd/add_single_major Date: December 2013 KernelVersion: 3.14 Contact: Sage Weil sage@inktank.com Description: Available only if rbd module is inserted with single_major parameter set to true. Usage is the same as for /sys/bus/rbd/add. If present, should be used instead of the latter: any attempts to use /sys/bus/rbd/add if /sys/bus/rbd/add_single_major is available will fail for backwards compatibility reasons.

What: /sys/bus/rbd/remove_single_major Date: December 2013 KernelVersion: 3.14 Contact: Sage Weil sage@inktank.com Description: Available only if rbd module is inserted with single_major parameter set to true. Usage is the same as for /sys/bus/rbd/remove. If present, should be used instead of the latter: any attempts to use /sys/bus/rbd/remove if /sys/bus/rbd/remove_single_major is available will fail for backwards compatibility reasons.

Entries under /sys/bus/rbd/devices//

client_id

The ceph unique client id that was assigned for this specific session.

features

A hexadecimal encoding of the feature bits for this image.

major

The block device major number.

minor

The block device minor number.  (December 2013, since 3.14.)

name

The name of the rbd image.

image_id

The unique id for the rbd image.  (For rbd image format 1
this is empty.)

pool

The name of the storage pool where this rbd image resides.
An rbd image name is unique within its pool.

pool_id

The unique identifier for the rbd image's pool.  This is
a permanent attribute of the pool.  A pool's id will never
change.

size

The size (in bytes) of the mapped block device.

refresh

Writing to this file will reread the image header data and set
all relevant datastructures accordingly.

current_snap

The current snapshot for which the device is mapped.

parent

Information identifying the pool, image, and snapshot id for
the parent image in a layered rbd image (format 2 only).