mirror of
https://github.com/torvalds/linux.git
synced 2024-11-06 20:21:57 +00:00
9b60e70b3b
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>
99 lines
2.5 KiB
Plaintext
99 lines
2.5 KiB
Plaintext
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: <mon ip addr> <options> <pool name> <rbd image name> [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 <dev-id>
|
|
will be assigned for any registered block device. If snapshot is used, it will
|
|
be mapped read-only.
|
|
|
|
Removal of a device:
|
|
|
|
$ echo <dev-id> > /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/<dev-id>/
|
|
--------------------------------------------
|
|
|
|
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).
|