VFIO透传
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,在qemu-kvm虚拟化环境中,为提高虚拟机性能,需要将主机(PCI)设备直通给虚拟机(vm),即:设备透传技术(也叫设备直通技术),该技术需要主机支持Intel(VT-d) 或 AMD (IOMMU
千家信息网最后更新 2025年12月01日VFIO透传
在qemu-kvm虚拟化环境中,为提高虚拟机性能,需要将主机(PCI)设备直通给虚拟机(vm),即:设备透传技术(也叫设备直通技术),该技术需要主机支持Intel(VT-d) 或 AMD (IOMMU) 硬件虚拟化加速技术。
前提要求
linux kernel>3.6qemu 版本>1.4虚拟机系统以uefi模式启动宿主机服务器开启IOMMU宿主机加载vfio和vfio-pci驱动宿主机CPU支持intel-vt/vd实验环境
Centos7.2-AIO-3.6.0.0.1 qemu-2.2准备工作
服务器宿主机
修改系统内核启动参数,重启系统,查看是否开启IOMMU
dmesg | grep -e DMAR -e IOMMU[ 0.000000] DMAR: IOMMU enabled查看是否开启intel-vt-x/vt-d
cat /proc/cpuinfo | grep vmx执行如下脚本检查是否支持中断重定向
#!/bin/shif [ $(dmesg | grep ecap | wc -l) -eq 0 ]; then echo "No interrupt remapping support found" exit 1fifor i in $(dmesg | grep ecap | awk '{print $NF}'); do if [ $(( (0x$i & 0xf) >> 3 )) -ne 1 ]; then echo "Interrupt remapping not supported" exit 1 fidone如果硬件不支持interrupt remapping,需要执行
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf加载vfio驱动
modprobe vfiomodprobe vfio-pci安装OVMF引导虚拟机(OVMF支持uefi启动)
wget http://www.kraxel.org/repos/firmware.repoyum install edk2.git-ovmf-x64.noarch透传
设备在主机中解绑
[root@localhost ~]# lspci -nn|more00:00.0 Host bridge [0600]: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge [8086:7190] (rev 01)00:01.0 PCI bridge [0604]: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge [8086:7191] (rev 01)00:07.0 ISA bridge [0601]: Intel Corporation 82371AB/EB/MB PIIX4 ISA [8086:7110] (rev 08)00:07.1 IDE interface [0101]: Intel Corporation 82371AB/EB/MB PIIX4 IDE [8086:7111] (rev 01)00:07.3 Bridge [0680]: Intel Corporation 82371AB/EB/MB PIIX4 ACPI [8086:7113] (rev 08)00:07.7 System peripheral [0880]: VMware Virtual Machine Communication Interface [15ad:0740] (rev 10)00:0f.0 VGA compatible controller [0300]: VMware SVGA II Adapter [15ad:0405]00:10.0 SCSI storage controller [0100]: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI [1000:0030] (rev 01)00:11.0 PCI bridge [0604]: VMware PCI bridge [15ad:0790] (rev 02)00:15.0 PCI bridge [0604]: VMware PCI Express Root Port [15ad:07a0] (rev 01)00:15.1 PCI bridge [0604]: VMware PCI Express Root Port [15ad:07a0] (rev 01)00:15.2 PCI bridge [0604]: VMware PCI Express Root Port [15ad:07a0] (rev 01)找到设备,解绑
echo 0000:00:07.1 > /sys/bus/pci/devices/0000\:00\:07.1/driver/unbind生成vfio设备
echo 8086 7111 > /sys/bus/pci/drivers/vfio-pci/new_id此时:/dev/vfio下面会有个以阿拉伯数字命名的文件,对应vfio设备组
启动虚拟机
加参数:-device vfio-pci,host=00:05:00.0 #透传的设备加参数:-drive if=pflash,format=raw,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd #虚拟机bios/usr/libexec/qemu-kvm -M pc-i440fx-rhel7.0.0 -enable-kvm -m 2048 -smp 2 -drive if=pflash,format=raw,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd -drive id=disk0,if=none,format=qcow2,file=test.qcow2 -device virtio-blk-pci,drive=disk0,bootindex=0 -drive id=cd0,if=none,format=raw,readonly,file=CentOS-7-x86_64-Minimal-1503-01.iso -device ide-cd,bus=ide.1,drive=cd0,bootindex=1 -global PIIX4_PM.disable_s3=0 -global isa-debugcon.iobase=0x402 -debugcon file:fedora.ovmf.log -monitor stdio -device piix3-usb-uhci -device usb-tablet -netdev id=net0,type=user -device virtio-net-pci,netdev=net0,romfile= -device qxl-vga -spice port=3000,disable-ticketing/usr/libexec/qemu-kvm -M pc-i440fx-rhel7.0.0 -enable-kvm -m 2048 -smp 2 -drive if=pflash,format=raw,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd -drive id=disk0,if=none,format=qcow2,file=test.qcow2 -device virtio-blk-pci,drive=disk0,bootindex=0 -global PIIX4_PM.disable_s3=0 -global isa-debugcon.iobase=0x402 -debugcon file:fedora.ovmf.log -monitor stdio -device piix3-usb-uhci -device usb-tablet -netdev id=net0,type=user -device virtio-net-pci,netdev=net0,romfile= -device qxl-vga -spice port=3000,disable-ticketing -device vfio-pci,host=00:05:00.0客户端访问
spicy -h ip -p 3000在虚拟机内部执行
lspci -nnlsblk查看是否透传成功
参考资料
https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF
https://www.kernel.org/doc/Documentation/vfio.txt
http://pve.proxmox.com/wiki/Pci_passthrough
设备
支持
宿主
宿主机
技术
主机
参数
系统
服务器
环境
硬件
服务
驱动
成功
内核
前提
参考资料
客户
客户端
性能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
java 组件引用数据库
300738网络安全股票
网络安全要研究什么意思
曙光服务器raid1配置
幼儿防网络安全教案
吉比特网络技术有限公司
串口服务器 原理
乡镇网络安全年度工作计划
湖北正规软件开发服务费
生存进化服务器文件保存在哪
从国家安全角度看网络安全的内容
校园网络安全宣传制度
java聊天室数据库
LH60级服务器
属于数据链路层的网络技术
网络安全教育有关模板
西城区数据网络技术一体化
地下城堡服务器大区
数据库项目七课后答案
服务器连接vpn
深圳深圳软件开发
数据库中性别字段类型
天津常规软件开发创新服务
软件开发企业账务
数据库2005未能加载包
第十七届网络安全年会
临泝巨久网络技术
《网络安全法》 等级保护
奥海科技电子病例软件开发
制作网络安全宣传册
- 上一篇
云服务器的永久免费的吗
这篇文章运用简单易懂的例子给大家介绍云服务器的永久免费的吗,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。现在很多云服务商为了吸引顾客,会有一些福利推出,比如免费试用、购买多久赠送
- 下一篇
cannot update mailbox /var/mail/root for user root. error writing messa ge: File too large
cannot update mailbox /var/mail/root for user root. error writing message: File too large1 postfix 作