12.6. 연결된 Mellanox 가상 기능을 사용하여 가상 머신 실시간 마이그레이션


연결된 Mellanox 가상 기능을 사용하는 가상 시스템을 실시간으로 마이그레이션하려면 switchdev 모드를 구성하고 Open vSwitch를 설정하고 virsh 마이그레이션을 사용해야 합니다.

지원

Red Hat은 Mellanox 네트워킹 장치의 VF를 사용하여 VM 실시간 마이그레이션의 일반적인 기능을 구현합니다. 그러나 기능은 특정 Mellanox 장치 모델 및 펌웨어 버전에 따라 다릅니다.

  • 현재 VF 마이그레이션은 Mellanox CX-7 네트워킹 장치에서만 지원됩니다.

    Mellanox CX-7 네트워킹 장치의 VF는 새 mlx5_vfio_pci 드라이버를 사용하여 실시간 마이그레이션에 필요한 기능을 추가하고 libvirt 는 새 드라이버를 VF에 자동으로 바인딩합니다.

  • Red Hat은 포함된 mlx5_vfio_pci 드라이버에서만 Mellanox VF 실시간 마이그레이션을 직접 지원합니다.

제한

일부 가상화 기능은 연결된 가상 기능을 사용하여 VM을 실시간 마이그레이션할 때 사용할 수 없습니다.

  • VM의 더티 메모리 페이지 비율 계산.

    현재 Mellanox VF가 연결된 VM을 마이그레이션할 때 virsh domjobinfovirsh domdirtyrate-calc 명령에서 제공하는 실시간 마이그레이션 데이터 및 통계는 계산이 연결된 VF의 영향을 주지 않고 게스트 RAM만 계산하기 때문에 부정확합니다.

  • 복사 후 실시간 마이그레이션 사용.
  • VM에서 vIOMMU(가상 I/O Memory Management Unit) 장치 사용.

Mellanox CX-7 네트워킹 장치에 특정한 추가 제한 사항:

  • 동일한 PSID(Parameter-Set Identification) 및 동일한 펌웨어 버전이 있는 CX-7 장치는 소스 및 대상 호스트 둘 다에서 사용됩니다.

    다음 명령을 사용하여 장치의 PSID를 확인할 수 있습니다.

    # mstflint -d <device_pci_address> query | grep -i PSID
    
    PSID: MT_1090111019
  • 하나의 CX-7 물리적 함수에서는 동시에 실시간 마이그레이션을 위해 최대 4개의 VF를 사용할 수 있습니다. 예를 들어 4개의 VF가 연결된 VM 한 개 또는 각 VM에 하나의 VF가 연결된 4개의 VM을 마이그레이션할 수 있습니다.

사전 요구 사항

  • Mellanox CX-7 네트워킹 장치가 28.36.1010 보다 크거나 같은 펌웨어 버전이 있습니다.

    자세한 내용은 지원되는 펌웨어 버전에 대한 자세한 내용과 펌웨어의 최신 버전을 사용하는지 확인하려면 Mellanox 문서를 참조하십시오.

  • 호스트는 Intel 64, AMD64 또는 ARM 64 CPU 아키텍처를 사용합니다.
  • 소스 호스트의 Mellanox 펌웨어 버전은 대상 호스트의 과 동일합니다.
  • mstflint 패키지는 소스 및 대상 호스트 모두에 설치됩니다.

    # dnf install mstflint
  • Mellanox CX-7 네트워킹 장치에는 VF_MIGRATION_MODEMIGRATION_ENABLED 로 설정되어 있습니다.

    # mstconfig -d <device_pci_address> query | grep -i VF_migration
    
    VF_MIGRATION_MODE                           MIGRATION_ENABLED(2)
    • 다음 명령을 사용하여 VF_MIGRATION_MODEMIGRATION_ENABLED 로 설정할 수 있습니다.

      # mstconfig -d <device_pci_address> set VF_MIGRATION_MODE=2
  • openvswitch 패키지는 소스 및 대상 호스트 모두에 설치됩니다.

    # dnf install openvswitch
  • 소스 장치의 nv_config 매개 변수와 대상 장치가 일치합니다. 장치의 구성을 확인하려면 다음 명령을 사용합니다.

    # mlxconfig -d <device_pci_address> query
  • 시스템은 SR-IOV(Single-root I/O Virtualization) 장치의 모든 일반 사전 요구 사항을 충족합니다. 자세한 내용은 Virtual Machines에 SR-IOV 네트워크 디바이스 연결을 참조하십시오.
  • 시스템은 모든 일반 VM 마이그레이션 사전 요구 사항을 충족합니다. 자세한 내용은 명령줄을 사용하여 가상 시스템 마이그레이션을 참조하십시오.

프로세스

  1. 소스 호스트에서 Mellanox 네트워킹 장치를 switchdev 모드로 설정합니다.

    # devlink dev eswitch set pci/<device_pci_address> mode switchdev
  2. 소스 호스트에서 Mellanox 장치에 가상 기능을 생성합니다.

    # echo 1 > /sys/bus/pci/devices/0000\:e1\:00.0/sriov_numvfs

    파일 경로의 /0000\:e1\:00.0/ 부분은 장치의 PCI 주소를 기반으로 합니다. 예에서는 0000:e1:00.0입니다.

  3. VF의 PCI 주소를 확인합니다.

    # lshw -c network -businfo
    
    Bus info            Device         Class          Description
    =============================================================================
    pci@0000:e1:00.0    enp225s0np0    network        MT2910 Family [ConnectX-7]
    pci@0000:e1:00.1    enp225s0v0     network        ConnectX Family mlx5Gen Virtual Function
  4. 소스 호스트에서 드라이버에서 VF를 바인딩 해제합니다.

    # virsh nodedev-detach <vf_pci_address> --driver pci-stub
  5. 소스 호스트에서 VF의 마이그레이션 기능을 활성화합니다.

    # devlink port function set pci/0000:e1:00.0/1 migratable enable

    이 예에서 pci/0000:e1:00.0/1 은 지정된 PCI 주소가 있는 Mellanox 장치의 첫 번째 VF를 나타냅니다.

  6. 소스 호스트에서 VF 마이그레이션을 위해 OVS(Open vSwitch)를 구성합니다. Mellanox 장치가 switchdev 모드에 있는 경우 네트워크를 통해 데이터를 전송할 수 없습니다.

    1. openvswitch 서비스가 실행 중인지 확인합니다.

      # systemctl start openvswitch
    2. 하드웨어 오프로드를 활성화하여 네트워킹 성능을 개선할 수 있습니다.

      # ovs-vsctl set Open_vSwitch . other_config:hw-offload=true
    3. 마이그레이션 중에 네트워크 연결이 열린 상태로 유지되도록 최대 유휴 시간을 늘립니다.

      # ovs-vsctl set Open_vSwitch . other_config:max-idle=300000
    4. OVS 인스턴스에 새 브릿지를 만듭니다.

      # ovs-vsctl add-br <bridge_name>
    5. openvswitch 서비스를 다시 시작합니다.

      # systemctl restart openvswitch
    6. 물리적 Mellanox 장치를 OVS 브리지에 추가합니다.

      # ovs-vsctl add-port <bridge_name> enp225s0np0

      이 예에서 enp225s0np0 은 Mellanox 장치의 네트워크 인터페이스 이름입니다.

    7. Mellanox 장치의 VF를 OVS 브리지에 추가합니다.

      # ovs-vsctl add-port <bridge_name> enp225s0npf0vf0

      이 예에서 enp225s0npf0vff0 은 VF의 네트워크 인터페이스 이름입니다.

  7. 대상 호스트에서 1-5단계를 반복합니다.
  8. 소스 호스트에서 mlx_vf.xml 과 같은 새 파일을 열고 VF의 다음 XML 구성을 추가합니다.

     <interface type='hostdev' managed='yes'>
          <mac address='52:54:00:56:8c:f7'/>
          <source>
            <address type='pci' domain='0x0000' bus='0xe1' slot='0x00' function='0x1'/>
          </source>
     </interface>

    이 예에서는 VF의 통과를 VM의 네트워크 인터페이스로 구성합니다. MAC 주소가 고유한지 확인하고 소스 호스트에서 VF의 PCI 주소를 사용합니다.

  9. 소스 호스트에서 VF XML 파일을 VM에 연결합니다.

    # virsh attach-device <vm_name> mlx_vf.xml --live --config

    이 예제에서 mlx_vf.xml 은 VF 구성이 포함된 XML 파일의 이름입니다. 장치를 실행 중인 VM에 연결하려면 --live 옵션을 사용합니다.

  10. 소스 호스트에서 연결된 VF를 사용하여 실행 중인 VM의 실시간 마이그레이션을 시작합니다.

    # virsh migrate --live --domain <vm_name> --desturi qemu+ssh://<destination_host_ip_address>/system

    실시간 마이그레이션 수행에 대한 자세한 내용은 명령줄을 사용하여 가상 머신 마이그레이션을 참조하십시오.

검증

  1. 마이그레이션된 VM에서 Mellanox VF의 네트워크 인터페이스 이름을 확인합니다.

    # ifconfig
    
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 fe80::a00:27ff:fe4e:66a1  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:4e:66:a1  txqueuelen 1000  (Ethernet)
            RX packets 100000  bytes 6543210 (6.5 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 100000  bytes 6543210 (6.5 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    enp4s0f0v0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.3.10  netmask 255.255.255.0  broadcast 192.168.3.255
            inet6 fe80::a00:27ff:fe4e:66c3  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:4e:66:c3  txqueuelen 1000  (Ethernet)
            RX packets 200000  bytes 12345678 (12.3 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 200000  bytes 12345678 (12.3 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    이 예에서 enp4s0f0v0 인터페이스가 있으면 mlx5_vfio_pci 드라이버가 마이그레이션 중에 장치 상태를 성공적으로 전송했음을 확인합니다. 이렇게 하면 VM에서 직접 하드웨어 액세스를 유지합니다.

  2. 마이그레이션된 VM에서 Mellanox VF가 작동하는지 확인합니다. 예를 들면 다음과 같습니다.

    # ping -I <VF_interface_name> 8.8.8.8
    
    PING 8.8.8.8 (8.8.8.8) from 192.168.3.10 <VF_interface_name>: 56(84) bytes of data.
    64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=27.4 ms
    64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=26.9 ms
    
    --- 8.8.8.8 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1002ms
    rtt min/avg/max/mdev = 26.944/27.046/27.148/0.102 ms

    ping에 성공하면 대상 호스트의 Open vSwitch 브리지가 VM 하드웨어 인터페이스와 물리적 네트워크 포트 간에 트래픽을 올바르게 오프로드하고 전환하고 있는지 확인합니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동