134 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| What:		/sys/class/rnbd-client
 | |
| Date:		Feb 2020
 | |
| KernelVersion:	5.7
 | |
| Contact:	Jack Wang <jinpu.wang@cloud.ionos.com> Danil Kipnis <danil.kipnis@cloud.ionos.com>
 | |
| 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 <jinpu.wang@cloud.ionos.com> Danil Kipnis <danil.kipnis@cloud.ionos.com>
 | |
| 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 <jinpu.wang@cloud.ionos.com> Danil Kipnis <danil.kipnis@cloud.ionos.com>
 | |
| 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.
 |