9장. 게스트 가상 머신 장치 구성
- 에뮬레이션된 장치는 실제 하드웨어를 모방하는 순수한 가상 장치이므로 수정되지 않은 게스트 운영 체제가 표준 인 박스 드라이버를 사용하여 작업할 수 있습니다. Red Hat Enterprise Linux 6는 최대 216 virtio 장치를 지원합니다.
- virtio 장치는 가상 머신에서 최적으로 작동하도록 설계된 순전히 가상 장치입니다. virtio 장치는 에뮬레이션된 장치와 유사하지만 Linux 이외의 가상 시스템에는 기본적으로 필요한 드라이버가 포함되어 있지 않습니다. Virtual Machine Manager(virt-manager) 및 RHV-H(Red Hat Virtualization Hypervisor)와 같은 가상화 관리 소프트웨어는 지원되는 비 Linux 게스트 운영 체제에 이러한 드라이버를 자동으로 설치합니다. Red Hat Enterprise Linux 6는 최대700개의scsi 디스크를 지원합니다.
- 할당된 장치는 가상 머신에 노출되는 물리적 장치입니다. 이 방법은 'passthrough'라고도 합니다. 장치 할당을 통해 가상 머신은 다양한 작업을 위해 PCI 장치에 독점적으로 액세스할 수 있으며 PCI 장치는 게스트 운영 체제에 물리적으로 연결된 것처럼 표시 및 작동할 수 있습니다. Red Hat Enterprise Linux 6는 가상 머신당 최대 32개의 할당된 장치를 지원합니다.
/etc/libvirt/qemu.conf
에서 재정의할 수 있는 /etc/security/limits.conf
에서 구성됨). 다른 제한 요소에는 가상 버스에서 사용할 수 있는 슬롯 수와 sysctl이 설정한 오픈 파일에 대한 시스템 전체 제한이 포함됩니다.
vfio_iommu_type1
모듈에 allow_unsafe_interrupts
옵션을 사용하여 PCI 장치 할당을 허용하도록 선택할 수 있습니다. 이 작업은 다음을 포함하는 /etc/modprobe.d
에 .conf 파일(예: local.conf
)을 추가하여 영구적으로 수행할 수 있습니다.
options vfio_iommu_type1 allow_unsafe_interrupts=1또는 sysfs 항목을 사용하여 동일한 작업을 수행합니다.
# echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts
9.1. PCI 장치
절차 9.1. PCI 장치 할당을 위한 Intel 시스템 준비
Intel VT-d 사양 활성화
Intel VT-d 사양에서는 가상 머신에 물리적 장치를 직접 할당하는 하드웨어 지원을 제공합니다. 이러한 사양은 Red Hat Enterprise Linux에서 PCI 장치 할당을 사용하는 데 필요합니다.BIOS에서 Intel VT-d 사양을 활성화해야 합니다. 일부 시스템 제조업체에서는 기본적으로 이러한 사양을 사용하지 않도록 설정되어 있습니다. 이러한 사양을 참조하는 데 사용되는 조건은 제조업체마다 다를 수 있습니다. 적절한 약관에 대해서는 시스템 제조업체 설명서를 참조하십시오.커널에서 Intel VT-d 활성화
/etc/sysconfig/grub
파일에 있는 GRUB_CMDLINX_LINUX 행 끝에intel_iommu=on
매개 변수를 추가하여 커널에서 Intel VT-d를 활성화합니다.아래 예제는 Intel VT-d가 활성화된 수정된grub
파일입니다.GRUB_CMDLINE_LINUX="rd.lvm.lv=vg_VolGroup00/LogVol01 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=vg_VolGroup_1/root vconsole.keymap=us $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/ rhcrashkernel-param || :) rhgb quiet intel_iommu=on"
구성 파일 다시 생성
다음을 실행하여 /etc/grub2.cfg를 다시 생성합니다.grub2-mkconfig -o /etc/grub2.cfg
UEFI 기반 호스트를 사용하는 경우 대상 파일은/etc/grub2-efi.cfg
여야 합니다.사용할 준비가
시스템을 재부팅하여 변경 사항을 활성화합니다. 이제 시스템이 PCI 장치 할당을 수행할 수 있습니다.
절차 9.2. PCI 장치 할당을 위한 AMD 시스템 준비
AMD IOMMU 사양 활성화
Red Hat Enterprise Linux에서 PCI 장치 할당을 사용하려면 AMD IOMMU 사양이 필요합니다. BIOS에서 이러한 사양을 활성화해야 합니다. 일부 시스템 제조업체에서는 기본적으로 이러한 사양을 사용하지 않도록 설정되어 있습니다.IOMMU 커널 지원 활성화
/etc/sysconfig/grub
에 있는 GRUB_CMDLINX_LINUX 행의 끝에amd_iommu=on
을 추가하여 부팅 시 AMD IOMMU 사양을 활성화합니다.구성 파일 다시 생성
다음을 실행하여 /etc/grub2.cfg를 다시 생성합니다.grub2-mkconfig -o /etc/grub2.cfg
UEFI 기반 호스트를 사용하는 경우 대상 파일은/etc/grub2-efi.cfg
여야 합니다.사용할 준비가
시스템을 재부팅하여 변경 사항을 활성화합니다. 이제 시스템이 PCI 장치 할당을 수행할 수 있습니다.
9.1.1. virsh를 사용하여 PCI 장치 할당
pci_0000_01_00_0
과 함께 PCIe 네트워크 컨트롤러를 사용하고 guest1-rhel6-64 라는 완전히 가상화된 게스트 시스템을 사용합니다.
절차 9.3. virsh를 사용하여 게스트 가상 머신에 PCI 장치 할당
장치 확인
먼저 가상 머신에 장치 할당을 위해 지정된 PCI 장치를 식별합니다. lspci 명령을 사용하여 사용 가능한 PCI 장치를 나열합니다. grep 을 사용하여 lspci 의 출력을 구체화할 수 있습니다.이 예에서는 다음 출력에서 강조 표시된 이더넷 컨트롤러를 사용합니다.# lspci | grep Ethernet 00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection 01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
이 이더넷 컨트롤러는 짧은 식별자00:19.0
과 함께 표시됩니다. 이 PCI 장치를 가상 시스템에 할당하려면 virsh 에서 사용하는 전체 식별자를 찾아야 합니다.이를 위해 virsh nodedev-list 명령을 사용하여 호스트 시스템에 연결된 특정 유형(pci
)의 모든 장치를 나열합니다. 그런 다음 사용하려는 장치의 짧은 식별자에 매핑되는 문자열의 출력을 확인합니다.이 예제에서는 짧은 식별자가00:19.0
인 이더넷 컨트롤러에 매핑되는 문자열을 강조 표시합니다. 이 예제에서는:
및.
문자는 전체 식별자에서 밑줄로 교체됩니다.# virsh nodedev-list --cap pci pci_0000_00_00_0 pci_0000_00_01_0 pci_0000_00_03_0 pci_0000_00_07_0 pci_0000_00_10_0 pci_0000_00_10_1 pci_0000_00_14_0 pci_0000_00_14_1 pci_0000_00_14_2 pci_0000_00_14_3 pci_0000_00_19_0 pci_0000_00_1a_0 pci_0000_00_1a_1 pci_0000_00_1a_2 pci_0000_00_1a_7 pci_0000_00_1b_0 pci_0000_00_1c_0 pci_0000_00_1c_1 pci_0000_00_1c_4 pci_0000_00_1d_0 pci_0000_00_1d_1 pci_0000_00_1d_2 pci_0000_00_1d_7 pci_0000_00_1e_0 pci_0000_00_1f_0 pci_0000_00_1f_2 pci_0000_00_1f_3 pci_0000_01_00_0 pci_0000_01_00_1 pci_0000_02_00_0 pci_0000_02_00_1 pci_0000_06_00_0 pci_0000_07_02_0 pci_0000_07_03_0
사용하려는 장치에 매핑되는 PCI 장치 번호를 기록합니다. 이는 다른 단계에서 필요합니다.장치 정보 검토
domain, bus 및 function에 대한 정보는 virsh nodedev-dumpxml 명령 출력에서 확인할 수 있습니다.virsh nodedev-dumpxml pci_0000_00_19_0 <device> <name>pci_0000_00_19_0</name> <parent>computer</parent> <driver> <name>e1000e</name> </driver> <capability type='pci'> <domain>0</domain> <bus>0</bus> <slot>25</slot> <function>0</function> <product id='0x1502'>82579LM Gigabit Network Connection</product> <vendor id='0x8086'>Intel Corporation</vendor> <iommuGroup number='7'> <address domain='0x0000' bus='0x00' slot='0x19' function='0x0'/> </iommuGroup> </capability> </device>
참고IOMMU 그룹은 IOMMU의 관점에서 장치의 가시성 및 분리에 따라 결정됩니다. 각 IOMMU 그룹은 하나 이상의 장치를 포함할 수 있습니다. 여러 장치가 있는 경우 IOMMU 그룹 내의 모든 엔드 포인트를 게스트에 할당하려면 그룹 내의 모든 장치에 대해 클레임해야 합니다. 이 작업은 게스트에 추가 엔드포인트를 할당하거나 virsh nodedev-detach 를 사용하여 호스트 드라이버에서 분리하여 수행할 수 있습니다. 단일 그룹 내에 포함된 장치는 여러 게스트 간에 분할하거나 호스트와 게스트 간에 분할할 수 없습니다. PCIe 루트 포트, 스위치 포트 및 브리지와 같은 비 엔드 포인트 장치는 호스트 드라이버에서 분리되지 않아야 하며 끝점 할당을 방해하지 않습니다.IOMMU 그룹 내의 장치는 virsh nodedev-dumpxml 출력의 iommuGroup 섹션을 사용하여 결정할 수 있습니다. 그룹의 각 멤버는 별도의 "address" 필드를 통해 제공됩니다. 이 정보는 다음을 사용하여 sysfs에서 찾을 수도 있습니다.$ ls /sys/bus/pci/devices/0000:01:00.0/iommu_group/devices/
출력 예는 다음과 같습니다.0000:01:00.0 0000:01:00.1
그룹에 0000.01.00.0만 할당하려면 게스트를 시작하기 전에 사용하지 않은 끝점을 호스트에서 분리해야 합니다.$ virsh nodedev-detach pci_0000_01_00_1
필수 구성 세부 정보 확인
구성 파일에 필요한 값에 대해서는 virsh nodedev-dumpxml pci_0000_00_19_0 명령의 출력을 참조하십시오.예제 장치의 값은 bus = 0, slot = 25이고 function = 0입니다. 10진수 구성은 다음 세 가지 값을 사용합니다.bus='0' slot='25' function='0'
구성 세부 정보 추가
virsh edit 를 실행하여 가상 시스템 이름을 지정하고 <source
> 섹션에 장치 항목을 추가하여 PCI 장치를 게스트 가상 머신에 할당합니다.# virsh edit guest1-rhel6-64 <hostdev mode='subsystem' type='pci' managed='yes'> <source> <address domain='0' bus='0' slot='25' function='0'/> </source> </hostdev>
또는 virsh attach-device 를 실행하여 가상 시스템 이름과 게스트의 XML 파일을 지정합니다.virsh attach-device guest1-rhel6-64
file.xml
가상 머신 시작
# virsh start guest1-rhel6-64
9.1.2. virt-manager를 사용하여 PCI 장치 할당
절차 9.4. virt-manager를 사용하여 게스트 가상 머신에 PCI 장치 할당
하드웨어 설정 열기
게스트 가상 머신을 열고을 클릭하여 가상 머신에 새 장치를 추가합니다.그림 9.1. 가상 머신 하드웨어 정보 창
PCI 장치 선택
왼쪽의 하드웨어 목록에서 PCI Host Device 를 선택합니다.사용되지 않는 PCI 장치를 선택합니다. 다른 게스트에서 사용 중인 PCI 장치를 선택하면 오류가 발생할 수 있습니다. 이 예에서는 스페어 82576 네트워크 장치가 사용됩니다. 완료 를 클릭하여 설정을 완료합니다.그림 9.2. 가상 하드웨어 추가 마법사
새 장치 추가
설정이 완료되었으며 게스트 가상 머신이 이제 PCI 장치에 직접 액세스할 수 있습니다.그림 9.3. 가상 머신 하드웨어 정보 창
9.1.3. virt-install을 사용한 PCI 장치 할당
--host-device
매개 변수를 사용합니다.
절차 9.5. virt-install을 사용하여 가상 머신에 PCI 장치 할당
장치 확인
게스트 가상 머신에 장치 할당을 위해 지정된 PCI 장치를 식별합니다.# lspci | grep Ethernet 00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection 01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
virsh nodedev-list 명령은 시스템에 연결된 모든 장치를 나열하고 각 PCI 장치를 문자열로 식별합니다. 출력을 PCI 장치로만 제한하려면 다음 명령을 실행합니다.# virsh nodedev-list --cap pci pci_0000_00_00_0 pci_0000_00_01_0 pci_0000_00_03_0 pci_0000_00_07_0 pci_0000_00_10_0 pci_0000_00_10_1 pci_0000_00_14_0 pci_0000_00_14_1 pci_0000_00_14_2 pci_0000_00_14_3 pci_0000_00_19_0 pci_0000_00_1a_0 pci_0000_00_1a_1 pci_0000_00_1a_2 pci_0000_00_1a_7 pci_0000_00_1b_0 pci_0000_00_1c_0 pci_0000_00_1c_1 pci_0000_00_1c_4 pci_0000_00_1d_0 pci_0000_00_1d_1 pci_0000_00_1d_2 pci_0000_00_1d_7 pci_0000_00_1e_0 pci_0000_00_1f_0 pci_0000_00_1f_2 pci_0000_00_1f_3 pci_0000_01_00_0 pci_0000_01_00_1 pci_0000_02_00_0 pci_0000_02_00_1 pci_0000_06_00_0 pci_0000_07_02_0 pci_0000_07_03_0
PCI 장치 번호를 기록합니다. 다른 단계에는 숫자가 필요합니다.도메인, 버스 및 기능에 대한 정보는 virsh nodedev-dumpxml 명령 출력에서 확인할 수 있습니다.# virsh nodedev-dumpxml pci_0000_01_00_0 <device> <name>pci_0000_01_00_0</name> <parent>pci_0000_00_01_0</parent> <driver> <name>igb</name> </driver> <capability type='pci'> <domain>0</domain> <bus>1</bus> <slot>0</slot> <function>0</function> <product id='0x10c9'>82576 Gigabit Network Connection</product> <vendor id='0x8086'>Intel Corporation</vendor> <iommuGroup number='7'> <address domain='0x0000' bus='0x00' slot='0x19' function='0x0'/> </iommuGroup> </capability> </device>
참고IOMMU 그룹에 여러 끝점이 있고 모든 엔드포인트가 게스트에 할당되지 않은 경우 게스트를 시작하기 전에 다음 명령을 실행하여 호스트에서 다른 끝점을 수동으로 분리해야 합니다.$ virsh nodedev-detach pci_0000_00_19_1
IOMMU 그룹에 대한 자세한 내용은 참고 의 9.1.1절. “virsh를 사용하여 PCI 장치 할당” 를 참조하십시오.장치 추가
virsh nodedev 명령의 PCI 식별자 출력을--host-device
매개 변수의 값으로 사용합니다.virt-install \ --name=guest1-rhel6-64 \ --disk path=/var/lib/libvirt/images/guest1-rhel6-64.img,size=8 \ --nonsparse --graphics spice \ --vcpus=2 --ram=2048 \ --location=http://example1.com/installation_tree/RHEL6.0-Server-x86_64/os \ --nonetworks \ --os-type=linux \ --os-variant=rhel6 --host-device=pci_0000_01_00_0
설치 완료
게스트 설치를 완료합니다. PCI 장치를 게스트에 연결해야 합니다.
9.1.4. 할당된 PCI 장치 분리
절차 9.6. virsh를 사용하여 게스트에서 PCI 장치 분리
장치 분리
다음 명령을 사용하여 게스트의 XML 파일에서 PCI 장치를 제거하여 게스트에서 PCI 장치를 분리합니다.# virsh detach-device name_of_guest file.xml
장치를 호스트에 다시 연결합니다(선택 사항)
장치가관리
모드에 있는 경우 이 단계를 건너뜁니다. 장치가 자동으로 호스트로 반환됩니다.장치가관리
모드를 사용하지 않는 경우 다음 명령을 사용하여 PCI 장치를 호스트 머신에 다시 연결합니다.# virsh nodedev-reattach device
예를 들어pci_0000_01_00_0
장치를 호스트에 다시 연결하려면 다음을 수행합니다.virsh nodedev-reattach pci_0000_01_00_0
이제 호스트용으로 장치를 사용할 수 있습니다.
절차 9.7. virt-manager를 사용하여 게스트에서 PCI 장치 분리
가상 하드웨어 세부 정보 화면을 엽니다.
virt-manager 에서 장치가 포함된 가상 머신을 두 번 클릭합니다. 가상 하드웨어 세부 정보 표시 버튼을 선택하여 가상 하드웨어 목록을 표시합니다.그림 9.4. 가상 하드웨어 세부 정보 버튼
장치 선택 및 제거
왼쪽 패널의 가상 장치 목록에서 분리할 PCI 장치를 선택합니다.그림 9.5. 분리할 PCI 장치 선택
9.1.5. PCI 브리지 생성
9.1.6. PCI 패스스루
<소스>
요소에 의해 지정됨)는 먼저 장치의 MAC 주소를 구성된 값으로 설정하고 선택적으로 지정된 <가상 포트 요소를 사용하여 장치를 802.1Qbhable 스위치와 연결한 후 type='direct' 네트워크 장치에 대해 지정한 가상>
포트의 예를 참조하십시오. 표준 단일 포트 PCI 이더넷 카드 드라이버 설계의 제한으로 인해 - SR-IOV(Single Root I/O Virtualization) 가상 기능(VF) 장치만 이러한 방식으로 할당할 수 있습니다. 표준 단일 포트 PCI 또는 PCIe 이더넷 카드를 게스트에 할당하려면 기존 <hostdev>
장치 정의를 사용합니다.
<type='hostdev'>
인터페이스에는 name 속성이 "vfio"로 설정된 선택적 드라이버 하위 요소가 있을 수 있습니다. 레거시 KVM 장치 할당을 사용하려면 name을 "kvm"으로 설정할 수 있습니다(또는 < <driver>
='kvm이 현재 기본값이므로 드라이버>
요소를 생략하기만 하면 됩니다.
<hostdev>
장치의 기능과 매우 유사합니다. 이 방법은 통과된 장치에 대한 MAC 주소와 <가상 포트를>
지정할 수 있다는 점입니다. 이러한 기능이 필요하지 않은 경우, SR-IOV를 지원하지 않는 표준 단일 포트 PCI, PCIe 또는 USB 네트워크 카드가 있는 경우(따라서 게스트 도메인에 할당된 후 재설정 중에 구성된 MAC 주소가 손실됨) 또는 0.9.11 이전 버전의 libvirt를 사용하는 경우 표준 <hostdev>
를 사용하여 장치를 <인터페이스 유형/dev 유형>
대신 게스트에 할당해야 합니다.
그림 9.6. PCI 장치 할당의 경우 XML
<devices> <interface type='hostdev'> <driver name='vfio'/> <source> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </source> <mac address='52:54:00:6d:90:02'> <virtualport type='802.1Qbh'> <parameters profileid='finance'/> </virtualport> </interface> </devices>
9.1.7. SR-IOV 장치를 사용하여 PCI 할당(Passthrough) 구성
<hostdev>
요소를 사용하여 기존 방식으로 게스트 가상 머신에 할당할 수 있지만 SR-IOV VF 네트워크 장치에는 영구적인 MAC 주소가 없으므로 호스트 물리적 머신이 재부팅될 때마다 게스트 가상 머신의 네트워크 설정을 다시 구성해야 하는 문제가 발생합니다. 이 문제를 해결하려면 VF를 호스트 물리적 머신에 할당하기 전에 MAC 주소를 설정해야 하며 게스트 가상 머신이 부팅될 때마다 이 주소를 설정해야 합니다. 이 MAC 주소와 다른 옵션을 할당하려면 절차 9.8. “SR-IOV에서 PCI 장치를 할당하기 위해 MAC 주소, vLAN 및 가상 포트 구성” 에 설명된 절차를 참조하십시오.
절차 9.8. SR-IOV에서 PCI 장치를 할당하기 위해 MAC 주소, vLAN 및 가상 포트 구성
<mac>
,<vlan>
, <virtualport>
요소가 <hostdev>
용으로 유효하지 않으므로 MAC 주소 할당, vLAN 태그 ID 할당 또는 가상 포트 할당과 같은 기능별 항목에는 <hostdev>
요소를 사용할 수 없습니다. <인터페이스 용으로 유효하므로 새 인터페이스>
유형에 대한 지원이 추가되었습니다(<인터페이스 type='hostdev'>
). 이 새 인터페이스 장치 유형은 <인터페이스>
및 <hostdev>
의 하이브리드 역할을 합니다. 따라서 PCI 장치를 게스트 가상 머신에 할당하기 전에 libvirt 는 표시된 네트워크별 하드웨어/슬래버스(예: MAC 주소 설정, vLAN 태그 설정, 802.1Qbh 스위치)를 게스트 가상 머신의 XML 구성 파일에서 초기화합니다. vLAN 태그 설정에 대한 자세한 내용은 18.14절. “vLAN 태그 설정” 을 참조하십시오.
게스트 가상 머신 종료
virsh shutdown 명령( 14.9.1절. “게스트 가상 머신 종료”참조)을 사용하여 guestVM 이라는 게스트 가상 머신을 종료합니다.# virsh shutdown guestVM
정보 수집
<인터페이스 type='hostdev'>
를 사용하려면 SR-IOV 가능 네트워크 카드, Intel VT-d 또는 AMD IOMMU 확장 기능을 지원하는 물리적 머신 하드웨어를 호스트해야 하며, 할당할 VF의 PCI 주소를 알아야 합니다.편집을 위해 XML 파일을 엽니다.
# virsh save-image-edit 명령을 실행하여 편집할 XML 파일을 엽니다(자세한 내용은 14.8.10절. “도메인 XML 구성 파일 편집” 참조). 게스트 가상 머신을 이전 실행 상태로 복원하려는 경우--running
이 사용됩니다. 이 예제의 구성 파일의 이름은 게스트 가상 머신의 이름이 guestVM 이므로 guestVM.xml 입니다.# virsh save-image-edit guestVM.xml
--running
guestVM.xml 이 기본 편집기에서 열립니다.XML 파일 편집
구성 파일(guestVM.xml)을 다음과 유사한<장치>
항목을 갖도록 업데이트합니다.그림 9.7. hostdev 인터페이스 유형의 샘플 도메인 XML
<devices> ... <interface type='hostdev' managed='yes'> <source> <address type='pci' domain='0x0' bus='0x00' slot='0x07' function='0x0'/> <!--these values can be decimal as well--> </source> <mac address='52:54:00:6d:90:02'/> <!--sets the mac address--> <virtualport type='802.1Qbh'> <!--sets the virtual port for the 802.1Qbh switch--> <parameters profileid='finance'/> </virtualport> <vlan> <!--sets the vlan tag--> <tag id='42'/> </vlan> </interface> ... </devices>
MAC 주소를 제공하지 않으면 다른 유형의 인터페이스 장치와 마찬가지로 MAC 주소가 자동으로 생성됩니다. 또한<virtualport>
요소는 802.11Qgh 하드웨어 스위치 (802.11Qbg (a.k.a))에 연결하는 경우에만 사용됩니다. "VEPA") 스위치는 현재 지원되지 않습니다.게스트 가상 머신 다시 시작
virsh start 명령을 실행하여 첫 번째 단계에서 종료한 게스트 가상 머신을 재시작합니다(예: guestVM을 게스트 가상 시스템의 도메인 이름으로 사용). 자세한 내용은 14.8.1절. “정의된 도메인 시작” 를 참조하십시오.# virsh start guestVM
게스트 가상 머신이 시작되면 실제 호스트 시스템의 어댑터에 의해 제공된 네트워크 장치가 구성된 MAC 주소와 함께 표시됩니다. 이 MAC 주소는 게스트 가상 시스템 및 호스트 물리적 시스템 재부팅 시 변경되지 않은 상태로 유지됩니다.
9.1.8. SR-IOV 가상 함수 풀에서 PCI 장치 할당 설정
- 지정된 VF는 게스트 가상 머신이 시작될 때마다 사용할 수 있어야 합니다. 즉, 관리자가 각 VF를 단일 게스트 가상 머신에 영구적으로 할당해야 합니다(또는 게스트 가상 머신이 시작될 때마다 사용되지 않는 VF의 PCI 주소를 지정하도록 모든 게스트 가상 머신의 구성 파일 수정).
- 게스트 가상 시스템이 다른 호스트 물리적 시스템으로 이동하는 경우 호스트 물리적 시스템은 PCI 버스의 동일한 위치에 동일한 하드웨어가 있어야 합니다(또는 다시 시작 전에 게스트 가상 머신 구성을 수정해야 함).
절차 9.9. 장치 풀 생성
게스트 가상 머신 종료
virsh shutdown 명령( 14.9절. “게스트 가상 시스템의 종료, 재부팅 및 종료”참조)을 사용하여 guestVM 이라는 게스트 가상 머신을 종료합니다.# virsh shutdown guestVM
구성 파일 생성
선택한 편집기를 사용하면/tmp
디렉터리에 XML 파일(예: passthrough.xml )이 생성됩니다.pf dev='eth3'
을 자체 SR-IOV 장치의 netdev 이름으로 교체해야 합니다.다음은 호스트 물리적 머신의 "eth3'에 있는 PF(물리 기능) 를 사용하여 SR-IOV 어댑터에 대한 모든 VF 풀을 사용할 수 있도록 하는 네트워크 정의 예제입니다.그림 9.8. 네트워크 정의 도메인 XML 샘플
<network> <name>passthrough</name> <!--This is the name of the file you created--> <forward mode='hostdev' managed='yes'> <pf dev='myNetDevName'/> <!--Use the netdev name of your SR-IOV devices PF here--> </forward> </network>
새 XML 파일 로드
다음 명령을 실행하여 /tmp/passthrough.xml 을 이전 단계에서 생성한 XML 파일의 이름 및 위치로 바꿉니다.# virsh net-define /tmp/passthrough.xml
게스트 다시 시작
passthrough.xml 을 이전 단계에서 생성한 XML 파일의 이름으로 교체하여 다음을 실행합니다.# virsh net-autostart passthrough # virsh net-start passthrough
게스트 가상 머신 다시 시작
virsh start 명령을 실행하여 첫 번째 단계에서 종료한 게스트 가상 머신을 재시작합니다(예: guestVM을 게스트 가상 시스템의 도메인 이름으로 사용). 자세한 내용은 14.8.1절. “정의된 도메인 시작” 를 참조하십시오.# virsh start guestVM
장치에 대한 패스스루 시작
단일 장치만 표시되지만 libvirt는 해당 PF와 연결된 모든 VF 목록을 자동으로 파생시킵니다. 그러면 다음과 같이 게스트 가상 머신이 도메인 XML의 인터페이스 정의로 처음 시작될 때 libvirt가 자동으로 파생됩니다.그림 9.9. 인터페이스 네트워크 정의를 위한 샘플 도메인 XML
<interface type='network'> <source network='passthrough'> </interface>
검증
네트워크를 사용하는 첫 번째 게스트를 시작한 후 virsh net-dumpxml passthrough 명령을 실행하여 확인할 수 있습니다. 다음과 유사한 출력을 얻을 수 있습니다.그림 9.10. XML 덤프 파일 패스스루 콘텐츠
<network connections='1'> <name>passthrough</name> <uuid>a6b49429-d353-d7ad-3185-4451cc786437</uuid> <forward mode='hostdev' managed='yes'> <pf dev='eth3'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x10' function='0x1'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x10' function='0x3'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x10' function='0x5'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x10' function='0x7'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x11' function='0x1'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x11' function='0x3'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x11' function='0x5'/> </forward> </network>