Skip to main content
NetApp solutions for SAP
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

SUSE KVM에서 SAP HANA에 대한 SR-IOV 네트워크 인터페이스 구성

기여자 netapp-mschoen

SAP HANA를 위해 SUSE KVM에서 SR-IOV 네트워크 인터페이스를 구성합니다. 가상 기능(VF)을 설정하고 이를 VM에 할당하고 최적의 성능과 스토리지 액세스를 위해 중복 네트워크 연결을 구성합니다.

1단계: SR-IOV 설정

어댑터 펌웨어에서 SR-IOV 기능을 활성화하고 구성하여 가상 기능 생성을 허용합니다.

이 절차는 다음을 기반으로 합니다. "NVIDIA Enterprise 지원 포털 | KVM(이더넷)을 사용하여 ConnectX-4/ConnectX-5/ConnectX-6에 대한 SR-IOV 구성 방법" . SUSE SAP HANA KVM 가이드에서는 INTEL NIC를 기준으로 이를 설명합니다.

두 개의 물리적 포트를 트렁크/본드로 결합하여 중복 이더넷 연결을 사용하는 것이 좋습니다. VM에 할당된 가상 포트(VF)도 VM 내에서 트렁킹되어야 합니다.

너비=493, 높이=409

시작하기 전에

다음 전제 조건이 충족되었는지 확인하세요.

  • KVM이 설치되었습니다

  • SR-IOV는 서버 BIOS에서 활성화됩니다.

  • 부트로더에서 "intel_iommu=on" 및 "iommu=pt"를 옵션으로 추가하여 PCI 패스스루를 활성화합니다.

  • 최신 MLNX_OFED 드라이버는 KVM 호스트와 VM에 설치됩니다.

참고 VM에 할당된 각 VF에는 최소 10Gbit/s 대역폭이 필요합니다. 25GbE 물리적 포트에 대해 두 개 이상의 VF를 생성하고 할당하지 마세요.
단계
  1. MFT(Mellanox 펌웨어 도구)를 실행합니다.

    # mst start
    Starting MST (Mellanox Software Tools) driver set
    Loading MST PCI module – Success
    Loading MST PCI configuration module – Success
    Create devices
    Unloading MST PCI module (unused) – Success
  2. 장치를 찾으세요:

    # mst status
    MST modules:
    ------------
    MST PCI module is not loaded
    MST PCI configuration module loaded
    
    MST devices:
    
    ------------
    
    /dev/mst/mt4125_pciconf0 - PCI configuration cycles access.
    domain:bus:dev.fn=0000:ab:00.0 addr.reg=88 data.reg=92 cr_bar.gw_offset=-1
    
    Chip revision is: 00
  3. 장치 상태를 확인하세요:

    mlxconfig -d /dev/mst/mt4125_pciconf0 q |grep -e SRIOV_EN -e NUM_OF_VFS
    NUM_OF_VFS 8
    SRIOV_EN True(1)_
  4. 필요한 경우 SR-IOV를 활성화합니다.

    mlxconfig -d /dev/mst/mt4125_pciconf0 set SRIOV_EN=1
  5. VF의 최대 수를 설정합니다.

    mlxconfig -d /dev/mst/mt4125_pciconf0 set  NUM_OF_VFS=4
  6. 해당 기능을 활성화해야 하거나 최대 VF 수가 변경된 경우 서버를 재부팅하세요.

2단계: 가상 인터페이스 만들기

SR-IOV 기능을 활성화하려면 물리적 네트워크 포트에 가상 기능(VF)을 만듭니다. 이 단계에서는 물리적 포트당 4개의 VF가 생성됩니다.

단계
  1. 장치를 찾으세요:

    # ibstat
    
    CA 'mlx5_0'
    CA type: MT4125
    Number of ports: 1
    Firmware version: 22.36.1010
    Hardware version: 0
    Node GUID: 0xa088c20300a6f6fc
    System image GUID: 0xa088c20300a6f6fc
    Port 1:
    State: Active
    Physical state: LinkUp
    Rate: 100
    Base lid: 0
    LMC: 0
    SM lid: 0
    Capability mask: 0x00010000
    Port GUID: 0xa288c2fffea6f6fd
    Link layer: Ethernet
    CA 'mlx5_1'
    CA type: MT4125
    Number of ports: 1
    Firmware version: 22.36.1010
    Hardware version: 0
    Node GUID: 0xa088c20300a6f6fd
    System image GUID: 0xa088c20300a6f6fc
    Port 1:
    State: Active
    Physical state: LinkUp
    Rate: 100
    Base lid: 0
    LMC: 0
    SM lid: 0
    Capability mask: 0x00010000
    Port GUID: 0xa288c2fffea6f6fd
    Link layer: Ethernet

    결합이 생성된 경우 출력은 다음과 같습니다.

    # ibstat
    CA 'mlx5_bond_0'
    CA type: MT4125
    Number of ports: 1
    Firmware version: 22.36.1010
    Hardware version: 0
    Node GUID: 0xa088c20300a6f6fc
    System image GUID: 0xa088c20300a6f6fc
    Port 1:
    State: Active
    Physical state: LinkUp
    Rate: 100
    Base lid: 0
    LMC: 0
    SM lid: 0
    Capability mask: 0x00010000
    Port GUID: 0xa288c2fffea6f6fc
    Link layer: Ethernet
    #:/etc/sysconfig/network # cat /sys/class/infiniband/mlx5_bond_0/device/
    aerdevcorrectable iommugroup/ resetmethod
    aerdevfatal irq resource
    aerdevnonfatal link/ resource0
    arienabled localcpulist resource0wc
    brokenparitystatus localcpus revision
    class maxlinkspeed rom
    config maxlinkwidth sriovdriversautoprobe
    consistentdmamaskbits mlx5_core.eth.0/ sriovnumvfs
    urrentlinkspeed mlx5_core.rdma.0/ sriovoffset
    currentlinkwidth modalias sriovstride
    d3coldallowed msibus sriovtotalvfs
    device msiirqs/ sriovvfdevice
    dmamaskbits net/ sriovvftotalmsix
    driver/ numanode subsystem/
    driveroverride pools subsystemdevice
    enable power/ subsystemvendor
    firmwarenode/ powerstate uevent
    infiniband/ ptp/ vendor
    infinibandmad/ remove vpd
    infinibandverbs/ rescan
    iommu/ reset
    # ibdev2netdev
    mlx5_0 port 1 ==> eth4 (Up)
    mlx5_1 port 1 ==> eth5 (Up)
  2. 펌웨어에서 허용되고 구성된 총 VF를 가져옵니다.

    # cat /sys/class/net/eth4/device/sriov_totalvfs
    4
    # cat /sys/class/net/eth5/device/sriov_totalvfs
    4
  3. 이 장치의 현재 VF 수를 가져옵니다.

    # cat /sys/class/infiniband/mlx5_0/device/sriov_numvfs
    0
    # cat /sys/class/infiniband/mlx5_1/device/sriov_numvfs
    0
  4. 원하는 VF 수를 설정하세요:

    # echo 4 > /sys/class/infiniband/mlx5_0/device/sriov_numvfs
    # echo 4 > /sys/class/infiniband/mlx5_1/device/sriov_numvfs

    이미 이 두 포트를 사용하여 본드를 구성한 경우 본드에 대해 첫 번째 명령을 실행해야 합니다.

    # echo 4 > /sys/class/infiniband/mlx5_bond_0/device/sriov_numvfs
  5. PCI 버스를 확인하세요:

    # lspci -D | grep Mellanox
    
    0000:ab:00.0 Ethernet controller: Mellanox Technologies MT2892 Family [ConnectX-6 Dx]
    0000:ab:00.1 Ethernet controller: Mellanox Technologies MT2892 Family [ConnectX-6 Dx]
    0000:ab:00.2 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
    0000:ab:00.3 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
    0000:ab:00.4 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
    0000:ab:00.5 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
    0000:ab:01.2 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
    0000:ab:01.3 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
    0000:ab:01.4 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
    0000:ab:01.5 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
    # ibdev2netdev -v
    
    0000:ab:00.0 mlx5_0 (MT4125 - 51TF3A5000XV3) Mellanox ConnectX-6 Dx 100GbE QSFP56 2-port PCIe 4 Ethernet Adapter fw 22.36.1010 port 1 (ACTIVE) ==> eth4 (Up)
    0000:ab:00.1 mlx5_1 (MT4125 - 51TF3A5000XV3) Mellanox ConnectX-6 Dx 100GbE QSFP56 2-port PCIe 4 Ethernet Adapter fw 22.36.1010 port 1 (ACTIVE) ==> eth6 (Up)
    0000:ab:00.2 mlx523 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth6 (Down)
    0000:ab:00.3 mlx5_3 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth7 (Down)
    0000:ab:00.4 mlx5_4 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth8 (Down)
    0000:ab:00.5 mlx5_5 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth9 (Down)
    0000:ab:01.2 mlx5_6 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth10 (Down)
    0000:ab:01.3 mlx5_7 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth11 (Down)
    0000:ab:01.4 mlx5_8 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth12 (Down)
    0000:ab:01.5 mlx5_9 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth13 (Down)
  6. IP 도구를 통해 VF 구성을 확인하세요.

    # ip link show
    …
    6: eth4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
    
    link/ether a0:88:c2:a6:f6:fd brd ff:ff:ff:ff:ff:ff permaddr a0:88:c2:a6:f6:fc
    vf 0 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off
    vf 1 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off
    vf 2 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off
    vf 3 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off
    
    altname enp171s0f0np0
    altname ens3f0np0
    
    7: eth5: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
    
    link/ether a0:88:c2:a6:f6:fd brd ff:ff:ff:ff:ff:ff
    vf 0 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off
    vf 1 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off
    vf 2 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off
    vf 3 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off
    
    altname enp171s0f1np1
    altname ens3f1np1
    …

3단계: 부팅 중 VF 활성화

systemd 서비스와 시작 스크립트를 만들어 시스템을 재부팅해도 VF 설정이 유지되도록 구성합니다.

  1. systemd 유닛 파일을 생성합니다 /etc/systemd/system/after.local 다음 내용이 포함되어 있습니다.

    [Unit]
    Description=/etc/init.d/after.local Compatibility
    After=libvirtd.service Requires=libvirtd.service
    
    [Service]
    Type=oneshot
    ExecStart=/etc/init.d/after.local
    RemainAfterExit=true
    
    [Install]
    WantedBy=multi-user.target
  2. 스크립트 _/etc/init.d/after.local_을 생성합니다.

    #! /bin/sh
    #
    #
    # ...
    echo 4 > /sys/class/infiniband/mlx5_bond_0/device/sriov_numvfs
    echo 4 > /sys/class/infiniband/mlx5_1/device/sriov_numvfs
  3. 파일을 실행할 수 있는지 확인하세요.

    # cd /etc/init.d/
    # chmod 750 after.local

4단계: VM에 가상 인터페이스 할당

_virt-manager_를 사용하여 생성된 가상 기능을 PCI 호스트 장치로 SAP HANA VM에 할당합니다.

  1. virt-manager를 시작합니다.

    너비=601, 높이=385

  2. 원하는 VM을 엽니다.

    너비=300, 높이=385

  3. *하드웨어 추가*를 선택하세요. + Virtmanager 하드웨어 추가, 너비=601, 높이=443

  4. PCI 호스트 장치 목록에서 첫 번째 물리적 포트에서 원하는 가상 NIC를 선택하고 마침을 누릅니다.

    이 예에서 0000.AB:00:2 - 0000.AB:00:4는 첫 번째 물리적 포트에 속하고 0000.AB:01:2 - 0000.AB:01:4는 두 번째 물리적 포트에 속합니다.

    너비=601, 높이=442

  5. PCI 호스트 장치 목록에서 다음 가상 NIC 포트를 선택하고, 두 번째 물리적 포트에서 가상 포트를 사용하고 *마침*을 선택합니다.

    너비=601, 높이=441

  6. 그런 다음 가상 인터페이스가 VM에 할당되고 VM을 시작할 수 있습니다. + 너비=601, 높이=443

5단계: VM 내에서 네트워크 인터페이스 구성

VM에 로그인하고 두 VF를 본드로 구성합니다. 모드 0 또는 모드 2를 선택하세요. LACP는 물리적 포트에서만 사용할 수 있으므로 LACP를 사용하지 마세요. 아래 그림은 YAST를 사용한 모드 2 구성을 보여줍니다.

너비=601, 높이=335

다음은 무엇인가요?

SR-IOV 네트워크 인터페이스를 구성한 후"파이버 채널 네트워킹 구성" FCP를 저장 프로토콜로 사용할 경우.