4.3. 启用原生 NVMe 多路径
如果禁用原生 NVMe 多路径,您可以使用以下解决方案启用它。
先决条件
- NVMe 设备连接到您的系统。如需更多信息,请参阅 通过光纤设备概述 NVMe。
步骤
检查内核中是否启用了原生 NVMe 多路径:
cat /sys/module/nvme_core/parameters/multipath
# cat /sys/module/nvme_core/parameters/multipath
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令显示以下之一:
N
- 禁用原生 NVMe 多路径。
Y
- 启用原生 NVMe 多路径。
如果禁用原生 NVMe 多路径,使用以下方法之一启用它:
使用内核选项:
从内核命令行中删除
nvme_core.multipath=N
选项:grubby --update-kernel=ALL --remove-args="nvme_core.multipath=N"
# grubby --update-kernel=ALL --remove-args="nvme_core.multipath=N"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 64 位 IBM Z 构架中更新引导菜单:
zipl
# zipl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启系统。
使用内核模块配置文件:
删除
/etc/modprobe.d/nvme_core.conf
配置文件:rm /etc/modprobe.d/nvme_core.conf
# rm /etc/modprobe.d/nvme_core.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 备份
initramfs
文件:cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重建
initramfs
:dracut --force --verbose
# dracut --force --verbose
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启系统。
可选: 在运行的系统中,更改 NVMe 设备中的 I/O 策略,以便在所有可用路径中分发 I/O:
echo "round-robin" > /sys/class/nvme-subsystem/nvme-subsys0/iopolicy
# echo "round-robin" > /sys/class/nvme-subsystem/nvme-subsys0/iopolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:使用
udev
规则永久设置 I/O 策略。使用以下内容创建/etc/udev/rules.d/71-nvme-io-policy.rules
文件:ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{iopolicy}="round-robin"
ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{iopolicy}="round-robin"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证您的系统是否识别 NVMe 设备。以下示例假设您有一个通过光纤存储子系统连接的 NVMe,它有两个 NVMe 命名空间:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出所有连接的 NVMe 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查活动传输类型。例如,
nvme0 fc
表示设备通过光纤通道传输连接,nvme tcp
则表示设备通过 TCP 连接。如果您编辑了内核选项,请验证内核命令行上是否启用了原生 NVMe 多路径:
cat /proc/cmdline BOOT_IMAGE=[...] nvme_core.multipath=Y
# cat /proc/cmdline BOOT_IMAGE=[...] nvme_core.multipath=Y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您更改了 I/O 策略,请验证
round-robin
是否在 NVMe 设备上是活跃的 I/O 策略:cat /sys/class/nvme-subsystem/nvme-subsys0/iopolicy round-robin
# cat /sys/class/nvme-subsystem/nvme-subsys0/iopolicy round-robin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow