11.7. 가상 머신에서 PCI 장치 관리
VM(가상 머신)을 사용하는 경우 호스트 시스템에 연결된 스토리지 또는 네트워크 컨트롤러와 같은 PCI 장치에 액세스하고 제어할 수 있습니다. 이 시나리오에서 호스트 시스템은 장치 제어를 VM에 전달합니다. 이는 PCI 장치 할당 또는 PCI 패스스루 라고도 합니다.
11.7.1. 가상 머신에 PCI 장치 연결 링크 복사링크가 클립보드에 복사되었습니다!
VM(가상 머신)에서 호스트에 연결된 PCI 하드웨어 장치를 사용하려면 호스트에서 장치를 분리하고 VM에 할당할 수 있습니다. 이는 PCI 패스스루 라고도 합니다.
사전 요구 사항
호스트가 IBM Z 아키텍처를 사용하는 경우 호스트에
vfio
커널 모듈을 로드해야 합니다. 확인하려면 다음 명령을 사용합니다.lsmod | grep vfio
# lsmod | grep vfio
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에는 다음 모듈이 포함되어야 합니다.
-
vfio_pci
-
vfio_pci_core
-
vfio_iommu_type1
-
다음 단계에서는 일반적인 PCI 장치 할당을 설명합니다. 특정 유형의 PCI 장치를 할당하는 방법은 다음 절차를 참조하십시오.
사용하려는 장치의 PCI 주소 식별자를 가져옵니다. 예를 들어 호스트에 연결된 NVME 디스크를 사용하려는 경우 다음 출력에서는 장치
0000:65:00.0
으로 표시됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow PCI 장치를 연결할 VM의 XML 구성을 엽니다.
virsh edit vm-name
# virsh edit vm-name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow XML 파일의 &
lt;
> 구성을 추가합니다.devices
> 섹션에 다음 <hostdevaddress
행의 값을 장치의 PCI 주소로 바꿉니다. 선택적으로 장치가 VM에서 사용할 PCI 주소를 변경하려면 <addresstype="pci"> 행에 다른 주소를
구성할 수 있습니다.예를 들어 호스트의 장치 주소가
0000:65:00.0
이고 게스트에서0000:02:00.0
을 사용하려면 다음 구성을 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: IBM Z 호스트에서 게스트 운영 체제가 PCI 장치를 감지하는 방법을 수정할 수 있습니다. 이렇게 하려면 <
zpci> 하위
요소를 <address> 요소에
추가합니다. <zpci
> 줄에서는uid
및fid
값을 조정하여 게스트 운영 체제에서 장치의 PCI 주소 및 기능 ID를 수정할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예제에서는 다음을 수행합니다.
-
UID="0x0008"
은 VM에 있는 장치의 도메인 PCI 주소를0008:00:00.0
로 설정합니다. FID="0x001807"
은 장치의 슬롯 값을0x001807
로 설정합니다. 결과적으로 VM의 파일 시스템의 장치 구성이/sys/bus/pci/slots/00001087/address
에 저장됩니다.이러한 값을 지정하지 않으면
libvirt
에서 자동으로 구성합니다.
-
- XML 구성을 저장합니다.
VM이 실행 중이면 종료합니다.
virsh shutdown vm-name
# virsh shutdown vm-name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
- VM을 시작하고 게스트 운영 체제에 로그인합니다.
게스트 운영 체제에서 PCI 장치가 나열되는지 확인합니다.
예를 들어 게스트 장치 주소를
0000:02:00.0
으로 구성한 경우 다음 명령을 사용합니다.lspci -nkD | grep 0000:02:00.0
# lspci -nkD | grep 0000:02:00.0 0000:02:00.0 8086:9a09 (rev 01)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.7.2. 웹 콘솔을 사용하여 가상 머신에 장치 연결 링크 복사링크가 클립보드에 복사되었습니다!
VM(가상 머신)에 특정 기능을 추가하려면 웹 콘솔을 사용하여 호스트 장치를 VM에 연결할 수 있습니다.
여러 호스트 장치를 동시에 연결할 수 없습니다. 한 번에 하나의 장치만 연결할 수 있습니다.
자세한 내용은 RHEL 8 Known Issues를 참조하십시오.
사전 요구 사항
- RHEL 8 웹 콘솔을 설치했습니다.
- cockpit 서비스를 활성화했습니다.
사용자 계정이 웹 콘솔에 로그인할 수 있습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
PCI 장치를 연결하는 경우
hostdev
요소의managed
속성 상태가yes
로 설정되어 있는지 확인합니다.참고PCI 장치를 VM에 연결할 때
hostdev
요소의관리
속성을 생략하거나no
로 설정하지 마십시오. 이렇게 하면 VM에 전달할 때 PCI 장치는 호스트에서 자동으로 분리할 수 없습니다. 또한 VM을 끄면 호스트에 자동으로 다시 연결할 수 없습니다.결과적으로 호스트가 응답하지 않거나 예기치 않게 종료될 수 있습니다.
VM의 XML 구성에서
managed
속성의 상태를 찾을 수 있습니다. 다음 예제에서는example-VM-1
VM의 XML 구성을 엽니다.virsh edit example-VM-1
# virsh edit example-VM-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - VM에서 중요한 데이터를 백업합니다.
선택 사항: VM의 XML 구성을 백업합니다. 예를 들어
example-VM-1
VM을 백업하려면 다음을 수행합니다.virsh dumpxml example-VM-1 > example-VM-1.xml
# virsh dumpxml example-VM-1 > example-VM-1.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 웹 콘솔 VM 플러그인이 시스템에 설치되어 있습니다.
절차
RHEL 8 웹 콘솔에 로그인합니다.
자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.
VM의 그래픽 인터페이스에 액세스할 수 있도록 선택한 VM 및 콘솔 섹션에 대한 기본 정보가 포함된 개요 섹션이 포함된 새 페이지가 열립니다.
Host devices (호스트 장치) 섹션에는 VM에 연결된 장치와 장치 추가 또는 제거 옵션이 표시됩니다.
호스트 장치 추가 대화 상자가 나타납니다.
- VM에 연결할 장치를 선택합니다.
선택한 장치가 VM에 연결되어 있습니다.
검증
- VM을 실행하고 장치가 Host devices (호스트 장치) 섹션에 표시되는지 확인합니다.
11.7.3. 명령줄을 사용하여 가상 머신에서 PCI 장치 제거 링크 복사링크가 클립보드에 복사되었습니다!
VM(가상 머신)에서 PCI 장치를 제거하려면 VM의 XML 구성에서 장치 정보를 제거합니다.
절차
PCI 장치가 연결된 VM의 XML 구성에서 장치의 설정을 사용하여 <
hostdev
> 섹션에서 <address domain
> 행을 찾습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh detach-device
명령을--hostdev
옵션과 장치 주소와 함께 사용합니다.예를 들어 다음 명령은 이전 단계에 있는 장치를 영구적으로 제거합니다.
virt detach-device <VM-name> --hostdev 0000:65:00.0 --config
# virt detach-device <VM-name> --hostdev 0000:65:00.0 --config Domain 'VM-name' defined successfully.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고실행 중인 VM에서 PCI 장치를 제거하려면
--live
인수를 이전 명령에 추가합니다.선택 사항: PCI 장치를 호스트에 다시 연결합니다. 예를 들어 다음 명령은 이전 단계에서 VM에서 제거된 장치를 다시 연결합니다.
virsh nodedev-reattach pci_0000_65_00_0
# virsh nodedev-reattach pci_0000_65_00_0 Device pci_0000_65_00_0 re-attached
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
VM의 XML 구성을 다시 표시하고 장치의 <
hostdev
> 섹션이 더 이상 나타나지 않는지 확인합니다.virsh dumpxml <VM-name>
# virsh dumpxml <VM-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.7.4. 웹 콘솔을 사용하여 가상 머신에서 장치 제거 링크 복사링크가 클립보드에 복사되었습니다!
리소스를 확보하거나 VM의 기능을 수정하려면, 웹 콘솔을 사용하여 VM을 수정하고 더 이상 필요하지 않은 호스트 장치를 제거할 수 있습니다.
웹 콘솔을 사용하여 연결된 USB 호스트 장치를 제거하면 장치와 USB 장치의 버스 번호 간의 잘못된 상관 관계가 없기 때문에 실패할 수 있습니다.
자세한 내용은 RHEL 8 Known Issues를 참조하십시오.
이 문제를 해결하려면 virsh 유틸리티를 사용하여 VM의 XML 구성에서 USB 장치의 <hostdev> 부분을 제거합니다. 다음 예제에서는 example-VM-1
VM의 XML 구성을 엽니다.
virsh edit <example-VM-1>
# virsh edit <example-VM-1>
사전 요구 사항
- RHEL 8 웹 콘솔을 설치했습니다.
- cockpit 서비스를 활성화했습니다.
사용자 계정이 웹 콘솔에 로그인할 수 있습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
- 웹 콘솔 VM 플러그인이 시스템에 설치되어 있습니다.
선택 사항:
virsh dumpxml example-VM-1을 사용하여 VM
의 XML 구성을 백업하고 출력을 파일로 전송합니다. 예를 들어 다음은 testguest1 VM의 구성을testguest1.xml
파일로 백업합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
절차
VM의 그래픽 인터페이스에 액세스할 수 있도록 선택한 VM 및 콘솔 섹션에 대한 기본 정보가 포함된 개요 섹션이 포함된 새 페이지가 열립니다.
Host devices (호스트 장치) 섹션에는 VM에 연결된 장치와 장치 추가 또는 제거 옵션이 표시됩니다.
VM에서 제거할 장치 옆에 있는
(제거) 버튼을 클릭합니다.제거 장치 확인 대화 상자가 나타납니다.
장치가 VM에서 제거됩니다.
문제 해결
호스트 장치를 제거하면 VM을 부팅할 수 없게 되는 경우
virsh define
유틸리티를 사용하여 이전에 백업한 XML 구성 파일을 다시 로드하여 XML 구성을 복원합니다.virsh define testguest1.xml
# virsh define testguest1.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow