Skip to content

Commit 435551f

Browse files
authored
Update docs for PowerStore NVMe (release 2.11.1) (#1280)
1 parent 7896271 commit 435551f

File tree

7 files changed

+1182
-276
lines changed

7 files changed

+1182
-276
lines changed

content/docs/deployment/csmoperator/drivers/powerstore.md

+153-23
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,47 @@ To deploy the Operator, follow the instructions available [here](../../#installa
1313
Note that the deployment of the driver using the operator does not use any Helm charts and the installation and configuration parameters will be slightly different from the one specified via the Helm installer.
1414

1515
### Check existing ContainerStorageModule CRD
16+
1617
User can query for all Dell CSI drivers using the following command:
18+
1719
```bash
1820
kubectl get csm --all-namespaces
1921
```
2022

21-
2223
### Prerequisites
2324

25+
The following are requirements to be met before installing the CSI Driver for Dell PowerStore:
26+
- A Kubernetes or OpenShift cluster (see [supported versions](../../../../csidriver/#features-and-capabilities))
27+
- If you plan to use either the Fibre Channel, iSCSI, NVMe/TCP, or NVMe/FC protocols, refer to either _Fibre Channel requirements_ or _Set up the iSCSI Initiator_ or _Set up the NVMe Initiator_ sections below. You can use NFS volumes without FC, iSCSI, NVMe/TCP, or NVMe/FC configurations.
28+
> You can use either the Fibre Channel (FC), iSCSI, NVMe/TCP, or NVMe/FC protocol, but you do not need all four to be enabled.
29+
30+
> For NVMe support the preferred multipath solution is NVMe native multipathing. The [Dell Host Connectivity Guide](https://elabnavigator.dell.com/vault/pdf/Linux.pdf?key=1725374107988) describes the details of each configuration option.
31+
32+
> If you want to use pre-configured iSCSI/FC hosts be sure to check that they are not part of any host group.
33+
34+
- Linux native multipathing requirements
35+
- Mount propagation is enabled on container runtime that is being used
36+
- If using Snapshot feature, satisfy all Volume Snapshot requirements
37+
- Insecure registries are defined in Docker or other container runtimes, for CSI drivers that are hosted in a non-secure location.
38+
- Ensure that your nodes support mounting NFS volumes if using NFS
39+
40+
2441
#### Fibre Channel requirements
2542

2643
Dell PowerStore supports Fibre Channel communication. If you use the Fibre Channel protocol, ensure that the
2744
following requirement is met before you install the CSI Driver for Dell PowerStore:
28-
- Zoning of the Host Bus Adapters (HBAs) to the Fibre Channel port must be done.
2945

46+
- Zoning of the Host Bus Adapters (HBAs) to the Fibre Channel port must be done.
3047

3148
#### Set up the iSCSI Initiator
49+
3250
The CSI Driver for Dell PowerStore v1.4 and higher supports iSCSI connectivity.
3351

3452
If you use the iSCSI protocol, set up the iSCSI initiators as follows:
53+
3554
- Ensure that the iSCSI initiators are available on both Controller and Worker nodes.
36-
- Kubernetes nodes must have access (network connectivity) to an iSCSI port on the Dell PowerStore array that
55+
56+
- Kubernetes nodes must have network connectivity to an iSCSI port on the Dell PowerStore array that
3757
has IP interfaces. Manually create IP routes for each node that connects to the Dell PowerStore.
3858
- All Kubernetes nodes must have the _iscsi-initiator-utils_ package for CentOS/RHEL or _open-iscsi_ package for Ubuntu installed, and the _iscsid_ service must be enabled and running.
3959
To do this, run the `systemctl enable --now iscsid` command.
@@ -42,15 +62,110 @@ To do this, run the `systemctl enable --now iscsid` command.
4262
For information about configuring iSCSI, see _Dell PowerStore documentation_ on Dell Support.
4363

4464

45-
#### Set up the NVMe Initiator
65+
### Set up the NVMe Initiator
66+
67+
The following requirements must be fulfilled in order to successfully use the NVMe protocols with the CSI PowerStore driver:
68+
69+
- All OpenShift or Kubernetes nodes connecting to Dell storage arrays must use unique NQNs.
70+
- The driver requires the NVMe command-line interface (nvme-cli) to manage the NVMe client and target. The nvme-cli utility provides a command-line and interactive shell option. The NVMe CLI tool is installed in the host using the below command on RPM oriented Linux distributions.
71+
72+
```bash
73+
sudo dnf -y install nvme-cli
74+
```
75+
76+
- Support for NVMe requires native NVMe multipathing to be configured on each worker node in the cluster. Please refer to the [Dell Host Connectivity Guide](https://elabnavigator.dell.com/vault/pdf/Linux.pdf?key=1725374107988) for more details on NVMe connectivity requirements. To determine if the worker nodes are configured for native NVMe multipathing run the following command on each worker node:
77+
78+
```bash
79+
cat /sys/module/nvme_core/parameters/multipath
80+
```
81+
82+
>If the result of the command displays Y then NVMe native multipathing is enabled in the kernel. If the output is N then native NVMe multipating is disabled. Consult the [Dell Host Connectivity Guide](https://elabnavigator.dell.com/vault/pdf/Linux.pdf?key=1725374107988) for Linux to enable native NVMe multipathing.
83+
84+
- The default NVMeTCP native multipathing policy is "numa". The preferred IO policy for NVMe devices used for PowerStore is round-robin. You can use udev rules to enable the round robin policy on all worker nodes. To view the IO policy you can use the following command:
85+
86+
```bash
87+
nvme list-subsys
88+
```
89+
90+
**Configure the IO policy**
91+
92+
To change the IO policy to round-robin you can add a udev rule on each worker node. Place a config file in /etc/udev/rules.d with the name 71-nvme-io-policy.rules with the following contents:
93+
94+
```text
95+
ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{iopolicy}="round-robin"
96+
```
97+
98+
In order to change the rules on a running kernel you can run the following commands:
99+
100+
```bash
101+
/sbin/udevadm control --reload-rules
102+
/sbin/udevadm trigger --type=devices --action=change
103+
```
104+
105+
On OCP clusters you can add a MachineConfig to enable this rule on all worker nodes:
106+
107+
```yaml
108+
apiVersion: machineconfiguration.openshift.io/v1
109+
kind: MachineConfig
110+
metadata:
111+
name: 99-workers-multipath-round-robin
112+
labels:
113+
machineconfiguration.openshift.io/role: worker
114+
spec:
115+
config:
116+
ignition:
117+
version: 3.2.0
118+
storage:
119+
files:
120+
- contents:
121+
source: data:text/plain;charset=utf-8;base64,QUNUSU9OPT0iYWRkfGNoYW5nZSIsIFNVQlNZU1RFTT09Im52bWUtc3Vic3lzdGVtIiwgQVRUUntpb3BvbGljeX09InJvdW5kLXJvYmluIg==
122+
verification: {}
123+
filesystem: root
124+
mode: 420
125+
path: /etc/udev/rules.d/71-nvme-io-policy.rules
126+
```
127+
128+
**Configure the control loss timeout**
129+
130+
To reduce the impact of PowerStore non disruptive software upgrades you must set the control loss timeout. This can be done using udev rules on each worker node. More information can be found in the [Dell Host Connectivity Guide](https://elabnavigator.dell.com/vault/pdf/Linux.pdf?key=1725374107988). The configure the control loss timeout place a config file in /etc/udev/rules.d with the name 72-nvmf-ctrl_loss_tmo.rules with the following contents:
131+
132+
```text
133+
ACTION=="add|change", SUBSYSTEM=="nvme", KERNEL=="nvme*", ATTR{ctrl_loss_tmo}="-1"
134+
```
135+
In order to change the rules on a running kernel you can run the following commands:
46136

47-
If you want to use the protocol, set up the NVMe initiators as follows:
48-
- The driver requires NVMe management command-line interface (nvme-cli) to use configure, edit, view or start the NVMe client and target. The nvme-cli utility provides a command-line and interactive shell option. The NVMe CLI tool is installed in the host using the below command.
49137
```bash
50-
sudo apt install nvme-cli
138+
/sbin/udevadm control --reload-rules
139+
/sbin/udevadm trigger --type=devices --action=change
140+
```
141+
142+
On OCP clusters you can add a MachineConfig to enable this rule on all worker nodes:
143+
144+
```yaml
145+
apiVersion: machineconfiguration.openshift.io/v1
146+
kind: MachineConfig
147+
metadata:
148+
name: 99-nvmf-ctrl-loss-tmo
149+
labels:
150+
machineconfiguration.openshift.io/role: worker
151+
spec:
152+
config:
153+
ignition:
154+
version: 3.2.0
155+
storage:
156+
files:
157+
- contents:
158+
source: data:text/plain;charset=utf-8;base64,QUNUSU9OPT0iYWRkfGNoYW5nZSIsIFNVQlNZU1RFTT09Im52bWUiLCBLRVJORUw9PSJudm1lKiIsIEFUVFJ7Y3RybF9sb3NzX3Rtb309Ii0xIgo=
159+
verification: {}
160+
filesystem: root
161+
mode: 420
162+
path: /etc/udev/rules.d/72-nvmf-ctrl_loss_tmo.rules
51163
```
52164
53165
**Requirements for NVMeTCP**
166+
167+
> Starting with OCP 4.14 NVMe/TCP is enabled by default on RCOS nodes.
168+
54169
- Modules including the nvme, nvme_core, nvme_fabrics, and nvme_tcp are required for using NVMe over Fabrics using TCP. Load the NVMe and NVMe-OF Modules using the below commands:
55170
```bash
56171
modprobe nvme
@@ -64,8 +179,11 @@ modprobe nvme_tcp
64179
*NOTE:*
65180
- Do not load the nvme_tcp module for NVMeFC
66181

67-
#### Linux multipathing requirements
68-
Dell PowerStore supports Linux multipathing. Configure Linux multipathing before installing the CSI Driver for Dell
182+
### Linux multipathing requirements
183+
184+
> For NVMe connectivity native NVMe multipathing is used. The following sections apply only for iSCSI and Fiber Channel connectivity.
185+
186+
Dell PowerStore supports Linux multipathing and NVMe native multipathing. Configure Linux multipathing before installing the CSI Driver for Dell
69187
PowerStore.
70188

71189
Set up Linux multipathing as follows:
@@ -75,21 +193,38 @@ Set up Linux multipathing as follows:
75193
- Enable `user_friendly_names` and `find_multipaths` in the `multipath.conf` file.
76194
- Ensure that the multipath command for `multipath.conf` is available on all Kubernetes nodes.
77195

78-
##### multipathd `MachineConfig`
196+
The following is a sample multipath.conf file:
197+
198+
```text
199+
defaults {
200+
user_friendly_names yes
201+
find_multipaths yes
202+
}
203+
blacklist {
204+
}
205+
```
206+
207+
If the above command is not successful, ensure that the /etc/multipath.conf file is present and configured properly. Once the file has been configured correctly, enable the multipath service by running the following command:
208+
`sudo systemctl enable multipathd`
209+
210+
Finally, you have to restart the service by providing the command
211+
`sudo systemctl restart multipathd`
79212

80-
If you are installing a CSI Driver which requires the installation of the Linux native Multipath software - _multipathd_, please follow the below instructions
213+
On OCP clusters you can add a MachineConfig to configure multipathing on the worker nodes.
81214

82-
To enable multipathd on RedHat CoreOS nodes you need to prepare a working configuration encoded in base64.
215+
You will need to first base64 encode the multipath.conf and add it to the MachineConfig definition.
83216

84-
```bash echo 'defaults {
217+
```bash
218+
echo 'defaults {
85219
user_friendly_names yes
86220
find_multipaths yes
87221
}
88-
blacklist {
222+
blacklist {
89223
}' | base64 -w0
90224
```
91225

92226
Use the base64 encoded string output in the following `MachineConfig` yaml file (under source section)
227+
93228
```yaml
94229
apiVersion: machineconfiguration.openshift.io/v1
95230
kind: MachineConfig
@@ -110,17 +245,12 @@ spec:
110245
mode: 400
111246
path: /etc/multipath.conf
112247
```
113-
After deploying this`MachineConfig` object, CoreOS will start multipath service automatically.
248+
249+
After deploying this`MachineConfig` object, CoreOS will start the multipath service automatically.
114250
Alternatively, you can check the status of the multipath service by entering the following command in each worker nodes.
115251
`sudo multipath -ll`
116252

117-
If the above command is not successful, ensure that the /etc/multipath.conf file is present and configured properly. Once the file has been configured correctly, enable the multipath service by running the following command:
118-
`sudo /sbin/mpathconf –-enable --with_multipathd y`
119-
120-
Finally, you have to restart the service by providing the command
121-
`sudo systemctl restart multipathd`
122-
123-
For additional information refer to official documentation of the multipath configuration.
253+
For additional information refer to the [Dell Host Connectivity Guide](https://elabnavigator.dell.com/vault/pdf/Linux.pdf?key=1725374107988).
124254

125255
#### (Optional) Volume Snapshot Requirements
126256
For detailed snapshot setup procedure, [click here.](../../../../snapshots/#optional-volume-snapshot-requirements)
@@ -187,7 +317,7 @@ CRDs should be configured during replication prepare stage with repctl as descri
187317

188318
### Install Driver
189319

190-
1. Follow all the [prerequisites](#prerequisite) above
320+
1. Follow all the [prerequisites](#prerequisites) above
191321

192322
2. Create a CR (Custom Resource) for PowerStore using the sample files provided
193323
[here](https://github.com/dell/csm-operator/tree/master/samples). This file can be modified to use custom parameters if needed.

0 commit comments

Comments
 (0)