123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- ********************************
- RDMA Network Block Device (RNBD)
- ********************************
- Introduction
- ------------
- RNBD (RDMA Network Block Device) is a pair of kernel modules
- (client and server) that allow for remote access of a block device on
- the server over RTRS protocol using the RDMA (InfiniBand, RoCE, iWARP)
- transport. After being mapped, the remote block devices can be accessed
- on the client side as local block devices.
- I/O is transferred between client and server by the RTRS transport
- modules. The administration of RNBD and RTRS modules is done via
- sysfs entries.
- Requirements
- ------------
- RTRS kernel modules
- Quick Start
- -----------
- Server side:
- # modprobe rnbd_server
- Client side:
- # modprobe rnbd_client
- # echo "sessname=blya path=ip:10.50.100.66 device_path=/dev/ram0" > \
- /sys/devices/virtual/rnbd-client/ctl/map_device
- Where "sessname=" is a session name, a string to identify the session
- on client and on server sides; "path=" is a destination IP address or
- a pair of a source and a destination IPs, separated by comma. Multiple
- "path=" options can be specified in order to use multipath (see RTRS
- description for details); "device_path=" is the block device to be
- mapped from the server side. After the session to the server machine is
- established, the mapped device will appear on the client side under
- /dev/rnbd<N>.
- RNBD-Server Module Parameters
- =============================
- dev_search_path
- ---------------
- When a device is mapped from the client, the server generates the path
- to the block device on the server side by concatenating dev_search_path
- and the "device_path" that was specified in the map_device operation.
- The default dev_search_path is: "/".
- dev_search_path option can also contain %SESSNAME% in order to provide
- different device namespaces for different sessions. See "device_path"
- option for details.
- ============================
- Protocol (rnbd/rnbd-proto.h)
- ============================
- 1. Before mapping first device from a given server, client sends an
- RNBD_MSG_SESS_INFO to the server. Server responds with
- RNBD_MSG_SESS_INFO_RSP. Currently the messages only contain the protocol
- version for backward compatibility.
- 2. Client requests to open a device by sending RNBD_MSG_OPEN message. This
- contains the path to the device and access mode (read-only or writable).
- Server responds to the message with RNBD_MSG_OPEN_RSP. This contains
- a 32 bit device id to be used for IOs and device "geometry" related
- information: side, max_hw_sectors, etc.
- 3. Client attaches RNBD_MSG_IO to each IO message send to a device. This
- message contains device id, provided by server in his rnbd_msg_open_rsp,
- sector to be accessed, read-write flags and bi_size.
- 4. Client closes a device by sending RNBD_MSG_CLOSE which contains only the
- device id provided by the server.
- =========================================
- Contributors List(in alphabetical order)
- =========================================
- Danil Kipnis <[email protected]>
- Fabian Holler <[email protected]>
- Guoqing Jiang <[email protected]>
- Jack Wang <[email protected]>
- Kleber Souza <[email protected]>
- Lutz Pogrell <[email protected]>
- Milind Dumbare <[email protected]>
- Roman Penyaev <[email protected]>
- Swapnil Ingle <[email protected]>
|