KVM虚拟机PCI设备直通

1. pci passthrough

1.1 概念

guest排他使用host上的某个PCI设备,就像将该设备物理连接到guest上一样

1.2 使用场景

  • 提升性能(如直通网卡和显卡)
  • 减少延迟(避免数据丢失或丢祯)
  • 直接利用bare-metal上设备的驱动

1.3 配置方法

  • 预先配置:
    a. 打开bios中的VT-d设置
    b. kernel引导配置iommu,参见文章 linux开启IOMMU方法
  • pci直通配置方法

  a. 识别设备

# virsh nodedev-list --tree |grep pci

  b. 获取设备xml

# virsh nodedev-dumpxml pci_8086_3a6

  c. detach设备

# virsh nodedev-dettach pci_8086_3a6c

  d. 改动虚拟机xml文件(将dumpxml查询到的bus,slot,function填入)

<devices>
......
<hostdev mode='subsystem' type='pci' managed='yes'>
 <source>
   <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
 </source>
</hostdev>
......
</devices>

  e. 启动虚拟机

2. pci passthrough (VFIO)

VFIO在kernel3.6/qemu1.4以后支持,眼下仅仅支持PCI设备。
VFIO是一套用户态驱动框架,提供两种基本服务:

  • 向用户态提供设备訪问接口
  • 向用户态提供配置IOMMU接口

VFIO能够用于实现高效的用户态驱动。

在虚拟化场景能够用于device passthrough。
通过用户态配置IOMMU接口,能够将DMA地址空间映射限制在进程虚拟空间中。

这对高性能驱动和虚拟化场景device passthrough尤其重要。

相对于传统方式,VFIO对UEFI支持更好。
VFIO技术实现了用户空间直接訪问设备。无须root特权,更安全。功能很多其它。

2.1 操作方法

  • 安装kernel module
# sudo modprobe vfio
# sudo modprobe vfio-pci
  • 虚拟机xml文件
    操作类似与非VFIO方式,虚拟机xml配置有所区别
<devices>
......
<hostdev mode='subsystem' type='pci' managed='yes'>
 <driver name='vfio'/> 
 <source>
   <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
 </source>
 <rom bar='off'/>
</hostdev>
......
</devices>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值