4.3. 启用原生 NVMe 多路径
如果禁用原生 NVMe 多路径,您可以使用以下解决方案启用它。
先决条件
- NVMe 设备连接到您的系统。如需更多信息,请参阅 光纤设备上的 NVMe 概述。
步骤
检查内核中是否启用了原生 NVMe 多路径:
# cat /sys/module/nvme_core/parameters/multipath
这个命令显示以下之一:
N
- 禁用原生 NVMe 多路径。
Y
- 启用原生 NVMe 多路径。
如果禁用原生 NVMe 多路径,使用以下方法之一启用它:
使用内核选项:
从内核命令行中删除
nvme_core.multipath=N
选项:# grubby --update-kernel=ALL --remove-args="nvme_core.multipath=N"
在 64 位 IBM Z 构架中更新引导菜单:
# zipl
- 重启系统。
使用内核模块配置文件:
删除
/etc/modprobe.d/nvme_core.conf
配置文件:# rm /etc/modprobe.d/nvme_core.conf
备份
initramfs
文件:# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
重建
initramfs
:# dracut --force --verbose
- 重启系统。
可选: 在运行的系统中,更改 NVMe 设备中的 I/O 策略,以便在所有可用路径中分发 I/O:
# echo "round-robin" > /sys/class/nvme-subsystem/nvme-subsys0/iopolicy
可选:使用
udev
规则永久设置 I/O 策略。使用以下内容创建/etc/udev/rules.d/71-nvme-io-policy.rules
文件:ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{iopolicy}="round-robin"
验证
验证您的系统是否识别 NVMe 设备。以下示例假设您有一个通过光纤存储子系统连接的 NVMe,它有两个 NVMe 命名空间:
# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 a34c4f3a0d6f5cec Linux 1 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2 /dev/nvme0n2 a34c4f3a0d6f5cec Linux 2 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2
列出所有连接的 NVMe 子系统:
# nvme list-subsys nvme-subsys0 - NQN=testnqn \ +- nvme0 fc traddr=nn-0x20000090fadd597a:pn-0x10000090fadd597a host_traddr=nn-0x20000090fac7e1dd:pn-0x10000090fac7e1dd live +- nvme1 fc traddr=nn-0x20000090fadd5979:pn-0x10000090fadd5979 host_traddr=nn-0x20000090fac7e1dd:pn-0x10000090fac7e1dd live +- nvme2 fc traddr=nn-0x20000090fadd5979:pn-0x10000090fadd5979 host_traddr=nn-0x20000090fac7e1de:pn-0x10000090fac7e1de live +- nvme3 fc traddr=nn-0x20000090fadd597a:pn-0x10000090fadd597a host_traddr=nn-0x20000090fac7e1de:pn-0x10000090fac7e1de live
检查活动传输类型。例如,
nvme0 fc
表示设备通过光纤通道传输连接,nvme tcp
则表示设备通过 TCP 连接。如果您编辑了内核选项,请验证内核命令行上是否启用了原生 NVMe 多路径:
# cat /proc/cmdline BOOT_IMAGE=[...] nvme_core.multipath=Y
如果您更改了 I/O 策略,请验证
round-robin
是否在 NVMe 设备上是活跃的 I/O 策略:# cat /sys/class/nvme-subsystem/nvme-subsys0/iopolicy round-robin
其他资源