kvm虚拟化之硬件辅助IO虚拟化之设备透传

   (文章来自作者维护的社区微信公众号【虚拟化云计算】)
(目前有两个微信群《kvm虚拟化》和《openstack》,扫描二维码点击“云-交流”,进群交流提问)
    现在IO虚拟化有很多方式,有软件模拟、半虚拟化、设备直接分配、单根IO虚拟化。在《说一说虚拟化绕不开的io半虚拟化》一文中介绍了io的全虚拟化和半虚拟化。下面介绍一下IO的硬件辅助虚拟化。
 
Device Passthrough
1.PCI设备直接分配
    设备直接分配 (Device assignment)也称为 Device Pass-Through。就是将宿主机host中的物理 PCI 设备直接分配给客户机guest使用,虚拟机独占这个PCI设备。在guest进行对应的IO操作时,避免 了VM Exit 陷入VMM 中,极大提高了性能。
    在Intel平台上的Device assignment技术是VT-D(Intel Virtualization Technology for Directed I/O),是在VT-X的基础上对硬件辅助虚拟化的扩展。
下图(来自intel《vt-directed-io-spec》)是软件模拟io虚拟化和intel的VT-D的对比原理图:
2. VFIO
另外一种设备直接分配的实现方式是VFIO。
VFIO是一套用户态驱动框架,在虚拟化情景下,亦可用来在用户态实现device passthrough。
 
PCI设备透传实践
下面的例子是把host主机中个一个网卡透传给虚拟机使用。
(在intel平台上要开启VT-d,内核要设置intel_iommu=on。)
 
1.在host上查看网卡信息
# lspci
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I217-LM (rev 04)
04:00.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05)
# ls /sys/bus/pci/devices/0000\:04\:00.0/net/
eth1
# cat /sys/class/net/eth1/address
90:e2:ba:9f:7c:5a
 
 
2.把pci设备从host中分离
# virsh nodedev-list
pci_0000_04_00_0
# virsh nodedev-dettach pci_0000_04_00_0
Device pci_0000_04_00_0 detached
 
 
3.把pci设备分配给虚拟机
虚拟机xml:
<devices>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
    </hostdev>
</devices>
 
 
4.进入虚拟机查看pci是否进入
# lspci
00:10.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05)
# cat /sys/class/net/eth1/address
90:e2:ba:9f:7c:5a
 
可以看出虚拟机中的网卡就是原来host中的网卡。并且此时在host的/sys/class/net/中已经看不到这个网卡了。
 
5.把pci设备还给host:
# virsh nodedev-reattach pci_0000_04_00_0
 
 
==============================================================
关注微信公众号【虚拟化云计算】,阅读更多虚拟化云计算知识,纯技术干货更新不停。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值