Red Hat Training

A Red Hat training course is available for RHEL 8

4.2. 启用原生 NVMe 多路径

nvme_core.multipath 选项的默认内核设置被设置为 N,这意味着原生 Non-volatile Memory Express™(NVMe™)多路径被禁用。您可以使用原生 NVMe 多路径解决方案启用原生 NVMe 多路径。

先决条件

步骤

  1. 检查内核中是否启用了原生 NVMe 多路径:

    # cat /sys/module/nvme_core/parameters/multipath

    这个命令显示以下之一:

    N
    禁用原生 NVMe 多路径。
    Y
    启用原生 NVMe 多路径。
  2. 如果原生 NVMe 多路径被禁用,请使用以下方法之一启用它:

    • 使用内核选项:

      1. 在命令行中添加 nvme_core.multipath=Y 选项:

        # grubby --update-kernel=ALL --args="nvme_core.multipath=Y"
      2. 在 64 位 IBM Z 构架中更新引导菜单:

        # zipl
      3. 重启系统。
    • 使用内核模块配置文件:

      1. 使用以下内容创建 /etc/modprobe.d/nvme_core.conf 配置文件:

        options nvme_core multipath=Y
      2. 备份 initramfs 文件:

        # cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
      3. 重建 initramfs

        # dracut --force --verbose
      4. 重启系统。
  3. 可选: 在运行的系统中,更改 NVMe 设备中的 I/O 策略,以便在所有可用路径中分发 I/O:

    # echo "round-robin" > /sys/class/nvme-subsystem/nvme-subsys0/iopolicy
  4. 可选:使用 udev 规则永久设置 I/O 策略。使用以下内容创建 /etc/udev/rules.d/71-nvme-io-policy.rules 文件:

    ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{iopolicy}="round-robin"

验证

  1. 验证您的系统是否识别 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
  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 连接。

  3. 如果您编辑了内核选项,请验证内核命令行上是否启用了原生 NVMe 多路径:

    # cat /proc/cmdline
    
    BOOT_IMAGE=[...] nvme_core.multipath=Y
  4. 如果您更改了 I/O 策略,请验证 round-robin 是否是 NVMe 设备上活跃的 I/O 策略:

    # cat /sys/class/nvme-subsystem/nvme-subsys0/iopolicy
    
    round-robin