17.2. 启用原生 NVMe 多路径
nvme_core.multipath 选项的默认内核设置被设置为 N,这意味着原生 Non-volatile Memory Express™(NVMe™)多路径被禁用。您可以使用原生 NVMe 多路径解决方案启用原生 NVMe 多路径。
先决条件
- NVMe 设备连接到您的系统。如需更多信息,请参阅 通过光纤设备概述 NVMe。
步骤
检查内核中是否启用了原生 NVMe 多路径:
cat /sys/module/nvme_core/parameters/multipath
# cat /sys/module/nvme_core/parameters/multipathCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令显示以下之一:
N- 禁用原生 NVMe 多路径。
Y- 启用原生 NVMe 多路径。
如果原生 NVMe 多路径被禁用,使用以下方法之一启用它:
使用内核选项:
在命令行中添加
nvme_core.multipath=Y选项:grubby --update-kernel=ALL --args="nvme_core.multipath=Y"
# grubby --update-kernel=ALL --args="nvme_core.multipath=Y"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 64 位 IBM Z 构架中更新引导菜单:
zipl
# ziplCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启系统:
使用内核模块配置文件:
使用以下内容创建
/etc/modprobe.d/nvme_core.conf配置文件:options nvme_core multipath=Y
options nvme_core multipath=YCopy 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).imgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重建
initramfs:dracut --force --verbose
# dracut --force --verboseCopy 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/iopolicyCopy 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=YCopy 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-robinCopy to Clipboard Copied! Toggle word wrap Toggle overflow