4.2. NVMe デバイスでの DM Multipath の有効化

nvme_core.multipath オプションのデフォルトのカーネル設定は Y に設定されています。これは、ネイティブ Non-volatile Memory Express™ (NVMe™) マルチパスが有効であることを意味します。ネイティブ NVMe マルチパスを無効にすることで、接続された NVMe デバイスで DM マルチパスを有効にできます。

前提条件

手順

  1. ネイティブ NVMe マルチパスが有効になっているかどうかを確認します。

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

    コマンドは以下のいずれかを表示します。

    N
    ネイティブ NVMe マルチパスは無効です。
    Y
    ネイティブ NVMe マルチパスは有効です。
  2. ネイティブ NVMe マルチパスが有効になっている場合は、次のいずれかの方法を使用して無効にします。

    • カーネルオプションの使用

      1. nvme_core.multipath=N オプションをコマンドラインに追加します。

        # grubby --update-kernel=ALL --args="nvme_core.multipath=N"
      2. 64 ビットの IBM Z アーキテクチャーでは、ブートメニューを更新します。

        # zipl
      3. システムを再起動します。
    • カーネルモジュール設定ファイルの使用

      1. 以下の内容で /etc/modprobe.d/nvme_core.conf 設定ファイルを作成します。

        options nvme_core multipath=N
      2. initramfs ファイルをバックアップします。

        # cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname r).bak.$(date +%m%d-%H%M%S).img
      3. initramfs を再構築します。

        # cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
        # dracut --force --verbose
      4. システムを再起動します。
  3. DM マルチパスを有効にします。

    # systemctl enable --now multipathd.service
  4. 利用可能なすべてのパスに I/O を分配します。/etc/multipath.conf ファイルに以下の内容を追加します。

    devices {
            device {
                    vendor "NVME"
                    product ".*"
                    path_grouping_policy group_by_prio
            }
    }
    注記

    DM Multipath が NVMe デバイスを管理する場合、/sys/class/nvme-subsystem/nvme-subsys0/iopolicy 設定ファイルは I/O ディストリビューションには影響を与えません。

  5. 設定の変更を適用するために、multipathd サービスをリロードします。

    # multipath -r

検証

  • ネイティブ NVMe マルチパスが無効になっているかどうかを確認します。

    # cat /sys/module/nvme_core/parameters/multipath
    N
  • DM マルチパスが NVMe デバイスを認識しているかどうかを確認します。

    # multipath -l
    
    eui.00007a8962ab241100a0980000d851c8 dm-6 NVME,NetApp E-Series
    size=20G features='0' hwhandler='0' wp=rw
    `-+- policy='service-time 0' prio=0 status=active
      |- 0:10:2:2 nvme0n2 259:3 active undef running
    `-+- policy='service-time 0' prio=0 status=enabled
      |- 4:11:2:2 nvme4n2 259:28 active undef running
    `-+- policy='service-time 0' prio=0 status=enabled
      |- 5:32778:2:2 nvme5n2 259:38 active undef running
    `-+- policy='service-time 0' prio=0 status=enabled
      |- 6:32779:2:2 nvme6n2 259:44 active undef running