14.3. ネイティブ NVMe マルチパスの実現
ネイティブ NVMe マルチパスが無効になっている場合は、次の解決策を使用して有効にできます。
前提条件
- NVMe デバイスがシステムに接続されていることを確認します。詳細は、NVMe over Fabric デバイスの概要 を参照してください。
手順
カーネルでネイティブ 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 デバイスを認識しているかどうかを確認します。次の例は、2 つの NVMe 名前空間を持つ NVMe over fabrics ストレージサブシステムが接続されていることを想定しています:
# 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 ポリシーを変更した場合は、NVMe デバイス上で
round-robin
がアクティブな I/O ポリシーであるかどうかを確認します。# cat /sys/class/nvme-subsystem/nvme-subsys0/iopolicy round-robin
関連情報