12.2. 네이티브 NVMe 멀티패스 활성화

이 절차에서는 네이티브 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 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. DM Multipath가 NVMe 네임스페이스를 nvme0c3n1에서 nvme0 c3n1 로 보고하는지 확인합니다(예: nvme0n1 ~ nvme3n1:)

    # multipath -e -ll | grep -i nvme
    
    uuid.8ef20f70-f7d3-4f67-8d84-1bb16b2bfe03 [nvme]:nvme0n1 NVMe,Linux,4.18.0-2
    | `- 0:0:1    nvme0c0n1 0:0     n/a   optimized live
    | `- 0:1:1    nvme0c1n1 0:0     n/a   optimized live
    | `- 0:2:1    nvme0c2n1 0:0     n/a   optimized live
      `- 0:3:1    nvme0c3n1 0:0     n/a   optimized live
    
    uuid.44c782b4-4e72-4d9e-bc39-c7be0a409f22 [nvme]:nvme0n2 NVMe,Linux,4.18.0-2
    | `- 0:0:1    nvme0c0n1 0:0     n/a   optimized live
    | `- 0:1:1    nvme0c1n1 0:0     n/a   optimized live
    | `- 0:2:1    nvme0c2n1 0:0     n/a   optimized live
      `- 0:3:1    nvme0c3n1 0:0     n/a   optimized live
  5. I/O 정책을 변경한 경우 NVMe 장치의 라운드 로빈이 활성 I/O 정책인지 확인합니다.

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