mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
4.6 KiB
120 lines
4.6 KiB
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. |
|
|
|
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.
|
|
|