QEMU VM은 virtio 드라이버를 사용하고 호스트 시스템에는 커널 지원/모듈이 없습니까?

QEMU VM은 virtio 드라이버를 사용하고 호스트 시스템에는 커널 지원/모듈이 없습니까?

QEMU에서 실행되는 Win 8.1 VM이 디스크(원시 이미지 형식)와 네트워크 카드의 VirtIO 이점을 모두 얻을 수 있는지 확인하려고 했습니다. 나는 읽었다이 관련 게시물그리고 QEMU 인간-기계 인터페이스에 액세스하여 다음을 발견했습니다.

bus:  virtio-bus
    type virtio-pci-bus
    dev: virtio-blk-device, id ""
         drive = "virtio0"
....
bus:  virtio-bus
    type virtio-pci-bus
    dev: virtio-net-device, id ""

이는 Windows 장치 관리자가 Red Hat VirtIO SCSI 디스크 장치와 Red Hat VirtIO 이더넷 어댑터를 표시하는 것과 마찬가지로 VirtIO가 사용되고 있는 것처럼 보입니다. 그러나 Linux 호스트에서 lsmod를 실행하면 로드된 virtio 모듈이 표시되지 않으며 virtio 커널 구성을 확인할 때 내장 virtio, virtio_net 또는 virtio_blk가 표시되지 않습니다.

zcat /proc/config.gz | grep -i virtio
CONFIG_NET_9P_VIRTIO=m
CONFIG_VIRTIO_BLK=m
CONFIG_SCSI_VIRTIO=m
CONFIG_VIRTIO_NET=m
CONFIG_CAIF_VIRTIO=m
CONFIG_VIRTIO_CONSOLE=m
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_DRM_VIRTIO_GPU=m
CONFIG_VIRTIO=m
# Virtio drivers
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=m
CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_MMIO=m
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y

다음 명령을 사용하여 가상 머신을 실행합니다.

qemu-system-x86_64 -enable-kvm -cpu host -smp cores=2,threads=1 -drive file=filename.raw,index=0,media=disk,if=virtio,cache=none,format=raw -net nic,model=virtio,macaddr=xx:xx:xx:xx:xx:xx -net bridge,br=br0 -m 4096 -localtime

내가 여기서 무엇을 놓치고 있는 걸까요? 커널에 내장된 pci_virtio_legacy 지원을 통해 작동합니까? 그렇다면 다른 변형을 사용하는 것이 더 빠를까요? 그렇다면 VM을 시작하기 전에 virtio, virtio_net 및 virtio_blk 모듈이 로드되었는지 확인하면 됩니까?

답변1

비티오후방호스트 커널이 아닌 qemu 자체에 위치합니다. qemu가 게스트 virtio로부터 패킷을 받고 있습니다.프런트 엔드네트워크 드라이버를 요청한 브리지 장치로 보냅니다.

호스트 커널에서는 다음을 가질 수 있습니다.가상 호스트드라이버는 백엔드 기능의 일부, 즉 패킷 전달을 최적화합니다.

바라보다이 블로그 게시물.

관련 정보