123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- What: /sys/class/rnbd-client
- Date: Feb 2020
- KernelVersion: 5.7
- Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
- Description: Provide information about RNBD-client.
- All sysfs files that are not read-only provide the usage information on read:
- Example::
- # cat /sys/class/rnbd-client/ctl/map_device
- > Usage: echo "sessname=<name of the rtrs session> path=<[srcaddr,]dstaddr>
- > [path=<[srcaddr,]dstaddr>] device_path=<full path on remote side>
- > [access_mode=<ro|rw|migration>] > map_device
- >
- > addr ::= [ ip:<ipv4> | ip:<ipv6> | gid:<gid> ]
- What: /sys/class/rnbd-client/ctl/map_device
- Date: Feb 2020
- KernelVersion: 5.7
- Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
- Description: Expected format is the following::
- sessname=<name of the rtrs session>
- path=<[srcaddr,]dstaddr> [path=<[srcaddr,]dstaddr> ...]
- device_path=<full path on remote side>
- [access_mode=<ro|rw|migration>]
- Where:
- sessname:
- accepts a string not bigger than 256 chars, which identifies
- a given session on the client and on the server.
- I.e. "clt_hostname-srv_hostname" could be a natural choice.
- path:
- describes a connection between the client and the server by
- specifying destination and, when required, the source address.
- The addresses are to be provided in the following format::
- ip:<IPv6>
- ip:<IPv4>
- gid:<GID>
- for example::
- path=ip:10.0.0.66
- The single addr is treated as the destination.
- The connection will be established to this server from any client IP address.
- ::
- path=ip:10.0.0.66,ip:10.0.1.66
- First addr is the source address and the second is the destination.
- If multiple "path=" options are specified multiple connection
- will be established and data will be sent according to
- the selected multipath policy (see RTRS mp_policy sysfs entry description).
- device_path:
- Path to the block device on the server side. Path is specified
- relative to the directory on server side configured in the
- 'dev_search_path' module parameter of the rnbd_server.
- The rnbd_server prepends the <device_path> received from client
- with <dev_search_path> and tries to open the
- <dev_search_path>/<device_path> block device. On success,
- a /dev/rnbd<N> device file, a /sys/block/rnbd<N>/
- directory and an entry in /sys/class/rnbd-client/ctl/devices
- will be created.
- If 'dev_search_path' contains '%SESSNAME%', then each session can
- have different devices namespace, e.g. server was configured with
- the following parameter "dev_search_path=/run/rnbd-devs/%SESSNAME%",
- client has this string "sessname=blya device_path=sda", then server
- will try to open: /run/rnbd-devs/blya/sda.
- access_mode:
- the access_mode parameter specifies if the device is to be
- mapped as "ro" read-only or "rw" read-write. The server allows
- a device to be exported in rw mode only once. The "migration"
- access mode has to be specified if a second mapping in read-write
- mode is desired.
- By default "rw" is used.
- nr_poll_queues
- specifies the number of poll-mode queues. If the IO has HIPRI flag,
- the block-layer will send the IO via the poll-mode queue.
- For fast network and device the polling is faster than interrupt-base
- IO handling because it saves time for context switching, switching to
- another process, handling the interrupt and switching back to the
- issuing process.
- Set -1 if you want to set it as the number of CPUs
- By default rnbd client creates only irq-mode queues.
- NOTICE: MUST make a unique session for a device using the poll-mode queues.
- Exit Codes:
- If the device is already mapped it will fail with EEXIST. If the input
- has an invalid format it will return EINVAL. If the device path cannot
- be found on the server, it will fail with ENOENT.
- Finding device file after mapping
- ---------------------------------
- After mapping, the device file can be found by:
- o The symlink /sys/class/rnbd-client/ctl/devices/<device_id>@<session_name>
- points to /sys/block/<dev-name>. The last part of the symlink destination
- is the same as the device name. By extracting the last part of the
- path the path to the device /dev/<dev-name> can be build.
- * /dev/block/$(cat /sys/class/rnbd-client/ctl/devices/<device_id>@<session_name>/dev)
- How to find the <device_id> of the device is described on the next
- section.
- What: /sys/class/rnbd-client/ctl/devices/
- Date: Feb 2020
- KernelVersion: 5.7
- Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
- Description: For each device mapped on the client a new symbolic link is created as
- /sys/class/rnbd-client/ctl/devices/<device_id>@<session_name>, which points
- to the block device created by rnbd (/sys/block/rnbd<N>/).
- The <device_id> of each device is created as follows:
- - If the 'device_path' provided during mapping contains slashes ("/"),
- they are replaced by exclamation mark ("!") and used as as the
- <device_id>. Otherwise, the <device_id> will be the same as the
- "device_path" provided.
|