Skip to content

Commit b8df0c0

Browse files
caroavzdover23
authored andcommitted
doc/rbd: Update nvme documentation
Signed-off-by: Aviv Caro <[email protected]> Update nvmeof-requirements.rst Signed-off-by: Aviv Caro <[email protected]> Update nvmeof-initiator-linux.rst Signed-off-by: Aviv Caro <[email protected]> Update nvmeof-initiator-esx.rst Signed-off-by: Aviv Caro <[email protected]> Update nvmeof-target-configure.rst Signed-off-by: Aviv Caro <[email protected]> doc/rbd: fix broken .rst Fix .rst errors introduced in ceph#61477. This commit will be squashed. Signed-off-by: Zac Dover <[email protected]>
1 parent 3914f86 commit b8df0c0

File tree

5 files changed

+83
-44
lines changed

5 files changed

+83
-44
lines changed

doc/rbd/nvmeof-initiator-esx.rst

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ The following instructions will use the default vSphere web client and esxcli.
3939

4040
esxcli nvme adapter list
4141

42-
#. Discover NVMe-oF subsystems:
42+
#. Optional: Discover NVMe-oF subsystems:
4343

4444
.. prompt:: bash #
4545

@@ -48,8 +48,10 @@ The following instructions will use the default vSphere web client and esxcli.
4848
#. Connect to NVME-oF gateway subsystem:
4949

5050
.. prompt:: bash #
51-
52-
esxcli nvme connect -a NVME_TCP_ADAPTER -i GATEWAY_IP -p 4420 -s SUBSYSTEM_NQN
51+
52+
esxcli nvme fabrics discover -a NVME_TCP_ADAPTER -i GATEWAY_IP -p 8009 -c
53+
54+
- This command discovers the NVMe-oF gateways in the gateway group and then connects to the gateways providing multipath access
5355

5456
#. List the NVMe/TCP controllers:
5557

doc/rbd/nvmeof-initiator-linux.rst

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,32 +29,53 @@ Installation
2929

3030
.. prompt:: bash #
3131

32-
nvme discover -t tcp -a GATEWAY_IP -s 4420
32+
nvme discover -t tcp -a GATEWAY_IP -s 8009
3333

34-
4. Connect to the NVMe/TCP target:
34+
4. Connect to the NVMe/TCP target. For High-availability use the connect-all command:
3535

3636
.. prompt:: bash #
37-
38-
nvme connect -t tcp -a GATEWAY_IP -n SUBSYSTEM_NQN
37+
38+
nvme connect-all --traddr GATEWAY_IP --transport tcp -l 1800 -s 8009
39+
40+
- '-l 1800' is recommended to allow the initiator to continue trying to connect to GWs for 1800 seconds. This is helpful in cases that the GW is temporarily unavailable for any reason.
41+
42+
- '-s 8009' is the port address of the Discovery controller. The connect-all command will connect to the DC first, and then will use the information it retrns to connect to the GWs.
3943

4044
Next steps
4145
==========
4246

4347
Verify that the initiator is set up correctly:
4448

45-
1. List the NVMe block devices:
49+
1. Verify that the initiator is connected to all NVMe-oF gateways and subsystems in the gateway group
50+
51+
52+
.. prompt:: bash #
53+
54+
nvme list-subsys
55+
56+
example output:
57+
58+
nvme-subsys<X> - NQN=<NQN>
59+
\
60+
+- nvmeX tcp traddr=<GW IP>,trsvcid=4420 live
61+
+- nvmeY tcp traddr=<GW IP>,trsvcid=4420 live
62+
+- nvmeZ tcp traddr=<GW IP>,trsvcid=4420 live
63+
+- nvmeW tcp traddr=<GW IP>,trsvcid=4420 live
64+
65+
66+
2. List the NVMe block devices.
4667

4768
.. prompt:: bash #
4869

4970
nvme list
5071

51-
2. Create a filesystem on the desired device:
72+
3. Create a filesystem on the desired device:
5273

5374
.. prompt:: bash #
5475

5576
mkfs.ext4 NVME_NODE_PATH
5677

57-
3. Mount the filesystem:
78+
4. Mount the filesystem:
5879

5980
.. prompt:: bash #
6081

@@ -64,19 +85,19 @@ Verify that the initiator is set up correctly:
6485

6586
mount NVME_NODE_PATH /mnt/nvmeof
6687

67-
4. List the NVME-oF files:
88+
5. List the NVME-oF files:
6889

6990
.. prompt:: bash #
7091

7192
ls /mnt/nvmeof
7293

73-
5. Create a text file in the ``/mnt/nvmeof`` directory:
94+
6. Create a text file in the ``/mnt/nvmeof`` directory:
7495

7596
.. prompt:: bash #
7697

7798
echo "Hello NVME-oF" > /mnt/nvmeof/hello.text
7899

79-
6. Verify that the file can be accessed:
100+
7. Verify that the file can be accessed:
80101

81102
.. prompt:: bash #
82103

doc/rbd/nvmeof-overview.rst

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,9 @@
44
Ceph NVMe-oF Gateway
55
======================
66

7-
The NVMe-oF Gateway presents an NVMe-oF target that exports
8-
RADOS Block Device (RBD) images as NVMe namespaces. The NVMe-oF protocol allows
9-
clients (initiators) to send NVMe commands to storage devices (targets) over a
10-
TCP/IP network, enabling clients without native Ceph client support to access
11-
Ceph block storage.
7+
Storage administrators can install and configure an NVMe over Fabrics (NVMe-oF) gateways for a Storage Ceph cluster. With Ceph NVMe-oF gateways, you can effectively run a fully integrated block storage infrastructure with all features and benefits of a conventional Storage Area Network (SAN).
128

13-
Each NVMe-oF gateway consists of an `SPDK <https://spdk.io/>`_ NVMe-oF target
14-
with ``bdev_rbd`` and a control daemon. Ceph’s NVMe-oF gateway can be used to
15-
provision a fully integrated block-storage infrastructure with all the features
16-
and benefits of a conventional Storage Area Network (SAN).
9+
The NVMe-oF gateway integrates Storage Ceph with the NVMe over TCP (NVMe/TCP) protocol to provide an NVMe/TCP target that exports RADOS Block Device (RBD) images. The NVMe/TCP protocol allows clients, which are known as initiators, to send NVMe-oF commands to storage devices, which are known as targets, over an Internet Protocol network. Initiators can be Linux clients, VMWare clients, or both. For VMWare clients, the NVMe/TCP volumes are shown as VMFS Datastore and for Linux clients, the NVMe/TCP volumes are shown as block devices.
1710

1811
.. ditaa::
1912
Cluster Network (optional)
@@ -40,6 +33,41 @@ and benefits of a conventional Storage Area Network (SAN).
4033
| +-----------+ |
4134
+--------------------+
4235

36+
============================================
37+
High Availability with NVMe-oF gateway group
38+
============================================
39+
40+
High Availability (HA) provides I/O and control path redundancies for the host initiators. High Availability is also sometimes referred to as failover and failback support. The redundancy that HA creates is critical to protect against one or more gateway failures. With HA, the host can continue the I/O with only the possibility of performance latency until the failed gateways are back and functioning correctly.
41+
42+
NVMe-oF gateways are virtually grouped into gateway groups and the HA domain sits within the gateway group. An NVMe-oF gateway group currently supports eight gateways. Each NVMe-oF gateway in the gateway group can be used as a path to any of the subsystems or namespaces that are defined in that gateway group. HA is effective with two or more gateways in a gateway group.
43+
44+
High Availability is enabled by default. To use High Availability, a minimum of two gateways and listeners must be defined for the subsystems on every GW.
45+
46+
It is important to create redundancy between the host and the gateways. To create a fully redundant network connectivity, be sure that the host has two Ethernet ports that are connected to the gateways over a network with redundancy (for example, two network switches).
47+
48+
The HA feature uses the Active/Standby approach for each namespace. Using Active/Standby means that at any point in time, only one of the NVMe-oF gateways in the group serve I/O from the host to a specific namespace. To properly use all NVMe-oF gateways, each namespace is assigned to a different load-balancing group. The number of load-balancing groups is equal to the number of NVMe-oF gateways in the gateway group.
49+
50+
In case the one or more GWs in the group dies or cannot be seen by the Ceph NVMe-oF monitor, an automatic failover is triggered, and another GW in the group will assume reponsibilty to the load-balancing group of the failed GW(s). That means that there is no disruption to the IO, because another GW will continue serving these namespaces. If the failing GW(s) are showing up again, a failback is automatically triggered.
51+
52+
The NVMe-oF initoator on the host, will also continue trying to connect a failing GW, for the amount of time that was specified in the connect-all command. The recommended amount is 1800 seconds.
53+
54+
================================
55+
Scaling-out with NVMe-oF gateway
56+
================================
57+
58+
The NVMe-oF gateway supports scale-out. NVMe-oF gateway scale-out supports:
59+
Up to four NVMe-oF gateway groups.
60+
Up to eight NVMe-oF gateways in a gateway group.
61+
Up to 128 NVMe-oF subsystems within a gateway group.
62+
Up to 32 hosts per NVMe-oF subsystem.
63+
1024 namespaces per gateway group.
64+
65+
=========================
66+
NVMe-oF gateway Discovery
67+
=========================
68+
69+
Ceph NVMe-oF gateways support Discovery. Each NVMe-oF gateway that runs in the Ceph cluster also runs a Discovery Controller. The Discovery Controller reports all of the Subsystems in the GW group.
70+
4371
.. toctree::
4472
:maxdepth: 1
4573

doc/rbd/nvmeof-requirements.rst

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,9 @@
22
NVME-oF Gateway Requirements
33
============================
44

5-
We recommend that you provision at least two NVMe/TCP gateways on different
6-
nodes to implement a highly-available Ceph NVMe/TCP solution.
5+
- At least 8 GB of RAM dedicated to the GW (on each node running an NVME-oF GW)
6+
- It is hightly recommended to dedicate at least 4 cores to the GW (1 can work but perofrmance will be accordingly)
7+
- For high availability, provision at least 2 GWs in a GW group.
8+
- A minimum a single 10Gb Ethernet link in the Ceph public network for the gateway. For higher performance use 25 or 100 Gb links in the public network.
9+
- Provision at least two NVMe/TCP gateways on different Ceph nodes for highly-availability Ceph NVMe/TCP solution.
710

8-
We recommend at a minimum a single 10Gb Ethernet link in the Ceph public
9-
network for the gateway. For hardware recommendations, see
10-
:ref:`hardware-recommendations` .
11-
12-
.. note:: On the NVMe-oF gateway, the memory footprint is a function of the
13-
number of mapped RBD images and can grow to be large. Plan memory
14-
requirements accordingly based on the number of RBD images to be mapped.

doc/rbd/nvmeof-target-configure.rst

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,10 @@
22
Installing and Configuring NVMe-oF Targets
33
==========================================
44

5-
Traditionally, block-level access to a Ceph storage cluster has been limited to
6-
(1) QEMU and ``librbd`` (which is a key enabler for adoption within OpenStack
7-
environments), and (2) the Linux kernel client. Starting with the Ceph Reef
8-
release, block-level access has been expanded to offer standard NVMe/TCP
9-
support, allowing wider platform usage and potentially opening new use cases.
10-
115
Prerequisites
126
=============
137

14-
- Red Hat Enterprise Linux/CentOS 8.0 (or newer); Linux kernel v4.16 (or newer)
15-
16-
- A working Ceph Reef or later storage cluster, deployed with ``cephadm``
8+
- A working Ceph Tentacle or later storage cluster, deployed with ``cephadm``
179

1810
- NVMe-oF gateways, which can either be colocated with OSD nodes or on dedicated nodes
1911

@@ -68,7 +60,7 @@ To download it use the following command:
6860

6961
.. prompt:: bash #
7062

71-
podman run -it quay.io/ceph/nvmeof-cli:latest --server-address GATEWAY_IP --server-port GATEWAY_PORT 5500 subsystem add --subsystem SUSYSTEM_NQN
63+
podman run -it --rm quay.io/ceph/nvmeof-cli:latest --server-address GATEWAY_IP --server-port GATEWAY_PORT 5500 subsystem add --subsystem SUSYSTEM_NQN
7264

7365
The subsystem NQN is a user defined string, for example ``nqn.2016-06.io.spdk:cnode1``.
7466

@@ -84,7 +76,7 @@ To download it use the following command:
8476

8577
.. prompt:: bash #
8678

87-
podman run -it quay.io/ceph/nvmeof-cli:latest --server-address GATEWAY_IP --server-port GATEWAY_PORT 5500 listener add --subsystem SUBSYSTEM_NQN --gateway-name GATEWAY_NAME --traddr GATEWAY_IP --trsvcid 4420
79+
podman run -it --rm quay.io/ceph/nvmeof-cli:latest --server-address GATEWAY_IP --server-port GATEWAY_PORT 5500 listener add --subsystem SUBSYSTEM_NQN --host-name HOST_NAME --traddr GATEWAY_IP --trsvcid 4420
8880

8981
#. Get the host NQN (NVME Qualified Name) for each host:
9082

@@ -100,13 +92,13 @@ To download it use the following command:
10092

10193
.. prompt:: bash #
10294

103-
podman run -it quay.io/ceph/nvmeof-cli:latest --server-address GATEWAY_IP --server-port GATEWAY_PORT 5500 host add --subsystem SUBSYSTEM_NQN --host "HOST_NQN1, HOST_NQN2"
95+
podman run -it --rm quay.io/ceph/nvmeof-cli:latest --server-address GATEWAY_IP --server-port GATEWAY_PORT 5500 host add --subsystem SUBSYSTEM_NQN --host "HOST_NQN1 HOST_NQN2"
10496

10597
#. List all subsystems configured in the gateway:
10698

10799
.. prompt:: bash #
108100

109-
podman run -it quay.io/ceph/nvmeof-cli:latest --server-address GATEWAY_IP --server-port GATEWAY_PORT 5500 subsystem list
101+
podman run -it --rm quay.io/ceph/nvmeof-cli:latest --server-address GATEWAY_IP --server-port GATEWAY_PORT 5500 subsystem list
110102

111103
#. Create a new NVMe namespace:
112104

0 commit comments

Comments
 (0)