16.2.4. SR-IOV 가상 함수 풀에서 PCI 장치 할당 설정
게스트 구성에 특정 VF(Virtual Functions)의 PCI 주소를 하드 코딩하면 두 가지 중요한 제한 사항이 있습니다.
- 게스트 가상 머신이 시작될 때마다 지정된 VF를 사용할 수 있어야 합니다. 따라서 관리자는 각 VF를 단일 게스트 가상 머신에 영구적으로 할당해야 합니다(또는 게스트 가상 머신이 시작될 때마다 현재 사용되지 않는 VF의 PCI 주소를 지정하도록 모든 게스트 가상 머신의 구성 파일을 수정해야 합니다.
- 게스트 가상 머신을 다른 호스트 물리적 시스템으로 이동하는 경우 해당 호스트 물리적 시스템의 하드웨어는 PCI 버스의 동일한 위치에 있어야 합니다(또는 시작하기 전에 게스트 가상 머신 구성을 수정해야 합니다).
SR-IOV 장치의 모든 VF가 포함된 장치 풀을 사용하여 libvirt 네트워크를 생성하여 이러한 문제를 해결할 수 있습니다. 이 작업이 완료되면 이 네트워크를 참조하도록 guest 가상 머신을 구성합니다. 게스트가 시작될 때마다 풀에서 단일 VF가 할당되고 게스트 가상 머신에 할당됩니다. 게스트 가상 머신이 중지되면 다른 게스트 가상 머신에서 사용할 수 있도록 VF가 풀로 반환됩니다.
절차 16.10. 장치 풀 생성
게스트 가상 머신 종료
virsh shutdown 명령을 사용하여 guest 가상 머신을 종료 합니다. 여기서 guestVM.# virsh shutdown guestVM
구성 파일 생성
선택한 편집기를 사용하여/tmp
디렉터리에 XML 파일(예: passthrough.xml )을 만듭니다.pf dev='eth3
을 고유한 SR-IOV 장치 물리 기능 (PF)의 netdev 이름으로 교체해야 합니다.다음은 호스트 물리적 머신의 "eth3'에 PF에서 SR-IOV 어댑터의 모든 VF 풀을 사용할 수 있도록 하는 네트워크 정의의 예입니다.그림 16.12. 네트워크 정의 도메인 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을 게스트 가상 시스템의 도메인 이름으로 사용). 자세한 내용은 20.6절. “가상 머신 시작, 다시 시작 및 복원”를 참조하십시오.# virsh start guestVM
장치에 대한 패스스루 시작
단일 장치만 표시되더라도 libvirt는 게스트 가상 머신이 다음과 같은 도메인 XML의 인터페이스 정의로 처음 시작될 때 해당 PF와 연결된 모든 VF 목록을 자동으로 파생합니다.그림 16.13. 인터페이스 네트워크 정의를 위한 도메인 XML 샘플
<interface type='network'> <source network='passthrough'> </interface>
검증
네트워크를 사용하는 첫 번째 게스트를 시작한 후 virsh net-dumpxml passthrough 명령을 실행하여 이를 확인할 수 있습니다. 다음과 유사한 출력이 표시됩니다.그림 16.14. 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>