Topic

VFIO-PCI Passthrough

JackerLab 2025. 6. 12. 14:30
728x90
반응형

개요

VFIO-PCI Passthrough는 가상 머신(Guest OS)에 호스트의 물리적인 PCI 장치를 직접 할당하여, 거의 네이티브 수준의 성능으로 접근할 수 있도록 하는 가상화 기술입니다. KVM(QEMU) 환경에서 주로 사용되며, GPU, NIC, NVMe 등의 장치에 대한 직접적인 DMA 접근을 가능하게 해 고성능 컴퓨팅 환경에서 필수적인 요소로 자리 잡고 있습니다.


1. 개념 및 정의

항목 설명
정의 VFIO(Virtual Function I/O)를 이용하여 PCI 장치를 게스트 VM에 직접 할당하는 가상화 기법
주요 목적 낮은 레이턴시, 높은 대역폭을 요구하는 워크로드에 적합
구성 환경 KVM, QEMU, libvirt, IOMMU (VT-d/AMD-Vi) 필수

VFIO는 사용자 공간에서 장치 접근을 안전하게 제어하기 위해 커널이 제공하는 인터페이스입니다.


2. 작동 원리

단계 설명 도구
IOMMU 활성화 호스트 BIOS 및 커널에서 VT-d 또는 AMD-Vi 활성화 GRUB, dmesg
vfio-pci 모듈 바인딩 지정한 PCI 장치를 vfio-pci 드라이버에 바인딩 echo <vendor:device> > /sys/.../new_id
장치 passthrough 구성 libvirt XML 또는 QEMU CLI에서 장치 정의 virt-manager, virsh, qemu-system-x86_64
게스트 VM에서 인식 VM 내부에서 장치를 드라이버로 인식 및 사용 lspci, dmesg, nvidia-smi 등

이 모든 과정은 보안을 위해 IOMMU 보호 하에서 수행됩니다.


3. 구성 요소

구성 요소 설명 예시
vfio-pci 드라이버 PCI 장치를 사용자 공간(QEMU)에서 제어 가능하게 함 /dev/vfio/...
IOMMU 장치별 메모리 접근 권한 제어 Intel VT-d, AMD IOMMU
QEMU/KVM 가상 머신 실행 환경 GPU passthrough, SR-IOV
libvirt VM 정의 및 관리 XML 기반 디바이스 매핑

VFIO는 장치 격리와 직접 DMA 전달의 안전성을 동시에 제공합니다.


4. 주요 활용 사례

사례 설명 고려사항
GPU 가상화 머신러닝, VDI, 게임 VM 등에서 NVIDIA/AMD GPU 직접 할당 드라이버 호환성과 라이선스 이슈 확인 필요
고속 NIC 성능 향상 DPDK 기반 네트워킹 성능 테스트 환경 구성 NUMA 노드 일치 고려
NVMe 직접 제어 스토리지 성능 테스트 및 벤치마크 PCIe 슬롯/포트 배치 주의

VFIO-PCI는 성능 뿐 아니라 보안 측면에서도 격리 효과를 제공합니다.


5. 장점 및 한계

항목 장점 한계
성능 네이티브에 가까운 DMA 성능 제공 Live migration 불가
보안 VM별 IOMMU 격리로 DMA 보호 설정 복잡, 커널 버전 민감
유연성 특정 워크로드에 맞춘 장치 직접 제어 가능 리소스 스케일링 어려움

운영 효율보다는 성능 우선 환경에 적합한 구성입니다.


6. 실전 구성 팁

항목 예시
GPU BIOS 추출 장치 초기화를 위해 BIOS 바이너리 필요 sudo cat /sys/.../rom > vbios.rom
장치 고정 udev 규칙 또는 modprobe 설정으로 자동 바인딩 /etc/modprobe.d/vfio.conf
IRQ 핀 고정 성능 향상을 위해 핀 인터럽트 고정 isolcpus, irqbalance 비활성화

리눅스 배포판에 따라 모듈 이름, 경로가 상이할 수 있습니다.


7. 결론

VFIO-PCI Passthrough는 고성능 컴퓨팅과 I/O 집중 워크로드에 특화된 강력한 가상화 기능입니다. 게스트가 물리적 장치에 직접 접근할 수 있어, GPU 머신러닝, 고속 네트워킹, 스토리지 벤치마크 등에서 네이티브 성능을 요구하는 환경에 매우 유용합니다. 다만 설정 복잡도와 이식성 문제를 고려하여 목적에 맞는 신중한 설계가 요구됩니다.

728x90
반응형

'Topic' 카테고리의 다른 글

ZVOL (ZFS Volume)  (1) 2025.06.12
ZFS Copy-on-Write (CoW)  (0) 2025.06.12
IOMMU (Input-Output Memory Management Unit)  (1) 2025.06.12
RIFT (Routing In Fat-Trees)  (0) 2025.06.12
Git-Ops Runbook  (2) 2025.06.12