11.10. IBM Z의 가상 머신에 PCI 장치 연결
vfio-pci
장치 드라이버를 사용하면 IBM Z 호스트의 가상 머신(VM)에 통과 모드에서 PCI 장치를 할당할 수 있습니다. 예를 들어 VM이 데이터베이스를 처리하기 위해 NVMe 플래시 디스크를 사용할 수 있습니다.
사전 요구 사항
- IBM Z 하드웨어 아키텍처가 있는 호스트 시스템이 있습니다.
- 대상 VM은 Linux 운영 체제입니다.
필요한
vfio
커널 모듈이 호스트에 로드되었습니다.# lsmod | grep vfio
이 명령의 출력에는 다음 모듈이 포함되어야 합니다.
-
vfio_pci
-
vfio_pci_core
-
vfio_iommu_type1
-
절차
사용하려는 장치의 PCI 주소 식별자를 가져옵니다.
# lspci -nkD 0000:00:00.0 0000: 1014:04ed Kernel driver in use: ism Kernel modules: ism 0001:00:00.0 0000: 1014:04ed Kernel driver in use: ism Kernel modules: ism 0002:00:00.0 0200: 15b3:1016 Subsystem: 15b3:0062 Kernel driver in use: mlx5_core Kernel modules: mlx5_core 0003:00:00.0 0200: 15b3:1016 Subsystem: 15b3:0062 Kernel driver in use: mlx5_core Kernel modules: mlx5_core
PCI 장치를 연결할 VM의 XML 구성을 엽니다.
# virsh edit vm-name
XML 파일의 &
lt;
> 구성을 추가합니다.devices
> 섹션에 다음 <hostdevaddress
행의 값을 장치의 PCI 주소로 바꿉니다. 예를 들어 장치 주소가0003:00:00.0
인 경우 다음 구성을 사용합니다.<hostdev mode="subsystem" type="pci" managed="yes"> <driver name="vfio"/> <source> <address domain="0x0003" bus="0x00" slot="0x00" function="0x0"/> </source> <address type="pci"/> </hostdev>
선택 사항: 게스트 운영 체제가 PCI 장치를 감지하는 방법을 수정하려면 <
zpci
> 하위 요소를 <address
> 요소에 추가할 수도 있습니다. <zpci
> 줄에서는uid
및fid
값을 조정하여 게스트 운영 체제에서 장치의 PCI 주소 및 기능 ID를 수정할 수 있습니다.<hostdev mode="subsystem" type="pci" managed="yes"> <driver name="vfio"/> <source> <address domain="0x0003" bus="0x00" slot="0x00" function="0x0"/> </source> <address type="pci"> <zpci uid="0x0008" fid="0x001807"/> </address> </hostdev>
이 예제에서는 다음을 수행합니다.
-
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
검증
- VM을 시작하고 게스트 운영 체제에 로그인합니다.
게스트 운영 체제에서 PCI 장치가 나열되는지 확인합니다.
예를 들어 장치 주소가
0003:00:00.0
인 경우 다음 명령을 사용합니다.# lspci -nkD | grep 0003:00:00.0 0003:00:00.0 8086:9a09 (rev 01)